annotate WebServiceExtensionsV1.1/WebServiceToolWorkflow_REST_SOAP/clientGenerator/creatorEngineComplex.py~ @ 0:049760c677de default tip

Galaxy WSExtensions added successfully
author uga-galaxy-group
date Tue, 05 Jul 2011 19:34:18 -0400
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
1 '''
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
2 @author Rui Wang
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
3 @see LICENSE (MIT style license file).
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
4 '''
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
5
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
6 from types import *
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
7 import copy
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
8 import ZSI.TC
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
9 from introspect import *
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
10 from msHandler import *
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
11 from paramConverter import *
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
12
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
13 __author__="Rui Wang"
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
14
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
15 class ClientCreator(Introspector):
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
16 """all method to introspect module
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
17 to return operations&inputs
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
18 and to invoke operation"""
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
19
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
20
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
21
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
22 def path2Ops(self, modulePath ):
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
23 '''given module(the service python file generated by wsdl2py) path,
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
24 return dictionary of operation name: object (functions of class-**SOAP)'''
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
25 allclass=self.path2Class(modulePath)
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
26 #locator=''
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
27 opclass=''
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
28 for c in allclass.keys():
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
29 if c[len(c)-4:len(c)]=='SOAP':
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
30 opclass=c
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
31
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
32
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
33 #class object of which holds all ops
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
34 opclassOb=allclass[opclass]
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
35 #list of names of all ops
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
36 allattr=dir(opclassOb)
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
37 #print allattr
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
38 allops={}
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
39 for opt in allattr:
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
40 #every operation object
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
41 optemp=getattr(opclassOb, opt)
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
42 #whether it's def and not private such as __init__
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
43 if callable(optemp) and optemp.__name__.startswith('__')==False:
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
44 allops[optemp.__name__]=optemp
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
45
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
46 return allops
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
47
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
48 def path2messageClassOb(self, modulePath):
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
49 '''given module path,
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
50 return all message class object'''
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
51
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
52
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
53 allclassOb=self.path2Class(modulePath)
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
54
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
55 #find all message classes: has 'typecode', type(obtemp)==ClassType
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
56 allmsOb=[]
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
57 for c in allclassOb.values():
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
58 if hasattr(c,'typecode'):
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
59 allmsOb.append(c)
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
60 return allmsOb
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
61
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
62 def opname2inputClassOb(self, opName, modulePath):
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
63 '''given operation name, module path,
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
64 return input class object'''
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
65
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
66 allopNames=self.path2Ops(modulePath)
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
67 if opName not in allopNames:
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
68 raise NameError, 'Warning: No operation has the given name!!'
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
69
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
70 else:
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
71 #find all message classes: has 'typecode', type(obtemp)==ClassType
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
72 allmsOb=self.path2messageClassOb(modulePath)
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
73 #find input message class of given operation: typecode has pname=operation name
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
74 for ms in allmsOb:
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
75 pnameOb=getattr(getattr(ms, 'typecode'), 'pname')
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
76 if opName==str(pnameOb):
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
77 inputClass=ms
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
78 break
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
79
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
80 return inputClass
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
81
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
82 def opname2outputClassOb(self, opName, modulePath):
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
83 '''given operation name, module path,
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
84 return output class object'''
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
85
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
86 allopNames=self.path2Ops(modulePath)
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
87 if opName not in allopNames:
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
88 raise NameError, 'Warning: No operation has the given name!!'
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
89
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
90 else:
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
91 #find all message classes: has 'typecode', type(obtemp)==ClassType
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
92 allmsOb=self.path2messageClassOb(modulePath)
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
93
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
94 #find output message class of given operation: typecode has pname=operation name+'Response'
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
95 for ms in allmsOb:
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
96 pnameOb=getattr(getattr(ms, 'typecode'), 'pname')
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
97 if opName+'Response'==str(pnameOb):
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
98 outputClass=ms
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
99 break
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
100
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
101 return outputClass
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
102
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
103 def opname2outputs(self, opName, modulePath):
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
104 '''given operation name, module path,
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
105 return a list of output nemes of the operation in the module'''
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
106
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
107 allopNames=self.path2Ops(modulePath)
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
108 if opName not in allopNames:
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
109 raise NameError, 'Warning: No operation has the given name!!'
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
110
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
111 else:
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
112 #get input class object
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
113 outputClass=self.opname2outputClassOb(opName, modulePath)
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
114 #find input parameters from message class : instrospect an instace
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
115 msinstance=outputClass()
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
116
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
117 parameters={}
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
118 mshandler=MessageHandler()
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
119 parameters=mshandler.msParser(msinstance)
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
120
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
121 return parameters
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
122
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
123 def opname2inputs(self, opName, modulePath):
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
124 '''given operation name, module path,
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
125 return a list of all inputs name of the operation in the given module'''
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
126
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
127 allopNames=self.path2Ops(modulePath)
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
128 if opName not in allopNames:
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
129 raise NameError, 'Warning: No operation has the given name!!'
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
130 else:
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
131 #get input class object
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
132 inputClass=self.opname2inputClassOb(opName, modulePath)
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
133
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
134 parameters={}
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
135 mshandler=MessageHandler()
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
136 parameters=mshandler.msParser(inputClass()) #mshandler.flatten(inputClass())
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
137
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
138 print 'The parametrrs after flattening : ',parameters
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
139
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
140 ofwhat=getattr(getattr(inputClass, 'typecode'), 'ofwhat')
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
141 paramtypes={}
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
142 i=0
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
143 for k in parameters.keys():
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
144 paramtypes[k]=str(ofwhat[i])
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
145 i=i+1
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
146 for l in paramtypes.keys():
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
147 print "paramters",l
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
148 origPar=paramtypes[l]
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
149 copyPar=paramtypes[l]
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
150 #print copyPar#[-23:-1]
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
151 newPar=origPar.replace(copyPar[-23:-1],'').strip('<>')
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
152 paramtypes[l]=newPar
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
153
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
154
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
155
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
156 # print ofwhat
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
157 ## for p in ofwhat:
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
158 ## if isinstance(p, ZSI.TC.ComplexType):
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
159 ## print 'complextype', p
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
160 ## elif isinstance(p, ZSI.TC.Array) :
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
161 ## print 'arraytype', p
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
162 ## elif isinstance(p,ZSI.TC.String):
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
163 ## print 'String',p
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
164 ## elif isinstance(p,ZSI.TC.Integer):
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
165 ## print 'Integer',p
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
166 ## else:
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
167 ## parameters[getattr(p, 'aname')]=None
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
168 ##
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
169 #print parameters
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
170 return parameters
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
171 #return paramtypes
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
172 #find input parameters from message class : instrospect an instace
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
173 # msinstance=inputClass()u can
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
174 ## print dir(msinstance)
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
175 # parameters=[]
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
176 # for i in dir(msinstance):
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
177 ## print i, type(getattr(msinstance, i))
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
178 # if (type(getattr(msinstance, i)) is NoneType) and i!='__doc__':
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
179 # parameters.append(i)
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
180 ## print parameters
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
181 # return parameters
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
182
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
183 def path2service(self, modulePath):
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
184 '''given module path,
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
185 return return service instance
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
186 instead of: dbfetchSrv = WSDBFetchServerLegacyServiceLocator().getWSDBFetchServerLegacy()'''
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
187
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
188 allclass=self.path2Class(modulePath)
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
189
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
190 locator=''
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
191 for c in allclass.keys():
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
192 if c[len(c)-7:len(c)]=='Locator':
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
193 locator=c
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
194
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
195 locatorClassOb=allclass[locator]
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
196 for obname in dir(locatorClassOb):
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
197 obtemp=getattr(locatorClassOb, obname)
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
198 if (type(obtemp) is MethodType)and not obtemp.__name__.endswith('Address'):
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
199 serverMethod=obtemp
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
200 break
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
201 # Create a service interface
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
202 service=serverMethod(locatorClassOb())
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
203 return service
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
204
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
205 def invokeOp(self, opName, modulePath, inputs):
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
206 allopNames=self.path2Ops(modulePath)
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
207 if opName not in allopNames:
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
208 raise NameError, 'Warning: No operation has the given name!!'
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
209 else:
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
210 # Create a service interface
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
211 serviceInstance=self.path2service(modulePath)
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
212
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
213 #get input class object of given opName
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
214 inputClass=self.opname2inputClassOb(opName, modulePath)
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
215
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
216 mshandler=MessageHandler()
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
217 if len(inputs) != 0:
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
218 inputClassInstance=mshandler.msAssign(inputClass(), inputs)
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
219 else:
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
220 inputClassInstance= inputClass()
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
221 #get input name list of given opName
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
222 # inputNames=self.opname2inputs(opName, modulePath)
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
223
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
224 #set value for inputs
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
225 #request._query = 'UNIPROT:ADH1A_HUMAN'
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
226 #request._format = 'fasta'
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
227 # #request._style = 'raw'
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
228 # if inputNames!= None:
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
229 # for inName in inputs.keys():
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
230 # if inName not in inputNames:
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
231 # raise TypeError, 'the input name is wrong!!!!'
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
232 # #return None
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
233 # else:
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
234 # setattr(inputClassInstance, inName, inputs[inName])
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
235
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
236
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
237 #get dictionary of operation name:object(def)
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
238 opDict=self.path2Ops(modulePath)
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
239
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
240 #get operation object(def)
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
241 opOb=opDict[opName]
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
242
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
243 #invoke operation: response = dbfetchSrv.fetchData(request)
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
244 responseInstance=opOb(serviceInstance, inputClassInstance)
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
245
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
246 #get output from outputmessage: result = response._fetchDataReturn
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
247 resultDict={}
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
248 resultDict=mshandler.flatten(responseInstance) #mshandler.msParser(responseInstance)
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
249 flat = nested2flatDict(resultDict)
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
250 # outputNames=self.opname2outputs(opName, modulePath)
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
251 # for out in outputNames:
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
252 # resultDict[out]=getattr(responseInstance, out)
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
253
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
254 return flat#resultDict
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
255 #return responseInstance
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
256
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
257 #testing this module
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
258 if __name__=="__main__":
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
259 test=ClientCreator()
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
260
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
261 #picr web service
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
262 # print 'all operations of picr: \n', test.path2Ops('picr.AccessionMapperService_client').keys()
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
263 # print 'inputs of picr \n', test.opname2inputs('getUPIForSequence', 'picr.AccessionMapperService_client')
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
264 # print 'outputs of picr \n', test.opname2outputs('getUPIForSequence', 'picr.AccessionMapperService_client')
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
265
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
266
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
267 seq = """>Q8E5Q5_STRA3
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
268 MKLSKRYRFWQKVIKALGVLALIATLVLVVYLYKLGILNDSNELKDLVHKYEFWGPMIFI
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
269 VAQIVQIVFPVIPGGVTTVAGFLIFGPTLGFIYNYIGIIIGSVILFWLVKFYGRKFVLLF
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
270 MDQKTFDKYESKLETSGYEKFFIFCMASPISPADIMVMITGLSNMSIKRFVTIIMITKPI
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
271 SIIGYSYLWIYGGDILKNFLN"""
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
272 # inp = {'_content': [{'_type': 'sequence', '_content': 'MKLSKRYRFWQKVIKALGVLALIATLVLVVYLYKLGILNDSNELKDLVHKYEFWGPMIFI'}, {'_type': 'sequence', '_content': 'MDQKTFDKYESKLETSGYEKFFIFCMASPISPADIMVMITGLSNMSIKRFVTIIMITKPI'}], '_params': {'_database': 'swissprot', '_email': 'chaitanya@gmail.com', '_program': 'blastp'}}
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
273 inp = {'_parameters': {'_stype': 'protein', '_sequence': 'MKLSKRYRFWQKVIKALGVLALIATLVLVVYLYKLGILNDSNELKDLVHKYEFWGPMIFI','_database':{ '_string' : ['uniprotkb','uniprotkb_swissprot']}, '_program': 'blastp'}, '_email': 'chaitanya@gmail.com'}
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
274 inputDict={'_params':{ '_program' : 'blastp', '_database' :'swissprot', '_email' :'riververy@yahoo.com', '_async': 1}, '_content':[{'_type':'sequence', '_content':'MKLSKRYRFWQKVIKALGVLALIATLVLVVYLYKLGILNDSNELKDLVHKYEFWGPMIFI'}]}
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
275 # inputDict = {}
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
276 inputs ={'_jobId':'wublast-S20110517-051830-0552-49531676-oy','_type':'out'}
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
277 inp = {}
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
278 #print test.invokeOp('run', 'wublast.wublast_services', inp)
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
279 print test.invokeOp('getParameters', 'wublast.wublast_services', inp)
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
280 #print test.opname2inputs('getResult','wublast.wublast_services')
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
281 # print 'all operations: \n', test.path2Ops('blast.WSWUBlast_client').keys()
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
282 # print 'inputs of runWUBlast \n', test.opname2inputs('runWUBlast', 'blast.WSWUBlast_client')
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
283 # print 'outputs of runWUBlast \n', test.opname2outputs('runWUBlast', 'blast.WSWUBlast_client')
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
284
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
285
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
286 # modul=test.path2Module('ebiDbfetch.WSDBFetchServerLegacyService_services')
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
287 # print dir(modul)
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
288 # print 'all operations: \n', test.path2Ops('ebiDbfetch.WSDBFetchServerLegacyService_services').keys()
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
289 # print 'inputs of fetchData:\n', test.opname2inputs('fetchData', 'ebiDbfetch.WSDBFetchServerLegacyService_services')
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
290 # print 'all classes:\n', test.path2Class('ebiDbfetch.WSDBFetchServerLegacyService_services').keys()
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
291 # print 'service instance ob:\n', test.path2service('ebiDbfetch.WSDBFetchServerLegacyService_services')
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
292 # print 'outputs of fetchData:\n', test.opname2outputs('fetchData', 'ebiDbfetch.WSDBFetchServerLegacyService_services')
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
293 # inputDict={'_format':'fasta', '_query':'UNIPROT:ADH1A_HUMAN', '_style':'raw'}
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
294 # print test.invokeOp('fetchData', 'ebiDbfetch.WSDBFetchServerLegacyService_services', inputDict).values()[0]
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
295
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
296 # print 'all operations: \n', test.path2Ops('dbfetch.WSDBFetchServerLegacyService_services').keys()
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
297 # print 'inputs of fetchData:\n', test.opname2inputs('fetchData', 'dbfetch.WSDBFetchServerLegacyService_services')
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
298 # inputDict={'_format':'fasta', '_query':'UNIPROT:ADH1A_HUMAN', '_style':'raw'}
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
299 # print test.invokeOp('fetchData', 'dbfetch.WSDBFetchServerLegacyService_services', inputDict).values()[0]
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
300
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
301 #dbfetch.WSDBFetchServerLegacyService_client
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
302 # print 'all operations: \n', test.path2Ops('dbfetch.WSDBFetchServerLegacyService_client').keys()
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
303 # print 'inputs of fetchData:\n', test.opname2inputs('fetchData', 'dbfetch.WSDBFetchServerLegacyService_client')
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
304 # inputDict={'_format':'fasta', '_query':'UNIPROT:ADH1A_HUMAN', '_style':'raw'}
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
305 # print test.invokeOp('fetchData', 'dbfetch.WSDBFetchServerLegacyService_client', inputDict).values()[0]
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
306
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
307
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
308