diff WebServiceToolWorkflow/getMethods.py @ 0:d5cd409b8a18 default tip

Migrated tool version 1.0.0 from old tool shed archive to new tool shed repository
author ganjoo
date Tue, 07 Jun 2011 18:00:50 -0400
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/WebServiceToolWorkflow/getMethods.py	Tue Jun 07 18:00:50 2011 -0400
@@ -0,0 +1,166 @@
+import warnings
+
+with warnings.catch_warnings():
+    warnings.simplefilter("ignore")
+    import platform
+
+    from jpype._jpackage import JPackage
+    from jpype import *
+    import os.path
+    import sys
+
+class Document(object):  
+
+    #invoked to get methods described in a WADL document
+    def getWADLMethods(self, wadlUrl, outputFileUrl ):
+
+    #get environment variables JAVA_HOME and GALAXY_HOME
+        javahome = os.environ.get('JAVA_HOME')
+	galaxyhome=os.environ.get('GALAXY_HOME')
+
+    #classpath, jarpath are variables pointing to the java libraries required to parse a WADL document
+        classpath= galaxyhome + '/tools/WebServiceToolWorkflow/ParserForWADL/bin'
+        jarpath = galaxyhome + '/tools/WebServiceToolWorkflow/ParserForWADL/lib/'
+    
+    #start JVM depending on the machine. The location of libjvm.so is assumed to be standard.
+    #you can replace lines 28 to 35, with startJVM("LOCATION OF YOUR LIBJVM.SO","-ea", "-Djava.class.path=%s" % classpath,"-Djava.ext.dirs=%s" % jarpath)
+        machine = platform.machine()
+        if machine == 'x86_64' :
+            startJVM("%s/jre/lib/amd64/server/libjvm.so" % javahome,"-ea", "-Djava.class.path=%s" % classpath,"-Djava.ext.dirs=%s" % jarpath)
+        elif machine == 'i686' :
+            startJVM("%s/jre/lib/i386/server/libjvm.so" % javahome,"-ea", "-Djava.class.path=%s" % classpath,"-Djava.ext.dirs=%s" % jarpath)
+        elif machine == 'sun4u' :
+            startJVM("%s/jre/lib/sparc/server/libjvm.so" % javahome,"-ea", "-Djava.class.path=%s" % classpath,"-Djava.ext.dirs=%s" % jarpath)
+        else :
+            System.exit("Could not identify machine, please specify path to libjvm.so")
+        
+    #tell JPYPE that the package name is lsdis 
+        pkg=JPackage('lsdis')
+    
+        urlToPass=java.net.URL(wadlUrl)	
+
+    #convert __tilda__ to ~
+	if(wadlUrl.find('__tilda__')>-1):
+	    ulist = wadlUrl.split('__tilda__')
+	    urlToPass = java.net.URL('~'.join(ulist))
+        
+   
+        outputfile=open(outputFileUrl,'w')
+        outputfile.seek(0,0)
+         
+        urls = []
+        methods = []
+
+    #using JPYPE call appropriate Java classes and methods to parse the WADL document and get a list of methods defined in it
+        WADLParserDriver=pkg.WADLParserDriver
+        wPD=WADLParserDriver()
+        wPD.parse(urlToPass)
+        urls = wPD.getUrl()
+        methods = wPD.getCompleteMethodList()
+    
+    #write the url of the WADL and the list of methods to the output in a tabular format, for the Step 2 tool to read from.
+        i=0
+        for url in urls:
+            outputfile.write(wadlUrl+"\t")
+            outputfile.write(str(methods[i].getId())+"\t")
+            outputfile.write(str(url)+"\n")
+            i=i+1
+     	    
+
+
+    #invoked to get REST methods described in a WSDL 2.0 document. Steps are similar to getWADLMethods except the library to parse WSDL 2.0 is used.
+    def getWSDLMethods(self, wsdlUrl, outputFileUrl ):
+        javahome = os.environ.get('JAVA_HOME')
+	galaxyhome=os.environ.get('GALAXY_HOME')
+        classpath= galaxyhome + '/tools/restClientWSDL/WodenWSDLParser/bin'
+        jarpath = galaxyhome + '/tools/restClientWSDL/WodenWSDLParser/lib/'
+        machine = platform.machine()
+        
+    #start JVM depending on the machine. The location of libjvm.so is assumed to be standard.
+    #you can replace lines 81 to 88, with startJVM("LOCATION OF YOUR LIBJVM.SO","-ea", "-Djava.class.path=%s" % classpath,"-Djava.ext.dirs=%s" % jarpath)
+        if machine == 'x86_64' :
+            startJVM("%s/jre/lib/amd64/server/libjvm.so" % javahome,"-ea", "-Djava.class.path=%s" % classpath,"-Djava.ext.dirs=%s" % jarpath)
+        elif machine == 'i686' :
+            startJVM("%s/jre/lib/i386/server/libjvm.so" % javahome,"-ea", "-Djava.class.path=%s" % classpath,"-Djava.ext.dirs=%s" % jarpath)
+        elif machine == 'sun4u' :
+            startJVM("%s/jre/lib/sparc/server/libjvm.so" % javahome,"-ea", "-Djava.class.path=%s" % classpath,"-Djava.ext.dirs=%s" % jarpath)
+        else :
+            System.exit("Could not identify machine, please specify path to libjvm.so")
+    
+        pkg=JPackage('lsdis')
+       
+        outputfile=open(outputFileUrl,'w')
+        outputfile.seek(0,0)
+        length=(len(sys.argv))
+    
+        urls = []
+        methods = []
+
+	if(wsdlUrl.find('__tilda__')>-1):
+	    ulist = wsdlUrl.split('__tilda__')
+	    urlToPass = '~'.join(ulist)
+
+        WSDLParserDriver=pkg.WSDLParserDriver
+        wPD=WSDLParserDriver()
+        wPD.parse(urlToPass)
+        urls = wPD.getUrl()
+        methods = wPD.getCompleteMethodList()
+        	            
+        i=0
+        for url in urls:
+           outputfile.write(wsdlUrl+"\t")
+           outputfile.write(str(methods[i].getName().getLocalPart())+"\t")
+           outputfile.write(str(url)+"\n")
+           i=i+1
+         
+       
+    # invoked to get methods described in a SAWADL document    
+    def getSAWADLMethods(self, sawadlUrl, outputFileUrl ):
+        javahome = os.environ.get('JAVA_HOME')
+        galaxyhome=os.environ.get('GALAXY_HOME')
+        classpath= galaxyhome + '/tools/restclientSAWADL/lib/SAWADLParser/bin'
+        machine = platform.machine()
+        
+    #start JVM depending on the machine. The location of libjvm.so is assumed to be standard.
+    #you can replace lines 126 to 133, with startJVM("LOCATION OF YOUR LIBJVM.SO","-ea", "-Djava.class.path=%s" % classpath,"-Djava.ext.dirs=%s" % jarpath)        
+        if machine == 'x86_64' :
+            startJVM("%s/jre/lib/amd64/server/libjvm.so" % javahome,"-ea", "-Djava.class.path=%s" % classpath)
+        elif machine == 'i686' :
+            startJVM("%s/jre/lib/i386/server/libjvm.so" % javahome,"-ea", "-Djava.class.path=%s" % classpath)
+        elif machine == 'sun4u' :
+            startJVM("%s/jre/lib/sparc/server/libjvm.so" % javahome,"-ea", "-Djava.class.path=%s" % classpath)            
+        else :
+            System.exit("Could not identify machine, please specify path to libjvm.so")
+    
+        pkg=JPackage('edu.uga.cs.lsdis.meteors.wadls')
+        
+
+   
+        outputfile=open(outputFileUrl,'w')
+        outputfile.seek(0,0)
+   
+	if(sawadlUrl.find('__tilda__')>-1):
+	    ulist = sawadlUrl.split('__tilda__')
+	    urlToPass = '~'.join(ulist)
+	         
+        urls = []
+        methods = []
+
+
+        SAWADLParserDriver=pkg.SAWADLParserDriver
+        sawPD=SAWADLParserDriver()
+        sawPD.parse(urlToPass)
+        urls = sawPD.getUrl()
+        methods = sawPD.getCompleteMethodList()
+        
+        i=0
+        for url in urls:
+           outputfile.write(sawadlUrl+"\t")
+           outputfile.write(str(methods[i].getName())+"\t")    
+           outputfile.write(str(url)+"\n")
+           i=i+1
+           
+
+  
+       
+