Mercurial > repos > ganjoo > webservice_toolsuite
changeset 0:d5cd409b8a18 default tip
Migrated tool version 1.0.0 from old tool shed archive to new tool shed repository
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/DeleteTool1.py~ Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,46 @@ +import os + +galaxyhome=os.environ.get('GALAXY_HOME') + +f1=open(galaxyhome+'/tool_conf.xml','r') +f1.seek(0,0) + +f3=open(galaxyhome+'/tools/WebServiceToolWorkflow/DeleteTool2.xml','w') +f3.seek(0,0) + +f3.write('<tool id="DeleteTool3" name="Step 2">\n') +f3.write(' <description> :Choose Web Service Tool to be deleted </description>\n') + +f3.write(' <command interpreter="python">\n DeleteTool2.py \n'+' $output \n $tool \n </command>\n') +f3.write(' <inputs>\n <param name ="tool" type ="select" label =" Select the Web service tool you want to delete, by its order number (position in the Web Service Tools section on the left) " help="see tip below">\n') + + +##first copy everything upto WebServiceTool1.xml into another file f2 +line = f1.readline() +lineStripped=line.lstrip() + +while not lineStripped == '<section name="Web Service Tools" id="WebServices">\n': + line = f1.readline() + lineStripped = line.lstrip() +else: + print line + +i=0 +while not lineStripped == '</section>\n': + i=i+1 + line = f1.readline() + lineStripped = line.lstrip() +else: + print line + +j=0 +while not j==i-1: + j=j+1 + f3.write(' <option value = "client_'+ str(j) + '.xml"> Web Service Tools: Tool '+ str(j) + '</option>\n') +else: + print i + +f3.write(' </param>\n </inputs>\n') +f3.write(' <outputs>\n <data format="tabular" name="output" />\n </outputs>\n') +f3.write(' <help>\n </help>\n</tool>') +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/DeleteTool1.xml~ Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,32 @@ +<tool id="DeleteTool1" name="Step 1"> + <description> :Verify user</description> + <command interpreter="python"> + DeleteTool1.py + $password + $output + </command> + <inputs> + <param format="text" size = "60" name = "password" type="text" label="Enter password" help="see tip below"/> + </inputs> + <outputs> + <data format="tabular" name="output" /> + </outputs> + + <tests> + <test> + <param name="url" value="127.0.0.1:5001/hello/form"/> + <output name="output" file="outtest"/> + </test> + </tests> + + <help> + +.. class:: infomark + +**TIP:** Only users with pseudo-admin priviledges can delete tools. To get access to this tool +email sganjoo@uga.edu + + </help> + +</tool> +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/DeleteTool2.py~ Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,83 @@ +import os,sys +import string + +clientNo = string.atoi(sys.argv[1]) + +#outputfile=open(sys.argv[1],'w') +#outputfile.seek(0,0) + +galaxyhome=os.environ.get('GALAXY_HOME') +f1=open(galaxyhome+'/tool_conf.xml','r') +f1.seek(0,0) +f2=open(galaxyhome+'/tool_conf_backup1.xml','w') +f2.seek(0,0) + +line = f1.readline() +f2.write(line) + +lineStripped=line.lstrip() +while not lineStripped == '<section name="Web Service Tools" id="WebServices">\n': + line = f1.readline() + lineStripped = line.lstrip() + f2.write(line) +else: + print line + + +i=1 +while not i==clientNo: + line = f1.readline() + lineStripped = line.lstrip() + f2.write(line) + i=i+1 +else: + line = f1.readline() + +while not lineStripped == '<section name="Web Service Workflow Tools" id="WebServiceWorkflow">\n': + line = f1.readline() + lineStripped = line.lstrip() + f2.write(line) +else: + print line + +i=1 +while not i==clientNo: + line = f1.readline() + lineStripped = line.lstrip() + f2.write(line) + i=i+1 +else: + line = f1.readline() + +while not lineStripped == '</toolbox>\n': + line = f1.readline() + f2.write(line) + lineStripped = line.lstrip() +else: + print line + +##close f1 and f2 +f1.close() +f2.close() + +f1=open(galaxyhome+'/tool_conf.xml','w') +f1.seek(0,0) +f2=open(galaxyhome+'/tool_conf_backup1.xml','r') +f2.seek(0,0) + +line = f2.readline() +f1.write(line) + +lineStripped=line.lstrip() + +##write entire f2 into f1 (reverse roles) +while not lineStripped == '</toolbox>\n': + line = f2.readline() + f1.write(line) + lineStripped = line.lstrip() +else: + print line + +f1.close() +f2.close() +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/LICENSE.txt Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,7 @@ +Copyright (c) 2010, Sumedha Ganjoo and the University of Georgia + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/LICENSE.txt~ Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,7 @@ +Copyright (c) 2009, John A. Miller and the University of Georgia + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/ParserForWADL/.classpath Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="UTF-8"?> +<classpath> + <classpathentry kind="src" path="src"/> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/> + <classpathentry kind="lib" path="/home/ganjoo/parser/WADLParser/dist/lib/jaxen.jar"/> + <classpathentry kind="lib" path="/home/ganjoo/parser/WADLParser/dist/lib/JdomParser.jar"/> + <classpathentry kind="lib" path="/home/ganjoo/parser/WADLParser/dist/lib/saxpath.jar"/> + <classpathentry kind="lib" path="/home/ganjoo/parser/WADLParser/dist/lib/xalan.jar"/> + <classpathentry kind="lib" path="/home/ganjoo/parser/WADLParser/dist/lib/xerces.jar"/> + <classpathentry kind="lib" path="/home/ganjoo/parser/WADLParser/dist/lib/xml-apis.jar"/> + <classpathentry kind="output" path="bin"/> +</classpath>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/ParserForWADL/.project Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>ParserForWADL</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + <buildCommand> + <name>org.eclipse.jdt.core.javabuilder</name> + <arguments> + </arguments> + </buildCommand> + </buildSpec> + <natures> + <nature>org.eclipse.jdt.core.javanature</nature> + </natures> +</projectDescription>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/ParserForWADL/.settings/org.eclipse.jdt.core.prefs Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,12 @@ +#Mon Apr 12 19:03:29 EDT 2010 +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=1.6 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.source=1.6
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/ParserForWADL/src/lsdis/Application.java Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,108 @@ +/* + * Copyright (c) 2009 Srikalyan Swayampakula.. All rights reserved. + * + * Author : Srikalyan Swayampakula. . + * Name of the File : Application.java . + * Created on : Nov 22, 2009 at 3:20:25 PM . + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above + * copyright notice, this list of conditions and the following + * disclaimer. + * 2. Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials + * provided with the distribution. + * 3. Neither the name of the University of Georgia nor the names + * of its contributors may be used to endorse or promote + * products derived from this software without specific prior + * written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package lsdis; + +import java.util.List; +import java.util.Map; + +/** + * + * @author Srikalyan Swayampakula. + */ +public class Application +{ + + private List<Resources> resources; + private List<Doc> docs; + private Grammar grammar; + private Map<String, String> namespaces; + + public Application() + { + } + + public Application(List<Resources> resources, List<Doc> docs, Grammar grammar, Map<String, String> namespaces) + { + this.resources = resources; + this.docs = docs; + this.grammar = grammar; + this.namespaces = namespaces; + } + + public List<Doc> getDocs() + { + return docs; + } + + public void setDocs(List<Doc> doc) + { + this.docs = doc; + } + + public Grammar getGrammar() + { + return grammar; + } + + public void setGrammar(Grammar grammar) + { + this.grammar = grammar; + } + + public Map<String, String> getNamespaces() + { + return namespaces; + } + + public void setNamespaces(Map<String, String> namespaces) + { + this.namespaces = namespaces; + } + + public List<Resources> getResources() + { + return resources; + } + + public void setResources(List<Resources> resources) + { + this.resources = resources; + } + + +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/ParserForWADL/src/lsdis/Doc.java Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,91 @@ +/* + * Copyright (c) 2009 Srikalyan Swayampakula.. All rights reserved. + * + * Author : Srikalyan Swayampakula. . + * Name of the File : Doc.java . + * Created on : Nov 22, 2009 at 3:29:12 PM . + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above + * copyright notice, this list of conditions and the following + * disclaimer. + * 2. Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials + * provided with the distribution. + * 3. Neither the name of the University of Georgia nor the names + * of its contributors may be used to endorse or promote + * products derived from this software without specific prior + * written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package lsdis; + +/** + * + * @author Srikalyan Swayampakula. + */ +public class Doc +{ + + private String title; + private String lang; + private String innerText; + + public Doc() + { + } + + public Doc(String title, String lang, String innerText) + { + this.title = title; + this.lang = lang; + this.innerText = innerText; + } + + public String getLang() + { + return lang; + } + + public void setLang(String lang) + { + this.lang = lang; + } + + public String getTitle() + { + return title; + } + + public void setTitle(String title) + { + this.title = title; + } + + public String getInnerText() + { + return innerText; + } + + public void setInnerText(String innerText) + { + this.innerText = innerText; + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/ParserForWADL/src/lsdis/Grammar.java Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,81 @@ +/* + * Copyright (c) 2009 Srikalyan Swayampakula.. All rights reserved. + * + * Author : Srikalyan Swayampakula. . + * Name of the File : Grammar.java . + * Created on : Nov 22, 2009 at 3:30:09 PM . + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above + * copyright notice, this list of conditions and the following + * disclaimer. + * 2. Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials + * provided with the distribution. + * 3. Neither the name of the University of Georgia nor the names + * of its contributors may be used to endorse or promote + * products derived from this software without specific prior + * written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package lsdis; + +import java.util.List; + +/** + * + * @author Srikalyan Swayampakula. + */ +public class Grammar +{ + + List<Doc> docs; + List<Include> include; + + public Grammar() + { + } + + public Grammar(List<Doc> docs, List<Include> include) + { + this.docs = docs; + this.include = include; + } + + public List<Doc> getDocs() + { + return docs; + } + + public void setDocs(List<Doc> docs) + { + this.docs = docs; + } + + public List<Include> getInclude() + { + return include; + } + + public void setInclude(List<Include> include) + { + this.include = include; + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/ParserForWADL/src/lsdis/Include.java Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,82 @@ +/* + * Copyright (c) 2009 Srikalyan Swayampakula.. All rights reserved. + * + * Author : Srikalyan Swayampakula. . + * Name of the File : Include.java . + * Created on : Nov 22, 2009 at 4:17:58 PM . + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above + * copyright notice, this list of conditions and the following + * disclaimer. + * 2. Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials + * provided with the distribution. + * 3. Neither the name of the University of Georgia nor the names + * of its contributors may be used to endorse or promote + * products derived from this software without specific prior + * written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package lsdis; + +import java.net.URI; +import java.util.List; + +/** + * + * @author Srikalyan Swayampakula. + */ +public class Include +{ + + List<Doc> docs; + URI href; + + public Include() + { + } + + public Include(List<Doc> docs, URI href) + { + this.docs = docs; + this.href = href; + } + + public List<Doc> getDocs() + { + return docs; + } + + public void setDocs(List<Doc> docs) + { + this.docs = docs; + } + + public URI getHref() + { + return href; + } + + public void setHref(URI href) + { + this.href = href; + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/ParserForWADL/src/lsdis/Link.java Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,105 @@ +/* + * Copyright (c) 2009 Srikalyan Swayampakula.. All rights reserved. + * + * Author : Srikalyan Swayampakula. . + * Name of the File : Link.java . + * Created on : Nov 22, 2009 at 4:54:49 PM . + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above + * copyright notice, this list of conditions and the following + * disclaimer. + * 2. Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials + * provided with the distribution. + * 3. Neither the name of the University of Georgia nor the names + * of its contributors may be used to endorse or promote + * products derived from this software without specific prior + * written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package lsdis; + +import java.util.List; + +/** + * + * @author Srikalyan Swayampakula. + */ +public class Link +{ + + private List<Doc> docs; + private String resource_type; + private String rel; + private String rev; + + public Link(List<Doc> docs, String resource_type, String rel, String rev) + { + this.docs = docs; + this.resource_type = resource_type; + this.rel = rel; + this.rev = rev; + } + + public Link() + { + } + + public List<Doc> getDocs() + { + return docs; + } + + public void setDocs(List<Doc> docs) + { + this.docs = docs; + } + + public String getRel() + { + return rel; + } + + public void setRel(String rel) + { + this.rel = rel; + } + + public String getResource_type() + { + return resource_type; + } + + public void setResource_type(String resource_type) + { + this.resource_type = resource_type; + } + + public String getRev() + { + return rev; + } + + public void setRev(String rev) + { + this.rev = rev; + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/ParserForWADL/src/lsdis/Method.java Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,130 @@ +/* + * Copyright (c) 2009 Srikalyan Swayampakula.. All rights reserved. + * + * Author : Srikalyan Swayampakula. . + * Name of the File : Method.java . + * Created on : Nov 22, 2009 at 4:04:55 PM . + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above + * copyright notice, this list of conditions and the following + * disclaimer. + * 2. Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials + * provided with the distribution. + * 3. Neither the name of the University of Georgia nor the names + * of its contributors may be used to endorse or promote + * products derived from this software without specific prior + * written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package lsdis; + +import java.net.URI; +import java.util.List; + +/** + * + * @author Srikalyan Swayampakula. + */ +public class Method +{ + + private List<Doc> docs; + private Request request; + private List<Response> response; + private String id; + private String name; + private URI href; + + public Method() + { + } + + public Method(List<Doc> docs, Request request, List<Response> response, String id, String name, URI href) + { + this.docs = docs; + this.request = request; + this.response = response; + this.id = id; + this.name = name; + this.href = href; + } + + public List<Doc> getDocs() + { + return docs; + } + + public void setDocs(List<Doc> docs) + { + this.docs = docs; + } + + public URI getHref() + { + return href; + } + + public void setHref(URI href) + { + this.href = href; + } + + public String getId() + { + return id; + } + + public void setId(String id) + { + this.id = id; + } + + public String getName() + { + return name; + } + + public void setName(String name) + { + this.name = name; + } + + public Request getRequest() + { + return request; + } + + public void setRequest(Request request) + { + this.request = request; + } + + public List<Response> getResponse() + { + return response; + } + + public void setResponse(List<Response> response) + { + this.response = response; + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/ParserForWADL/src/lsdis/Option.java Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,93 @@ +/* + * Copyright (c) 2009 Srikalyan Swayampakula.. All rights reserved. + * + * Author : Srikalyan Swayampakula. . + * Name of the File : Option.java . + * Created on : Nov 22, 2009 at 4:53:33 PM . + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above + * copyright notice, this list of conditions and the following + * disclaimer. + * 2. Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials + * provided with the distribution. + * 3. Neither the name of the University of Georgia nor the names + * of its contributors may be used to endorse or promote + * products derived from this software without specific prior + * written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package lsdis; + +import java.util.List; + +/** + * + * @author Srikalyan Swayampakula. + */ +public class Option +{ + + private List<Doc> docs; + private String name; + private String mediaType; + + public Option() + { + } + + public Option(List<Doc> docs, String name, String mediaType) + { + this.docs = docs; + this.name = name; + this.mediaType = mediaType; + } + + public List<Doc> getDocs() + { + return docs; + } + + public void setDocs(List<Doc> docs) + { + this.docs = docs; + } + + public String getMediaType() + { + return mediaType; + } + + public void setMediaType(String mediaType) + { + this.mediaType = mediaType; + } + + public String getName() + { + return name; + } + + public void setName(String name) + { + this.name = name; + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/ParserForWADL/src/lsdis/Param.java Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,213 @@ +/* + * Copyright (c) 2009 Srikalyan Swayampakula.. All rights reserved. + * + * Author : Srikalyan Swayampakula. . + * Name of the File : Param.java . + * Created on : Nov 22, 2009 at 4:03:57 PM . + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above + * copyright notice, this list of conditions and the following + * disclaimer. + * 2. Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials + * provided with the distribution. + * 3. Neither the name of the University of Georgia nor the names + * of its contributors may be used to endorse or promote + * products derived from this software without specific prior + * written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package lsdis; + +import java.net.URI; +import java.util.List; + +/** + * + * @author Srikalyan Swayampakula. + */ +public class Param +{ + + private List<Doc> docs; + private List<Option> options; + private Link link; + private URI href; + private String name; + private String style; + private String id; + private String type; + private String default1; + private boolean required = false; + private boolean repeation = false; + private String fixed; + private String path; + + public Param() + { + } + + public Param(List<Doc> docs, List<Option> options, Link link, URI href, String name, String style, String id, String type, String default1, String fixed, String path,Boolean required) + { + this.docs = docs; + this.options = options; + this.link = link; + this.href = href; + this.name = name; + this.style = style; + this.id = id; + this.type = type; + this.default1 = default1; + this.fixed = fixed; + this.path = path; + this.required = required; + } + + public String getDefault1() + { + return default1; + } + + public void setDefault1(String default1) + { + this.default1 = default1; + } + + public List<Doc> getDocs() + { + return docs; + } + + public void setDocs(List<Doc> docs) + { + this.docs = docs; + } + + public String getFixed() + { + return fixed; + } + + public void setFixed(String fixed) + { + this.fixed = fixed; + } + + public URI getHref() + { + return href; + } + + public void setHref(URI href) + { + this.href = href; + } + + public String getId() + { + return id; + } + + public void setId(String id) + { + this.id = id; + } + + public Link getLink() + { + return link; + } + + public void setLink(Link link) + { + this.link = link; + } + + public String getName() + { + return name; + } + + public void setName(String name) + { + this.name = name; + } + + public List<Option> getOptions() + { + return options; + } + + public void setOptions(List<Option> options) + { + this.options = options; + } + + public String getPath() + { + return path; + } + + public void setPath(String path) + { + this.path = path; + } + + public boolean isRepeation() + { + return repeation; + } + + public void setRepeation(boolean repeation) + { + this.repeation = repeation; + } + + public boolean isRequired() + { + return required; + } + + public void setRequired(boolean required) + { + this.required = required; + } + + public String getStyle() + { + return style; + } + + public void setStyle(String style) + { + this.style = style; + } + + public String getType() + { + return type; + } + + public void setType(String type) + { + this.type = type; + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/ParserForWADL/src/lsdis/Representation.java Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,142 @@ +/* + * Copyright (c) 2009 Srikalyan Swayampakula.. All rights reserved. + * + * Author : Srikalyan Swayampakula. . + * Name of the File : Representation.java . + * Created on : Nov 22, 2009 at 4:40:18 PM . + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above + * copyright notice, this list of conditions and the following + * disclaimer. + * 2. Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials + * provided with the distribution. + * 3. Neither the name of the University of Georgia nor the names + * of its contributors may be used to endorse or promote + * products derived from this software without specific prior + * written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package lsdis; + +import java.net.URI; +import java.util.List; + +/** + * + * @author Srikalyan Swayampakula. + */ +public class Representation +{ + + private List<Doc> docs; + private List<Param> params; + private String id; + private String element; + private String mediaType; + private URI href; + private String profile; + + public Representation() + { + } + + public Representation(List<Doc> docs, List<Param> params, String id, String element, String mediaType, URI href, String profile) + { + this.docs = docs; + this.params = params; + this.id = id; + this.element = element; + this.mediaType = mediaType; + this.href = href; + this.profile = profile; + } + + public List<Doc> getDocs() + { + return docs; + } + + public void setDocs(List<Doc> docs) + { + this.docs = docs; + } + + public String getElement() + { + return element; + } + + public void setElement(String element) + { + this.element = element; + } + + public URI getHref() + { + return href; + } + + public void setHref(URI href) + { + this.href = href; + } + + public String getId() + { + return id; + } + + public void setId(String id) + { + this.id = id; + } + + public String getMediaType() + { + return mediaType; + } + + public void setMediaType(String mediaType) + { + this.mediaType = mediaType; + } + + public List<Param> getParams() + { + return params; + } + + public void setParams(List<Param> params) + { + this.params = params; + } + + public String getProfile() + { + return profile; + } + + public void setProfile(String profile) + { + this.profile = profile; + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/ParserForWADL/src/lsdis/Request.java Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,93 @@ +/* + * Copyright (c) 2009 Srikalyan Swayampakula.. All rights reserved. + * + * Author : Srikalyan Swayampakula. . + * Name of the File : Request.java . + * Created on : Nov 22, 2009 at 4:28:48 PM . + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above + * copyright notice, this list of conditions and the following + * disclaimer. + * 2. Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials + * provided with the distribution. + * 3. Neither the name of the University of Georgia nor the names + * of its contributors may be used to endorse or promote + * products derived from this software without specific prior + * written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package lsdis; + +import java.util.List; + +/** + * + * @author Srikalyan Swayampakula. + */ +public class Request +{ + + private List<Doc> docs; + private List<Param> params; + private List<Representation> representations; + + public Request(List<Doc> docs, List<Param> params, List<Representation> representations) + { + this.docs = docs; + this.params = params; + this.representations = representations; + } + + public Request() + { + } + + public List<Doc> getDocs() + { + return docs; + } + + public void setDocs(List<Doc> docs) + { + this.docs = docs; + } + + public List<Param> getParams() + { + return params; + } + + public void setParams(List<Param> params) + { + this.params = params; + } + + public List<Representation> getRepresentations() + { + return representations; + } + + public void setRepresentations(List<Representation> representations) + { + this.representations = representations; + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/ParserForWADL/src/lsdis/Resource.java Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,149 @@ +/* + * Copyright (c) 2009 Srikalyan Swayampakula.. All rights reserved. + * + * Author : Srikalyan Swayampakula. . + * Name of the File : Resource.java . + * Created on : Nov 22, 2009 at 3:22:09 PM . + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above + * copyright notice, this list of conditions and the following + * disclaimer. + * 2. Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials + * provided with the distribution. + * 3. Neither the name of the University of Georgia nor the names + * of its contributors may be used to endorse or promote + * products derived from this software without specific prior + * written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package lsdis; + +import java.util.List; + +/** + * + * @author Srikalyan Swayampakula. + */ +public class Resource +{ + + public static final String QUERY_TYPE_DEFAULT = "application/x-www-form-urlencoded"; + private List<Doc> docs; + private List<Param> params; + private List<Method> methods; + private List<Resource> resources; + private String id; + private String queryType; + private String path; + + public Resource() + { + } + + public Resource(List<Doc> docs, List<Param> params, List<Method> methods, List<Resource> resources, String id, String queryType, String path) + { + this.docs = docs; + this.params = params; + this.methods = methods; + this.resources = resources; + this.id = id; + if (queryType != null) + { + this.queryType = queryType; + } + else + { + queryType = QUERY_TYPE_DEFAULT; + } + this.path = path; + } + + public List<Doc> getDocs() + { + return docs; + } + + public void setDocs(List<Doc> docs) + { + this.docs = docs; + } + + public String getId() + { + return id; + } + + public void setId(String id) + { + this.id = id; + } + + public List<Method> getMethods() + { + return methods; + } + + public void setMethods(List<Method> methods) + { + this.methods = methods; + } + + public List<Param> getParams() + { + return params; + } + + public void setParams(List<Param> params) + { + this.params = params; + } + + public String getPath() + { + return path; + } + + public void setPath(String path) + { + this.path = path; + } + + public String getQueryType() + { + return queryType; + } + + public void setQueryType(String queryType) + { + this.queryType = queryType; + } + + public List<Resource> getResources() + { + return resources; + } + + public void setResources(List<Resource> resources) + { + this.resources = resources; + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/ParserForWADL/src/lsdis/Resources.java Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,94 @@ +/* + * Copyright (c) 2009 Srikalyan Swayampakula.. All rights reserved. + * + * Author : Srikalyan Swayampakula. . + * Name of the File : Resources.java . + * Created on : Nov 22, 2009 at 3:28:58 PM . + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above + * copyright notice, this list of conditions and the following + * disclaimer. + * 2. Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials + * provided with the distribution. + * 3. Neither the name of the University of Georgia nor the names + * of its contributors may be used to endorse or promote + * products derived from this software without specific prior + * written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package lsdis; + +import java.net.URI; +import java.util.List; + +/** + * + * @author Srikalyan Swayampakula. + */ +public class Resources +{ + + private List<Doc> docs; + private List<Resource> resources; + private URI base; + + public Resources() + { + } + + public Resources(List<Doc> docs, List<Resource> resources, URI base) + { + this.docs = docs; + this.resources = resources; + this.base = base; + } + + public URI getBase() + { + return base; + } + + public void setBase(URI base) + { + this.base = base; + } + + public List<Doc> getDocs() + { + return docs; + } + + public void setDocs(List<Doc> docs) + { + this.docs = docs; + } + + public List<Resource> getResources() + { + return resources; + } + + public void setResources(List<Resource> resources) + { + this.resources = resources; + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/ParserForWADL/src/lsdis/Response.java Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,105 @@ +/* + * Copyright (c) 2009 Srikalyan Swayampakula.. All rights reserved. + * + * Author : Srikalyan Swayampakula. . + * Name of the File : Response.java . + * Created on : Nov 22, 2009 at 4:28:56 PM . + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above + * copyright notice, this list of conditions and the following + * disclaimer. + * 2. Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials + * provided with the distribution. + * 3. Neither the name of the University of Georgia nor the names + * of its contributors may be used to endorse or promote + * products derived from this software without specific prior + * written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package lsdis; + +import java.util.List; + +/** + * + * @author Srikalyan Swayampakula. + */ +public class Response +{ + + private List<Doc> docs; + private List<Param> params; + private List<Representation> representations; + private int status; + + public Response() + { + } + + public Response(List<Doc> docs, List<Param> params, List<Representation> representations, int status) + { + this.docs = docs; + this.params = params; + this.representations = representations; + this.status = status; + } + + public List<Doc> getDocs() + { + return docs; + } + + public void setDocs(List<Doc> docs) + { + this.docs = docs; + } + + public List<Param> getParams() + { + return params; + } + + public void setParams(List<Param> params) + { + this.params = params; + } + + public List<Representation> getRepresentations() + { + return representations; + } + + public void setRepresentations(List<Representation> representations) + { + this.representations = representations; + } + + public int getStatus() + { + return status; + } + + public void setStatus(int status) + { + this.status = status; + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/ParserForWADL/src/lsdis/WADLConstant.java Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,95 @@ +/* + * Copyright (c) 2009 Srikalyan Swayampakula.. All rights reserved. + * + * Author : Srikalyan Swayampakula. . + * Name of the File : WADLConstant.java . + * Created on : Nov 22, 2009 at 3:22:02 PM . + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above + * copyright notice, this list of conditions and the following + * disclaimer. + * 2. Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials + * provided with the distribution. + * 3. Neither the name of the University of Georgia nor the names + * of its contributors may be used to endorse or promote + * products derived from this software without specific prior + * written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package lsdis; + +/** + * + * @author Srikalyan Swayampakula. + */ +public class WADLConstant +{ + + public static final String XSI = "http://www.w3.org/2001/XMLSchema-instance"; + public static final String XSD = "http://www.w3.org/2001/XMLSchema"; + public static final String APPLICATION = "application"; + public static final String DOC = "doc"; + public static final String DOC_TITLE = "title"; + public static final String DOC_LANG="lang"; + public static final String GRAMMAR = "grammars"; + public static final String INCLUDE = "include"; + public static final String INCLUDE_HREF="href"; + public static final String RESOURCES = "resources"; + public static final String RESOURCES_BASE = "base"; + public static final String RESOURCE = "resource"; + public static final String RESOURCE_ID = "id"; + public static final String RESOURCE_TYPE = "type"; + public static final String RESOURCE_QUERY_TYPE = "queryType"; + public static final String RESOURCE_PATH = "path"; + public static final String METHOD = "method"; + public static final String METHOD_ID = "id"; + public static final String METHOD_NAME = "name"; + public static final String METHOD_HREF = "href"; + public static final String REQUEST = "request"; + public static final String RESPONSE = "response"; + public static final String RESPONSE_STATUS = "status"; + public static final String REPRESENTATION = "representation"; + public static final String REPRESENTATION_ID="id"; + public static final String REPRESENTATION_ELEMENT="element"; + public static final String REPRESENTATION_MEDIA_TYPE="mediaType"; + public static final String REPRESENTATION_HREF="href"; + public static final String REPRESENTATION_PROFILE="profile"; + public static final String PARAM="param"; + public static final String PARAM_HREF="href"; + public static final String PARAM_NAME="name"; + public static final String PARAM_STYLE="style"; + public static final String PARAM_ID="id"; + public static final String PARAM_TYPE="type"; + public static final String PARAM_DEFAULT="default"; + public static final String PARAM_REQUIRED="required"; + public static final String PARAM_REPEATING="repeating"; + public static final String PARAM_FIXED="fixed"; + public static final String PARAM_PATH="path"; + public static final String OPTION="option"; + public static final String OPTION_VALUE="value"; + public static final String OPTION_MEDIA_TYPE="mediaType"; + public static final String LINK="link"; + public static final String LINK_RESOURCE_TYPE="resource_type"; + public static final String LINK_REL="rel"; + public static final String LINK_REV="rev"; + +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/ParserForWADL/src/lsdis/WADLParser.java Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,531 @@ +/* + * Copyright (c) 2009 Srikalyan Swayampakula.. All rights reserved. + * + * Author : Srikalyan Swayampakula. . + * Name of the File : WADLParser.java . + * Created on : Nov 22, 2009 at 5:30:47 PM . + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above + * copyright notice, this list of conditions and the following + * disclaimer. + * 2. Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials + * provided with the distribution. + * 3. Neither the name of the University of Georgia nor the names + * of its contributors may be used to endorse or promote + * products derived from this software without specific prior + * written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package lsdis; + +import java.io.File; +import java.net.URI; +import java.net.URL; +import java.util.ArrayList; +import java.util.List; +import org.jdom.Attribute; +import org.jdom.Document; +import org.jdom.Element; +import org.jdom.Namespace; +import org.jdom.input.SAXBuilder; +import org.xml.sax.Attributes; + +/** + * + * @author Srikalyan Swayampakula. + */ +public class WADLParser +{ + + static Document currentDocument; + static Element rootElement; + static Namespace wadlNamespace; + public Application application; + + public WADLParser(URL fileURL) throws Exception + { + currentDocument = generateDocumentation(fileURL); + rootElement = currentDocument.getRootElement(); + wadlNamespace = rootElement.getNamespace(); + application = getApplication(); + } + + public Application getApplicationOfWADL() + { + return application; + } + + private Document generateDocumentation(URL fileName) throws Exception + { + Document doc = null; + SAXBuilder builder = new SAXBuilder(); + //doc = builder.build(new File(fileName.toURI())); + doc = builder.build(fileName); + return doc; + } + + private Application getApplication() throws Exception + { + List<Doc> docs = getDocs(rootElement); + List<Resources> resources = getResources(rootElement); + Grammar grammar = getGrammar(rootElement); + return new Application(resources, docs, grammar, null); + } + + /*** + * used to get docs list for an element eg. applicaiton. + * @param e + * @return + */ + private List<Doc> getDocs(Element e) + { + if (e == null) + { + return null; + } + List<Doc> docs = null; + List<Element> xmlDoc = e.getChildren(WADLConstant.DOC, wadlNamespace); + if (xmlDoc != null) + { + docs = new ArrayList<Doc>(); + for (Element e1 : xmlDoc) + { + Doc tempDoc = getDoc(e1); + if (tempDoc != null) + { + docs.add(tempDoc); + } + } + } + return docs; + } + + private Doc getDoc(Element e) + { + if (e == null) + { + return null; + } + String title = e.getAttributeValue(WADLConstant.DOC_TITLE); + + String lang = e.getAttributeValue(WADLConstant.DOC_LANG); + if (lang == null) + { + List<Attribute> temp = e.getAttributes(); + for (Attribute temp1 : temp) + { + if((temp1.getName()).equals(WADLConstant.DOC_LANG)) + lang=temp1.getValue(); + } + } + String innerText = e.getText(); + return new Doc(title, lang, innerText); + } + + private Grammar getGrammar(Element e) throws Exception + { + if (e == null) + { + return null; + } + List<Doc> docs = getDocs(e); + List<Include> includes = getIncludes(e); + return new Grammar(docs, includes); + } + + private List<Include> getIncludes(Element e) throws Exception + { + if (e == null) + { + return null; + } + List<Include> includes = null; + List<Element> xmlIncludes = e.getChildren(WADLConstant.INCLUDE, wadlNamespace); + if (xmlIncludes != null) + { + includes = new ArrayList<Include>(); + for (Element xmlInclude : xmlIncludes) + { + Include tempInclude = getInclude(xmlInclude); + if (tempInclude != null) + { + includes.add(tempInclude); + } + } + } + return includes; + } + + private Include getInclude(Element e) throws Exception + { + if (e == null) + { + return null; + } + List<Doc> docs = getDocs(e); + URI href = null; + String tempHref = e.getAttributeValue(WADLConstant.INCLUDE_HREF); + if (tempHref != null) + { + href = new URI(tempHref); + } + return new Include(docs, href); + } + + private List<Resources> getResources(Element e) throws Exception + { + if (e == null) + { + return null; + } + + List<Resources> resources = null; + List<Element> xmlResources = e.getChildren(WADLConstant.RESOURCES, wadlNamespace); + if (xmlResources != null) + { + resources = new ArrayList<Resources>(); + for (Element tempResources : xmlResources) + { + Resources tempResource = getResourcesInstance(tempResources); + if (tempResource != null) + { + resources.add(tempResource); + } + } + } + + return resources; + + } + + private Resources getResourcesInstance(Element e) throws Exception + { + if (e == null) + { + return null; + } + String tempBase = e.getAttributeValue(WADLConstant.RESOURCES_BASE);//, wadlNamespace); + URI base = null; + if (tempBase != null) + { + base = new URI(tempBase); + } + List<Doc> docs = getDocs(e); + List<Resource> subResources = getSubResources(e); + return new Resources(docs, subResources, base); + } + + private List<Resource> getSubResources(Element e) throws Exception + { + if (e == null) + { + return null; + + } + List<Resource> subResources = null; + List<Element> xmlSubResources = e.getChildren(WADLConstant.RESOURCE, wadlNamespace); + if (xmlSubResources != null) + { + subResources = new ArrayList<Resource>(); + for (Element xmlSubResource : xmlSubResources) + { + Resource subResource = getSubResource(xmlSubResource); + if (subResource != null) + { + subResources.add(subResource); + } + } + } + + return subResources; + + } + + private Resource getSubResource(Element e) throws Exception + { + if (e == null) + { + return null; + } + List<Doc> docs = getDocs(e); + List<Param> params = getParams(e); + List<Method> methods = getMethods(e); + List<Resource> resources = getSubResources(e); + String id = e.getAttributeValue(WADLConstant.RESOURCE_ID);//, wadlNamespace); + String queryType = e.getAttributeValue(WADLConstant.RESOURCE_QUERY_TYPE);//, wadlNamespace); + String path = e.getAttributeValue(WADLConstant.RESOURCE_PATH); + //System.out.println("the path is " + path + " wadlNampeSpace is " + wadlNamespace); + return new Resource(docs, params, methods, resources, id, queryType, path); + } + + private List<Param> getParams(Element e) throws Exception + { + if (e == null) + { + return null; + + } + List<Param> params = null; + List<Element> xmlParams = e.getChildren(WADLConstant.PARAM, wadlNamespace); + if (xmlParams != null) + { + params = new ArrayList<Param>(); + for (Element xmlParam : xmlParams) + { + Param param = getParam(xmlParam); + if (param != null) + { + params.add(param); + + } + } + } + return params; + } + + private Param getParam(Element e) throws Exception + { + if (e == null) + { + return null; + } + List<Doc> docs = getDocs(e); + List<Option> options = getOptions(e); + Link link = getLink(e.getChild(WADLConstant.LINK, wadlNamespace)); + String tempHref = e.getAttributeValue(WADLConstant.PARAM_HREF);//, wadlNamespace); + URI href = null; + if (tempHref != null) + { + href = new URI(tempHref); + } + String name = e.getAttributeValue(WADLConstant.PARAM_NAME);//, wadlNamespace); + String style = e.getAttributeValue(WADLConstant.PARAM_STYLE);//, wadlNamespace); + String id = e.getAttributeValue(WADLConstant.PARAM_ID);//, wadlNamespace); + String type = e.getAttributeValue(WADLConstant.PARAM_TYPE);//, wadlNamespace); + String default1 = e.getAttributeValue(WADLConstant.PARAM_DEFAULT);//, wadlNamespace); + String tempRequired = e.getAttributeValue(WADLConstant.PARAM_REQUIRED);//, wadlNamespace); + boolean required = false; + if (tempRequired != null) + { + required = Boolean.valueOf(tempRequired); + } + String tempRepeating = e.getAttributeValue(WADLConstant.PARAM_REPEATING);//, wadlNamespace); + boolean repeating = false; + if (tempRepeating != null) + { + repeating = Boolean.valueOf(tempRepeating); + } + String fixed = e.getAttributeValue(WADLConstant.PARAM_FIXED);//, wadlNamespace); + String path = e.getAttributeValue(WADLConstant.PARAM_PATH);//, wadlNamespace); + return new Param(docs, options, link, href, name, style, id, type, default1, fixed, path,required); + } + + private List<Option> getOptions(Element e) + { + System.out.println(e.getName()); + if (e == null) + { + return null; + } + List<Option> options = null; + List<Element> xmlOptions = e.getChildren(WADLConstant.OPTION, wadlNamespace); + if (xmlOptions != null) + { + options = new ArrayList<Option>(); + for (Element xmlOption : xmlOptions) + { + Option option = getOption(xmlOption); + if (option != null) + { + options.add(option); + } + } + } + return options; + } + + private Option getOption(Element e) + { + if (e == null) + { + return null; + } + List<Doc> docs = getDocs(e); + String value = e.getAttributeValue(WADLConstant.OPTION_VALUE);//, wadlNamespace); + String mediaType = e.getAttributeValue(WADLConstant.OPTION_MEDIA_TYPE);//, wadlNamespace); + return new Option(docs, value, mediaType); + } + + private Link getLink(Element e) + { + if (e == null) + { + return null; + } + List<Doc> docs = getDocs(e); + String resourceType = e.getAttributeValue(WADLConstant.LINK_RESOURCE_TYPE);//, wadlNamespace); + String rel = e.getAttributeValue(WADLConstant.LINK_REL);//, wadlNamespace); + String rev = e.getAttributeValue(WADLConstant.LINK_REV);//, wadlNamespace); + return new Link(docs, resourceType, rel, rev); + } + + private List<Method> getMethods(Element e) throws Exception + { + if (e == null) + { + return null; + } + List<Method> methods = null; + List<Element> xmlMethods = e.getChildren(WADLConstant.METHOD, wadlNamespace); + if (xmlMethods != null) + { + methods = new ArrayList<Method>(); + for (Element xmlMethod : xmlMethods) + { + Method method = getMethod(xmlMethod); + if (method != null) + { + methods.add(method); + } + } + } + return methods; + } + + private Method getMethod(Element e) throws Exception + { + if (e == null) + { + return null; + } + List<Doc> docs = getDocs(e); + Request request = getRequest(e.getChild(WADLConstant.REQUEST, wadlNamespace)); + List<Response> responses = getResponses(e); + String id = e.getAttributeValue(WADLConstant.METHOD_ID);//, wadlNamespace); + String tempHref = e.getAttributeValue(WADLConstant.METHOD_HREF);//, wadlNamespace); + URI href = null; + if (tempHref != null) + { + href = new URI(tempHref); + } + String name = e.getAttributeValue(WADLConstant.METHOD_NAME);//, wadlNamespace); + return new Method(docs, request, responses, id, name, href); + } + + private Request getRequest(Element e) throws Exception + { + if (e == null) + { + return null; + } + List<Doc> docs = getDocs(e); + List<Param> params = getParams(e); + List<Representation> representations = getRepresentations(e); + return new Request(docs, params, representations); + } + + private List<Representation> getRepresentations(Element e) throws Exception + { + if (e == null) + { + return null; + } + List<Representation> representations = null; + List<Element> xmlRepresentations = e.getChildren(WADLConstant.REPRESENTATION, wadlNamespace); + if (xmlRepresentations != null) + { + representations = new ArrayList<Representation>(); + for (Element xmlRepresentation : xmlRepresentations) + { + Representation representation = getRepresentation(e); + if (representation != null) + { + representations.add(representation); + } + } + } + return representations; + } + + private Representation getRepresentation(Element e) throws Exception + { + if (e == null) + { + return null; + } + List<Doc> docs = getDocs(e); + List<Param> params = getParams(e); + String id = e.getAttributeValue(WADLConstant.REPRESENTATION_ID);//, wadlNamespace); + String element = e.getAttributeValue(WADLConstant.REPRESENTATION_ELEMENT);//, wadlNamespace); + String mediaType = e.getAttributeValue(WADLConstant.REPRESENTATION_MEDIA_TYPE);//, wadlNamespace); + String tempHref = e.getAttributeValue(WADLConstant.REPRESENTATION_HREF);//, wadlNamespace); + URI href = null; + if (tempHref != null) + { + href = new URI(tempHref); + } + String profile = e.getAttributeValue(WADLConstant.REPRESENTATION_PROFILE);//, wadlNamespace); + return new Representation(docs, params, id, element, mediaType, href, profile); + } + + private List<Response> getResponses(Element e) throws Exception + { + if (e == null) + { + return null; + } + List<Response> responses = null; + List<Element> xmlResponses = e.getChildren(WADLConstant.RESPONSE, wadlNamespace); + if (xmlResponses != null) + { + responses = new ArrayList<Response>(); + for (Element xmlResponse : xmlResponses) + { + Response response = getResponse(e); + if (response != null) + { + responses.add(response); + } + } + } + return responses; + } + + private Response getResponse(Element e) throws Exception + { + if (e == null) + { + return null; + } + List<Doc> docs = getDocs(e); + List<Param> params = getParams(e); + List<Representation> representations = getRepresentations(e); + String tempStatus = e.getAttributeValue(WADLConstant.RESPONSE_STATUS);//, wadlNamespace); + int status = -1; + if (tempStatus != null) + { + status = Integer.parseInt(tempStatus); + } + return new Response(docs, params, representations, status); + + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/ParserForWADL/src/lsdis/WADLParserDriver.java Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,274 @@ +package lsdis; +import java.net.MalformedURLException; +import java.net.URL; + +import lsdis.*; + +import java.util.ArrayList; +import java.util.List; + + + /* + * generate url's and param names + */ + +public class WADLParserDriver { + + + // private List<List<String>> paramNames = new ArrayList<List<String>>(); + private List<Method> definedMethods = new ArrayList<Method>(); + + private int count = 0; + private List<Method> crossReferencedMethods = new ArrayList<Method>(); + private List<String> crossReferencedMethodURLS = new ArrayList<String>(); + + private List<Method> completeMethodList = new ArrayList<Method>(); + private List<String> url = new ArrayList<String>(); + + + public List<Method> getCompleteMethodList() { + return completeMethodList; + } + + public List<String> getUrl() { + return url; + } + + + + public static void main(String[] args) throws Exception { + + WADLParserDriver mpw = new WADLParserDriver(); + //mpw.parse(new URL("http://cs.uga.edu/~ganjoo/galaxy/DDBJNCBIGenomeAnnotationGetGeneList.wadl")); + mpw.parse(new URL("http://eupathdb.org/webservices/GeneQuestions/GenesByMolecularWeight.wadl")); + mpw.displayInfo(); + + } + + public void parse(URL fileURL) throws Exception { + int i=0; + + + + //URL fileURL = new URL("http://www.eupathdb.org/webservices/GeneQuestions/GenesByMolecularWeight.wadl"); + + WADLParser wadlP = new WADLParser(fileURL); + + Application app= new Application(); + app=wadlP.getApplicationOfWADL(); + + String temp = ""; + String tempHref=""; + + for(Resources resources : app.getResources()){ + temp = resources.getBase().toString(); + //traverseSubResources(temp, resources); + System.out.println(temp); + for(Resource resource : resources.getResources()){ + + temp = temp + resource.getPath(); + traverseResource(temp, resource); + //traverseSubResources(temp, resource); + System.out.println("resource path"+resource.getPath()); + if(resource.getParams()!=null && resource.getParams().size()!=0){ + for(Param param: resource.getParams()){ + System.out.println("params "+ param); + } + } + + + } + + } + + traverseCrossReferencedMethods(); + displayInfo(); + + }//end main + + + public void traverseSubResources(String passedString,Resource resource){ + + + + + for(Resource subResource : resource.getResources()){ + + String temp = passedString; + + if(temp.charAt(temp.length()-1) != '/') + temp += "/"; + temp += subResource.getPath(); + +// if(subResource.getParams()!=null && subResource.getParams().size()!=0){ +// for(Param param: subResource.getParams()){ +// if(param.getStyle().equalsIgnoreCase("template")){ +// System.out.println("params "+ param.getName()); +// temp=temp+"/{"+param.getName()+"}"; +// } +// } +// } + + //start + + + for(Method method : subResource.getMethods()){ + if(method.getId() != null){ + url.add(count, temp); + definedMethods.add(method); + + completeMethodList.add(count,method); + + count++; + } + else if(method.getHref()!=null){ //will work only for intra-document cross-reference currently + + crossReferencedMethods.add(method); + crossReferencedMethodURLS.add(temp); + + } + else{ + + System.out.println("ERROR : Method " + method.getName() + " does not have an id or a href !!" ); + } + } + + + traverseSubResources(temp, subResource); + + }//end for + + }//end method + + public void traverseResource(String passedString,Resource resource){ + + + + String temp = passedString ; + + //start + + + for(Method method : resource.getMethods()){ + if(method.getId() != null){ + url.add(count, temp); + definedMethods.add(method); + + completeMethodList.add(count,method); + + count++; + } + else if(method.getHref()!=null){ //will work only for intra-document cross-reference currently + + crossReferencedMethods.add(method); + crossReferencedMethodURLS.add(temp); + + } + else{ + + System.out.println("ERROR : Method " + method.getName() + " does not have an id or a href !!" ); + } + } + + + traverseSubResources(temp, resource); + + }//end method + + public void traverseCrossReferencedMethods(){ + int i =0; + String tempHref = ""; + + for(Method method : crossReferencedMethods){ + + url.add(count, crossReferencedMethodURLS.get(i)); + + + + tempHref = method.getHref().toString(); + if(tempHref.startsWith("#")){ + tempHref = tempHref.substring(1); + } + + for(Method m : definedMethods){ + if(m.getId().equals(tempHref)){ + + Method tempMethod = new Method(m.getDocs(),m.getRequest(),m.getResponse(),m.getId(),m.getName(),method.getHref()); + completeMethodList.add(count,tempMethod); + + break; + + } + + } + + count++; + i++; + } + + + + }//end of method + +// public void displayInfo(){ +// if(url.size()!=paramNames.size()){ +// System.out.println("Debug the code !!!! :( "); +// System.exit(0); +// } +// for(int i=0;i<url.size();i++){ +// System.out.println(url.get(i)); +// +// for(String p : paramNames.get(i)){ +// System.out.print(p + ", "); +// } +// +// System.out.println(); +// System.out.println(); +// } +// +// } + + public void displayInfo(){ + + if(url.size()!=completeMethodList.size()){ + System.out.println("Debug the code !!!! :( "); + System.exit(0); + } + for(int i=0;i<url.size();i++){ + System.out.println(url.get(i)); + + for(Method m : completeMethodList){ + System.out.println(m.getName()); + for(Param param : m.getRequest().getParams()){ + System.out.println("\t"+param.getName()); + System.out.println("\t"+param.isRequired()); + for(Doc doc : param.getDocs()){ + if(doc.getTitle().equalsIgnoreCase("prompt")){ + System.out.println("Prompt: " + doc.getInnerText()); + } + + } + List<Option> ops = param.getOptions(); + +// if(ops.size()==0){ +// System.out.println("No options available"); +// } +// else{ +// System.out.println("\t options:"); +// +// for(Option option:param.getOptions()){ +// System.out.println("\t "+option.getName()); +// } +// } + } + } + + System.out.println(); + System.out.println(); + } + } +} + + + +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/ReadMe~ Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,6 @@ +Add tool to tool_conf.xml +Set GALAXY_HOME +Set Java class path : refer line 33 in WebServiceTool_input_method.py, line 25 getMethods.py + +install: jpype, python, java. +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/WADLRESTclient2.py~ Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,68 @@ +import warnings +import platform + +with warnings.catch_warnings(): + warnings.simplefilter("ignore") + from jpype._jpackage import JPackage + from jpype import * + import os.path + import sys + + + + javahome = os.environ.get('JAVA_HOME') + galaxyhome=os.environ.get('GALAXY_HOME') + classpath= galaxyhome + '/tools/restclientWADL/ParserForWADL/bin' + jarpath = galaxyhome + '/tools/restclientWADL/WADLParser/dist/lib/' + machine = platform.machine() + + if machine == 'x86_64' : + print 'a' + startJVM("%s/jre/lib/amd64/server/libjvm.so" % javahome,"-ea", "-Djava.class.path=%s" % classpath,"-Djava.ext.dirs=%s" % jarpath) + elif machine == 'i686' : + print 'b' + 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 : + print 'c' + System.exit("Could not identify machine, please specify path to libjvm.so") + + + + pkg=JPackage('lsdis') + urlToPass=java.net.URL(sys.argv[2]) + wadlUrl = sys.argv[2] + + outputfileParamNames=open(sys.argv[5],'w') + outputfileParamNames.seek(0,0) +# outputfileParamTypes=open(sys.argv[6],'w') +# outputfileParamTypes.seek(0,0) + + webserviceId = sys.argv[3] + resUrl = sys.argv[4] + + urls = [] + methods = [] + + WADLParserDriver=pkg.WADLParserDriver + wPD=WADLParserDriver() + wPD.parse(urlToPass) + urls = wPD.getUrl() + methods = wPD.getCompleteMethodList() + + i=0 + for method in methods: + x = str(method.getId()) + y = str(urls.get(0)) + if x == webserviceId : + if y == resUrl : + for param in method.getRequest().getParams(): + if param.isRequired(): + val = 'true' + else : + val = 'false' + outputfileParamNames.write(str(param.getName())+"\t" + str(param.getType())+"\t" + str(param.getDefault1()) + "\t" + val +"\t"+resUrl+"\n") +# outputfileParamTypes.write(str(param.getType())+"\n") + break + i=i+1
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/WebServiceTool1.py~ Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,23 @@ +import warnings +import platform +import os,sys +from getMethods import * +from getMethods1 import * + +url = sys.argv[1] +urllist = url.split('.') + + +wadlDocument = Document() +#wadlDocument1 = Document1() + +if urllist[len(urllist)-1]=='wadl' or urllist[len(urllist)-1]=='WADL': + wadlDocument.getWADLMethods(url,sys.argv[2]) + # wadlDocument1.getWADLMethods(url,sys.argv[2]) +elif urllist[len(urllist)-1]=='wsdl' or urllist[len(urllist)-1]=='WSDL': + wadlDocument.getWSDLMethods(url,sys.argv[2]) + # wadlDocument1.getWSDLMethods(url,sys.argv[2]) +elif urllist[len(urllist)-1]=='sawadl' or urllist[len(urllist)-1]=='SAWADL': + wadlDocument.getSAWADLMethods(url,sys.argv[2]) + # wadlDocument1.getSAWADLMethods(url,sys.argv[2]) +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/WebServiceTool1.xml~ Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,77 @@ +<tool id="WebServiceTool_input_url" name="Step 1:Enter information about tool"> + <description> This tool takes the URL of an external Web service. The URL should point to the description document of a Web service. Currently support for only REST Web services is provided. Therefore, this description document can be a WADL or WSDL 2.0 or SAWADL document only.</description> + <command interpreter="python"> + WebServiceTool_input_url.py + $url + $output + </command> + <inputs> + <param format="text" size = "60" name = "url" type="text" label="Enter the tool description document location" help="see tip below"/> + </inputs> + <outputs> + <data format="tabular" name="output" /> + </outputs> + + <tests> + <test> + <param name="url" value="127.0.0.1:5001/hello/form"/> + <output name="output" file="outtest"/> + </test> + </tests> + + <help> + +.. class:: infomark + +**TIP:** Enter the url (of the REST Web service) description document of type WADL, WSDL 2.0, or SAWADL in the above box. + + +All the Web services come with a description document like WADL or WSDL document. Galaxy can read this information +to create the tool. + +For further assistance find samples of WADL, WSDL 2.0 and SAWADL below. + +WADL : DDBJ sample services: + + http://cs.uga.edu/__tilda__ganjoo/galaxy/DDBJBlast.wadl + + + http://cs.uga.edu/__tilda__ganjoo/galaxy/DDBJGetEntry.wadl + + + http://cs.uga.edu/__tilda__ganjoo/galaxy/DDBJNCBIGenomeAnnotationGetGeneList.wadl + + + http://cs.uga.edu/__tilda__ganjoo/galaxy/Ensembl.wadl + + + More detailed information about all REST services at DDBJ can be found at http://www.xml.nig.ac.jp/index.html + + + EuPathDB sample services: + + http://eupathdb.org/webservices/GeneQuestions/GenesByMolecularWeight.wadl + + + http://eupathdb.org/eupathdb/webservices/GeneQuestions/GenesByTextSearch.wadl + + + More detailed information about all REST services at EuPathDB can be found at http://eupathdb.org/eupathdb/serviceList.jsp + + +SAWADL : + + http://cs.uga.edu/__tilda__ganjoo/galaxy/GenesByTextSearch.sawadl + + +WSDL 2.0 : + + http://cs.uga.edu/__tilda__ganjoo/galaxy/booklist.wsdl + +*NOTE: Step 1, Step 2 and Step 3 merely add this tool to Galaxy. To use the tool, after completing Step 3, go to the Tools section on left +and find the tool under Web Service Tools and Web Service Workflow Tools.* + + </help> + +</tool> +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/WebServiceTool2.py~ Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,82 @@ +import warnings +import platform +import os,sys +from generateClient import * +from generateClient1 import * + +##input : wadl/wsdl/sawadl-url, method name +##generate a client as tool for Galaxy: +#1. Add client xml address to Galaxy tool-conf.xml file - call edit_tool_conf.py +#2. Generate client xml file - call generate client.py + +url = sys.argv[2] +urllist = url.split('.') + +#f=open(sys.argv[5],'w') +#f.write('url: ' + url + '\t') +#f.write('reached here 1') +#f.close() + +clientGenerator = ClientGenerator(sys.argv[2],sys.argv[3],sys.argv[4],sys.argv[5]) +clientGenerator1 = ClientGenerator1(sys.argv[2],sys.argv[3],sys.argv[4],sys.argv[5]) + +if urllist[len(urllist)-1]=='wadl' or urllist[len(urllist)-1]=='WADL': + javahome = os.environ.get('JAVA_HOME') + galaxyhome=os.environ.get('GALAXY_HOME') + classpath= galaxyhome + '/tools/WebServiceToolWorkflow/ParserForWADL/bin' + jarpath = galaxyhome + '/tools/WebServiceToolWorkflow/ParserForWADL/lib/' + machine = platform.machine() + + if machine == 'x86_64' : + print 'a' + startJVM("%s/jre/lib/amd64/server/libjvm.so" % javahome,"-ea", "-Djava.class.path=%s" % classpath,"-Djava.ext.dirs=%s" % jarpath) + elif machine == 'i686' : + print 'b' + 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 : + print 'c' + System.exit("Could not identify machine, please specify path to libjvm.so") + clientGenerator1.wadlClient() + clientGenerator.wadlClient() + +elif urllist[len(urllist)-1]=='wsdl' or urllist[len(urllist)-1]=='WSDL': + clientGenerator.wsdlClient() + clientGenerator1.wsdlClient() +elif urllist[len(urllist)-1]=='sawadl' or urllist[len(urllist)-1]=='SAWADL': + + javahome = os.environ.get('JAVA_HOME') + galaxyhome=os.environ.get('GALAXY_HOME') + classpath= galaxyhome + '/tools/WebServiceToolWorkflow/lib/SAWADLParser/bin' + jarpath = galaxyhome + '/tools/WebServiceToolWorkflow/lib/' + machine = platform.machine() + + if machine == 'x86_64' : + print 'a' + startJVM("%s/jre/lib/amd64/server/libjvm.so" % javahome,"-ea", "-Djava.class.path=%s" % classpath,"-Djava.ext.dirs=%s" % jarpath) + elif machine == 'i686' : + print 'b' + 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 : + print 'c' + System.exit("Could not identify machine, please specify path to libjvm.so") + + #f=open(sys.argv[5],'w') + #f.write('reached here 2 \t') + #f.close() + + clientGenerator.sawadlClient() + clientGenerator1.sawadlClient() + #f=open(sys.argv[5],'w') + #f.write('reached here 3') + #f.close() + + + + + + +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/WebServiceTool2.xml~ Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,76 @@ +<tool id="WebServiceTool_input_method" name="Step 2: Verify Settings"> + <description> This tool lets the user choose a method and a resource from the Web service description document. Many methods/operations could be grouped together in one description document. But each method/operation requires a unique tool to invoke it. So each method has to be registered with Galaxy individually.</description> + <command interpreter="python"> + WebServiceTool_input_method.py + $url + $wadl + $webservice + $resourceUrl + $output +</command> + <inputs> +<param name = "url" type="data" label="a. The previous step was" help="For your information only. The previous step that was executed is displayed. No action required."/> +<param name ="wadl" type ="select" data_ref="url" label ="b. The tool chosen was" help="Displays the Web service tool chosen in Step 1. No action required."> + <options from_dataset="url"> + <column name="name" index ="0"/> + <column name="value" index ="0"/> + <filter type="unique_value" name="unique" column="0"/> + </options> +</param> +<param name ="webservice" display = "radio" type ="select" data_ref="url" label ="c. Select the function of the tool you would like to use" help="Some tools have more than one function. It is important to select the appropriate function. One or more functions may be displayed here."> + <options from_dataset="url"> + <column name="name" index ="1"/> + <column name="value" index ="1"/> + <filter type="unique_value" name="unique1" column="1"/> + </options> +</param> +<param name ="resourceUrl" display = "radio" type ="select" data_ref="url" label ="d. Further refine the tool function. Select an option based on the documentation or experience" help="Different tools have different options to refine the tool. This could be a choice of formats or resources you want to search. Make selection based on tool documentation or experience."> + <options from_dataset="url"> + <column name="name" index ="2"/> + <column name="value" index ="2"/> + <filter type="param_value" ref="webservice" name="resourceUri" column="1"/> + <filter type="unique_value" name="unique2" column="2"/> + </options> +</param> + </inputs> + <outputs> + <data format="tabular" name="output" /> + </outputs> + + <tests> + <test> + <param name="url" value="127.0.0.1:5001/hello/form"/> + <output name="output" file="outtest"/> + </test> + </tests> + + <help> + + +.. class:: infomark + +**TIP:** a. For your information only. The previous step that was executed is displayed. No action required. + +.. class:: infomark + +**TIP:** b. Displays the Web service tool chosen in Step 1. No action required + +.. class:: infomark + +**TIP:** c. Some tools have more than one function. It is important to select the appropriate function. + One or more functions may be displayed here. + +.. class:: infomark + +**TIP:** d. Different tools have different options to refine the tool. This could be a choice of formats + or resources you want to search. + Make selection based on tool documentation or experience. + + +*NOTE: Step 1, Step 2 and Step 3 merely add this tool to Galaxy. To use the tool, after completing Step 3, go to the Tools section on left +and find the tool under Web Service Tools and Web Service Workflow Tools.* + + </help> + +</tool> +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/WebServiceTool_input_method.py Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,94 @@ +import warnings +import platform +import os,sys +from generateClient import * +from generateClient1 import * + +'''input : wadl/wsdl/sawadl-url, method name +purpose: +1. Calls methods from generateClient1.py to generate client description for one-time invocation +of the Web service. This client description is added as a xml file under ./clients/ +2. Calls methods from generateClient.py to generate client description for invocation of Web service +in a workflow. This client description is added as a xml file under ./workflowclients/ +3. Adds the path to the above xml files to Galaxy tool-conf.xml file using call edit_tool_conf.py +''' + +#read the url passed as an argument +url = sys.argv[2] + +#split url passed on '.' character +urllist = url.split('.') + +clientGenerator = ClientGenerator(sys.argv[2],sys.argv[3],sys.argv[4],sys.argv[5]) +clientGenerator1 = ClientGenerator1(sys.argv[2],sys.argv[3],sys.argv[4],sys.argv[5]) + +#if url passed is of a WADL document +if urllist[len(urllist)-1]=='wadl' or urllist[len(urllist)-1]=='WADL': + javahome = os.environ.get('JAVA_HOME') + galaxyhome=os.environ.get('GALAXY_HOME') + classpath= galaxyhome + '/tools/WebServiceToolWorkflow/ParserForWADL/bin' + jarpath = galaxyhome + '/tools/WebServiceToolWorkflow/ParserForWADL/lib/' + machine = platform.machine() + +#start JVM depending on the machine. The location of libjvm.so is assumed to be standard. +#you can replace lines 32 to 41, with startJVM("LOCATION OF YOUR LIBJVM.SO","-ea", "-Djava.class.path=%s" % classpath,"-Djava.ext.dirs=%s" % jarpath) + if machine == 'x86_64' : + print 'a' + startJVM("%s/jre/lib/amd64/server/libjvm.so" % javahome,"-ea", "-Djava.class.path=%s" % classpath,"-Djava.ext.dirs=%s" % jarpath) + elif machine == 'i686' : + print 'b' + 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") + +#generate client xml for one time invocation of a Web service + clientGenerator1.wadlClient() + +#generate client xml for invocation of a Web service in workflows + clientGenerator.wadlClient() + +#if url passed is of a WSDL 2.0 document +elif urllist[len(urllist)-1]=='wsdl' or urllist[len(urllist)-1]=='WSDL': + clientGenerator.wsdlClient() + clientGenerator1.wsdlClient() + +#if url passed is of a SAWADL document +elif urllist[len(urllist)-1]=='sawadl' or urllist[len(urllist)-1]=='SAWADL': + + javahome = os.environ.get('JAVA_HOME') + galaxyhome=os.environ.get('GALAXY_HOME') + classpath= galaxyhome + '/tools/WebServiceToolWorkflow/lib/SAWADLParser/bin' + jarpath = galaxyhome + '/tools/WebServiceToolWorkflow/lib/' + machine = platform.machine() + + if machine == 'x86_64' : + print 'a' + startJVM("%s/jre/lib/amd64/server/libjvm.so" % javahome,"-ea", "-Djava.class.path=%s" % classpath,"-Djava.ext.dirs=%s" % jarpath) + elif machine == 'i686' : + print 'b' + 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 : + print 'c' + System.exit("Could not identify machine, please specify path to libjvm.so") + + #f=open(sys.argv[5],'w') + #f.write('reached here 2 \t') + #f.close() + + clientGenerator.sawadlClient() + clientGenerator1.sawadlClient() + #f=open(sys.argv[5],'w') + #f.write('reached here 3') + #f.close() + + shutdownJVM() + + + + + +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/WebServiceTool_input_method.py~ Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,85 @@ +import warnings +import platform +import os,sys +from generateClient import * +from generateClient1 import * + +'''input : wadl/wsdl/sawadl-url, method name +purpose: +1. Calls methods from generateClient1.py to generate client description for one-time invocation +of the Web service. This client description is added as a xml file under ./clients/ +2. Calls methods from generateClient.py to generate client description for invocation of Web service +in a workflow. This client description is added as a xml file under ./workflowclients/ +3. Adds the path to the above xml files to Galaxy tool-conf.xml file using call edit_tool_conf.py +''' + +#read the url passed as an argument +url = sys.argv[2] +urllist = url.split('.') + +clientGenerator = ClientGenerator(sys.argv[2],sys.argv[3],sys.argv[4],sys.argv[5]) +clientGenerator1 = ClientGenerator1(sys.argv[2],sys.argv[3],sys.argv[4],sys.argv[5]) + +if urllist[len(urllist)-1]=='wadl' or urllist[len(urllist)-1]=='WADL': + javahome = os.environ.get('JAVA_HOME') + galaxyhome=os.environ.get('GALAXY_HOME') + classpath= galaxyhome + '/tools/WebServiceToolWorkflow/ParserForWADL/bin' + jarpath = galaxyhome + '/tools/WebServiceToolWorkflow/ParserForWADL/lib/' + machine = platform.machine() + +#start JVM depending on the machine. The location of libjvm.so is assumed to be standard. +#you can replace lines 32 to 41, with startJVM("LOCATION OF YOUR LIBJVM.SO","-ea", "-Djava.class.path=%s" % classpath,"-Djava.ext.dirs=%s" % jarpath) + if machine == 'x86_64' : + print 'a' + startJVM("%s/jre/lib/amd64/server/libjvm.so" % javahome,"-ea", "-Djava.class.path=%s" % classpath,"-Djava.ext.dirs=%s" % jarpath) + elif machine == 'i686' : + print 'b' + 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") + + clientGenerator1.wadlClient() + clientGenerator.wadlClient() + +elif urllist[len(urllist)-1]=='wsdl' or urllist[len(urllist)-1]=='WSDL': + clientGenerator.wsdlClient() + clientGenerator1.wsdlClient() +elif urllist[len(urllist)-1]=='sawadl' or urllist[len(urllist)-1]=='SAWADL': + + javahome = os.environ.get('JAVA_HOME') + galaxyhome=os.environ.get('GALAXY_HOME') + classpath= galaxyhome + '/tools/WebServiceToolWorkflow/lib/SAWADLParser/bin' + jarpath = galaxyhome + '/tools/WebServiceToolWorkflow/lib/' + machine = platform.machine() + + if machine == 'x86_64' : + print 'a' + startJVM("%s/jre/lib/amd64/server/libjvm.so" % javahome,"-ea", "-Djava.class.path=%s" % classpath,"-Djava.ext.dirs=%s" % jarpath) + elif machine == 'i686' : + print 'b' + 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 : + print 'c' + System.exit("Could not identify machine, please specify path to libjvm.so") + + #f=open(sys.argv[5],'w') + #f.write('reached here 2 \t') + #f.close() + + clientGenerator.sawadlClient() + clientGenerator1.sawadlClient() + #f=open(sys.argv[5],'w') + #f.write('reached here 3') + #f.close() + + shutdownJVM() + + + + + +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/WebServiceTool_input_method.xml Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,69 @@ +<tool id="WebServiceTool_input_method" name="Step 2: Verify Settings" version="1.0.0"> + <description> This tool lets the user choose a method and a resource from the Web service description document. Many methods/operations could be grouped together in one description document. But each method/operation requires a unique tool to invoke it. So each method has to be registered with Galaxy individually.</description> + <command interpreter="python"> + WebServiceTool_input_method.py + $url + $wadl + $webservice + $resourceUrl + $output +</command> + <inputs> +<param name = "url" type="data" label="a. The previous step was" help="For your information only. The previous step that was executed is displayed. No action required."/> +<param name ="wadl" type ="select" data_ref="url" label ="b. The tool chosen was" help="Displays the Web service tool chosen in Step 1. No action required."> + <options from_dataset="url"> + <column name="name" index ="0"/> + <column name="value" index ="0"/> + <filter type="unique_value" name="unique" column="0"/> + </options> +</param> +<param name ="webservice" display = "radio" type ="select" data_ref="url" label ="c. Select the function of the tool you would like to use" help="Some tools have more than one function. It is important to select the appropriate function. One or more functions may be displayed here."> + <options from_dataset="url"> + <column name="name" index ="1"/> + <column name="value" index ="1"/> + <filter type="unique_value" name="unique1" column="1"/> + </options> +</param> +<param name ="resourceUrl" display = "radio" type ="select" data_ref="url" label ="d. Further refine the tool function. Select an option based on the documentation or experience" help="Different tools have different options to refine the tool. This could be a choice of formats or resources you want to search. Make selection based on tool documentation or experience."> + <options from_dataset="url"> + <column name="name" index ="2"/> + <column name="value" index ="2"/> + <filter type="param_value" ref="webservice" name="resourceUri" column="1"/> + <filter type="unique_value" name="unique2" column="2"/> + </options> +</param> + </inputs> + <outputs> + <data format="tabular" name="output" /> + </outputs> + + <help> + + +.. class:: infomark + +**TIP:** a. For your information only. The previous step that was executed is displayed. No action required. + +.. class:: infomark + +**TIP:** b. Displays the Web service tool chosen in Step 1. No action required + +.. class:: infomark + +**TIP:** c. Some tools have more than one function. It is important to select the appropriate function. + One or more functions may be displayed here. + +.. class:: infomark + +**TIP:** d. Different tools have different options to refine the tool. This could be a choice of formats + or resources you want to search. + Make selection based on tool documentation or experience. + + +*NOTE: Step 1, Step 2 and Step 3 merely add this tool to Galaxy. To use the tool, after completing Step 3, go to the Tools section on left +and find the tool under Web Service Tools and Web Service Workflow Tools.* + + </help> + +</tool> +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/WebServiceTool_input_method.xml~ Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,69 @@ +<tool id="WebServiceTool_input_method" name="Step 2: Verify Settings" Version="1.0.0"> + <description> This tool lets the user choose a method and a resource from the Web service description document. Many methods/operations could be grouped together in one description document. But each method/operation requires a unique tool to invoke it. So each method has to be registered with Galaxy individually.</description> + <command interpreter="python"> + WebServiceTool_input_method.py + $url + $wadl + $webservice + $resourceUrl + $output +</command> + <inputs> +<param name = "url" type="data" label="a. The previous step was" help="For your information only. The previous step that was executed is displayed. No action required."/> +<param name ="wadl" type ="select" data_ref="url" label ="b. The tool chosen was" help="Displays the Web service tool chosen in Step 1. No action required."> + <options from_dataset="url"> + <column name="name" index ="0"/> + <column name="value" index ="0"/> + <filter type="unique_value" name="unique" column="0"/> + </options> +</param> +<param name ="webservice" display = "radio" type ="select" data_ref="url" label ="c. Select the function of the tool you would like to use" help="Some tools have more than one function. It is important to select the appropriate function. One or more functions may be displayed here."> + <options from_dataset="url"> + <column name="name" index ="1"/> + <column name="value" index ="1"/> + <filter type="unique_value" name="unique1" column="1"/> + </options> +</param> +<param name ="resourceUrl" display = "radio" type ="select" data_ref="url" label ="d. Further refine the tool function. Select an option based on the documentation or experience" help="Different tools have different options to refine the tool. This could be a choice of formats or resources you want to search. Make selection based on tool documentation or experience."> + <options from_dataset="url"> + <column name="name" index ="2"/> + <column name="value" index ="2"/> + <filter type="param_value" ref="webservice" name="resourceUri" column="1"/> + <filter type="unique_value" name="unique2" column="2"/> + </options> +</param> + </inputs> + <outputs> + <data format="tabular" name="output" /> + </outputs> + + <help> + + +.. class:: infomark + +**TIP:** a. For your information only. The previous step that was executed is displayed. No action required. + +.. class:: infomark + +**TIP:** b. Displays the Web service tool chosen in Step 1. No action required + +.. class:: infomark + +**TIP:** c. Some tools have more than one function. It is important to select the appropriate function. + One or more functions may be displayed here. + +.. class:: infomark + +**TIP:** d. Different tools have different options to refine the tool. This could be a choice of formats + or resources you want to search. + Make selection based on tool documentation or experience. + + +*NOTE: Step 1, Step 2 and Step 3 merely add this tool to Galaxy. To use the tool, after completing Step 3, go to the Tools section on left +and find the tool under Web Service Tools and Web Service Workflow Tools.* + + </help> + +</tool> +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/WebServiceTool_input_url.py Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,19 @@ +import platform +import os,sys +from getMethods import * + +url = sys.argv[1] +urllist = url.split('.') + +#instantiate a Document +wadlDocument = Document() + +#depending on the extension on the document passed call the appropriate method +if urllist[len(urllist)-1]=='wadl' or urllist[len(urllist)-1]=='WADL': + wadlDocument.getWADLMethods(url,sys.argv[2]) +elif urllist[len(urllist)-1]=='wsdl' or urllist[len(urllist)-1]=='WSDL': + wadlDocument.getWSDLMethods(url,sys.argv[2]) +elif urllist[len(urllist)-1]=='sawadl' or urllist[len(urllist)-1]=='SAWADL': + wadlDocument.getSAWADLMethods(url,sys.argv[2]) + +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/WebServiceTool_input_url.py~ Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,18 @@ +import platform +import os,sys +from getMethods import * + +url = sys.argv[1] +urllist = url.split('.') + + +wadlDocument = Document() + +if urllist[len(urllist)-1]=='wadl' or urllist[len(urllist)-1]=='WADL': + wadlDocument.getWADLMethods(url,sys.argv[2]) +elif urllist[len(urllist)-1]=='wsdl' or urllist[len(urllist)-1]=='WSDL': + wadlDocument.getWSDLMethods(url,sys.argv[2]) +elif urllist[len(urllist)-1]=='sawadl' or urllist[len(urllist)-1]=='SAWADL': + wadlDocument.getSAWADLMethods(url,sys.argv[2]) + +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/WebServiceTool_input_url.xml Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,66 @@ +<tool id="WebServiceTool_input_url" name="Step 1: Enter information about tool" version="1.0.0"> + <description> This tool takes the URL of an external Web service. The URL should point to the description document of a Web service. Currently support for only REST Web services is provided. Therefore, this description document can be a WADL or WSDL 2.0 or SAWADL document only.</description> + <command interpreter="python"> + WebServiceTool_input_url.py + $url + $output + </command> + <inputs> + <param format="text" size = "60" name = "url" type="text" label="Enter the tool description document location" help="see tip below"/> + </inputs> + <outputs> + <data format="tabular" name="output" /> + </outputs> + + <help> + +.. class:: infomark + +**TIP:** Enter the url (of the REST Web service) description document of type WADL, WSDL 2.0, or SAWADL in the above box. + + +All the Web services come with a description document like WADL or WSDL document. Galaxy can read this information +to create the tool. + +For further assistance find samples of WADL, WSDL 2.0 and SAWADL below. + +WADL : + + EuPathDB sample services: + + http://eupathdb.org/webservices/GeneQuestions/GenesByMolecularWeight.wadl + + + http://eupathdb.org/eupathdb/webservices/GeneQuestions/GenesByTextSearch.wadl + + + More detailed information about all REST services at EuPathDB can be found at http://eupathdb.org/eupathdb/serviceList.jsp + + + + DDBJ sample services: + + (__tilda__ represents ~ in the URLs below. Use ~, in place of __tilda__, if you are using a browser to access these locations and are not accessing them via Galaxy.) + + http://cs.uga.edu/__tilda__ganjoo/galaxy/DDBJBlast.wadl + + + http://cs.uga.edu/__tilda__ganjoo/galaxy/DDBJGetEntry.wadl + + + http://cs.uga.edu/__tilda__ganjoo/galaxy/DDBJNCBIGenomeAnnotationGetGeneList.wadl + + + http://cs.uga.edu/__tilda__ganjoo/galaxy/Ensembl.wadl + + + More detailed information about all REST services at DDBJ can be found at http://www.xml.nig.ac.jp/index.html + + +*NOTE: Step 1, Step 2 and Step 3 merely add this tool to Galaxy. To use the tool, after completing Step 3, go to the Tools section on left +and find the tool under Web Service Tools and Web Service Workflow Tools.* + + </help> + +</tool> +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/WebServiceTool_input_url.xml~ Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,66 @@ +<tool id="WebServiceTool_input_url" name="Step 1: Enter information about tool" Version="1.0.0"> + <description> This tool takes the URL of an external Web service. The URL should point to the description document of a Web service. Currently support for only REST Web services is provided. Therefore, this description document can be a WADL or WSDL 2.0 or SAWADL document only.</description> + <command interpreter="python"> + WebServiceTool_input_url.py + $url + $output + </command> + <inputs> + <param format="text" size = "60" name = "url" type="text" label="Enter the tool description document location" help="see tip below"/> + </inputs> + <outputs> + <data format="tabular" name="output" /> + </outputs> + + <help> + +.. class:: infomark + +**TIP:** Enter the url (of the REST Web service) description document of type WADL, WSDL 2.0, or SAWADL in the above box. + + +All the Web services come with a description document like WADL or WSDL document. Galaxy can read this information +to create the tool. + +For further assistance find samples of WADL, WSDL 2.0 and SAWADL below. + +WADL : + + EuPathDB sample services: + + http://eupathdb.org/webservices/GeneQuestions/GenesByMolecularWeight.wadl + + + http://eupathdb.org/eupathdb/webservices/GeneQuestions/GenesByTextSearch.wadl + + + More detailed information about all REST services at EuPathDB can be found at http://eupathdb.org/eupathdb/serviceList.jsp + + + + DDBJ sample services: + + (__tilda__ represents ~ in the URLs below. Use ~, in place of __tilda__, if you are using a browser to access these locations and are not accessing them via Galaxy.) + + http://cs.uga.edu/__tilda__ganjoo/galaxy/DDBJBlast.wadl + + + http://cs.uga.edu/__tilda__ganjoo/galaxy/DDBJGetEntry.wadl + + + http://cs.uga.edu/__tilda__ganjoo/galaxy/DDBJNCBIGenomeAnnotationGetGeneList.wadl + + + http://cs.uga.edu/__tilda__ganjoo/galaxy/Ensembl.wadl + + + More detailed information about all REST services at DDBJ can be found at http://www.xml.nig.ac.jp/index.html + + +*NOTE: Step 1, Step 2 and Step 3 merely add this tool to Galaxy. To use the tool, after completing Step 3, go to the Tools section on left +and find the tool under Web Service Tools and Web Service Workflow Tools.* + + </help> + +</tool> +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/WodenWSDLParser/.classpath Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="UTF-8"?> +<classpath> + <classpathentry kind="src" path="src"/> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/> + <classpathentry kind="lib" path="/home/ganjoo/parser/woden-dom-1.0M8/lib/woden-api-1.0M8.jar"/> + <classpathentry kind="lib" path="/home/ganjoo/parser/woden-dom-1.0M8/lib/woden-impl-dom-1.0M8.jar"/> + <classpathentry kind="lib" path="/home/ganjoo/parser/woden-dom-1.0M8/lib/xercesImpl.jar"/> + <classpathentry kind="lib" path="/home/ganjoo/parser/woden-dom-1.0M8/lib/xml-apis.jar"/> + <classpathentry kind="lib" path="/home/ganjoo/parser/woden-dom-1.0M8/lib/XmlSchema-1.4.2.jar"/> + <classpathentry kind="output" path="bin"/> +</classpath>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/WodenWSDLParser/.project Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>WodenWSDLParser</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + <buildCommand> + <name>org.eclipse.jdt.core.javabuilder</name> + <arguments> + </arguments> + </buildCommand> + </buildSpec> + <natures> + <nature>org.eclipse.jdt.core.javanature</nature> + </natures> +</projectDescription>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/WodenWSDLParser/.settings/org.eclipse.jdt.core.prefs Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,12 @@ +#Tue May 25 18:05:22 EDT 2010 +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=1.6 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.source=1.6
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/WodenWSDLParser/lib/LICENSE.dom Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,71 @@ +This license came from: +http://www.w3.org/Consortium/Legal/copyright-software-19980720 + + +W3C® SOFTWARE NOTICE AND LICENSE +Copyright © 1994-2001 World +Wide Web Consortium, <a href="http://www.w3.org/">World +Wide Web Consortium</a>, (<a href= +"http://www.lcs.mit.edu/">Massachusetts Institute of +Technology</a>, <a href="http://www.inria.fr/">Institut National de +Recherche en Informatique et en Automatique</a>, <a href= +"http://www.keio.ac.jp/">Keio University</a>). All Rights Reserved. +http://www.w3.org/Consortium/Legal/ + +This W3C work (including software, documents, or other related +items) is being provided by the copyright holders under the +following license. By obtaining, using and/or copying this work, +you (the licensee) agree that you have read, understood, and will +comply with the following terms and conditions: +Permission to use, copy, modify, and distribute this software +and its documentation, with or without modification, for any +purpose and without fee or royalty is hereby granted, provided that +you include the following on ALL copies of the software and +documentation or portions thereof, including modifications, that +you make: + +The full text of this NOTICE in a location viewable to users of +the redistributed or derivative work. + +Any pre-existing intellectual property disclaimers, notices, or +terms and conditions. If none exist, a short notice of the +following form (hypertext is preferred, text is permitted) should +be used within the body of any redistributed or derivative code: +"Copyright © [$date-of-software] World Wide Web Consortium, (Massachusetts Institute of +Technology, Institut National de +Recherche en Informatique et en Automatique, Keio University). All Rights Reserved. +http://www.w3.org/Consortium/Legal/" + +Notice of any changes or modifications to the W3C files, +including the date changes were made. (We recommend you provide +URIs to the location from which the code is derived.) + +THIS SOFTWARE AND DOCUMENTATION IS PROVIDED "AS IS," AND +COPYRIGHT HOLDERS MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO, WARRANTIES OF +MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE +USE OF THE SOFTWARE OR DOCUMENTATION WILL NOT INFRINGE ANY THIRD +PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS. +COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, +SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE +SOFTWARE OR DOCUMENTATION. + +The name and trademarks of copyright holders may NOT be used in +advertising or publicity pertaining to the software without +specific, written prior permission. Title to copyright in this +software and any associated documentation will at all times remain +with copyright holders. +____________________________________ +This formulation of W3C's notice and license became active on +August 14 1998 so as to improve compatibility with GPL. This +version ensures that W3C software licensing terms are no more +restrictive than GPL and consequently W3C software may be +distributed in GPL packages. See the older formulation for the +policy prior to this date. Please see our Copyright FAQ for common +questions about using materials from +our site, including specific terms and conditions for packages like +libwww, Amaya, and Jigsaw. +Other questions about this notice can be +directed to site-policy@w3.org. + +webmaster
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/WodenWSDLParser/lib/LICENSE.sax Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,20 @@ +This license came from: http://www.megginson.com/SAX/copying.html + However please note future versions of SAX may be covered + under http://saxproject.org/?selected=pd + + +This page is now out of date -- see the new SAX site at +http://www.saxproject.org/ for more up-to-date +releases and other information. Please change your bookmarks. + + +SAX2 is Free! + +I hereby abandon any property rights to SAX 2.0 (the Simple API for +XML), and release all of the SAX 2.0 source code, compiled code, and +documentation contained in this distribution into the Public Domain. +SAX comes with NO WARRANTY or guarantee of fitness for any +purpose. + +David Megginson, david@megginson.com +2000-05-05 \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/WodenWSDLParser/lib/LICENSE.wsdl4j.html Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,229 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> +<!-- saved from url=(0065)http://oss.software.ibm.com/developerworks/opensource/CPLv1.0.htm --> +<HTML><HEAD><TITLE>Body</TITLE> +<META http-equiv=Content-Type content="text/html; charset=windows-1252"> +<META content="MSHTML 5.50.4919.2200" name=GENERATOR></META></HEAD> +<BODY vLink=#800000 bgColor=#ffffff> +<P align=center><B>Common Public License - v 1.0</B> +<P><B></B><FONT size=3></FONT> +<P><FONT size=3></FONT><FONT size=2>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER +THE TERMS OF THIS COMMON PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR +DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS +AGREEMENT.</FONT> +<P><FONT size=2></FONT> +<P><FONT size=2><B>1. DEFINITIONS</B></FONT> +<P><FONT size=2>"Contribution" means:</FONT> +<UL><FONT size=2>a) in the case of the initial Contributor, the initial code + and documentation distributed under this Agreement, and<BR clear=left>b) in + the case of each subsequent Contributor:</FONT></UL> +<UL><FONT size=2>i) changes to the Program, and</FONT></UL> +<UL><FONT size=2>ii) additions to the Program;</FONT></UL> +<UL><FONT size=2>where such changes and/or additions to the Program originate + from and are distributed by that particular Contributor. </FONT><FONT size=2>A + Contribution 'originates' from a Contributor if it was added to the Program by + such Contributor itself or anyone acting on such Contributor's behalf. + </FONT><FONT size=2>Contributions do not include additions to the Program + which: (i) are separate modules of software distributed in conjunction with + the Program under their own license agreement, and (ii) are not derivative + works of the Program. </FONT></UL> +<P><FONT size=2></FONT> +<P><FONT size=2>"Contributor" means any person or entity that distributes the +Program.</FONT> +<P><FONT size=2></FONT><FONT size=2></FONT> +<P><FONT size=2>"Licensed Patents " mean patent claims licensable by a +Contributor which are necessarily infringed by the use or sale of its +Contribution alone or when combined with the Program. </FONT> +<P><FONT size=2></FONT><FONT size=2></FONT> +<P><FONT size=2></FONT><FONT size=2>"Program" means the Contributions +distributed in accordance with this Agreement.</FONT> +<P><FONT size=2></FONT> +<P><FONT size=2>"Recipient" means anyone who receives the Program under this +Agreement, including all Contributors.</FONT> +<P><FONT size=2><B></B></FONT> +<P><FONT size=2><B>2. GRANT OF RIGHTS</B></FONT> +<UL><FONT size=2></FONT><FONT size=2>a) </FONT><FONT size=2>Subject to the + terms of this Agreement, each Contributor hereby grants</FONT><FONT size=2> + Recipient a non-exclusive, worldwide, royalty-free copyright license + to</FONT><FONT color=#ff0000 size=2> </FONT><FONT size=2>reproduce, prepare + derivative works of, publicly display, publicly perform, distribute and + sublicense the Contribution of such Contributor, if any, and such derivative + works, in source code and object code form.</FONT></UL> +<UL><FONT size=2></FONT></UL> +<UL><FONT size=2></FONT><FONT size=2>b) Subject to the terms of this + Agreement, each Contributor hereby grants </FONT><FONT size=2>Recipient a + non-exclusive, worldwide,</FONT><FONT color=#008000 size=2> </FONT><FONT + size=2>royalty-free patent license under Licensed Patents to make, use, sell, + offer to sell, import and otherwise transfer the Contribution of such + Contributor, if any, in source code and object code form. This patent license + shall apply to the combination of the Contribution and the Program if, at the + time the Contribution is added by the Contributor, such addition of the + Contribution causes such combination to be covered by the Licensed Patents. + The patent license shall not apply to any other combinations which include the + Contribution. No hardware per se is licensed hereunder. </FONT></UL> +<UL><FONT size=2></FONT></UL> +<UL><FONT size=2>c) Recipient understands that although each Contributor + grants the licenses to its Contributions set forth herein, no assurances are + provided by any Contributor that the Program does not infringe the patent or + other intellectual property rights of any other entity. Each Contributor + disclaims any liability to Recipient for claims brought by any other entity + based on infringement of intellectual property rights or otherwise. As a + condition to exercising the rights and licenses granted hereunder, each + Recipient hereby assumes sole responsibility to secure any other intellectual + property rights needed, if any. For example, if a third party patent license + is required to allow Recipient to distribute the Program, it is Recipient's + responsibility to acquire that license before distributing the +Program.</FONT></UL> +<UL><FONT size=2></FONT></UL> +<UL><FONT size=2>d) Each Contributor represents that to its knowledge it has + sufficient copyright rights in its Contribution, if any, to grant the + copyright license set forth in this Agreement. </FONT></UL> +<UL><FONT size=2></FONT></UL> +<P><FONT size=2><B>3. REQUIREMENTS</B></FONT> +<P><FONT size=2><B></B>A Contributor may choose to distribute the Program in +object code form under its own license agreement, provided that:</FONT> +<UL><FONT size=2>a) it complies with the terms and conditions of this + Agreement; and</FONT></UL> +<UL><FONT size=2>b) its license agreement:</FONT></UL> +<UL><FONT size=2>i) effectively disclaims</FONT><FONT face="Times New Roman" + size=2> on behalf of all Contributors all warranties and conditions, express + and implied, including warranties or conditions of title and non-infringement, + and implied warranties or conditions of merchantability and fitness for a + particular purpose; </FONT></UL> +<UL><FONT face="Times New Roman" size=2>ii) effectively excludes on behalf of + all Contributors all liability for damages, including direct, indirect, + special, incidental and consequential damages, such as lost profits; +</FONT></UL> +<UL><FONT face="Times New Roman" size=2>iii)</FONT><FONT size=2> states that + any provisions which differ from this Agreement are offered by that + Contributor alone and not by any other party; and</FONT></UL> +<UL><FONT size=2>iv) states that source code for the Program is available from + such Contributor, and informs licensees how to obtain it in a reasonable + manner on or through a medium customarily used for software + exchange.</FONT><FONT color=#0000ff size=2> </FONT><FONT color=#ff0000 + size=2></FONT></UL> +<UL><FONT color=#ff0000 size=2></FONT><FONT size=2></FONT></UL> +<P><FONT size=2>When the Program is made available in source code form:</FONT> +<UL><FONT size=2>a) it must be made available under this Agreement; and +</FONT></UL> +<UL><FONT size=2>b) a copy of this Agreement must be included with each copy + of the Program. </FONT></UL> +<P><FONT size=2></FONT><FONT color=#0000ff size=2><STRIKE></STRIKE></FONT> +<P><FONT color=#0000ff size=2><STRIKE></STRIKE></FONT><FONT size=2>Contributors +may not remove or alter any copyright notices contained within the Program. +</FONT> +<P><FONT size=2></FONT> +<P><FONT size=2>Each Contributor must identify itself as the originator of its +Contribution, if any, in a manner that reasonably allows subsequent Recipients +to identify the originator of the Contribution. </FONT> +<P><FONT size=2></FONT> +<P><FONT size=2><B>4. COMMERCIAL DISTRIBUTION</B></FONT> +<P><FONT size=2>Commercial distributors of software may accept certain +responsibilities with respect to end users, business partners and the like. +While this license is intended to facilitate the commercial use of the Program, +the Contributor who includes the Program in a commercial product offering should +do so in a manner which does not create potential liability for other +Contributors. Therefore, if a Contributor includes the Program in a commercial +product offering, such Contributor ("Commercial Contributor") hereby agrees to +defend and indemnify every other Contributor ("Indemnified Contributor") against +any losses, damages and costs (collectively "Losses") arising from claims, +lawsuits and other legal actions brought by a third party against the +Indemnified Contributor to the extent caused by the acts or omissions of such +Commercial Contributor in connection with its distribution of the Program in a +commercial product offering. The obligations in this section do not apply to any +claims or Losses relating to any actual or alleged intellectual property +infringement. In order to qualify, an Indemnified Contributor must: a) promptly +notify the Commercial Contributor in writing of such claim, and b) allow the +Commercial Contributor to control, and cooperate with the Commercial Contributor +in, the defense and any related settlement negotiations. The Indemnified +Contributor may participate in any such claim at its own expense.</FONT> +<P><FONT size=2></FONT> +<P><FONT size=2>For example, a Contributor might include the Program in a +commercial product offering, Product X. That Contributor is then a Commercial +Contributor. If that Commercial Contributor then makes performance claims, or +offers warranties related to Product X, those performance claims and warranties +are such Commercial Contributor's responsibility alone. Under this section, the +Commercial Contributor would have to defend claims against the other +Contributors related to those performance claims and warranties, and if a court +requires any other Contributor to pay any damages as a result, the Commercial +Contributor must pay those damages.</FONT> +<P><FONT size=2></FONT><FONT color=#0000ff size=2></FONT> +<P><FONT color=#0000ff size=2></FONT><FONT size=2><B>5. NO WARRANTY</B></FONT> +<P><FONT size=2>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS +PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, +EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR +CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A +PARTICULAR PURPOSE. Each Recipient is</FONT><FONT size=2> solely responsible for +determining the appropriateness of using and distributing </FONT><FONT +size=2>the Program</FONT><FONT size=2> and assumes all risks associated with its +exercise of rights under this Agreement</FONT><FONT size=2>, including but not +limited to the risks and costs of program errors, compliance with applicable +laws, damage to or loss of data, </FONT><FONT size=2>programs or equipment, and +unavailability or interruption of operations</FONT><FONT size=2>. </FONT><FONT +size=2></FONT> +<P><FONT size=2></FONT> +<P><FONT size=2></FONT><FONT size=2><B>6. DISCLAIMER OF LIABILITY</B></FONT> +<P><FONT size=2></FONT><FONT size=2>EXCEPT AS EXPRESSLY SET FORTH IN THIS +AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +</FONT><FONT face="Times New Roman" size=2>(INCLUDING WITHOUT LIMITATION LOST +PROFITS),</FONT><FONT size=2> HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR +THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGES.</FONT> +<P><FONT size=2></FONT><FONT size=2></FONT> +<P><FONT size=2><B>7. GENERAL</B></FONT> +<P><FONT size=2></FONT><FONT size=2>If any provision of this Agreement is +invalid or unenforceable under applicable law, it shall not affect the validity +or enforceability of the remainder of the terms of this Agreement, and without +further action by the parties hereto, such provision shall be reformed to the +minimum extent necessary to make such provision valid and enforceable.</FONT> +<P><FONT size=2></FONT> +<P><FONT size=2>If Recipient institutes patent litigation against a Contributor +with respect to a patent applicable to software (including a cross-claim or +counterclaim in a lawsuit), then any patent licenses granted by that Contributor +to such Recipient under this Agreement shall terminate as of the date such +litigation is filed. In addition, if Recipient institutes patent litigation +against any entity (including a cross-claim or counterclaim in a lawsuit) +alleging that the Program itself (excluding combinations of the Program with +other software or hardware) infringes such Recipient's patent(s), then such +Recipient's rights granted under Section 2(b) shall terminate as of the date +such litigation is filed. </FONT><FONT size=2></FONT> +<P><FONT size=2></FONT> +<P><FONT size=2>All Recipient's rights under this Agreement shall terminate if +it fails to comply with any of the material terms or conditions of this +Agreement and does not cure such failure in a reasonable period of time after +becoming aware of such noncompliance. If all Recipient's rights under this +Agreement terminate, Recipient agrees to cease use and distribution of the +Program as soon as reasonably practicable. However, Recipient's obligations +under this Agreement and any licenses granted by Recipient relating to the +Program shall continue and survive. </FONT><FONT size=2></FONT> +<P><FONT size=2></FONT> +<P><FONT size=2></FONT><FONT face="Times New Roman" size=2>Everyone is permitted +to copy and distribute copies of this Agreement, but in order to avoid +inconsistency the Agreement is copyrighted and may only be modified in the +following manner. The Agreement Steward reserves the right to </FONT><FONT +size=2>publish new versions (including revisions) of this Agreement from time to +</FONT><FONT face="Times New Roman" size=2>time. No one other than the Agreement +Steward has the right to modify this Agreement. IBM is the initial Agreement +Steward. IBM may assign the responsibility to serve as the Agreement Steward to +a suitable separate entity. </FONT><FONT size=2>Each new version of the +Agreement will be given a distinguishing version number. The Program (including +Contributions) may always be distributed subject to the version of the Agreement +under which it was received. In addition, after a new version of the Agreement +is published, Contributor may elect to distribute the Program (including its +Contributions) under the new </FONT><FONT face="Times New Roman" size=2>version. +</FONT><FONT size=2>Except as expressly stated in Sections 2(a) and 2(b) above, +Recipient receives no rights or licenses to the intellectual property of any +Contributor under this Agreement, whether expressly, </FONT><FONT size=2>by +implication, estoppel or otherwise</FONT><FONT size=2>.</FONT><FONT size=2> All +rights in the Program not expressly granted under this Agreement are +reserved.</FONT> +<P><FONT size=2></FONT> +<P><FONT size=2>This Agreement is governed by the laws of the State of New York +and the intellectual property laws of the United States of America. No party to +this Agreement will bring a legal action under this Agreement more than one year +after the cause of action arose. Each party waives its rights to a jury trial in +any resulting litigation.</FONT> +<P><FONT size=2></FONT><FONT size=2></FONT> +<P><FONT size=2></FONT></P></BODY></HTML>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/WodenWSDLParser/lib/LICENSE.xerces Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License.
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/WodenWSDLParser/src/CovertToWSDL2.java Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,28 @@ +import java.io.IOException; + +import javax.wsdl.WSDLException; + +import org.apache.woden.tool.converter.Convert; + + +public class CovertToWSDL2 { + + /** + * @param args + */ + public static void main(String[] args) { + // TODO Auto-generated method stub + Convert convert = new Convert(); + try{ + try { + String convertFile = convert.convertFile("http://www.ebi.ac.uk/ws/services/WSDbfetch", "/home/ganjoo/parser/woden-dom-1.0M8/wsdl/WSDbfetch.wsdl", "/home/ganjoo/parser/woden-dom-1.0M8/wsdl/wsdl2/", true, true); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + }catch(WSDLException e){ + e.printStackTrace(); + } + } + +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/WodenWSDLParser/src/lsdis/WSDLParserDriver.java Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,207 @@ +package lsdis; + +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +import java.util.Scanner; + +import org.apache.woden.WSDLException; +import org.apache.woden.WSDLFactory; +import org.apache.woden.WSDLReader; +import org.apache.woden.wsdl20.Description; +import org.apache.woden.wsdl20.ElementDeclaration; +import org.apache.woden.wsdl20.Endpoint; +import org.apache.woden.wsdl20.InterfaceMessageReference; +import org.apache.woden.wsdl20.InterfaceOperation; +import org.apache.woden.wsdl20.Service; +import org.apache.woden.wsdl20.Interface; +import org.apache.woden.wsdl20.extensions.rpc.Direction; +import org.apache.woden.wsdl20.xml.DescriptionElement; +import org.apache.ws.commons.schema.XmlSchemaAll; +import org.apache.ws.commons.schema.XmlSchemaComplexType; +import org.apache.ws.commons.schema.XmlSchemaElement; +import org.apache.ws.commons.schema.XmlSchemaGroupBase; +import org.apache.ws.commons.schema.XmlSchemaParticle; +import org.apache.ws.commons.schema.XmlSchemaSequence; +import org.apache.ws.commons.schema.XmlSchemaType; +import org.w3c.dom.NamedNodeMap; + +import java.net.URI; + +import javax.xml.namespace.QName; + +public class WSDLParserDriver { + + private List<InterfaceOperation> completeMethodList = new ArrayList<InterfaceOperation>(); + private List<String> url = new ArrayList<String>(); + private List<String> paramList = new ArrayList<String>(); + private List<String> paramTypeList = new ArrayList<String>(); + + + public List<InterfaceOperation> getCompleteMethodList() { + return completeMethodList; + } + + public List<String> getUrl() { + return url; + } + + public List<String> getParamList() { + return paramList; + } + public List<String> getParamTypeList() { + return paramTypeList; + } + + public static void main(String[] args) { + /*Scanner keyboard = new Scanner(System.in); + + System.out.println("Enter the wsdl url: "); + String wsdlurl = keyboard.next();*/ + WSDLParserDriver a = new WSDLParserDriver(); + a.parse("/home/ganjoo/parser/bookstore-sample/booklist.wsdl"); + for(InterfaceOperation oper:a.getCompleteMethodList()){ + a.getParameters(oper); + } + } + + public void parse(String wsdlurl){ + + try { + + WSDLFactory factory; + factory = WSDLFactory.newInstance(); + WSDLReader reader = factory.newWSDLReader(); + reader.setFeature(WSDLReader.FEATURE_VALIDATION, true); + Description desc = reader.readWSDL(wsdlurl); + Service[] services = desc.getServices(); + for(int i=0;i<services.length;i++){ + Endpoint[] endpoints = services[i].getEndpoints(); + boolean foundRestBinding = false; + int count=0; + while(count<endpoints.length){ + foundRestBinding = endpoints[count].getBinding().getType().equals(new URI("http://www.w3.org/ns/wsdl/http")); + count++; + + if(foundRestBinding){ + System.out.println("-----------------REST Web services--------------"); + URI address = endpoints[count-1].getAddress(); + String serviceName = services[i].getName().getLocalPart(); + System.out.println("Service Name : " + serviceName + "\t address : " + address); + Interface intrfce = services[i].getInterface(); + InterfaceOperation[] intrfceOpers = intrfce.getAllInterfaceOperations(); + for(int j=0;j<intrfceOpers.length;j++){ + InterfaceOperation oper = intrfceOpers[j]; + String operName = oper.getName().getLocalPart(); + System.out.println("\t operation name " + j + ": " + operName); + completeMethodList.add(oper); + url.add(address.toString()); + + + + } + } + } + } + + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + + public void getParameters(String operName){ + try{ + InterfaceOperation oper = null; + for(InterfaceOperation oper1 :getCompleteMethodList()){ + if(oper1.getName().getLocalPart().equals(operName)) + { + oper = oper1; + break; + } + + } + if(oper==null){ + System.out.println("Wrong method name passed in getParameters() method"); + System.exit(0); + } + + InterfaceMessageReference[] messageRefs = oper.getInterfaceMessageReferences(); + for(int k=0;k<messageRefs.length;k++){ + if(messageRefs[k].getDirection().toString().equals("in")){ + + ElementDeclaration ed = messageRefs[k].getElementDeclaration(); + String inputMessageName = ed.getName().getLocalPart(); + + if(ed.getContentModel().equalsIgnoreCase("org.w3c.dom")){ + org.w3c.dom.Element element = (org.w3c.dom.Element) ed.getContent(); + if(element.hasChildNodes()){ + System.out.println("Element has child nodes"); + org.w3c.dom.NodeList nl = element.getChildNodes(); + + } + if(element.hasAttributes()){ + System.out.println("Element has attributes"); + NamedNodeMap nodeMap = element.getAttributes(); + + } + } + else if(ed.getContentModel().equalsIgnoreCase("org.apache.ws.commons.schema")){ + org.apache.ws.commons.schema.XmlSchemaElement element = (org.apache.ws.commons.schema.XmlSchemaElement ) ed.getContent(); + System.out.println("element: " + element); + if(element != null){ + String targetNamespace = element.getQName().getNamespaceURI(); + QName bodyFirstChildQName; + if (targetNamespace != null && !"".equals(targetNamespace)) { + bodyFirstChildQName = new QName(targetNamespace, element.getName()); + } else { + bodyFirstChildQName = new QName(element.getName()); + } + if(oper.getStyle()[0].equals(new URI("http://www.w3.org/ns/wsdl/style/iri"))){ + XmlSchemaType schemaType = element.getSchemaType(); + if (schemaType instanceof XmlSchemaComplexType) { + XmlSchemaComplexType complexType = ((XmlSchemaComplexType) schemaType); + XmlSchemaParticle particle = complexType.getParticle(); + if (particle instanceof XmlSchemaSequence || particle instanceof XmlSchemaAll) { + XmlSchemaGroupBase xmlSchemaGroupBase = (XmlSchemaGroupBase) particle; + Iterator iterator = xmlSchemaGroupBase.getItems().getIterator(); + while (iterator.hasNext()) { + XmlSchemaElement innerElement = (XmlSchemaElement) iterator.next(); + QName qName = innerElement.getQName(); + if (qName ==null && innerElement.getSchemaTypeName().equals(org.apache.ws.commons.schema.constants.Constants.XSD_ANYTYPE)) { + System.out.println("create soap message without schema and break"); + break; + } + long minOccurs = innerElement.getMinOccurs(); + boolean nillable = innerElement.isNillable(); + + String name = + qName != null ? qName.getLocalPart() : innerElement.getName(); + System.out.println("Name of parameter is :" + name); + paramList.add(name); + System.out.println("Type of Parameter is :"+innerElement.getSchemaTypeName().getLocalPart()+"\n"); + paramTypeList.add(innerElement.getSchemaTypeName().getLocalPart()); + } + + + } + + } + + } + + }else{ + System.out.println("element is null"); + } + + + } + } + } + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } +} + +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/clients/ClientCount.xml Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,2 @@ +<count> +0</count>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/clients/ClientCount.xml~ Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,2 @@ +<count> +5</count>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/clients/client_1.py Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,28 @@ +import os +import sys +import urllib +'''This script is the client for invoking RESTful Web services.''' + +outputFile = open(sys.argv[1],'w') +resUrl = sys.argv[2] + +if(resUrl.find('__tilda__')>-1): + ulist = resUrl.split('__tilda__') + resUrl = '~'.join(ulist) + +paramdict={} +length=(len(sys.argv)) + +i=3 +while( i>=3 and i<(length-1)): + key=sys.argv[i] + val=sys.argv[i+1] + while(val.find('**')>-1): + vlist = val.split('**') + val = ' '.join(vlist) + paramdict[key]=val + i=i+2 + +params = urllib.urlencode(paramdict) +data = urllib.urlopen(resUrl, params).read() +outputFile.write(data)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/clients/client_1.py~ Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,28 @@ +import os +import sys +import urllib +'''This script is the client for invoking RESTful Web services.''' + +outputFile = open(sys.argv[1],'w') +resUrl = sys.argv[2] + +if(resUrl.find('__tilda__')>-1): + ulist = resUrl.split('__tilda__') + resUrl = '~'.join(ulist) + +paramdict={} +length=(len(sys.argv)) + +i=3 +while( i>=3 and i<(length-1)): + key=sys.argv[i] + val=sys.argv[i+1] + while(val.find('**')>-1): + vlist = val.split('**') + val = ' '.join(vlist) + paramdict[key]=val + i=i+2 + +params = urllib.urlencode(paramdict) +data = urllib.urlopen(resUrl, params).read() +outputFile.write(data)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/clients/client_1.xml~ Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,107 @@ +<tool id="client_1" name="genesbytextsearch"> + <description> Client for method: genesbytextsearch , Web service: /home/ganjoo/parser/SAWADLParser/euPathWADL/GenesByTextSearch.sawadl </description> + <command interpreter="python"> + client_1.py + $output + http://eupathdb.org/webservices/GeneQuestions/GenesByTextSearch.xml + text_search_organism + $source0.user_param0 + text_expression + $param1 + text_fields + $param2 + whole_words + $param3 + max_pvalue + $param4 +</command> + <inputs> +<conditional name="source0"> + <param name="source0_source" type="select" label="text_search_organism Source"> + <option value="cached" selected="true">Param value will be taken from previous step</option> + <option value="user">User will enter the param value</option> + </param> + <when value="user"> +<param name="user_param0" type="select" label="text_search_organism" help="see tip below"> + <option value="Entamoeba**dispar" selected="true">Entamoeba dispar</option> + <option value="Entamoeba**histolytica" >Entamoeba histolytica</option> + <option value="Entamoeba**invadens" >Entamoeba invadens</option> + <option value="Cryptosporidium**parvum" >Cryptosporidium parvum</option> + <option value="Cryptosporidium**hominis" >Cryptosporidium hominis</option> + <option value="Cryptosporidium**muris" >Cryptosporidium muris</option> + <option value="Giardia**Assemblage**A**isolate**WB" >Giardia Assemblage A isolate WB</option> + <option value="Giardia**Assemblage**B**isolate**GS" >Giardia Assemblage B isolate GS</option> + <option value="Giardia**Assemblage**E**isolate**P15" >Giardia Assemblage E isolate P15</option> + <option value="Encephalitozoon**cuniculi" >Encephalitozoon cuniculi</option> + <option value="Encephalitozoon**intestinalis" >Encephalitozoon intestinalis</option> + <option value="Plasmodium**falciparum" >Plasmodium falciparum</option> + <option value="Plasmodium**vivax" >Plasmodium vivax</option> + <option value="Plasmodium**yoelii" >Plasmodium yoelii</option> + <option value="Plasmodium**berghei" >Plasmodium berghei</option> + <option value="Plasmodium**chabaudi" >Plasmodium chabaudi</option> + <option value="Plasmodium**knowlesi" >Plasmodium knowlesi</option> + <option value="Toxoplasma**gondii" >Toxoplasma gondii</option> + <option value="Neospora**caninum" >Neospora caninum</option> + <option value="Trichomonas**vaginalis" >Trichomonas vaginalis</option> + <option value="Trypanosoma**cruzi" >Trypanosoma cruzi</option> + <option value="Leishmania**braziliensis" >Leishmania braziliensis</option> + <option value="Leishmania**infantum" >Leishmania infantum</option> + <option value="Leishmania**major" >Leishmania major</option> + <option value="Leishmania**mexicana" >Leishmania mexicana</option> + <option value="Trypanosoma**brucei" >Trypanosoma brucei</option> + <option value="Trypanosoma**congolense" >Trypanosoma congolense</option> + <option value="Trypanosoma**vivax" >Trypanosoma vivax</option> + </param> + </when> + <when value="cached"> + <param name = "cached_param0" type="data" label="Choose the step from which to get the SAWADL location"/> + </when> + </conditional> +<param format="text" size = "150" name = "param1" value="membrane" type="text" label="text_expression" help="see tip below" /> +<param name="param2" type="select" label="text_fields" help="see tip below"> + <option value="Gene**ID" >Gene ID</option> + <option value="Alias" >Alias</option> + <option value="Gene**product" selected="true">Gene product</option> + <option value="Phenotype" >Phenotype</option> + <option value="GO**terms**and**definitions" >GO terms and definitions</option> + <option value="Gene**notes" >Gene notes</option> + <option value="User**comments" >User comments</option> + <option value="Protein**domain**names**and**descriptions" >Protein domain names and descriptions</option> + <option value="Similar**proteins**(BLAST**hits**v.**NRDB/PDB)" >Similar proteins (BLAST hits v. NRDB/PDB)</option> + <option value="EC**descriptions" >EC descriptions</option> + <option value="Metabolic**pathway**names**and**descriptions" >Metabolic pathway names and descriptions</option> + </param> +<param name="param3" type="select" label="whole_words" help="see tip below"> + <option value="yes" >yes</option> + <option value="no" selected="true">no</option> + </param> +<param format="text" size = "150" name = "param4" value="-30" type="text" label="max_pvalue" help="see tip below" /> +</inputs> + <outputs> + <data format="tabular" name="output" /> + </outputs> + <help> + +.. class:: infomark + +**TIP:** About text_search_organism: type is xsd:string, description from ontology is "Organism identifier" + +.. class:: infomark + +**TIP:** About text_expression: type is xsd:string, description from ontology is "This term can be used for any free-form comments and annotations." + +.. class:: infomark + +**TIP:** About text_fields: type is xsd:string, description from ontology is "Undefined concept" + +.. class:: infomark + +**TIP:** About whole_words: type is xsd:string, description from ontology is " + A simple parameter that is a toggle (boolean value), typically a control for a modal tool + " + +.. class:: infomark + +**TIP:** About max_pvalue: type is xsd:string + </help> +</tool>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/clients/client_3.xml~ Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,139 @@ +<tool id="client_31" name="genesbymolecularweight"> + <description> Client for method: genesbymolecularweight , Web service: http://eupathdb.org/webservices/GeneQuestions/GenesByMolecularWeight.wadl </description> + <command interpreter="python"> + #if $cond_source.optional_param_source=="no" client_1.py $output http://eupathdb.org/webservices/GeneQuestions/GenesByMolecularWeight.xml organism $param0 min_molecular_weight $param1 max_molecular_weight $param2 #else #client_1.py $output http://eupathdb.org/webservices/GeneQuestions/GenesByMolecularWeight.xml organism $param0 min_molecular_weight $param1 max_molecular_weight $param2 o-fields $cond_source.param3 o-tables $cond_source.param4 #end if +</command> + <inputs> +<param name="param0" type="select" label="organism" help="see tip below"> + <option value="Entamoeba**dispar" >Entamoeba dispar</option> + <option value="Entamoeba**histolytica" >Entamoeba histolytica</option> + <option value="Entamoeba**invadens" >Entamoeba invadens</option> + <option value="Cryptosporidium**parvum" >Cryptosporidium parvum</option> + <option value="Cryptosporidium**hominis" >Cryptosporidium hominis</option> + <option value="Cryptosporidium**muris" >Cryptosporidium muris</option> + <option value="Giardia**Assemblage**A**isolate**WB" >Giardia Assemblage A isolate WB</option> + <option value="Giardia**Assemblage**B**isolate**GS" >Giardia Assemblage B isolate GS</option> + <option value="Giardia**Assemblage**E**isolate**P15" >Giardia Assemblage E isolate P15</option> + <option value="Encephalitozoon**cuniculi" >Encephalitozoon cuniculi</option> + <option value="Encephalitozoon**intestinalis" >Encephalitozoon intestinalis</option> + <option value="Plasmodium**falciparum" >Plasmodium falciparum</option> + <option value="Plasmodium**vivax" >Plasmodium vivax</option> + <option value="Plasmodium**yoelii" >Plasmodium yoelii</option> + <option value="Plasmodium**berghei" >Plasmodium berghei</option> + <option value="Plasmodium**chabaudi" >Plasmodium chabaudi</option> + <option value="Plasmodium**knowlesi" >Plasmodium knowlesi</option> + <option value="Toxoplasma**gondii" >Toxoplasma gondii</option> + <option value="Neospora**caninum" >Neospora caninum</option> + <option value="Trichomonas**vaginalis" >Trichomonas vaginalis</option> + <option value="Trypanosoma**cruzi" >Trypanosoma cruzi</option> + <option value="Leishmania**braziliensis" >Leishmania braziliensis</option> + <option value="Leishmania**infantum" >Leishmania infantum</option> + <option value="Leishmania**major" >Leishmania major</option> + <option value="Leishmania**mexicana" >Leishmania mexicana</option> + <option value="Trypanosoma**brucei" >Trypanosoma brucei</option> + <option value="Trypanosoma**congolense" >Trypanosoma congolense</option> + <option value="Trypanosoma**vivax" >Trypanosoma vivax</option> + </param> +<param format="text" size = "150" name = "param1" type="text" label="min_molecular_weight" help="see tip below" /> +<param format="text" size = "150" name = "param2" type="text" label="max_molecular_weight" help="see tip below" /> + + <conditional name="cond_source"> + <param name="optional_param_source" type="select" label="Help"> + <option value="no" selected="true">no</option> + <option value="yes">yes</option> + </param> +<when value="no"> +</when> +<when value="yes"> +<param name="param3" type="select" label="o-fields" help="see tip below"> + <option value="all" >all</option> + <option value="none" selected="true">none</option> + <option value="primary_key" >primary_key</option> + <option value="formatted_gene_id" >formatted_gene_id</option> + <option value="external_db_name" >external_db_name</option> + <option value="sequence_id" >sequence_id</option> + <option value="chromosome" >chromosome</option> + <option value="location_text" >location_text</option> + <option value="strand" >strand</option> + <option value="gene_type" >gene_type</option> + <option value="exon_count" >exon_count</option> + <option value="transcript_length" >transcript_length</option> + <option value="cds_length" >cds_length</option> + <option value="product" >product</option> + <option value="protein_length" >protein_length</option> + <option value="tm_count" >tm_count</option> + <option value="molecular_weight" >molecular_weight</option> + <option value="isoelectric_point" >isoelectric_point</option> + <option value="ec_numbers_string" >ec_numbers_string</option> + <option value="ortholog_number" >ortholog_number</option> + <option value="paralog_number" >paralog_number</option> + <option value="orthomcl_name" >orthomcl_name</option> + <option value="signalp_scores" >signalp_scores</option> + <option value="signalp_peptide" >signalp_peptide</option> + <option value="ann_go_function" >ann_go_function</option> + <option value="ann_go_process" >ann_go_process</option> + <option value="ann_go_component" >ann_go_component</option> + <option value="pred_go_function" >pred_go_function</option> + <option value="pred_go_process" >pred_go_process</option> + <option value="pred_go_component" >pred_go_component</option> + <option value="organism" >organism</option> + <option value="protein_sequence" >protein_sequence</option> + <option value="transcript_sequence" >transcript_sequence</option> + <option value="cds" >cds</option> + <option value="wdk_weight" >wdk_weight</option> + </param> +<param name="param4" type="select" label="o-tables" help="see tip below"> + <option value="all" >all</option> + <option value="none" selected="true">none</option> + <option value="SNPs" >SNPs</option> + <option value="GeneModelDump" >GeneModelDump</option> + <option value="InterPro" >InterPro</option> + <option value="TMHMM" >TMHMM</option> + <option value="LowComplexity" >LowComplexity</option> + <option value="SignalP" >SignalP</option> + <option value="BlastP" >BlastP</option> + <option value="Genbank" >Genbank</option> + <option value="SageTags" >SageTags</option> + <option value="Notes" >Notes</option> + <option value="UserComments" >UserComments</option> + <option value="CommunityExpComments" >CommunityExpComments</option> + <option value="EcNumber" >EcNumber</option> + <option value="MassSpec" >MassSpec</option> + <option value="GoTerms" >GoTerms</option> + <option value="Aliases" >Aliases</option> + <option value="Phenotype" >Phenotype</option> + <option value="Y2hInteractions" >Y2hInteractions</option> + <option value="Orthologs" >Orthologs</option> + <option value="MetabolicPathways" >MetabolicPathways</option> + <option value="TaskComments" >TaskComments</option> + <option value="ArrayElements" >ArrayElements</option> + <option value="TwoChannelDiffExpr" >TwoChannelDiffExpr</option> + <option value="ProteinExpression" >ProteinExpression</option> + <option value="Mr4Reagents" >Mr4Reagents</option> + <option value="ProteinDatabase" >ProteinDatabase</option> + <option value="GeneLinkouts" >GeneLinkouts</option> + <option value="3dPreds" >3dPreds</option> + <option value="PdbSimilarities" >PdbSimilarities</option> + <option value="Epitopes" >Epitopes</option> + <option value="IsolateOverlap" >IsolateOverlap</option> + </param> +</when> +</conditional></inputs> + <outputs> + <data format="tabular" name="output" /> + </outputs> + <help> + +.. class:: infomark + +**TIP:** organism type is xsd:string + +.. class:: infomark + +**TIP:** min_molecular_weight type is xsd:string + +.. class:: infomark + +**TIP:** max_molecular_weight type is xsd:string + </help> +</tool>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/clients/client_5.xml~ Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,138 @@ +<tool id="client_51" name="genesbymolecularweight"> + <description> Client for method: genesbymolecularweight , Web service: http://eupathdb.org/webservices/GeneQuestions/GenesByMolecularWeight.wadl </description> + <command interpreter="python"> + #if $cond_source.optional_param_source=="no" #client_1.py $output http://eupathdb.org/webservices/GeneQuestions/GenesByMolecularWeight.xml organism $param0 min_molecular_weight $param1 max_molecular_weight $param2#else #client_1.py $output http://eupathdb.org/webservices/GeneQuestions/GenesByMolecularWeight.xml organism $param0 min_molecular_weight $param1 max_molecular_weight $param2 o-fields $cond_source.param3 o-tables $cond_source.param4#end if +</command> + <inputs> +<param name="param0" type="select" label="organism" help="see tip below"> + <option value="Entamoeba**dispar" >Entamoeba dispar</option> + <option value="Entamoeba**histolytica" >Entamoeba histolytica</option> + <option value="Entamoeba**invadens" >Entamoeba invadens</option> + <option value="Cryptosporidium**parvum" >Cryptosporidium parvum</option> + <option value="Cryptosporidium**hominis" >Cryptosporidium hominis</option> + <option value="Cryptosporidium**muris" >Cryptosporidium muris</option> + <option value="Giardia**Assemblage**A**isolate**WB" >Giardia Assemblage A isolate WB</option> + <option value="Giardia**Assemblage**B**isolate**GS" >Giardia Assemblage B isolate GS</option> + <option value="Giardia**Assemblage**E**isolate**P15" >Giardia Assemblage E isolate P15</option> + <option value="Encephalitozoon**cuniculi" >Encephalitozoon cuniculi</option> + <option value="Encephalitozoon**intestinalis" >Encephalitozoon intestinalis</option> + <option value="Plasmodium**falciparum" >Plasmodium falciparum</option> + <option value="Plasmodium**vivax" >Plasmodium vivax</option> + <option value="Plasmodium**yoelii" >Plasmodium yoelii</option> + <option value="Plasmodium**berghei" >Plasmodium berghei</option> + <option value="Plasmodium**chabaudi" >Plasmodium chabaudi</option> + <option value="Plasmodium**knowlesi" >Plasmodium knowlesi</option> + <option value="Toxoplasma**gondii" >Toxoplasma gondii</option> + <option value="Neospora**caninum" >Neospora caninum</option> + <option value="Trichomonas**vaginalis" >Trichomonas vaginalis</option> + <option value="Trypanosoma**cruzi" >Trypanosoma cruzi</option> + <option value="Leishmania**braziliensis" >Leishmania braziliensis</option> + <option value="Leishmania**infantum" >Leishmania infantum</option> + <option value="Leishmania**major" >Leishmania major</option> + <option value="Leishmania**mexicana" >Leishmania mexicana</option> + <option value="Trypanosoma**brucei" >Trypanosoma brucei</option> + <option value="Trypanosoma**congolense" >Trypanosoma congolense</option> + <option value="Trypanosoma**vivax" >Trypanosoma vivax</option> + </param> +<param format="text" size = "150" name = "param1" type="text" label="min_molecular_weight" help="see tip below" /> +<param format="text" size = "150" name = "param2" type="text" label="max_molecular_weight" help="see tip below" /> + + <conditional name="cond_source"> + <param name="optional_param_source" type="select" label="Help"> + <option value="no" selected="true">no</option> + <option value="yes">yes</option> + </param> +<when value="no"> + </when><when value="yes"> +<param name="param3" type="select" label="o-fields" help="see tip below"> + <option value="all" >all</option> + <option value="none" selected="true">none</option> + <option value="primary_key" >primary_key</option> + <option value="formatted_gene_id" >formatted_gene_id</option> + <option value="external_db_name" >external_db_name</option> + <option value="sequence_id" >sequence_id</option> + <option value="chromosome" >chromosome</option> + <option value="location_text" >location_text</option> + <option value="strand" >strand</option> + <option value="gene_type" >gene_type</option> + <option value="exon_count" >exon_count</option> + <option value="transcript_length" >transcript_length</option> + <option value="cds_length" >cds_length</option> + <option value="product" >product</option> + <option value="protein_length" >protein_length</option> + <option value="tm_count" >tm_count</option> + <option value="molecular_weight" >molecular_weight</option> + <option value="isoelectric_point" >isoelectric_point</option> + <option value="ec_numbers_string" >ec_numbers_string</option> + <option value="ortholog_number" >ortholog_number</option> + <option value="paralog_number" >paralog_number</option> + <option value="orthomcl_name" >orthomcl_name</option> + <option value="signalp_scores" >signalp_scores</option> + <option value="signalp_peptide" >signalp_peptide</option> + <option value="ann_go_function" >ann_go_function</option> + <option value="ann_go_process" >ann_go_process</option> + <option value="ann_go_component" >ann_go_component</option> + <option value="pred_go_function" >pred_go_function</option> + <option value="pred_go_process" >pred_go_process</option> + <option value="pred_go_component" >pred_go_component</option> + <option value="organism" >organism</option> + <option value="protein_sequence" >protein_sequence</option> + <option value="transcript_sequence" >transcript_sequence</option> + <option value="cds" >cds</option> + <option value="wdk_weight" >wdk_weight</option> + </param> +<param name="param4" type="select" label="o-tables" help="see tip below"> + <option value="all" >all</option> + <option value="none" selected="true">none</option> + <option value="SNPs" >SNPs</option> + <option value="GeneModelDump" >GeneModelDump</option> + <option value="InterPro" >InterPro</option> + <option value="TMHMM" >TMHMM</option> + <option value="LowComplexity" >LowComplexity</option> + <option value="SignalP" >SignalP</option> + <option value="BlastP" >BlastP</option> + <option value="Genbank" >Genbank</option> + <option value="SageTags" >SageTags</option> + <option value="Notes" >Notes</option> + <option value="UserComments" >UserComments</option> + <option value="CommunityExpComments" >CommunityExpComments</option> + <option value="EcNumber" >EcNumber</option> + <option value="MassSpec" >MassSpec</option> + <option value="GoTerms" >GoTerms</option> + <option value="Aliases" >Aliases</option> + <option value="Phenotype" >Phenotype</option> + <option value="Y2hInteractions" >Y2hInteractions</option> + <option value="Orthologs" >Orthologs</option> + <option value="MetabolicPathways" >MetabolicPathways</option> + <option value="TaskComments" >TaskComments</option> + <option value="ArrayElements" >ArrayElements</option> + <option value="TwoChannelDiffExpr" >TwoChannelDiffExpr</option> + <option value="ProteinExpression" >ProteinExpression</option> + <option value="Mr4Reagents" >Mr4Reagents</option> + <option value="ProteinDatabase" >ProteinDatabase</option> + <option value="GeneLinkouts" >GeneLinkouts</option> + <option value="3dPreds" >3dPreds</option> + <option value="PdbSimilarities" >PdbSimilarities</option> + <option value="Epitopes" >Epitopes</option> + <option value="IsolateOverlap" >IsolateOverlap</option> + </param> +</when> +</conditional></inputs> + <outputs> + <data format="tabular" name="output" /> + </outputs> + <help> + +.. class:: infomark + +**TIP:** organism type is xsd:string + +.. class:: infomark + +**TIP:** min_molecular_weight type is xsd:string + +.. class:: infomark + +**TIP:** max_molecular_weight type is xsd:string + </help> +</tool> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/dataMediation.xml~ Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,19 @@ +<tool id="dataMediation" name="Data Mediation Tool "> + <description> Tool for coverting data types</description> + <command interpreter="python"> + #generateClient.py + $input + $output +</command> + <inputs> + + + <param name = "input" type="data" label="Choose the input step "/> +</inputs> + <outputs> + <data format="tabular" name="output" /> + </outputs> + <help> + + </help> +</tool>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/dataMediation1.xml~ Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,19 @@ +<tool id="dataMediation" name="array2string "> + <description> </description> + <command interpreter="python"> + #generateClient.py + $input + $output +</command> + <inputs> + + + <param name = "input" type="data" label="Choose the input step "/> +</inputs> + <outputs> + <data format="tabular" name="output" /> + </outputs> + <help> + + </help> +</tool>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/edit_tool_conf.py Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,64 @@ +import os + +class editToolConfig(object): + def addTool(self,toolName): + galaxyhome=os.environ.get('GALAXY_HOME') + f1=open(galaxyhome+'/tool_conf.xml','r') + f1.seek(0,0) + f2=open(galaxyhome+'/tool_conf_backup.xml','w') + f2.seek(0,0) + + ##first copy everything upto WebServiceTool1.xml into another file f2 + line = f1.readline() + f2.write(line) + + lineStripped=line.lstrip() + lineStripped=lineStripped.rstrip() + + #add the workflow Web service invocation tool under Web Service Workflow Tools section + while not lineStripped == '<section name="Web Service Workflow Tools" id="WebServiceWorkflow">': + line = f1.readline() + f2.write(line) + lineStripped = line.lstrip() + lineStripped=lineStripped.rstrip() + else: + print line + + ## add new tool to f2 + f2.write(' <tool file="WebServiceToolWorkflow/workflowclients/'+toolName + '.xml"/>\n') + + ## copy rest of f1 into f2 + while not lineStripped == '</toolbox>': + line = f1.readline() + f2.write(line) + lineStripped = line.lstrip() + lineStripped=lineStripped.rstrip() + else: + print line + + ##close f1 and f2 + f1.close() + f2.close() + + ##interchange modes of f1 and f2 + f1=open(galaxyhome+'/tool_conf.xml','w') + f1.seek(0,0) + f2=open(galaxyhome+'/tool_conf_backup.xml','r') + f2.seek(0,0) + + line = f2.readline() + f1.write(line) + + lineStripped=line.lstrip() + + ##write entire f2 into f1 (reverse roles) + while not lineStripped == '</toolbox>': + line = f2.readline() + f1.write(line) + lineStripped = line.lstrip() + lineStripped=lineStripped.rstrip() + else: + print line + + f1.close() + f2.close()
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/edit_tool_conf.py~ Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,64 @@ +import os + +class editToolConfig(object): + def addTool(self,toolName): + galaxyhome=os.environ.get('GALAXY_HOME') + f1=open(galaxyhome+'/tool_conf.xml','r') + f1.seek(0,0) + f2=open(galaxyhome+'/tool_conf_backup.xml','w') + f2.seek(0,0) + + ##first copy everything upto WebServiceTool1.xml into another file f2 + line = f1.readline() + f2.write(line) + + lineStripped=line.lstrip() + lineStripped=lineStripped.rstrip() + + #add the workflow Web service invocation tool under Web Service Workflow Tools section + while not lineStripped == '<section name="Web Service Workflow Tools" id="WebServiceWorkflow">': + line = f1.readline() + f2.write(line) + lineStripped = line.lstrip() + lineStripped=lineStripped.rstrip() + else: + print line + + ## add new tool to f2 + f2.write(' <tool file="WebServiceToolWorkflow/workflowclients/'+toolName + '.xml"/>\n') + + ## copy rest of f1 into f2 + while not lineStripped == '</toolbox>': + line = f1.readline() + f2.write(line) + lineStripped = line.lstrip() + lineStripped=lineStripped.rstrip() + else: + print line + + ##close f1 and f2 + f1.close() + f2.close() + + ##interchange modes of f1 and f2 + f1=open(galaxyhome+'/tool_conf.xml','w') + f1.seek(0,0) + f2=open(galaxyhome+'/tool_conf_backup.xml','r') + f2.seek(0,0) + + line = f2.readline() + f1.write(line) + + lineStripped=line.lstrip() + + ##write entire f2 into f1 (reverse roles) + while not lineStripped == '</toolbox>\n': + line = f2.readline() + f1.write(line) + lineStripped = line.lstrip() + lineStripped=lineStripped.rstrip() + else: + print line + + f1.close() + f2.close()
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/edit_tool_conf1.py Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,64 @@ +import os + +class editToolConfig1(object): + def addTool(self,toolName): + galaxyhome=os.environ.get('GALAXY_HOME') + f1=open(galaxyhome+'/tool_conf.xml','r') + f1.seek(0,0) + f2=open(galaxyhome+'/tool_conf_backup.xml','w') + f2.seek(0,0) + + #copy everything from tool_conf.xml upto the section 'Web Service Tools' into another file f2 + line = f1.readline() + f2.write(line) + + lineStripped=line.lstrip() + lineStripped=lineStripped.rstrip() + + #add the one-time Web service invocation tool under Web Service Tools section + while not lineStripped == '<section name="Web Service Tools" id="WebServices">': + line = f1.readline() + f2.write(line) + lineStripped = line.lstrip() + lineStripped=lineStripped.rstrip() + else: + print line + + f2.write(' <tool file="WebServiceToolWorkflow/clients/'+toolName + '.xml"/>\n') + + #copy rest of tool_conf.xml file f2 + while not lineStripped == '</toolbox>': + line = f1.readline() + f2.write(line) + lineStripped = line.lstrip() + lineStripped=lineStripped.rstrip() + else: + print line + + ##close f1 and f2 + f1.close() + f2.close() + + ##interchange modes of f1 and f2 + f1=open(galaxyhome+'/tool_conf.xml','w') + f1.seek(0,0) + f2=open(galaxyhome+'/tool_conf_backup.xml','r') + f2.seek(0,0) + + line = f2.readline() + f1.write(line) + + lineStripped=line.lstrip() + lineStripped = lineStripped.rstrip() + + ##write entire f2 into f1 (reverse roles) + while not lineStripped == '</toolbox>': + line = f2.readline() + f1.write(line) + lineStripped = line.lstrip() + lineStripped = lineStripped.rstrip() + else: + print line + + f1.close() + f2.close()
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/edit_tool_conf1.py~ Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,62 @@ +import os + +class editToolConfig1(object): + def addTool(self,toolName): + galaxyhome=os.environ.get('GALAXY_HOME') + f1=open(galaxyhome+'/tool_conf.xml','r') + f1.seek(0,0) + f2=open(galaxyhome+'/tool_conf_backup.xml','w') + f2.seek(0,0) + + #copy everything from tool_conf.xml upto the section 'Web Service Tools' into another file f2 + line = f1.readline() + f2.write(line) + + lineStripped=line.lstrip() + lineStripped=lineStripped.rstrip() + + #add the one-time Web service invocation tool under Web Service Tools section + while not lineStripped == '<section name="Web Service Tools" id="WebServices">': + line = f1.readline() + f2.write(line) + lineStripped = line.lstrip() + lineStripped=lineStripped.rstrip() + else: + print line + + f2.write(' <tool file="WebServiceToolWorkflow/clients/'+toolName + '.xml"/>\n') + + #copy rest of tool_conf.xml file f2 + while not lineStripped == '</toolbox>': + line = f1.readline() + f2.write(line) + lineStripped = line.lstrip() + lineStripped=lineStripped.rstrip() + else: + print line + + ##close f1 and f2 + f1.close() + f2.close() + + ##interchange modes of f1 and f2 + f1=open(galaxyhome+'/tool_conf.xml','w') + f1.seek(0,0) + f2=open(galaxyhome+'/tool_conf_backup.xml','r') + f2.seek(0,0) + + line = f2.readline() + f1.write(line) + + lineStripped=line.lstrip() + + ##write entire f2 into f1 (reverse roles) + while not lineStripped == '</toolbox>\n': + line = f2.readline() + f1.write(line) + lineStripped = line.lstrip() + else: + print line + + f1.close() + f2.close()
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/generateClient.py Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,551 @@ +import warnings + +with warnings.catch_warnings(): + warnings.simplefilter("ignore") + import platform + + from jpype._jpackage import JPackage + from jpype import * + import os.path + import sys + import string + from edit_tool_conf import * + +class ClientGenerator(object): + + #instantiate a client for invocation of the selected method of a Web service in workflows + def __init__(self,url,methodName,resourceName,fileName): + self.methodName = methodName + self.resourceName=resourceName + self.Ofile = fileName + #replace '__tilda__' with '~' + if(url.find('__tilda__')>-1): + ulist = url.split('__tilda__') + url = '~'.join(ulist) + self.url = url + + #replace '**' with ' ' + def formatString(self,string): + l = string.split(' ') + return '**'.join(l) + + #generates a xml describing a client capable of invoking a Web service described + #using a WADL document. Places this xml tool under ./workflowclients/ + def wadlClient(self): + ##parse wadl + #javahome = os.environ.get('JAVA_HOME') + #galaxyhome=os.environ.get('GALAXY_HOME') + #classpath= galaxyhome + '/tools/WebServiceToolWorkflow/ParserForWADL/bin' + #jarpath = galaxyhome + '/tools/WebServiceToolWorkflow/ParserForWADL/lib/' + #machine = platform.machine() + + #if machine == 'x86_64' : + # print 'a' + # startJVM("%s/jre/lib/amd64/server/libjvm.so" % javahome,"-ea", "-Djava.class.path=%s" % classpath,"-Djava.ext.dirs=%s" % jarpath) + #elif machine == 'i686' : + # print 'b' + # 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 : + # print 'c' + # System.exit("Could not identify machine, please specify path to libjvm.so") + + + pkg=JPackage('lsdis') + urlToPass=java.net.URL(self.url) + wadlUrl = self.url + + webserviceId = self.methodName + resUrl = self.resourceName + + + urls = [] + methods = [] + params = [] + + #invoke the WADL parser packaged with this tool. + WADLParserDriver=pkg.WADLParserDriver + wPD=WADLParserDriver() + wPD.parse(urlToPass) + urls = wPD.getUrl() + methods = wPD.getCompleteMethodList() + + #write into the output file information about the method and Web service to be invoked. + f=open(self.Ofile,'w') + f.write(wadlUrl) + f.write('\n'+ resUrl) + f.write('\n'+webserviceId) + + #get parameters for the selected method of the Web service + i=0 + for method in methods: + f.write('\n in methods') + x = str(method.getId()) + y = str(urls.get(i)) + if x == webserviceId : + f.write('\n method matched') + f.write('\n y is' + y + ', resUrl is '+resUrl) + if y == resUrl : + f.write('res matched') + params = method.getRequest().getParams() + break + i=i+1 + + + + galaxyhome=os.environ.get('GALAXY_HOME') + + #./workflowclients/ClientCount.xml keeps the count of the clients/tools currently registered in Galaxy for Web service invocation. + #read the count and increment it. + clientCountFile=open(galaxyhome+'/tools/WebServiceToolWorkflow/workflowclients/ClientCount.xml','r') + clientCountFile.readline() + clientCountStr = clientCountFile.read(1) + clientCount=string.atoi(clientCountStr) + clientCount=clientCount+1 + clientCountFile.close() + + clientCountFile=open(galaxyhome+'/tools/WebServiceToolWorkflow/workflowclients/ClientCount.xml','w') + clientCountFile.write('<count> \n') + clientCountFile.write(str(clientCount)) + clientCountFile.write('</count> \n') + + #include the count in the tool's name and id to uniquely identify it. + clientName = 'client_'+ str(clientCount) + + #create a new xml file under ./workflowclients/ + clientXml=open(galaxyhome+'/tools/WebServiceToolWorkflow/workflowclients/'+clientName+'.xml','w') + clientXml.seek(0,0) + + #write the tool id, name and description + clientXml.write('<tool id="' + clientName+'" name="' + self.methodName +' ">\n') + clientXml.write(' <description> Client for method: '+self.methodName+' , Web service: '+self.url+' </description>\n') + + #the workflow tool/client for a REST Web service invokes ./workflowclients/client_1.py to invoke the Web service + #write the command tag to specify the arguments passed to this client_1.py + clientXml.write(' <command interpreter="python">\n client_1.py\n'+' #if $cond_source.optional_param_source=="no":\n $output\n ' +resUrl+'\n') + + + j=0 + for param in params: + if param.isRequired(): + clientXml.write(' '+self.formatString(param.getName())+'\n #if $source'+str(j)+'.source'+str(j)+'_source=="user":\n $source'+str(j)+'.user_param'+str(j)+'\n #else:\n fileInput\n $source' + str(j) + '.cached_param' + str(j)+'\n #end if\n') + j=j+1 + + clientXml.write(' #else:\n $output\n ' +resUrl+'\n') + j=0 + for param in params: + if param.isRequired(): + clientXml.write(' '+self.formatString(param.getName())+'\n #if $source'+str(j)+'.source'+str(j)+'_source=="user":\n $source'+str(j)+'.user_param'+str(j)+'\n #else:\n fileInput\n $source' + str(j) + '.cached_param' + str(j)+'\n #end if\n') + j=j+1 + + for param in params: + if not param.isRequired(): + clientXml.write(' '+self.formatString(param.getName())+'\n #if $cond_source.source'+str(j)+'.source'+str(j)+'_source=="user":\n $cond_source.source'+str(j)+'.user_param'+str(j)+'\n #else:\n fileInput\n $cond_source.source' + str(j) + '.cached_param' + str(j)+'\n #end if\n') + j=j+1 + + clientXml.write(' #end if\n') + clientXml.write('</command>\n') + + #start writing inputs + clientXml.write(' <inputs>\n') + + #create a param for each required parameter described in the WADL. Check if defaults are specified. Create param such that + #it can either be given a value manually or the value can be taken from a previous step. + j=0 + for param in params: + if param.isRequired(): + pName = param.getName() + for doc in param.getDocs(): + if doc.getTitle()=="prompt" or doc.getTitle()=="Prompt" or doc.getTitle()=="PROMPT": + pName = doc.getInnerText() + + clientXml.write('<conditional name="source'+str(j)+'">\n <param name="source' + str(j)+'_source" type="select" label="'+pName+' Source"> \n <option value="cached" selected="true">Param value will be taken from previous step</option> \n <option value="user">User will enter the param value</option> \n </param>\n <when value="user">\n') + if param.getOptions().size()==0: + clientXml.write(' <param format="text" size = "150" name = "user_param'+str(j)+'" ') + if not param.getDefault1() == None: + clientXml.write('value="'+param.getDefault1()+'" ') + clientXml.write('type="text" label="Enter '+pName+'" help="see tip below" />\n') + else: + clientXml.write(' <param name="user_param'+str(j)+'" type="select" label="Select '+pName+'" help="see tip below">\n' ) + for option in param.getOptions(): + clientXml.write(' <option value="'+self.formatString(option.getName())+'" ') + if option.getName() == param.getDefault1(): + clientXml.write('selected="true"') + clientXml.write('>'+option.getName()+'</option>\n ') + clientXml.write(' </param> \n') + clientXml.write(' </when>\n') + clientXml.write(' <when value="cached">\n <param name = "cached_param'+ str(j)+'" type="data" label="Choose the step from which to get the parameter ' + pName + '"/> \n </when></conditional>') + j=j+1 + + #create a conditional param for each optional parameter described in the WADL. Again the param can be given a value manually or the value can be taken from + #a previous step. + clientXml.write(' <conditional name="cond_source">\n <param name="optional_param_source" type="select" label="Display Additional Parameters"> \n <option value="no" selected="true">no</option> \n <option value="yes">yes</option> \n </param> \n <when value="no"> \n </when>\n <when value="yes"> \n') + + for param in params: + if not param.isRequired(): + pName = param.getName() + for doc in param.getDocs(): + if doc.getTitle()=="prompt" or doc.getTitle()=="Prompt" or doc.getTitle()=="PROMPT": + pName = doc.getInnerText() + + clientXml.write('\n<conditional name="source'+str(j)+'">\n <param name="source' + str(j)+'_source" type="select" label="'+pName+' Source"> \n <option value="cached" selected="true">Param value will be taken from previous step</option> \n <option value="user">User will enter the param value</option> \n</param>\n <when value="user">') + if param.getOptions().size()==0: + clientXml.write('<param format="text" size = "150" name = "user_param'+str(j)+'" ') + if not param.getDefault1() == None: + clientXml.write('value="'+param.getDefault1()+'" ') + clientXml.write('type="text" label="Enter '+pName+'" help="see tip below" />\n') + else: + clientXml.write('<param name="user_param'+str(j)+'" type="select" label="Select '+pName+'" help="see tip below">\n' ) + for option in param.getOptions(): + clientXml.write(' <option value="'+self.formatString(option.getName())+'" ') + if option.getName() == param.getDefault1(): + clientXml.write('selected="true"') + clientXml.write('>'+option.getName()+'</option>\n ') + clientXml.write(' </param> \n') + clientXml.write(' </when>\n') + clientXml.write('<when value="cached">\n <param name = "cached_param'+ str(j)+'" type="data" label="Choose the step from which to get the parameter ' + pName + '"/> \n </when></conditional>\n') + j=j+1 + + + + clientXml.write(' </when>\n </conditional>\n</inputs>\n <outputs>\n <data format="tabular" name="output" />\n </outputs>\n') + + #write information about each parameter in the help section + clientXml.write(' <help>\n') + clientXml.write('Replace white space with ** in all parameter values\n') + + for param in params: + if param.isRequired(): + pName = param.getName() + for doc in param.getDocs(): + if doc.getTitle()=="prompt" or doc.getTitle()=="Prompt" or doc.getTitle()=="PROMPT": + pName = doc.getInnerText() + clientXml.write('\n.. class:: infomark\n\n**TIP:** '+ pName +' type is ' + param.getType()+'\n') + + clientXml.write(' </help>\n</tool>') + + #adds the newly created tool to tool_conf.xml in Galaxy under the 'Web Service Workflow Tools' section. + editor = editToolConfig() + editor.addTool(clientName) + + + def sawadlClient(self): + ##parse sawadl + javahome = os.environ.get('JAVA_HOME') + galaxyhome=os.environ.get('GALAXY_HOME') + classpath= galaxyhome + '/tools/WebServiceTool/lib/SAWADLParser/bin' + jarpath = galaxyhome + '/tools/WebServiceTool/lib/' + machine = platform.machine() + + #if machine == 'x86_64' : + # print 'a' + # startJVM("%s/jre/lib/amd64/server/libjvm.so" % javahome,"-ea", "-Djava.class.path=%s" % classpath,"-Djava.ext.dirs=%s" % jarpath) + #elif machine == 'i686' : + # print 'b' + # 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 : + # print 'c' + # System.exit("Could not identify machine, please specify path to libjvm.so") + + + pkg=JPackage('edu.uga.cs.lsdis.meteors.wadls') + pkgModel =JPackage('org.semanticweb.owlapi.model') + pkgApiBinding =JPackage('org.semanticweb.owlapi.apibinding') + pkgVocab = JPackage('org.semanticweb.owlapi.vocab') + + DOCUMENT_IRI = "http://cs.uga.edu/~ganjoo/galaxy/EDAM.owl" + + sawadlUrl = self.url + + webserviceId = self.methodName + resUrl = self.resourceName + + urls = [] + methods = [] + params = [] + annotationSet = [] + + SAWADLParserDriver=pkg.SAWADLParserDriver + sawPD=SAWADLParserDriver() + sawPD.parse(sawadlUrl) + urls = sawPD.getUrl() + methods = sawPD.getCompleteMethodList() + + IRI = pkgModel.IRI + OWLRDFVocabulary = pkgVocab.OWLRDFVocabulary + OWLManager = pkgApiBinding.OWLManager + OWLLiteral = pkgModel.OWLLiteral + owlOntManager = OWLManager.createOWLOntologyManager() + ontology = owlOntManager.loadOntologyFromOntologyDocument(IRI.create(DOCUMENT_IRI)) + dataFactory = owlOntManager.getOWLDataFactory() + propertyComment = dataFactory.getOWLAnnotationProperty(OWLRDFVocabulary.RDFS_COMMENT.getIRI()) + + f=open(self.Ofile,'w') + f.write(sawadlUrl) + f.write('\n'+ resUrl) + f.write('\n'+webserviceId) + + + i=0 + for method in methods: + x = str(method.getName()) + y = str(urls.get(i)) + if x == webserviceId : + f.write('method matched') + if y == resUrl : + f.write('res matched') + params = method.getRequest().getParamList() + break + i=i+1 + + + + + ##generate client's xml + galaxyhome=os.environ.get('GALAXY_HOME') + + clientCountFile=open(galaxyhome+'/tools/WebServiceTool/clients/ClientCount.xml','r') + clientCountFile.readline() + clientCountStr = clientCountFile.read(1) + clientCount=string.atoi(clientCountStr) + clientCount=clientCount+1 + clientCountFile.close() + + clientCountFile=open(galaxyhome+'/tools/WebServiceTool/clients/ClientCount.xml','w') + clientCountFile.write('<count> \n') + clientCountFile.write(str(clientCount)) + clientCountFile.write('</count> \n') + + + + + clientName = 'client_'+ str(clientCount) + + clientXml=open(galaxyhome+'/tools/WebServiceToolWorkflow/workflowclients/'+clientName+'.xml','w') + clientXml.seek(0,0) + + clientXml.write('<tool id="' + clientName+'" name="' + self.methodName +'">\n') + clientXml.write(' <description> Client for method: '+self.methodName+' , Web service: '+self.url+' </description>\n') + + + clientXml.write(' <command interpreter="python">\n #client_1.py \n'+' $output \n ' +resUrl+'\n') + ##write such that the parameters passed to client1.py(change name to clientName.py) are dependent on a for loop + + + j=0 + for param in params: + if param.getRequired()=='true' or param.getRequired()=='True' or param.getRequired()=='TRUE': + clientXml.write(' '+self.formatString(param.getName())+'\n#if $source'+str(j)+'.source'+str(j)+'_source=="user" $source'+str(j)+'.user_param'+str(j)+' #else $source' + str(j) + '.cached_param' + str(j)+' #end if\n') + j=j+1 + clientXml.write('#if $cond_source.optional_param_source=="yes"') + + for param in params: + if not param.getRequired()=='true' and not param.getRequired()=='True' and not param.getRequired()=='TRUE': + clientXml.write(' '+self.formatString(param.getName())+'\n#if $cond_source.source'+str(j)+'.source'+str(j)+'_source=="user" $cond_source.source'+str(j)+'.user_param'+str(j)+' #else $cond_source.source' + str(j) + '.cached_param' + str(j)+' #end if\n') + j=j+1 + + clientXml.write('#else \n#end if\n') + clientXml.write('</command>\n') + + ##write inputs depending on required or not. if not required den dont display + ##if required- den check default value, and if options exist.Depending on that + ##decide the type of parameter and options + clientXml.write(' <inputs>\n') + + + j=0 + for param in params: + if param.getRequired()=='true' or param.getRequired()=='True' or param.getRequired()=='TRUE': + clientXml.write('<conditional name="source'+str(j)+'">\n <param name="source' + str(j)+'_source" type="select" label="'+param.getName()+' Source"> \n <option value="cached" selected="true">Param value will be taken from previous step</option> \n <option value="user">User will enter the param value</option> \n </param>\n <when value="user">\n') + if param.getOptionvalue().size()==0: + clientXml.write(' <param format="text" size = "150" name = "user_param'+str(j)+'" ') + if not param.getDefault1() == None: + clientXml.write('value="'+param.getDefault1()+'" ') + clientXml.write('type="text" label="Enter '+param.getName()+'" help="see tip below" />\n') + j=j+1 + else: + clientXml.write(' <param name="user_param'+str(j)+'" type="select" label="Select '+param.getName()+'" help="see tip below">\n' ) + for option in param.getOptionvalue(): + clientXml.write(' <option value="'+self.formatString(option)+'" ') + if option == param.getDefault1(): + clientXml.write('selected="true"') + clientXml.write('>'+option+'</option>\n ') + clientXml.write(' </param> \n') + j=j+1 + clientXml.write(' </when>\n') + clientXml.write(' <when value="cached">\n <param name = "cached_param'+ str(j)+'" type="data" label="Choose the step from which to get the parameter ' + param.getName() + '"/> \n </when></conditional>') + + clientXml.write(' <conditional name="cond_source">\n <param name="optional_param_source" type="select" label="Display Additional Parameters"> \n <option value="no" selected="true">no</option> \n <option value="yes">yes</option> \n </param> \n <when value="no"> \n </when>\n <when value="yes"> \n') + + for param in params: + if not param.getRequired()=='true' and not param.getRequired()=='True' and not param.getRequired()=='TRUE': + clientXml.write('<conditional name="source'+str(j)+'">\n <param name="source' + str(j)+'_source" type="select" label="'+param.getName()+' Source"> \n <option value="cached" selected="true">Param value will be taken from previous step</option> \n <option value="user">User will enter the param value</option> \n </param>\n <when value="user">\n') + if param.getOptionvalue().size()==0: + clientXml.write(' <param format="text" size = "150" name = "user_param'+str(j)+'" ') + if not param.getDefault1() == None: + clientXml.write('value="'+param.getDefault1()+'" ') + clientXml.write('type="text" label="Enter '+param.getName()+'" help="see tip below" />\n') + j=j+1 + else: + clientXml.write(' <param name="user_param'+str(j)+'" type="select" label="Select'+param.getName()+'" help="see tip below">\n' ) + for option in param.getOptionvalue(): + clientXml.write(' <option value="'+self.formatString(option)+'" ') + if option == param.getDefault1(): + clientXml.write('selected="true"') + clientXml.write('>'+option+'</option>\n ') + clientXml.write(' </param> \n') + j=j+1 + clientXml.write(' </when>\n') + clientXml.write(' <when value="cached">\n <param name = "cached_param'+ str(j)+'" type="data" label="Choose the step from which to get the parameter ' + param.getName() + '"/> \n </when></conditional>') + + clientXml.write(' </when>\n </conditional>\n') + + clientXml.write('</inputs>\n <outputs>\n <data format="tabular" name="output" />\n </outputs>\n') + + clientXml.write(' <help>\n') + for param in params: + if param.getRequired()=='true' or param.getRequired()=='True' or param.getRequired()=='TRUE': + clientXml.write('\n.. class:: infomark\n\n**TIP:** About '+ param.getName() +': type is ' + param.getType()) + + modelRef = sawPD.getCompleteModelReference(param) + if not modelRef is None: + paramClass = dataFactory.getOWLClass(IRI.create(modelRef)); + annotationSet = paramClass.getAnnotations(ontology,propertyComment) + for annotation in annotationSet: + if isinstance(annotation.getValue(),OWLLiteral): + val = annotation.getValue() + if val.isOWLStringLiteral() and not val.isOWLTypedLiteral(): + print 'val.getLiteral()=' + val.getLiteral() + clientXml.write(', description from ontology is "' + val.getLiteral()+'"') + break + clientXml.write('\n') + clientXml.write(' </help>\n</tool>') + editor = editToolConfig() + editor.addTool(clientName) + + ##later add help feature + + def wsdlClient(self): + ##parse wadl + javahome = os.environ.get('JAVA_HOME') + galaxyhome=os.environ.get('GALAXY_HOME') + classpath= galaxyhome + '/tools/WebServiceTool/WodenWSDLParser/bin' + jarpath = galaxyhome + '/tools/WebServiceTool/WodenWSDLParser/lib/' + machine = platform.machine() + + if machine == 'x86_64' : + print 'a' + startJVM("%s/jre/lib/amd64/server/libjvm.so" % javahome,"-ea", "-Djava.class.path=%s" % classpath,"-Djava.ext.dirs=%s" % jarpath) + elif machine == 'i686' : + print 'b' + 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 : + print 'c' + System.exit("Could not identify machine, please specify path to libjvm.so") + + + pkg=JPackage('lsdis') + wsdlUrl = self.url + + webserviceId = self.methodName + resUrl = self.resourceName + + urls = [] + methods = [] + params = [] + paramTypes = [] + + WSDLParserDriver =pkg.WSDLParserDriver + wPD=WSDLParserDriver() + wPD.parse(wsdlUrl) + methods = wPD.getCompleteMethodList() + urls = wPD.getUrl() + + f=open(self.Ofile,'w') + f.write(wsdlUrl) + f.write('\n'+ resUrl) + f.write('\n'+webserviceId) + + + i=0 + for method in methods: + x = str(method.getName().getLocalPart()) + if x == webserviceId : + wPD.getParameters(x) + f.write('method matched') + paramTypes = wPD.getParamTypeList() + params = wPD.getParamList() + break + i=i+1 + + + + + ##generate client's xml + galaxyhome=os.environ.get('GALAXY_HOME') + + clientCountFile=open(galaxyhome+'/tools/WebServiceTool/clients/ClientCount.xml','r') + clientCountFile.readline() + clientCountStr = clientCountFile.read(1) + clientCount=string.atoi(clientCountStr) + clientCount=clientCount+1 + clientCountFile.close() + + clientCountFile=open(galaxyhome+'/tools/WebServiceTool/clients/ClientCount.xml','w') + clientCountFile.write('<count> \n') + clientCountFile.write(str(clientCount)) + clientCountFile.write('</count> \n') + + + + + clientName = 'client_'+ str(clientCount) + + clientXml=open(galaxyhome+'/tools/WebServiceTool/clients/'+clientName+'.xml','w') + clientXml.seek(0,0) + + clientXml.write('<tool id="' + clientName+'" name="' + self.methodName +'">\n') + clientXml.write(' <description> Client for method: '+self.methodName+' , Web service: '+self.url+' </description>\n') + + + clientXml.write(' <command interpreter="python">\n client_1.py \n'+' $output \n ' +resUrl+'\n') + ##write such that the parameters passed to client1.py(change name to clientName.py) are dependent on a for loop + + j=0 + for param in params: + clientXml.write(' '+self.formatString(param)+'\n') + clientXml.write(' $param' + str(j)+'\n') + j=j+1 + clientXml.write('</command>\n') + + ##write inputs depending on required or not. if not required den dont display + ##if required- den check default value, and if options exist.Depending on that + ##decide the type of parameter and options + clientXml.write(' <inputs>\n') + + j=0 + for param in params: + clientXml.write('<param format="text" size = "150" name = "param'+str(j)+'" ') + clientXml.write('type="text" label="'+param+'" help="see tip below" />\n') + j=j+1 + + + + clientXml.write('</inputs>\n <outputs>\n <data format="tabular" name="output" />\n </outputs>\n') + + clientXml.write(' <help>\n') + + j=0 + for param in params: + clientXml.write('\n.. class:: infomark\n\n**TIP:** '+ param +' type is ' + paramTypes[j] +'\n') + + clientXml.write(' </help>\n</tool>') + editor = editToolConfig() + editor.addTool(clientName) + + ##later add help feature
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/generateClient.py~ Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,551 @@ +import warnings + +with warnings.catch_warnings(): + warnings.simplefilter("ignore") + import platform + + from jpype._jpackage import JPackage + from jpype import * + import os.path + import sys + import string + from edit_tool_conf import * + +class ClientGenerator(object): + + #instantiate a client for invocation of the selected method of a Web service in workflows + def __init__(self,url,methodName,resourceName,fileName): + self.methodName = methodName + self.resourceName=resourceName + self.Ofile = fileName + #replace '__tilda__' with '~' + if(url.find('__tilda__')>-1): + ulist = url.split('__tilda__') + url = '~'.join(ulist) + self.url = url + + #replace '**' with ' ' + def formatString(self,string): + l = string.split(' ') + return '**'.join(l) + + #generates a xml describing a client capable of invoking a Web service described + #using a WADL document. Places this xml tool under ./workflowclients/ + def wadlClient(self): + ##parse wadl + #javahome = os.environ.get('JAVA_HOME') + #galaxyhome=os.environ.get('GALAXY_HOME') + #classpath= galaxyhome + '/tools/WebServiceToolWorkflow/ParserForWADL/bin' + #jarpath = galaxyhome + '/tools/WebServiceToolWorkflow/ParserForWADL/lib/' + #machine = platform.machine() + + #if machine == 'x86_64' : + # print 'a' + # startJVM("%s/jre/lib/amd64/server/libjvm.so" % javahome,"-ea", "-Djava.class.path=%s" % classpath,"-Djava.ext.dirs=%s" % jarpath) + #elif machine == 'i686' : + # print 'b' + # 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 : + # print 'c' + # System.exit("Could not identify machine, please specify path to libjvm.so") + + + pkg=JPackage('lsdis') + urlToPass=java.net.URL(self.url) + wadlUrl = self.url + + webserviceId = self.methodName + resUrl = self.resourceName + + + urls = [] + methods = [] + params = [] + + #invoke the WADL parser packaged with this tool. + WADLParserDriver=pkg.WADLParserDriver + wPD=WADLParserDriver() + wPD.parse(urlToPass) + urls = wPD.getUrl() + methods = wPD.getCompleteMethodList() + + #write into the output file information about the method and Web service to be invoked. + f=open(self.Ofile,'w') + f.write(wadlUrl) + f.write('\n'+ resUrl) + f.write('\n'+webserviceId) + + #get parameters for the selected method of the Web service + i=0 + for method in methods: + f.write('\n in methods') + x = str(method.getId()) + y = str(urls.get(i)) + if x == webserviceId : + f.write('\n method matched') + f.write('\n y is' + y + ', resUrl is '+resUrl) + if y == resUrl : + f.write('res matched') + params = method.getRequest().getParams() + break + i=i+1 + + + + galaxyhome=os.environ.get('GALAXY_HOME') + + #./workflowclients/ClientCount.xml keeps the count of the clients/tools currently registered in Galaxy for Web service invocation. + #read the count and increment it. + clientCountFile=open(galaxyhome+'/tools/WebServiceToolWorkflow/workflowclients/ClientCount.xml','r') + clientCountFile.readline() + clientCountStr = clientCountFile.read(1) + clientCount=string.atoi(clientCountStr) + clientCount=clientCount+1 + clientCountFile.close() + + clientCountFile=open(galaxyhome+'/tools/WebServiceToolWorkflow/workflowclients/ClientCount.xml','w') + clientCountFile.write('<count> \n') + clientCountFile.write(str(clientCount)) + clientCountFile.write('</count> \n') + + #include the count in the tool's name and id to uniquely identify it. + clientName = 'client_'+ str(clientCount) + + #create a new xml file under ./workflowclients/ + clientXml=open(galaxyhome+'/tools/WebServiceToolWorkflow/workflowclients/'+clientName+'.xml','w') + clientXml.seek(0,0) + + #write the tool id, name and description + clientXml.write('<tool id="' + clientName+'" name="' + self.methodName +' ">\n') + clientXml.write(' <description> Client for method: '+self.methodName+' , Web service: '+self.url+' </description>\n') + + #the workflow tool/client for a REST Web service invokes ./workflowclients/client_1.py to invoke the Web service + #write the command tag to specify the arguments passed to this client_1.py + clientXml.write(' <command interpreter="python">\n client_1.py\n'+' #if $cond_source.optional_param_source=="no":\n $output\n ' +resUrl+'\n') + + + j=0 + for param in params: + if param.isRequired(): + clientXml.write(' '+self.formatString(param.getName())+'\n #if $source'+str(j)+'.source'+str(j)+'_source=="user":\n $source'+str(j)+'.user_param'+str(j)+'\n #else:\n fileInput\n $source' + str(j) + '.cached_param' + str(j)+'\n #end if\n') + j=j+1 + + clientXml.write(' #else:\n $output\n ' +resUrl+'\n') + j=0 + for param in params: + if param.isRequired(): + clientXml.write(' '+self.formatString(param.getName())+'\n #if $source'+str(j)+'.source'+str(j)+'_source=="user":\n $source'+str(j)+'.user_param'+str(j)+'\n #else:\n fileInput\n $source' + str(j) + '.cached_param' + str(j)+'\n #end if\n') + j=j+1 + + for param in params: + if not param.isRequired(): + clientXml.write(' '+self.formatString(param.getName())+'\n #if $cond_source.source'+str(j)+'.source'+str(j)+'_source=="user":\n $cond_source.source'+str(j)+'.user_param'+str(j)+'\n #else:\n fileInput\n $cond_source.source' + str(j) + '.cached_param' + str(j)+'\n #end if\n') + j=j+1 + + clientXml.write(' #end if\n') + clientXml.write('</command>\n') + + #start writing inputs + clientXml.write(' <inputs>\n') + + #create a param for each required parameter described in the WADL. Check if defaults are specified. Create param such that + #it can either be given a value manually or the value can be taken from a previous step. + j=0 + for param in params: + if param.isRequired(): + pName = param.getName() + for doc in param.getDocs(): + if doc.getTitle()=="prompt" or doc.getTitle()=="Prompt" or doc.getTitle()=="PROMPT": + pName = doc.getInnerText() + + clientXml.write('<conditional name="source'+str(j)+'">\n <param name="source' + str(j)+'_source" type="select" label="'+pName+' Source"> \n <option value="cached" selected="true">Param value will be taken from previous step</option> \n <option value="user">User will enter the param value</option> \n </param>\n <when value="user">\n') + if param.getOptions().size()==0: + clientXml.write(' <param format="text" size = "150" name = "user_param'+str(j)+'" ') + if not param.getDefault1() == None: + clientXml.write('value="'+param.getDefault1()+'" ') + clientXml.write('type="text" label="Enter '+pName+'" help="see tip below" />\n') + else: + clientXml.write(' <param name="user_param'+str(j)+'" type="select" label="Select '+pName+'" help="see tip below">\n' ) + for option in param.getOptions(): + clientXml.write(' <option value="'+self.formatString(option.getName())+'" ') + if option.getName() == param.getDefault1(): + clientXml.write('selected="true"') + clientXml.write('>'+option.getName()+'</option>\n ') + clientXml.write(' </param> \n') + clientXml.write(' </when>\n') + clientXml.write(' <when value="cached">\n <param name = "cached_param'+ str(j)+'" type="data" label="Choose the step from which to get the parameter ' + pName + '"/> \n </when></conditional>') + j=j+1 + + #create a conditional param for each optional parameter described in the WADL. Again the param can be given a value manually or the value can be taken from + #a previous step. + clientXml.write(' <conditional name="cond_source">\n <param name="optional_param_source" type="select" label="Display Additional Parameters"> \n <option value="no" selected="true">no</option> \n <option value="yes">yes</option> \n </param> \n <when value="no"> \n </when>\n <when value="yes"> \n') + + for param in params: + if not param.isRequired(): + pName = param.getName() + for doc in param.getDocs(): + if doc.getTitle()=="prompt" or doc.getTitle()=="Prompt" or doc.getTitle()=="PROMPT": + pName = doc.getInnerText() + + clientXml.write('\n<conditional name="source'+str(j)+'">\n <param name="source' + str(j)+'_source" type="select" label="'+pName+' Source"> \n <option value="cached" selected="true">Param value will be taken from previous step</option> \n <option value="user">User will enter the param value</option> \n</param>\n <when value="user">') + if param.getOptions().size()==0: + clientXml.write('<param format="text" size = "150" name = "user_param'+str(j)+'" ') + if not param.getDefault1() == None: + clientXml.write('value="'+param.getDefault1()+'" ') + clientXml.write('type="text" label="Enter '+pName+'" help="see tip below" />\n') + else: + clientXml.write('<param name="user_param'+str(j)+'" type="select" label="Select '+pName+'" help="see tip below">\n' ) + for option in param.getOptions(): + clientXml.write(' <option value="'+self.formatString(option.getName())+'" ') + if option.getName() == param.getDefault1(): + clientXml.write('selected="true"') + clientXml.write('>'+option.getName()+'</option>\n ') + clientXml.write(' </param> \n') + clientXml.write(' </when>\n') + clientXml.write('<when value="cached">\n <param name = "cached_param'+ str(j)+'" type="data" label="Choose the step from which to get the parameter ' + pName + '"/> \n </when></conditional>\n') + j=j+1 + + + + clientXml.write(' </when>\n </conditional>\n</inputs>\n <outputs>\n <data format="tabular" name="output" />\n </outputs>\n') + + #write information about each parameter in the help section + clientXml.write(' <help>\n') + clientXml.write('Replace white space with ** in all parameter values\n') + + for param in params: + if param.isRequired(): + pName = param.getName() + for doc in param.getDocs(): + if doc.getTitle()=="prompt" or doc.getTitle()=="Prompt" or doc.getTitle()=="PROMPT": + pName = doc.getInnerText() + clientXml.write('\n.. class:: infomark\n\n**TIP:** '+ pName +' type is ' + param.getType()+'\n') + + clientXml.write(' </help>\n</tool>') + + #adds the newly created tool to tool_conf.xml in Galaxy under the 'Web Service Workflow Tools' section. + editor = editToolConfig() + editor.addTool(clientName) + + + def sawadlClient(self): + ##parse sawadl + javahome = os.environ.get('JAVA_HOME') + galaxyhome=os.environ.get('GALAXY_HOME') + classpath= galaxyhome + '/tools/WebServiceTool/lib/SAWADLParser/bin' + jarpath = galaxyhome + '/tools/WebServiceTool/lib/' + machine = platform.machine() + + #if machine == 'x86_64' : + # print 'a' + # startJVM("%s/jre/lib/amd64/server/libjvm.so" % javahome,"-ea", "-Djava.class.path=%s" % classpath,"-Djava.ext.dirs=%s" % jarpath) + #elif machine == 'i686' : + # print 'b' + # 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 : + # print 'c' + # System.exit("Could not identify machine, please specify path to libjvm.so") + + + pkg=JPackage('edu.uga.cs.lsdis.meteors.wadls') + pkgModel =JPackage('org.semanticweb.owlapi.model') + pkgApiBinding =JPackage('org.semanticweb.owlapi.apibinding') + pkgVocab = JPackage('org.semanticweb.owlapi.vocab') + + DOCUMENT_IRI = "http://cs.uga.edu/~ganjoo/galaxy/EDAM.owl" + + sawadlUrl = self.url + + webserviceId = self.methodName + resUrl = self.resourceName + + urls = [] + methods = [] + params = [] + annotationSet = [] + + SAWADLParserDriver=pkg.SAWADLParserDriver + sawPD=SAWADLParserDriver() + sawPD.parse(sawadlUrl) + urls = sawPD.getUrl() + methods = sawPD.getCompleteMethodList() + + IRI = pkgModel.IRI + OWLRDFVocabulary = pkgVocab.OWLRDFVocabulary + OWLManager = pkgApiBinding.OWLManager + OWLLiteral = pkgModel.OWLLiteral + owlOntManager = OWLManager.createOWLOntologyManager() + ontology = owlOntManager.loadOntologyFromOntologyDocument(IRI.create(DOCUMENT_IRI)) + dataFactory = owlOntManager.getOWLDataFactory() + propertyComment = dataFactory.getOWLAnnotationProperty(OWLRDFVocabulary.RDFS_COMMENT.getIRI()) + + f=open(self.Ofile,'w') + f.write(sawadlUrl) + f.write('\n'+ resUrl) + f.write('\n'+webserviceId) + + + i=0 + for method in methods: + x = str(method.getName()) + y = str(urls.get(i)) + if x == webserviceId : + f.write('method matched') + if y == resUrl : + f.write('res matched') + params = method.getRequest().getParamList() + break + i=i+1 + + + + + ##generate client's xml + galaxyhome=os.environ.get('GALAXY_HOME') + + clientCountFile=open(galaxyhome+'/tools/WebServiceTool/clients/ClientCount.xml','r') + clientCountFile.readline() + clientCountStr = clientCountFile.read(1) + clientCount=string.atoi(clientCountStr) + clientCount=clientCount+1 + clientCountFile.close() + + clientCountFile=open(galaxyhome+'/tools/WebServiceTool/clients/ClientCount.xml','w') + clientCountFile.write('<count> \n') + clientCountFile.write(str(clientCount)) + clientCountFile.write('</count> \n') + + + + + clientName = 'client_'+ str(clientCount) + + clientXml=open(galaxyhome+'/tools/WebServiceToolWorkflow/workflowclients/'+clientName+'.xml','w') + clientXml.seek(0,0) + + clientXml.write('<tool id="' + clientName+'" name="' + self.methodName +'">\n') + clientXml.write(' <description> Client for method: '+self.methodName+' , Web service: '+self.url+' </description>\n') + + + clientXml.write(' <command interpreter="python">\n #client_1.py \n'+' $output \n ' +resUrl+'\n') + ##write such that the parameters passed to client1.py(change name to clientName.py) are dependent on a for loop + + + j=0 + for param in params: + if param.getRequired()=='true' or param.getRequired()=='True' or param.getRequired()=='TRUE': + clientXml.write(' '+self.formatString(param.getName())+'\n#if $source'+str(j)+'.source'+str(j)+'_source=="user" $source'+str(j)+'.user_param'+str(j)+' #else $source' + str(j) + '.cached_param' + str(j)+' #end if\n') + j=j+1 + clientXml.write('#if $cond_source.optional_param_source=="yes"') + + for param in params: + if not param.getRequired()=='true' and not param.getRequired()=='True' and not param.getRequired()=='TRUE': + clientXml.write(' '+self.formatString(param.getName())+'\n#if $cond_source.source'+str(j)+'.source'+str(j)+'_source=="user" $cond_source.source'+str(j)+'.user_param'+str(j)+' #else $cond_source.source' + str(j) + '.cached_param' + str(j)+' #end if\n') + j=j+1 + + clientXml.write('#else \n#end if\n') + clientXml.write('</command>\n') + + ##write inputs depending on required or not. if not required den dont display + ##if required- den check default value, and if options exist.Depending on that + ##decide the type of parameter and options + clientXml.write(' <inputs>\n') + + + j=0 + for param in params: + if param.getRequired()=='true' or param.getRequired()=='True' or param.getRequired()=='TRUE': + clientXml.write('<conditional name="source'+str(j)+'">\n <param name="source' + str(j)+'_source" type="select" label="'+param.getName()+' Source"> \n <option value="cached" selected="true">Param value will be taken from previous step</option> \n <option value="user">User will enter the param value</option> \n </param>\n <when value="user">\n') + if param.getOptionvalue().size()==0: + clientXml.write(' <param format="text" size = "150" name = "user_param'+str(j)+'" ') + if not param.getDefault1() == None: + clientXml.write('value="'+param.getDefault1()+'" ') + clientXml.write('type="text" label="Enter '+param.getName()+'" help="see tip below" />\n') + j=j+1 + else: + clientXml.write(' <param name="user_param'+str(j)+'" type="select" label="Select '+param.getName()+'" help="see tip below">\n' ) + for option in param.getOptionvalue(): + clientXml.write(' <option value="'+self.formatString(option)+'" ') + if option == param.getDefault1(): + clientXml.write('selected="true"') + clientXml.write('>'+option+'</option>\n ') + clientXml.write(' </param> \n') + j=j+1 + clientXml.write(' </when>\n') + clientXml.write(' <when value="cached">\n <param name = "cached_param'+ str(j)+'" type="data" label="Choose the step from which to get the parameter ' + param.getName() + '"/> \n </when></conditional>') + + clientXml.write(' <conditional name="cond_source">\n <param name="optional_param_source" type="select" label="Display Additional Parameters"> \n <option value="no" selected="true">no</option> \n <option value="yes">yes</option> \n </param> \n <when value="no"> \n </when>\n <when value="yes"> \n') + + for param in params: + if not param.getRequired()=='true' and not param.getRequired()=='True' and not param.getRequired()=='TRUE': + clientXml.write('<conditional name="source'+str(j)+'">\n <param name="source' + str(j)+'_source" type="select" label="'+param.getName()+' Source"> \n <option value="cached" selected="true">Param value will be taken from previous step</option> \n <option value="user">User will enter the param value</option> \n </param>\n <when value="user">\n') + if param.getOptionvalue().size()==0: + clientXml.write(' <param format="text" size = "150" name = "user_param'+str(j)+'" ') + if not param.getDefault1() == None: + clientXml.write('value="'+param.getDefault1()+'" ') + clientXml.write('type="text" label="Enter '+param.getName()+'" help="see tip below" />\n') + j=j+1 + else: + clientXml.write(' <param name="user_param'+str(j)+'" type="select" label="Select'+param.getName()+'" help="see tip below">\n' ) + for option in param.getOptionvalue(): + clientXml.write(' <option value="'+self.formatString(option)+'" ') + if option == param.getDefault1(): + clientXml.write('selected="true"') + clientXml.write('>'+option+'</option>\n ') + clientXml.write(' </param> \n') + j=j+1 + clientXml.write(' </when>\n') + clientXml.write(' <when value="cached">\n <param name = "cached_param'+ str(j)+'" type="data" label="Choose the step from which to get the parameter ' + param.getName() + '"/> \n </when></conditional>') + + clientXml.write(' </when>\n </conditional>\n') + + clientXml.write('</inputs>\n <outputs>\n <data format="tabular" name="output" />\n </outputs>\n') + + clientXml.write(' <help>\n') + for param in params: + if param.getRequired()=='true' or param.getRequired()=='True' or param.getRequired()=='TRUE': + clientXml.write('\n.. class:: infomark\n\n**TIP:** About '+ param.getName() +': type is ' + param.getType()) + + modelRef = sawPD.getCompleteModelReference(param) + if not modelRef is None: + paramClass = dataFactory.getOWLClass(IRI.create(modelRef)); + annotationSet = paramClass.getAnnotations(ontology,propertyComment) + for annotation in annotationSet: + if isinstance(annotation.getValue(),OWLLiteral): + val = annotation.getValue() + if val.isOWLStringLiteral() and not val.isOWLTypedLiteral(): + print 'val.getLiteral()=' + val.getLiteral() + clientXml.write(', description from ontology is "' + val.getLiteral()+'"') + break + clientXml.write('\n') + clientXml.write(' </help>\n</tool>') + editor = editToolConfig() + editor.addTool(clientName) + + ##later add help feature + + def wsdlClient(self): + ##parse wadl + javahome = os.environ.get('JAVA_HOME') + galaxyhome=os.environ.get('GALAXY_HOME') + classpath= galaxyhome + '/tools/WebServiceTool/WodenWSDLParser/bin' + jarpath = galaxyhome + '/tools/WebServiceTool/WodenWSDLParser/lib/' + machine = platform.machine() + + if machine == 'x86_64' : + print 'a' + startJVM("%s/jre/lib/amd64/server/libjvm.so" % javahome,"-ea", "-Djava.class.path=%s" % classpath,"-Djava.ext.dirs=%s" % jarpath) + elif machine == 'i686' : + print 'b' + 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 : + print 'c' + System.exit("Could not identify machine, please specify path to libjvm.so") + + + pkg=JPackage('lsdis') + wsdlUrl = self.url + + webserviceId = self.methodName + resUrl = self.resourceName + + urls = [] + methods = [] + params = [] + paramTypes = [] + + WSDLParserDriver =pkg.WSDLParserDriver + wPD=WSDLParserDriver() + wPD.parse(wsdlUrl) + methods = wPD.getCompleteMethodList() + urls = wPD.getUrl() + + f=open(self.Ofile,'w') + f.write(wsdlUrl) + f.write('\n'+ resUrl) + f.write('\n'+webserviceId) + + + i=0 + for method in methods: + x = str(method.getName().getLocalPart()) + if x == webserviceId : + wPD.getParameters(x) + f.write('method matched') + paramTypes = wPD.getParamTypeList() + params = wPD.getParamList() + break + i=i+1 + + + + + ##generate client's xml + galaxyhome=os.environ.get('GALAXY_HOME') + + clientCountFile=open(galaxyhome+'/tools/WebServiceTool/clients/ClientCount.xml','r') + clientCountFile.readline() + clientCountStr = clientCountFile.read(1) + clientCount=string.atoi(clientCountStr) + clientCount=clientCount+1 + clientCountFile.close() + + clientCountFile=open(galaxyhome+'/tools/WebServiceTool/clients/ClientCount.xml','w') + clientCountFile.write('<count> \n') + clientCountFile.write(str(clientCount)) + clientCountFile.write('</count> \n') + + + + + clientName = 'client_'+ str(clientCount) + + clientXml=open(galaxyhome+'/tools/WebServiceTool/clients/'+clientName+'.xml','w') + clientXml.seek(0,0) + + clientXml.write('<tool id="' + clientName+'" name="' + self.methodName +'">\n') + clientXml.write(' <description> Client for method: '+self.methodName+' , Web service: '+self.url+' </description>\n') + + + clientXml.write(' <command interpreter="python">\n client_1.py \n'+' $output \n ' +resUrl+'\n') + ##write such that the parameters passed to client1.py(change name to clientName.py) are dependent on a for loop + + j=0 + for param in params: + clientXml.write(' '+self.formatString(param)+'\n') + clientXml.write(' $param' + str(j)+'\n') + j=j+1 + clientXml.write('</command>\n') + + ##write inputs depending on required or not. if not required den dont display + ##if required- den check default value, and if options exist.Depending on that + ##decide the type of parameter and options + clientXml.write(' <inputs>\n') + + j=0 + for param in params: + clientXml.write('<param format="text" size = "150" name = "param'+str(j)+'" ') + clientXml.write('type="text" label="'+param+'" help="see tip below" />\n') + j=j+1 + + + + clientXml.write('</inputs>\n <outputs>\n <data format="tabular" name="output" />\n </outputs>\n') + + clientXml.write(' <help>\n') + + j=0 + for param in params: + clientXml.write('\n.. class:: infomark\n\n**TIP:** '+ param +' type is ' + paramTypes[j] +'\n') + + clientXml.write(' </help>\n</tool>') + editor = editToolConfig() + editor.addTool(clientName) + + ##later add help feature
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/generateClient1.py Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,549 @@ +import warnings + +with warnings.catch_warnings(): + warnings.simplefilter("ignore") + import platform + + from jpype._jpackage import JPackage + from jpype import * + import os.path + import sys + import string + from edit_tool_conf1 import * + +class ClientGenerator1(object): + + #instantiate a client for one time invocation of the selected method of a Web service + def __init__(self,url,methodName,resourceName,fileName): + self.methodName = methodName + self.resourceName=resourceName + self.Ofile = fileName + #replace '__tilda__' with '~' + if(url.find('__tilda__')>-1): + ulist = url.split('__tilda__') + url = '~'.join(ulist) + self.url = url + + #replace '**' with ' ' + def formatString(self,string): + l = string.split(' ') + return '**'.join(l) + + #generates a xml describing a client capable of invoking a Web service described + #using a WADL document. Places this xml tool under ./clients/ + def wadlClient(self): + ##parse wadl + #javahome = os.environ.get('JAVA_HOME') + #galaxyhome=os.environ.get('GALAXY_HOME') + #classpath= galaxyhome + '/tools/WebServiceToolWorkflow/ParserForWADL/bin' + #jarpath = galaxyhome + '/tools/WebServiceToolWorkflow/ParserForWADL/lib/' + #machine = platform.machine() + + #if machine == 'x86_64' : + # print 'a' + # startJVM("%s/jre/lib/amd64/server/libjvm.so" % javahome,"-ea", "-Djava.class.path=%s" % classpath,"-Djava.ext.dirs=%s" % jarpath) + #elif machine == 'i686' : + # print 'b' + # 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 : + # print 'c' + # System.exit("Could not identify machine, please specify path to libjvm.so") + + + pkg=JPackage('lsdis') + urlToPass=java.net.URL(self.url) + wadlUrl = self.url + + webserviceId = self.methodName + resUrl = self.resourceName + + urls = [] + methods = [] + params = [] + docs = [] + + WADLParserDriver=pkg.WADLParserDriver + wPD=WADLParserDriver() + wPD.parse(urlToPass) + urls = wPD.getUrl() + methods = wPD.getCompleteMethodList() + + #write into the output file information about the method and Web service to be invoked. + f=open(self.Ofile,'w') + f.write(wadlUrl) + f.write('\n'+ resUrl) + f.write('\n'+webserviceId) + + + #get parameters for the selected method of the Web service + i=0 + for method in methods: + f.write('in for loop') + x = str(method.getId()) + y = str(urls.get(i)) + if x == webserviceId : + f.write('method matched') + if y == resUrl : + f.write('res matched') + params = method.getRequest().getParams() + break + i=i+1 + + galaxyhome=os.environ.get('GALAXY_HOME') + + #./clients/ClientCount.xml keeps the count of the clients/tools currently registered in Galaxy for Web service invocation. + #read the count and increment it. + clientCountFile=open(galaxyhome+'/tools/WebServiceToolWorkflow/clients/ClientCount.xml','r') + clientCountFile.readline() + clientCountStr = clientCountFile.read(1) + clientCount=string.atoi(clientCountStr) + clientCount=clientCount+1 + clientCountFile.close() + + clientCountFile=open(galaxyhome+'/tools/WebServiceToolWorkflow/clients/ClientCount.xml','w') + + clientCountFile.write('<count> \n') + clientCountFile.write(str(clientCount)) + clientCountFile.write('</count> \n') + + #include the count in the tool's name and id to uniquely identify it. + clientName = 'client_'+ str(clientCount) + + #create a new xml file under ./clients/ + clientXml=open(galaxyhome+'/tools/WebServiceToolWorkflow/clients/'+clientName+'.xml','w') + clientXml.seek(0,0) + + #write the tool id, name and description + clientXml.write('<tool id="' + clientName+'1" name="' + self.methodName +' ">\n') + clientXml.write(' <description> Client for method: '+self.methodName+' , Web service: '+self.url+' </description>\n') + + #the one-time invocation tool/client for a REST Web service invokes ./clients/client_1.py to invoke the Web service + #write the command tag to specify the arguments passed to this client_1.py + clientXml.write(' <command interpreter="python">\n #if $cond_source.optional_param_source=="no" #client_1.py'+' $output ' +resUrl) + + j=0 + + for param in params: + if param.isRequired(): + clientXml.write(' '+self.formatString(param.getName())) + clientXml.write(' $param' + str(j)) + j=j+1 + clientXml.write(' #else #client_1.py'+' $output ' +resUrl) + j=0 + for param in params: + if param.isRequired(): + clientXml.write(' '+self.formatString(param.getName())) + clientXml.write(' $param' + str(j)) + j=j+1 + + for param in params: + if not param.isRequired(): + clientXml.write(' '+self.formatString(param.getName())) + clientXml.write(' $cond_source.param' + str(j)) + j=j+1 + clientXml.write(' #end if \n</command>\n') + + #start writing inputs + clientXml.write(' <inputs>\n') + + #create a param for each required parameter described in the WADL. Check if defaults and options are specified in the WADL + j=0 + for param in params: + if param.isRequired(): + pName = param.getName() + for doc in param.getDocs(): + if doc.getTitle()=="prompt" or doc.getTitle()=="Prompt" or doc.getTitle()=="PROMPT": + pName = doc.getInnerText() + if param.getOptions().size()==0: + clientXml.write('<param format="text" size = "150" name = "param'+str(j)+'" ') + if not param.getDefault1() == None: + clientXml.write('value="'+param.getDefault1()+'" ') + clientXml.write('type="text" label="Enter '+pName+'" help="see tip below" />\n') + j=j+1 + else: + clientXml.write('<param name="param'+str(j)+'" type="select" label="Select '+pName+'" help="see tip below">\n' ) + for option in param.getOptions(): + clientXml.write(' <option value="'+self.formatString(option.getName())+'" ') + if option.getName() == param.getDefault1(): + clientXml.write('selected="true"') + clientXml.write('>'+option.getName()+'</option>\n ') + clientXml.write(' </param> \n') + j=j+1 + + #create a conditional param for each optional parameter described in the WADL. + clientXml.write('\n <conditional name="cond_source"> \n <param name="optional_param_source" type="select" label="Show Additional Parameters">\n <option value="no" selected="true">no</option> \n <option value="yes">yes</option> \n </param>\n') + clientXml.write('<when value="no"> \n </when>') + clientXml.write('<when value="yes"> \n') + for param in params: + if not param.isRequired(): + pName = param.getName() + for doc in param.getDocs(): + if doc.getTitle()=="prompt" or doc.getTitle()=="Prompt" or doc.getTitle()=="PROMPT": + pName = doc.getInnerText() + if param.getOptions().size()==0: + clientXml.write('<param format="text" size = "150" name = "param'+str(j)+'" ') + if not param.getDefault1() == None: + clientXml.write('value="'+param.getDefault1()+'" ') + clientXml.write('type="text" label="Enter '+pName+'" help="see tip below" />\n') + j=j+1 + else: + clientXml.write('<param name="param'+str(j)+'" type="select" label="Select '+pName+'" help="see tip below">\n' ) + for option in param.getOptions(): + clientXml.write(' <option value="'+self.formatString(option.getName())+'" ') + if option.getName() == param.getDefault1(): + clientXml.write('selected="true"') + clientXml.write('>'+option.getName()+'</option>\n ') + clientXml.write(' </param> \n') + j=j+1 + + + clientXml.write('</when>\n</conditional>') + clientXml.write('</inputs>\n <outputs>\n <data format="tabular" name="output" />\n </outputs>\n') + + #write information about each parameter in the help section + clientXml.write(' <help>\n') + + clientXml.write('Replace white space with ** in all parameter values\n') + + for param in params: + if param.isRequired(): + pName = param.getName() + for doc in param.getDocs(): + if doc.getTitle()=="prompt" or doc.getTitle()=="Prompt" or doc.getTitle()=="PROMPT": + pName = doc.getInnerText() + clientXml.write('\n.. class:: infomark\n\n**TIP:** '+ pName +' type is ' + param.getType()+'\n') + + clientXml.write(' </help>\n</tool>') + + #adds the newly created tool to tool_conf.xml in Galaxy under the 'Web Service Tools' section. + editor = editToolConfig1() + editor.addTool(clientName) + + ##later add help feature + + def sawadlClient(self): + ##parse sawadl + javahome = os.environ.get('JAVA_HOME') + galaxyhome=os.environ.get('GALAXY_HOME') + classpath= galaxyhome + '/tools/WebServiceTool/lib/SAWADLParser/bin' + jarpath = galaxyhome + '/tools/WebServiceTool/lib/' + machine = platform.machine() + + #if machine == 'x86_64' : + # print 'a' + # startJVM("%s/jre/lib/amd64/server/libjvm.so" % javahome,"-ea", "-Djava.class.path=%s" % classpath,"-Djava.ext.dirs=%s" % jarpath) + #elif machine == 'i686' : + # print 'b' + # 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 : + # print 'c' + # System.exit("Could not identify machine, please specify path to libjvm.so") + + + pkg=JPackage('edu.uga.cs.lsdis.meteors.wadls') + pkgModel =JPackage('org.semanticweb.owlapi.model') + pkgApiBinding =JPackage('org.semanticweb.owlapi.apibinding') + pkgVocab = JPackage('org.semanticweb.owlapi.vocab') + + DOCUMENT_IRI = "http://cs.uga.edu/~ganjoo/galaxy/EDAM.owl" + + sawadlUrl = self.url + + webserviceId = self.methodName + resUrl = self.resourceName + + urls = [] + methods = [] + params = [] + annotationSet = [] + + SAWADLParserDriver=pkg.SAWADLParserDriver + sawPD=SAWADLParserDriver() + sawPD.parse(sawadlUrl) + urls = sawPD.getUrl() + methods = sawPD.getCompleteMethodList() + + IRI = pkgModel.IRI + OWLRDFVocabulary = pkgVocab.OWLRDFVocabulary + OWLManager = pkgApiBinding.OWLManager + OWLLiteral = pkgModel.OWLLiteral + owlOntManager = OWLManager.createOWLOntologyManager() + ontology = owlOntManager.loadOntologyFromOntologyDocument(IRI.create(DOCUMENT_IRI)) + dataFactory = owlOntManager.getOWLDataFactory() + propertyComment = dataFactory.getOWLAnnotationProperty(OWLRDFVocabulary.RDFS_COMMENT.getIRI()) + + f=open(self.Ofile,'w') + f.write(sawadlUrl) + f.write('\n'+ resUrl) + f.write('\n'+webserviceId) + + + i=0 + for method in methods: + x = str(method.getName()) + y = str(urls.get(i)) + if x == webserviceId : + f.write('method matched') + if y == resUrl : + f.write('res matched') + params = method.getRequest().getParamList() + break + i=i+1 + + + + + ##generate client's xml + galaxyhome=os.environ.get('GALAXY_HOME') + + clientCountFile=open(galaxyhome+'/tools/WebServiceToolWorkflow/clients/ClientCount.xml','r') + clientCountFile.readline() + clientCountStr = clientCountFile.read(1) + clientCount=string.atoi(clientCountStr) + clientCount=clientCount+1 + clientCountFile.close() + + clientCountFile=open(galaxyhome+'/tools/WebServiceToolWorkflow/clients/ClientCount.xml','w') + clientCountFile.write('<count> \n') + clientCountFile.write(str(clientCount)) + clientCountFile.write('</count> \n') + + clientName = 'client_'+ str(clientCount) + + clientXml=open(galaxyhome+'/tools/WebServiceToolWorkflow/clients/'+clientName+'.xml','w') + clientXml.seek(0,0) + + clientXml.write('<tool id="' + clientName+'1" name="' + self.methodName +'">\n') + clientXml.write(' <description> Client for method: '+self.methodName+' , Web service: '+self.url+' </description>\n') + + + clientXml.write(' <command interpreter="python">\n #if $cond_source.optional_param_source=="no" #client_1.py'+' $output ' +resUrl) + ##write such that the parameters passed to client1.py(change name to clientName.py) are dependent on a for loop + + + j=0 + for param in params: + if param.getRequired()=='true' or param.getRequired()=='True' or param.getRequired()=='TRUE': + clientXml.write(' '+self.formatString(param.getName())+'\n') + clientXml.write(' $param' + str(j)+'\n') + j=j+1 + + clientXml.write(' #else #client_1.py'+' $output ' +resUrl) + j=0 + for param in params: + if param.getRequired()=='true' or param.getRequired()=='True' or param.getRequired()=='TRUE': + clientXml.write(' '+self.formatString(param.getName())) + clientXml.write(' $param' + str(j)) + j=j+1 + + for param in params: + if not param.getRequired()=='true' and not param.getRequired()=='True' and not param.getRequired()=='TRUE': + clientXml.write(' '+self.formatString(param.getName())) + clientXml.write(' $cond_source.param' + str(j)) + j=j+1 + + clientXml.write('#end if \n </command>\n') + + ##write inputs depending on required or not. if not required den dont display + ##if required- den check default value, and if options exist.Depending on that + ##decide the type of parameter and options + clientXml.write(' <inputs>\n') + + j=0 + for param in params: + if param.getRequired()=='true' or param.getRequired()=='True' or param.getRequired()=='TRUE': + f.write('\n '+ param.getName() + ' options: '+str(param.getOptionvalue().size())) + if param.getOptionvalue().size()==0: + clientXml.write('<param format="text" size = "150" name = "param'+str(j)+'" ') + if not param.getDefault1() == None: + clientXml.write('value="'+param.getDefault1()+'" ') + clientXml.write('type="text" label="Enter '+param.getName()+'" help="see tip below" />\n') + j=j+1 + else: + clientXml.write('<param name="param'+str(j)+'" type="select" label="Select '+param.getName()+'" help="see tip below">\n' ) + for option in param.getOptionvalue(): + clientXml.write(' <option value="'+self.formatString(option)+'" ') + if option == param.getDefault1(): + clientXml.write('selected="true"') + clientXml.write('>'+option+'</option>\n ') + clientXml.write(' </param> \n') + j=j+1 + + + clientXml.write('\n <conditional name="cond_source"> \n <param name="optional_param_source" type="select" label="Display Additional Parameters">\n <option value="no" selected="true">no</option> \n <option value="yes">yes</option> \n </param>\n') + clientXml.write('<when value="no"> \n </when>') + clientXml.write('<when value="yes"> \n') + + for param in params: + if not param.getRequired()=='true' and not param.getRequired()=='True' and not param.getRequired()=='TRUE': + f.write('\n '+ param.getName() + ' options: '+str(param.getOptionvalue().size())) + if param.getOptionvalue().size()==0: + clientXml.write('<param format="text" size = "150" name = "param'+str(j)+'" ') + if not param.getDefault1() == None: + clientXml.write('value="'+param.getDefault1()+'" ') + clientXml.write('type="text" label="Enter '+param.getName()+'" help="see tip below" />\n') + j=j+1 + else: + clientXml.write('<param name="param'+str(j)+'" type="select" label="Select '+param.getName()+'" help="see tip below">\n' ) + for option in param.getOptionvalue(): + clientXml.write(' <option value="'+self.formatString(option)+'" ') + if option == param.getDefault1(): + clientXml.write('selected="true"') + clientXml.write('>'+option+'</option>\n ') + clientXml.write(' </param> \n') + j=j+1 + + clientXml.write('</when>\n</conditional>\n') + + clientXml.write('</inputs>\n <outputs>\n <data format="tabular" name="output" />\n </outputs>\n') + + clientXml.write(' <help>\n') + for param in params: + if param.getRequired()=='true' or param.getRequired()=='True' or param.getRequired()=='TRUE': + clientXml.write('\n.. class:: infomark\n\n**TIP:** About '+ param.getName() +': type is ' + param.getType()) + + modelRef = sawPD.getCompleteModelReference(param) + if not modelRef is None: + paramClass = dataFactory.getOWLClass(IRI.create(modelRef)); + annotationSet = paramClass.getAnnotations(ontology,propertyComment) + for annotation in annotationSet: + if isinstance(annotation.getValue(),OWLLiteral): + val = annotation.getValue() + if val.isOWLStringLiteral() and not val.isOWLTypedLiteral(): + print 'val.getLiteral()=' + val.getLiteral() + clientXml.write(', description from ontology is "' + val.getLiteral()+'"') + break + clientXml.write('\n') + clientXml.write(' </help>\n</tool>') + editor = editToolConfig1() + editor.addTool(clientName) + + ##later add help feature + + def wsdlClient(self): + ##parse wadl + javahome = os.environ.get('JAVA_HOME') + galaxyhome=os.environ.get('GALAXY_HOME') + classpath= galaxyhome + '/tools/WebServiceTool/WodenWSDLParser/bin' + jarpath = galaxyhome + '/tools/WebServiceTool/WodenWSDLParser/lib/' + machine = platform.machine() + + if machine == 'x86_64' : + print 'a' + startJVM("%s/jre/lib/amd64/server/libjvm.so" % javahome,"-ea", "-Djava.class.path=%s" % classpath,"-Djava.ext.dirs=%s" % jarpath) + elif machine == 'i686' : + print 'b' + 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 : + print 'c' + System.exit("Could not identify machine, please specify path to libjvm.so") + + + pkg=JPackage('lsdis') + wsdlUrl = self.url + + webserviceId = self.methodName + resUrl = self.resourceName + + urls = [] + methods = [] + params = [] + paramTypes = [] + + WSDLParserDriver =pkg.WSDLParserDriver + wPD=WSDLParserDriver() + wPD.parse(wsdlUrl) + methods = wPD.getCompleteMethodList() + urls = wPD.getUrl() + + f=open(self.Ofile,'w') + f.write(wsdlUrl) + f.write('\n'+ resUrl) + f.write('\n'+webserviceId) + + + i=0 + for method in methods: + x = str(method.getName().getLocalPart()) + if x == webserviceId : + wPD.getParameters(x) + f.write('method matched') + paramTypes = wPD.getParamTypeList() + params = wPD.getParamList() + break + i=i+1 + + + + + ##generate client's xml + galaxyhome=os.environ.get('GALAXY_HOME') + + clientCountFile=open(galaxyhome+'/tools/WebServiceTool/clients/ClientCount.xml','r') + clientCountFile.readline() + clientCountStr = clientCountFile.read(1) + clientCount=string.atoi(clientCountStr) + clientCount=clientCount+1 + clientCountFile.close() + + clientCountFile=open(galaxyhome+'/tools/WebServiceTool/clients/ClientCount.xml','w') + clientCountFile.write('<count> \n') + clientCountFile.write(str(clientCount)) + clientCountFile.write('</count> \n') + + + + + clientName = 'client_'+ str(clientCount) + + clientXml=open(galaxyhome+'/tools/WebServiceTool/clients/'+clientName+'.xml','w') + clientXml.seek(0,0) + + clientXml.write('<tool id="' + clientName+'" name="' + self.methodName +'">\n') + clientXml.write(' <description> Client for method: '+self.methodName+' , Web service: '+self.url+' </description>\n') + + + clientXml.write(' <command interpreter="python">\n client_1.py \n'+' $output \n ' +resUrl+'\n') + ##write such that the parameters passed to client1.py(change name to clientName.py) are dependent on a for loop + + j=0 + for param in params: + clientXml.write(' '+self.formatString(param)+'\n') + clientXml.write(' $param' + str(j)+'\n') + j=j+1 + clientXml.write('</command>\n') + + ##write inputs depending on required or not. if not required den dont display + ##if required- den check default value, and if options exist.Depending on that + ##decide the type of parameter and options + clientXml.write(' <inputs>\n') + + j=0 + for param in params: + clientXml.write('<param format="text" size = "150" name = "param'+str(j)+'" ') + clientXml.write('type="text" label="'+param+'" help="see tip below" />\n') + j=j+1 + + + + clientXml.write('</inputs>\n <outputs>\n <data format="tabular" name="output" />\n </outputs>\n') + + clientXml.write(' <help>\n') + + clientXml.write('** Replace white with ** in all parameter values **\n') + + j=0 + for param in params: + clientXml.write('\n.. class:: infomark\n\n**TIP:** '+ param +' type is ' + paramTypes[j] +'\n') + + clientXml.write(' </help>\n</tool>') + editor = editToolConfig() + editor.addTool(clientName) + + ##later add help feature
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/generateClient1.py~ Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,548 @@ +import warnings + +with warnings.catch_warnings(): + warnings.simplefilter("ignore") + import platform + + from jpype._jpackage import JPackage + from jpype import * + import os.path + import sys + import string + from edit_tool_conf1 import * + +class ClientGenerator1(object): + + #instantiate a client for one time invocation of the selected method of a Web service + def __init__(self,url,methodName,resourceName,fileName): + self.methodName = methodName + self.resourceName=resourceName + self.Ofile = fileName + #replace '__tilda__' with '~' + if(url.find('__tilda__')>-1): + ulist = url.split('__tilda__') + url = '~'.join(ulist) + self.url = url + + #replace '**' with ' ' + def formatString(self,string): + l = string.split(' ') + return '**'.join(l) + + #generates a xml describing a client capable of invoking a Web service described + #using a WADL document. Places this xml tool under ./clients/ + def wadlClient(self): + ##parse wadl + #javahome = os.environ.get('JAVA_HOME') + #galaxyhome=os.environ.get('GALAXY_HOME') + #classpath= galaxyhome + '/tools/WebServiceToolWorkflow/ParserForWADL/bin' + #jarpath = galaxyhome + '/tools/WebServiceToolWorkflow/ParserForWADL/lib/' + #machine = platform.machine() + + #if machine == 'x86_64' : + # print 'a' + # startJVM("%s/jre/lib/amd64/server/libjvm.so" % javahome,"-ea", "-Djava.class.path=%s" % classpath,"-Djava.ext.dirs=%s" % jarpath) + #elif machine == 'i686' : + # print 'b' + # 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 : + # print 'c' + # System.exit("Could not identify machine, please specify path to libjvm.so") + + + pkg=JPackage('lsdis') + urlToPass=java.net.URL(self.url) + wadlUrl = self.url + + webserviceId = self.methodName + resUrl = self.resourceName + + urls = [] + methods = [] + params = [] + docs = [] + + WADLParserDriver=pkg.WADLParserDriver + wPD=WADLParserDriver() + wPD.parse(urlToPass) + urls = wPD.getUrl() + methods = wPD.getCompleteMethodList() + + #write into the output file information about the method and Web service to be invoked. + f=open(self.Ofile,'w') + f.write(wadlUrl) + f.write('\n'+ resUrl) + f.write('\n'+webserviceId) + + + #get parameters for the selected method of the Web service + i=0 + for method in methods: + x = str(method.getId()) + y = str(urls.get(i)) + if x == webserviceId : + f.write('method matched') + if y == resUrl : + f.write('res matched') + params = method.getRequest().getParams() + break + i=i+1 + + galaxyhome=os.environ.get('GALAXY_HOME') + + #./clients/ClientCount.xml keeps the count of the clients/tools currently registered in Galaxy for Web service invocation. + #read the count and increment it. + clientCountFile=open(galaxyhome+'/tools/WebServiceToolWorkflow/clients/ClientCount.xml','r') + clientCountFile.readline() + clientCountStr = clientCountFile.read(1) + clientCount=string.atoi(clientCountStr) + clientCount=clientCount+1 + clientCountFile.close() + + clientCountFile=open(galaxyhome+'/tools/WebServiceToolWorkflow/clients/ClientCount.xml','w') + + clientCountFile.write('<count> \n') + clientCountFile.write(str(clientCount)) + clientCountFile.write('</count> \n') + + #include the count in the tool's name and id to uniquely identify it. + clientName = 'client_'+ str(clientCount) + + #create a new xml file under ./clients/ + clientXml=open(galaxyhome+'/tools/WebServiceToolWorkflow/clients/'+clientName+'.xml','w') + clientXml.seek(0,0) + + #write the tool id, name and description + clientXml.write('<tool id="' + clientName+'1" name="' + self.methodName +' ">\n') + clientXml.write(' <description> Client for method: '+self.methodName+' , Web service: '+self.url+' </description>\n') + + #the one-time invocation tool/client for a REST Web service invokes ./clients/client_1.py to invoke the Web service + #write the command tag to specify the arguments passed to this client_1.py + clientXml.write(' <command interpreter="python">\n #if $cond_source.optional_param_source=="no" #client_1.py'+' $output ' +resUrl) + + j=0 + + for param in params: + if param.isRequired(): + clientXml.write(' '+self.formatString(param.getName())) + clientXml.write(' $param' + str(j)) + j=j+1 + clientXml.write(' #else #client_1.py'+' $output ' +resUrl) + j=0 + for param in params: + if param.isRequired(): + clientXml.write(' '+self.formatString(param.getName())) + clientXml.write(' $param' + str(j)) + j=j+1 + + for param in params: + if not param.isRequired(): + clientXml.write(' '+self.formatString(param.getName())) + clientXml.write(' $cond_source.param' + str(j)) + j=j+1 + clientXml.write(' #end if \n</command>\n') + + #start writing inputs + clientXml.write(' <inputs>\n') + + #create a param for each required parameter described in the WADL. Check if defaults and options are specified in the WADL + j=0 + for param in params: + if param.isRequired(): + pName = param.getName() + for doc in param.getDocs(): + if doc.getTitle()=="prompt" or doc.getTitle()=="Prompt" or doc.getTitle()=="PROMPT": + pName = doc.getInnerText() + if param.getOptions().size()==0: + clientXml.write('<param format="text" size = "150" name = "param'+str(j)+'" ') + if not param.getDefault1() == None: + clientXml.write('value="'+param.getDefault1()+'" ') + clientXml.write('type="text" label="Enter '+pName+'" help="see tip below" />\n') + j=j+1 + else: + clientXml.write('<param name="param'+str(j)+'" type="select" label="Select '+pName+'" help="see tip below">\n' ) + for option in param.getOptions(): + clientXml.write(' <option value="'+self.formatString(option.getName())+'" ') + if option.getName() == param.getDefault1(): + clientXml.write('selected="true"') + clientXml.write('>'+option.getName()+'</option>\n ') + clientXml.write(' </param> \n') + j=j+1 + + #create a conditional param for each optional parameter described in the WADL. + clientXml.write('\n <conditional name="cond_source"> \n <param name="optional_param_source" type="select" label="Show Additional Parameters">\n <option value="no" selected="true">no</option> \n <option value="yes">yes</option> \n </param>\n') + clientXml.write('<when value="no"> \n </when>') + clientXml.write('<when value="yes"> \n') + for param in params: + if not param.isRequired(): + pName = param.getName() + for doc in param.getDocs(): + if doc.getTitle()=="prompt" or doc.getTitle()=="Prompt" or doc.getTitle()=="PROMPT": + pName = doc.getInnerText() + if param.getOptions().size()==0: + clientXml.write('<param format="text" size = "150" name = "param'+str(j)+'" ') + if not param.getDefault1() == None: + clientXml.write('value="'+param.getDefault1()+'" ') + clientXml.write('type="text" label="Enter '+pName+'" help="see tip below" />\n') + j=j+1 + else: + clientXml.write('<param name="param'+str(j)+'" type="select" label="Select '+pName+'" help="see tip below">\n' ) + for option in param.getOptions(): + clientXml.write(' <option value="'+self.formatString(option.getName())+'" ') + if option.getName() == param.getDefault1(): + clientXml.write('selected="true"') + clientXml.write('>'+option.getName()+'</option>\n ') + clientXml.write(' </param> \n') + j=j+1 + + + clientXml.write('</when>\n</conditional>') + clientXml.write('</inputs>\n <outputs>\n <data format="tabular" name="output" />\n </outputs>\n') + + #write information about each parameter in the help section + clientXml.write(' <help>\n') + + clientXml.write('Replace white space with ** in all parameter values\n') + + for param in params: + if param.isRequired(): + pName = param.getName() + for doc in param.getDocs(): + if doc.getTitle()=="prompt" or doc.getTitle()=="Prompt" or doc.getTitle()=="PROMPT": + pName = doc.getInnerText() + clientXml.write('\n.. class:: infomark\n\n**TIP:** '+ pName +' type is ' + param.getType()+'\n') + + clientXml.write(' </help>\n</tool>') + + #adds the newly created tool to tool_conf.xml in Galaxy under the 'Web Service Tools' section. + editor = editToolConfig1() + editor.addTool(clientName) + + ##later add help feature + + def sawadlClient(self): + ##parse sawadl + javahome = os.environ.get('JAVA_HOME') + galaxyhome=os.environ.get('GALAXY_HOME') + classpath= galaxyhome + '/tools/WebServiceTool/lib/SAWADLParser/bin' + jarpath = galaxyhome + '/tools/WebServiceTool/lib/' + machine = platform.machine() + + #if machine == 'x86_64' : + # print 'a' + # startJVM("%s/jre/lib/amd64/server/libjvm.so" % javahome,"-ea", "-Djava.class.path=%s" % classpath,"-Djava.ext.dirs=%s" % jarpath) + #elif machine == 'i686' : + # print 'b' + # 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 : + # print 'c' + # System.exit("Could not identify machine, please specify path to libjvm.so") + + + pkg=JPackage('edu.uga.cs.lsdis.meteors.wadls') + pkgModel =JPackage('org.semanticweb.owlapi.model') + pkgApiBinding =JPackage('org.semanticweb.owlapi.apibinding') + pkgVocab = JPackage('org.semanticweb.owlapi.vocab') + + DOCUMENT_IRI = "http://cs.uga.edu/~ganjoo/galaxy/EDAM.owl" + + sawadlUrl = self.url + + webserviceId = self.methodName + resUrl = self.resourceName + + urls = [] + methods = [] + params = [] + annotationSet = [] + + SAWADLParserDriver=pkg.SAWADLParserDriver + sawPD=SAWADLParserDriver() + sawPD.parse(sawadlUrl) + urls = sawPD.getUrl() + methods = sawPD.getCompleteMethodList() + + IRI = pkgModel.IRI + OWLRDFVocabulary = pkgVocab.OWLRDFVocabulary + OWLManager = pkgApiBinding.OWLManager + OWLLiteral = pkgModel.OWLLiteral + owlOntManager = OWLManager.createOWLOntologyManager() + ontology = owlOntManager.loadOntologyFromOntologyDocument(IRI.create(DOCUMENT_IRI)) + dataFactory = owlOntManager.getOWLDataFactory() + propertyComment = dataFactory.getOWLAnnotationProperty(OWLRDFVocabulary.RDFS_COMMENT.getIRI()) + + f=open(self.Ofile,'w') + f.write(sawadlUrl) + f.write('\n'+ resUrl) + f.write('\n'+webserviceId) + + + i=0 + for method in methods: + x = str(method.getName()) + y = str(urls.get(i)) + if x == webserviceId : + f.write('method matched') + if y == resUrl : + f.write('res matched') + params = method.getRequest().getParamList() + break + i=i+1 + + + + + ##generate client's xml + galaxyhome=os.environ.get('GALAXY_HOME') + + clientCountFile=open(galaxyhome+'/tools/WebServiceToolWorkflow/clients/ClientCount.xml','r') + clientCountFile.readline() + clientCountStr = clientCountFile.read(1) + clientCount=string.atoi(clientCountStr) + clientCount=clientCount+1 + clientCountFile.close() + + clientCountFile=open(galaxyhome+'/tools/WebServiceToolWorkflow/clients/ClientCount.xml','w') + clientCountFile.write('<count> \n') + clientCountFile.write(str(clientCount)) + clientCountFile.write('</count> \n') + + clientName = 'client_'+ str(clientCount) + + clientXml=open(galaxyhome+'/tools/WebServiceToolWorkflow/clients/'+clientName+'.xml','w') + clientXml.seek(0,0) + + clientXml.write('<tool id="' + clientName+'1" name="' + self.methodName +'">\n') + clientXml.write(' <description> Client for method: '+self.methodName+' , Web service: '+self.url+' </description>\n') + + + clientXml.write(' <command interpreter="python">\n #if $cond_source.optional_param_source=="no" #client_1.py'+' $output ' +resUrl) + ##write such that the parameters passed to client1.py(change name to clientName.py) are dependent on a for loop + + + j=0 + for param in params: + if param.getRequired()=='true' or param.getRequired()=='True' or param.getRequired()=='TRUE': + clientXml.write(' '+self.formatString(param.getName())+'\n') + clientXml.write(' $param' + str(j)+'\n') + j=j+1 + + clientXml.write(' #else #client_1.py'+' $output ' +resUrl) + j=0 + for param in params: + if param.getRequired()=='true' or param.getRequired()=='True' or param.getRequired()=='TRUE': + clientXml.write(' '+self.formatString(param.getName())) + clientXml.write(' $param' + str(j)) + j=j+1 + + for param in params: + if not param.getRequired()=='true' and not param.getRequired()=='True' and not param.getRequired()=='TRUE': + clientXml.write(' '+self.formatString(param.getName())) + clientXml.write(' $cond_source.param' + str(j)) + j=j+1 + + clientXml.write('#end if \n </command>\n') + + ##write inputs depending on required or not. if not required den dont display + ##if required- den check default value, and if options exist.Depending on that + ##decide the type of parameter and options + clientXml.write(' <inputs>\n') + + j=0 + for param in params: + if param.getRequired()=='true' or param.getRequired()=='True' or param.getRequired()=='TRUE': + f.write('\n '+ param.getName() + ' options: '+str(param.getOptionvalue().size())) + if param.getOptionvalue().size()==0: + clientXml.write('<param format="text" size = "150" name = "param'+str(j)+'" ') + if not param.getDefault1() == None: + clientXml.write('value="'+param.getDefault1()+'" ') + clientXml.write('type="text" label="Enter '+param.getName()+'" help="see tip below" />\n') + j=j+1 + else: + clientXml.write('<param name="param'+str(j)+'" type="select" label="Select '+param.getName()+'" help="see tip below">\n' ) + for option in param.getOptionvalue(): + clientXml.write(' <option value="'+self.formatString(option)+'" ') + if option == param.getDefault1(): + clientXml.write('selected="true"') + clientXml.write('>'+option+'</option>\n ') + clientXml.write(' </param> \n') + j=j+1 + + + clientXml.write('\n <conditional name="cond_source"> \n <param name="optional_param_source" type="select" label="Display Additional Parameters">\n <option value="no" selected="true">no</option> \n <option value="yes">yes</option> \n </param>\n') + clientXml.write('<when value="no"> \n </when>') + clientXml.write('<when value="yes"> \n') + + for param in params: + if not param.getRequired()=='true' and not param.getRequired()=='True' and not param.getRequired()=='TRUE': + f.write('\n '+ param.getName() + ' options: '+str(param.getOptionvalue().size())) + if param.getOptionvalue().size()==0: + clientXml.write('<param format="text" size = "150" name = "param'+str(j)+'" ') + if not param.getDefault1() == None: + clientXml.write('value="'+param.getDefault1()+'" ') + clientXml.write('type="text" label="Enter '+param.getName()+'" help="see tip below" />\n') + j=j+1 + else: + clientXml.write('<param name="param'+str(j)+'" type="select" label="Select '+param.getName()+'" help="see tip below">\n' ) + for option in param.getOptionvalue(): + clientXml.write(' <option value="'+self.formatString(option)+'" ') + if option == param.getDefault1(): + clientXml.write('selected="true"') + clientXml.write('>'+option+'</option>\n ') + clientXml.write(' </param> \n') + j=j+1 + + clientXml.write('</when>\n</conditional>\n') + + clientXml.write('</inputs>\n <outputs>\n <data format="tabular" name="output" />\n </outputs>\n') + + clientXml.write(' <help>\n') + for param in params: + if param.getRequired()=='true' or param.getRequired()=='True' or param.getRequired()=='TRUE': + clientXml.write('\n.. class:: infomark\n\n**TIP:** About '+ param.getName() +': type is ' + param.getType()) + + modelRef = sawPD.getCompleteModelReference(param) + if not modelRef is None: + paramClass = dataFactory.getOWLClass(IRI.create(modelRef)); + annotationSet = paramClass.getAnnotations(ontology,propertyComment) + for annotation in annotationSet: + if isinstance(annotation.getValue(),OWLLiteral): + val = annotation.getValue() + if val.isOWLStringLiteral() and not val.isOWLTypedLiteral(): + print 'val.getLiteral()=' + val.getLiteral() + clientXml.write(', description from ontology is "' + val.getLiteral()+'"') + break + clientXml.write('\n') + clientXml.write(' </help>\n</tool>') + editor = editToolConfig1() + editor.addTool(clientName) + + ##later add help feature + + def wsdlClient(self): + ##parse wadl + javahome = os.environ.get('JAVA_HOME') + galaxyhome=os.environ.get('GALAXY_HOME') + classpath= galaxyhome + '/tools/WebServiceTool/WodenWSDLParser/bin' + jarpath = galaxyhome + '/tools/WebServiceTool/WodenWSDLParser/lib/' + machine = platform.machine() + + if machine == 'x86_64' : + print 'a' + startJVM("%s/jre/lib/amd64/server/libjvm.so" % javahome,"-ea", "-Djava.class.path=%s" % classpath,"-Djava.ext.dirs=%s" % jarpath) + elif machine == 'i686' : + print 'b' + 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 : + print 'c' + System.exit("Could not identify machine, please specify path to libjvm.so") + + + pkg=JPackage('lsdis') + wsdlUrl = self.url + + webserviceId = self.methodName + resUrl = self.resourceName + + urls = [] + methods = [] + params = [] + paramTypes = [] + + WSDLParserDriver =pkg.WSDLParserDriver + wPD=WSDLParserDriver() + wPD.parse(wsdlUrl) + methods = wPD.getCompleteMethodList() + urls = wPD.getUrl() + + f=open(self.Ofile,'w') + f.write(wsdlUrl) + f.write('\n'+ resUrl) + f.write('\n'+webserviceId) + + + i=0 + for method in methods: + x = str(method.getName().getLocalPart()) + if x == webserviceId : + wPD.getParameters(x) + f.write('method matched') + paramTypes = wPD.getParamTypeList() + params = wPD.getParamList() + break + i=i+1 + + + + + ##generate client's xml + galaxyhome=os.environ.get('GALAXY_HOME') + + clientCountFile=open(galaxyhome+'/tools/WebServiceTool/clients/ClientCount.xml','r') + clientCountFile.readline() + clientCountStr = clientCountFile.read(1) + clientCount=string.atoi(clientCountStr) + clientCount=clientCount+1 + clientCountFile.close() + + clientCountFile=open(galaxyhome+'/tools/WebServiceTool/clients/ClientCount.xml','w') + clientCountFile.write('<count> \n') + clientCountFile.write(str(clientCount)) + clientCountFile.write('</count> \n') + + + + + clientName = 'client_'+ str(clientCount) + + clientXml=open(galaxyhome+'/tools/WebServiceTool/clients/'+clientName+'.xml','w') + clientXml.seek(0,0) + + clientXml.write('<tool id="' + clientName+'" name="' + self.methodName +'">\n') + clientXml.write(' <description> Client for method: '+self.methodName+' , Web service: '+self.url+' </description>\n') + + + clientXml.write(' <command interpreter="python">\n client_1.py \n'+' $output \n ' +resUrl+'\n') + ##write such that the parameters passed to client1.py(change name to clientName.py) are dependent on a for loop + + j=0 + for param in params: + clientXml.write(' '+self.formatString(param)+'\n') + clientXml.write(' $param' + str(j)+'\n') + j=j+1 + clientXml.write('</command>\n') + + ##write inputs depending on required or not. if not required den dont display + ##if required- den check default value, and if options exist.Depending on that + ##decide the type of parameter and options + clientXml.write(' <inputs>\n') + + j=0 + for param in params: + clientXml.write('<param format="text" size = "150" name = "param'+str(j)+'" ') + clientXml.write('type="text" label="'+param+'" help="see tip below" />\n') + j=j+1 + + + + clientXml.write('</inputs>\n <outputs>\n <data format="tabular" name="output" />\n </outputs>\n') + + clientXml.write(' <help>\n') + + clientXml.write('** Replace white with ** in all parameter values **\n') + + j=0 + for param in params: + clientXml.write('\n.. class:: infomark\n\n**TIP:** '+ param +' type is ' + paramTypes[j] +'\n') + + clientXml.write(' </help>\n</tool>') + editor = editToolConfig() + editor.addTool(clientName) + + ##later add help feature
--- /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 + + + + +
--- /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/WebServiceTool/ParserForWADL/bin' + jarpath = galaxyhome + '/tools/WebServiceTool/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 + + + + +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/getMethods1.py Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,132 @@ +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 Document1(object): + + def getWADLMethods(self, wadlUrl, outputFileUrl ): + #javahome = os.environ.get('JAVA_HOME') + #galaxyhome=os.environ.get('GALAXY_HOME') + #classpath= galaxyhome + '/tools/WebServiceToolWorkflow/ParserForWADL/bin' + #jarpath = galaxyhome + '/tools/WebServiceToolWorkflow/ParserForWADL/lib/' + #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") + pkg=JPackage('lsdis') + urlToPass=java.net.URL(wadlUrl) + + outputfile=open(outputFileUrl,'w') + outputfile.seek(0,0) + + urls = [] + methods = [] + + WADLParserDriver=pkg.WADLParserDriver + wPD=WADLParserDriver() + wPD.parse(urlToPass) + urls = wPD.getUrl() + methods = wPD.getCompleteMethodList() + + 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 + + + + def getWSDLMethods(self, wsdlUrl, outputFileUrl ): + javahome = os.environ.get('JAVA_HOME') + galaxyhome=os.environ.get('GALAXY_HOME') + classpath= galaxyhome + '/tools/WebServiceToolWorkflow/WodenWSDLParser/bin' + jarpath = galaxyhome + '/tools/WebServiceToolWorkflow/WodenWSDLParser/lib/' + 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") + + pkg=JPackage('lsdis') + + outputfile=open(outputFileUrl,'w') + outputfile.seek(0,0) + length=(len(sys.argv)) + + urls = [] + methods = [] + + WSDLParserDriver=pkg.WSDLParserDriver + wPD=WSDLParserDriver() + wPD.parse(wsdlUrl) + 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 + + + + + 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() + 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) + + + urls = [] + methods = [] + + SAWADLParserDriver=pkg.SAWADLParserDriver + sawPD=SAWADLParserDriver() + sawPD.parse(sawadlUrl) + 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 + + +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/getMethods1.py~ Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,132 @@ +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 Document1(object): + + def getWADLMethods(self, wadlUrl, outputFileUrl ): + javahome = os.environ.get('JAVA_HOME') + galaxyhome=os.environ.get('GALAXY_HOME') + classpath= galaxyhome + '/tools/WebServiceToolWorkflow/ParserForWADL/bin' + jarpath = galaxyhome + '/tools/WebServiceToolWorkflow/ParserForWADL/lib/' + 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") + pkg=JPackage('lsdis') + urlToPass=java.net.URL(wadlUrl) + + outputfile=open(outputFileUrl,'w') + outputfile.seek(0,0) + + urls = [] + methods = [] + + WADLParserDriver=pkg.WADLParserDriver + wPD=WADLParserDriver() + wPD.parse(urlToPass) + urls = wPD.getUrl() + methods = wPD.getCompleteMethodList() + + 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 + + + + def getWSDLMethods(self, wsdlUrl, outputFileUrl ): + javahome = os.environ.get('JAVA_HOME') + galaxyhome=os.environ.get('GALAXY_HOME') + classpath= galaxyhome + '/tools/WebServiceToolWorkflow/WodenWSDLParser/bin' + jarpath = galaxyhome + '/tools/WebServiceToolWorkflow/WodenWSDLParser/lib/' + 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") + + pkg=JPackage('lsdis') + + outputfile=open(outputFileUrl,'w') + outputfile.seek(0,0) + length=(len(sys.argv)) + + urls = [] + methods = [] + + WSDLParserDriver=pkg.WSDLParserDriver + wPD=WSDLParserDriver() + wPD.parse(wsdlUrl) + 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 + + + + + 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() + 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) + + + urls = [] + methods = [] + + SAWADLParserDriver=pkg.SAWADLParserDriver + sawPD=SAWADLParserDriver() + sawPD.parse(sawadlUrl) + 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 + + +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/getWADLMethods.py~ Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,52 @@ +import warnings +import platform + +with warnings.catch_warnings(): + warnings.simplefilter("ignore") + from jpype._jpackage import JPackage + from jpype import * + import os.path + import sys + + javahome = os.environ.get('JAVA_HOME') + galaxyhome=os.environ.get('GALAXY_HOME') + classpath= galaxyhome + '/tools/restclientWADL/ParserForWADL/bin' + jarpath = galaxyhome + '/tools/restclientWADL/WADLParser/dist/lib/' + 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") + + pkg=JPackage('lsdis') + urlToPass=java.net.URL(sys.argv[1]) + wadlUrl = sys.argv[1] + + outputfile=open(sys.argv[2],'w') + outputfile.seek(0,0) + + + length=(len(sys.argv)) + + urls = [] + methods = [] + + WADLParserDriver=pkg.WADLParserDriver + wPD=WADLParserDriver() + wPD.parse(urlToPass) + urls = wPD.getUrl() + methods = wPD.getCompleteMethodList() + + 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 + + +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/lib/SAWADLParser/.classpath Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<classpath> + <classpathentry kind="src" path="src"/> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/> + <classpathentry kind="lib" path="/home/ganjoo/workspace/RESTWorkflowDesignValidator/lib/SAWADLPArser.jar"/> + <classpathentry kind="output" path="bin"/> +</classpath>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/lib/SAWADLParser/.project Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>SAWADLParser</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + <buildCommand> + <name>org.eclipse.jdt.core.javabuilder</name> + <arguments> + </arguments> + </buildCommand> + </buildSpec> + <natures> + <nature>org.eclipse.jdt.core.javanature</nature> + </natures> +</projectDescription>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/lib/SAWADLParser/Files/3A4_PurchaseOrder_CoreElements.xsd Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,447 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- edited with XMLSpy v2006 sp2 U (http://www.altova.com) by michal (jakas) --> +<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.sws-challenge.org/schemas/rnet/coreElements" xmlns:dict="http://www.sws-challenge.org/schemas/rnet/dictionary" targetNamespace="http://www.sws-challenge.org/schemas/rnet/coreElements" elementFormDefault="qualified" attributeFormDefault="unqualified" +xmlns:Ontology1="http://www.owl-ontologies.com/sws_challenge.owl" +xmlns:xml="http://www.w3.org/XML/1998/namespace" +xmlns:sawsdl="http://www.w3.org/2002/ws/sawsdl/spec/sawsdl#"> + + <xs:annotation> + <xs:documentation>Authors: Michal Zaremba, Holger Lausen +$Revision: 1.2 $ +$Date: 2006/03/22 17:05:21 $ + +This XML Core Elements has been created on the basis of the RosettaNet specification (http://rosettanet.org/) +and is solely intended for the Semantic Web Challenge (http://www.sws-challenge.org/).</xs:documentation> + </xs:annotation> + <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="xml.xsd"/> + <xs:import namespace="http://www.sws-challenge.org/schemas/rnet/dictionary" schemaLocation="3A4_PurchaseOrder_Dictionary.xsd"/> + <xs:element name="FreeFormText"> + <xs:annotation> + <xs:documentation>Unformatted text.</xs:documentation> + </xs:annotation> + <xs:complexType mixed="true"> + <xs:choice minOccurs="0" maxOccurs="unbounded"/> + <xs:attribute ref="xml:lang"/> + </xs:complexType> + </xs:element> + <xs:element name="businessName"> + <xs:annotation> + <xs:documentation>The name of a business entity.</xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:element ref="FreeFormText" sawsdl:modelReference="Ontology1#BusinessName"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="BusinessDescription"> + <xs:annotation> + <xs:documentation>The collection of business properties that describe a business identity and location.</xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:element ref="businessName" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="addressLine1"> + <xs:annotation> + <xs:documentation>The first line of a physical address.</xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:element ref="FreeFormText" sawsdl:modelReference="Ontology1#Street"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="cityName"> + <xs:annotation> + <xs:documentation>The name of a city.</xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:element ref="FreeFormText" sawsdl:modelReference="Ontology1#City"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="NationalPostalCode"> + <xs:annotation> + <xs:documentation>Code identifying geographic location as specified by a national postal code.</xs:documentation> + </xs:annotation> + <xs:complexType mixed="true"> + <xs:choice minOccurs="0" maxOccurs="unbounded"/> + </xs:complexType> + </xs:element> + <xs:element name="PhysicalAddress"> + <xs:annotation> + <xs:documentation>The actual physical location of an entity as prescribed by local postal authorities, including country identification as it relates to the party or a product.</xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:element ref="addressLine1" minOccurs="0"/> + <xs:element ref="cityName" minOccurs="0"/> + <xs:element ref="dict:GlobalCountryCode" minOccurs="0" sawsdl:modelReference="Ontology1#Country"/> + <xs:element ref="NationalPostalCode" minOccurs="0" sawsdl:modelReference="Ontology1#PostalCode"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="PhysicalLocation"> + <xs:annotation> + <xs:documentation>The collection of business properties that identify and describe the actual physical location of an entity as prescribed by local postal authorities, including country identification.</xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:element ref="PhysicalAddress" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="PartnerDescription"> + <xs:annotation> + <xs:documentation>The collection of business properties that describe a business partners' identity, their contact information, where they are physically located and their function in a supply chain.</xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:element ref="BusinessDescription"/> + <xs:element ref="ContactInformation" minOccurs="0" sawsdl:modelReference="Ontology1#ContactPerson"/> + <xs:element ref="PhysicalLocation" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="PartnerRoleDescription"> + <xs:annotation> + <xs:documentation>The collection of business properties that describe a business partners' role in a partner interface process.</xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:element ref="ContactInformation" minOccurs="0"/> + <xs:element ref="dict:GlobalPartnerRoleClassificationCode"/> + <xs:element ref="PartnerDescription"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="MonetaryAmount"> + <xs:annotation> + <xs:documentation>Magnitude of currency amount.</xs:documentation> + </xs:annotation> + <xs:complexType mixed="true"> + <xs:choice minOccurs="0" maxOccurs="unbounded"/> + </xs:complexType> + </xs:element> + <xs:element name="FinancialAmount"> + <xs:annotation> + <xs:documentation>The collection of business properties that describe the monetary amount defined by a specified currency.</xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:element ref="dict:GlobalCurrencyCode"/> + <xs:element ref="MonetaryAmount"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="totalAmount"> + <xs:annotation> + <xs:documentation>Total price for an entire business document.</xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:element ref="FinancialAmount"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="shipTo"> + <xs:annotation> + <xs:documentation>The partner and/or location to which the product must be delivered.</xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:element ref="PartnerDescription"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="DateStamp"> + <xs:annotation> + <xs:documentation>Specifies a specific date. Date stamp based on the ISO 8601 specification. The "Z" following the day identifier (DD) is used to indicate Coordinated Universal Time. Informal format: YYYYMMDDZ</xs:documentation> + </xs:annotation> + <xs:complexType mixed="true"> + <xs:choice minOccurs="0" maxOccurs="unbounded"/> + </xs:complexType> + </xs:element> + <xs:element name="TransportationEvent"> + <xs:annotation> + <xs:documentation>The collection of business properties that describe the occurrence of the public conveyance of goods as a commercial enterprise.</xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:element ref="DateStamp"/> + <xs:element ref="dict:GlobalTransportEventCode"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="requestedEvent"> + <xs:annotation> + <xs:documentation>The date a transportation event is requested to occur.</xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:element ref="TransportationEvent"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="AffirmationIndicator"> + <xs:annotation> + <xs:documentation>Used to indicate "Yes", "No" statements.</xs:documentation> + </xs:annotation> + <xs:complexType mixed="true"> + <xs:choice minOccurs="0" maxOccurs="unbounded"/> + </xs:complexType> + </xs:element> + <xs:element name="isDropShip"> + <xs:annotation> + <xs:documentation>Indicates whether the order is a drop shipment.</xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:element ref="AffirmationIndicator"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="toRole" sawsdl:modelReference="Ontology1#ToRole"> + <xs:annotation> + <xs:documentation>The role receiving the document in a business document exchange.</xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:element ref="PartnerRoleDescription" sawsdl:liftingSchemaMapping="PartnerRoleDescriptionLifting.xslt" sawsdl:loweringSchemaMapping="PartnerRoleDescriptionLowering.xslt"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="requestingDocumentIdentifier"> + <xs:annotation> + <xs:documentation>Unique tracking identification number that identifies a request.</xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:element ref="ProprietaryDocumentIdentifier"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="ProprietaryDocumentIdentifier"> + <xs:annotation> + <xs:documentation>Unique identifier, i.e. a numeric value or alphanumeric value, for a business document.</xs:documentation> + </xs:annotation> + <xs:complexType mixed="true"> + <xs:choice minOccurs="0" maxOccurs="unbounded"/> + </xs:complexType> + </xs:element> + <xs:element name="LineNumber"> + <xs:annotation> + <xs:documentation>Number of the line in the document.</xs:documentation> + </xs:annotation> + <xs:complexType mixed="true"> + <xs:choice minOccurs="0" maxOccurs="unbounded"/> + </xs:complexType> + </xs:element> + <xs:element name="thisDocumentIdentifier"> + <xs:annotation> + <xs:documentation>The information that identifies the business document being sent. This identifier is used to represent the specific business document associated with the defined business process.</xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:element ref="ProprietaryDocumentIdentifier"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="DateTimeStamp"> + <xs:annotation> + <xs:documentation>Specifies an instance in time. Based on the ISO 8601 specification where "YYYY" represents the year, "MM" the month and "DD" the day. The letter "T" is the date/time separator and "hh", "mm", "ss.sss" represent hour, minute and second respectively. This representation is immediately followed by a "Z" to indicate Coordinated Universal Time. Informal format: YYYYMMDDThhmmss</xs:documentation> + </xs:annotation> + <xs:complexType mixed="true"> + <xs:choice minOccurs="0" maxOccurs="unbounded"/> + </xs:complexType> + </xs:element> + <xs:element name="thisDocumentGenerationDateTime"> + <xs:annotation> + <xs:documentation>The date-time stamp indicating when this business document was generated.</xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:element ref="DateTimeStamp"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="contactName"> + <xs:annotation> + <xs:documentation>Name of the contact person(s) within the organization.</xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:element ref="FreeFormText" sawsdl:modelReference="Ontology1#PersonName"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="EmailAddress"> + <xs:annotation> + <xs:documentation>Electronic mail address.</xs:documentation> + </xs:annotation> + <xs:complexType mixed="true"> + <xs:choice minOccurs="0" maxOccurs="unbounded"/> + </xs:complexType> + </xs:element> + <xs:element name="CommunicationsNumber"> + <xs:annotation> + <xs:documentation>The electro-technical communication number, e.g., telephone number, facsimile number, pager number.</xs:documentation> + </xs:annotation> + <xs:complexType mixed="true"> + <xs:choice minOccurs="0" maxOccurs="unbounded"/> + </xs:complexType> + </xs:element> + <xs:element name="requestingDocumentDateTime"> + <xs:annotation> + <xs:documentation>The date-time that the requesting business document was generated. This is the same as the date-time stamp of the original business document.</xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:element ref="DateTimeStamp"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="totalLineItemAmount"> + <xs:annotation> + <xs:documentation>The monetary total associated with a line item.</xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:element ref="FinancialAmount"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="requestedUnitPrice"> + <xs:annotation> + <xs:documentation>The price requested for a unit of product.</xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:element ref="FinancialAmount"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="GlobalProductIdentifier" sawsdl:modelReference="Ontology1#ProductIdentifier"> + <xs:annotation> + <xs:documentation>Global unique product identifier. RosettaNet has adopted the Global Trade Identification Number (GTIN).</xs:documentation> + </xs:annotation> + <xs:complexType mixed="true"> + <xs:choice minOccurs="0" maxOccurs="unbounded"/> + </xs:complexType> + </xs:element> + <xs:element name="ProductIdentification"> + <xs:annotation> + <xs:documentation>The collection of business properties that describe proprietary and global identifier information regarding a product.</xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:element ref="GlobalProductIdentifier" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="buyerLineItem"> + <xs:annotation> + <xs:documentation>Line number assigned to an item by the product buyer.</xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:element ref="LineNumber"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="ProductQuantity" sawsdl:modelReference="Ontology1#Quantity"> + <xs:annotation> + <xs:documentation>A quantity specifying the number of product units.</xs:documentation> + </xs:annotation> + <xs:complexType mixed="true"> + <xs:choice minOccurs="0" maxOccurs="unbounded"/> + </xs:complexType> + </xs:element> + <xs:element name="shippedQuantity"> + <xs:annotation> + <xs:documentation>Quantity of product shipped.</xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:element ref="ProductQuantity"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="ShippedQuantityInformation"> + <xs:annotation> + <xs:documentation>The collection of business properties that describe information regarding the quantity of the product shipped.</xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:element ref="DateTimeStamp"/> + <xs:element ref="shippedQuantity"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="requestedQuantity"> + <xs:annotation> + <xs:documentation>The quantity of product requested.</xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:element ref="ProductQuantity"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="telephoneNumber"> + <xs:annotation> + <xs:documentation>The numerical schema designed to achieve contact via telephone.</xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:element ref="CommunicationsNumber" sawsdl:modelReference="Ontology1#TelephoneNumber"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="scheduledShipQuantity"> + <xs:annotation> + <xs:documentation>Quantity of product shipped currently scheduled for shipment.</xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:element ref="ProductQuantity"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="ContactInformation"> + <xs:annotation> + <xs:documentation>The collection of business properties that provide communication and address information for contacting a person, organization or business.</xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:element ref="contactName" minOccurs="0"/> + <xs:element ref="EmailAddress" minOccurs="0" sawsdl:modelReference="Ontology1#Email"/> + <xs:element ref="telephoneNumber" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="unitPrice"> + <xs:annotation> + <xs:documentation>Agreed upon sale price for each unit ordered.</xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:element ref="FinancialAmount"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="fromRole" sawsdl:modelReference="Ontology1#FromRole"> + <xs:annotation> + <xs:documentation>The role initiating a business document exchange.</xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:element ref="PartnerRoleDescription" sawsdl:liftingSchemaMapping="PartnerRoleDescriptionLifting.xslt" sawsdl:loweringSchemaMapping="PartnerRoleDescriptionLowering.xslt"/> + </xs:sequence> + </xs:complexType> + </xs:element> +</xs:schema>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/lib/SAWADLParser/Files/3A4_PurchaseOrder_Dictionary.xsd Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,1031 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- edited with XMLSpy v2006 sp2 U (http://www.altova.com) by michal (jakas) --> +<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:dict="http://www.sws-challenge.org/schemas/rnet/dictionary" xmlns:sawsdl="http://www.w3.org/2002/ws/sawsdl/spec/sawsdl#" + xmlns:Ontology1="http://www.owl-ontologies.com/sws_challenge.owl" + targetNamespace="http://www.sws-challenge.org/schemas/rnet/dictionary" elementFormDefault="qualified" attributeFormDefault="unqualified"> + <xs:annotation> + <xs:documentation>Authors: Michal Zaremba, Holger Lausen +$Revision: 1.2 $ +$Date: 2006/03/06 15:30:27 $ + +This XML Dictionary has been created on the basis of the RosettaNet specification (http://rosettanet.org/) +and is solely intended for the Semantic Web Challenge (http://www.sws-challenge.org/).</xs:documentation> + </xs:annotation> + <xs:element name="GlobalConfirmationTypeCode"> + <xs:annotation> + <xs:documentation>A code identifying type of exception process in order to enable the back-end integration.</xs:documentation> + </xs:annotation> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:enumeration value="accept with delivery schedule change"/> + <xs:enumeration value="accept with multiple changes"/> + <xs:enumeration value="accept with no change"/> + <xs:enumeration value="accept with price change"/> + <xs:enumeration value="accept with product substitution"/> + </xs:restriction> + </xs:simpleType> + </xs:element> + <xs:element name="GlobalCountryCode"> + <xs:annotation> + <xs:documentation xml:lang="en">Code identifying the three character currency code specified in ISO 4217-1995.</xs:documentation> + </xs:annotation> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:enumeration value="AD"/> + <xs:enumeration value="AE"/> + <xs:enumeration value="AF"/> + <xs:enumeration value="AG"/> + <xs:enumeration value="AI"/> + <xs:enumeration value="AL"/> + <xs:enumeration value="AM"/> + <xs:enumeration value="AN"/> + <xs:enumeration value="AO"/> + <xs:enumeration value="AQ"/> + <xs:enumeration value="AR"/> + <xs:enumeration value="AS"/> + <xs:enumeration value="AT"/> + <xs:enumeration value="AU"/> + <xs:enumeration value="AW"/> + <xs:enumeration value="AZ"/> + <xs:enumeration value="BA"/> + <xs:enumeration value="BB"/> + <xs:enumeration value="BD"/> + <xs:enumeration value="BE"/> + <xs:enumeration value="BF"/> + <xs:enumeration value="BG"/> + <xs:enumeration value="BH"/> + <xs:enumeration value="BI"/> + <xs:enumeration value="BJ"/> + <xs:enumeration value="BM"/> + <xs:enumeration value="BN"/> + <xs:enumeration value="BO"/> + <xs:enumeration value="BR"/> + <xs:enumeration value="BS"/> + <xs:enumeration value="BT"/> + <xs:enumeration value="BV"/> + <xs:enumeration value="BW"/> + <xs:enumeration value="BY"/> + <xs:enumeration value="BZ"/> + <xs:enumeration value="CA"/> + <xs:enumeration value="CC"/> + <xs:enumeration value="CF"/> + <xs:enumeration value="CG"/> + <xs:enumeration value="CH"/> + <xs:enumeration value="CI"/> + <xs:enumeration value="CK"/> + <xs:enumeration value="CL"/> + <xs:enumeration value="CM"/> + <xs:enumeration value="CN"/> + <xs:enumeration value="CO"/> + <xs:enumeration value="CR"/> + <xs:enumeration value="CU"/> + <xs:enumeration value="CV"/> + <xs:enumeration value="CX"/> + <xs:enumeration value="CY"/> + <xs:enumeration value="CZ"/> + <xs:enumeration value="DE"/> + <xs:enumeration value="DJ"/> + <xs:enumeration value="DK"/> + <xs:enumeration value="DM"/> + <xs:enumeration value="DO"/> + <xs:enumeration value="DZ"/> + <xs:enumeration value="EC"/> + <xs:enumeration value="EE"/> + <xs:enumeration value="EG"/> + <xs:enumeration value="EH"/> + <xs:enumeration value="ER"/> + <xs:enumeration value="ES"/> + <xs:enumeration value="ET"/> + <xs:enumeration value="FI"/> + <xs:enumeration value="FJ"/> + <xs:enumeration value="FK"/> + <xs:enumeration value="FM"/> + <xs:enumeration value="FO"/> + <xs:enumeration value="FR"/> + <xs:enumeration value="GA"/> + <xs:enumeration value="GB"/> + <xs:enumeration value="GD"/> + <xs:enumeration value="GE"/> + <xs:enumeration value="GF"/> + <xs:enumeration value="GH"/> + <xs:enumeration value="GI"/> + <xs:enumeration value="GL"/> + <xs:enumeration value="GM"/> + <xs:enumeration value="GN"/> + <xs:enumeration value="GP"/> + <xs:enumeration value="GQ"/> + <xs:enumeration value="GR"/> + <xs:enumeration value="GS"/> + <xs:enumeration value="GT"/> + <xs:enumeration value="GU"/> + <xs:enumeration value="GW"/> + <xs:enumeration value="GY"/> + <xs:enumeration value="HK"/> + <xs:enumeration value="HM"/> + <xs:enumeration value="HN"/> + <xs:enumeration value="HR"/> + <xs:enumeration value="HT"/> + <xs:enumeration value="HU"/> + <xs:enumeration value="ID"/> + <xs:enumeration value="IE"/> + <xs:enumeration value="IL"/> + <xs:enumeration value="IN"/> + <xs:enumeration value="IO"/> + <xs:enumeration value="IQ"/> + <xs:enumeration value="IR"/> + <xs:enumeration value="IS"/> + <xs:enumeration value="IT"/> + <xs:enumeration value="JM"/> + <xs:enumeration value="JO"/> + <xs:enumeration value="JP"/> + <xs:enumeration value="KE"/> + <xs:enumeration value="KG"/> + <xs:enumeration value="KH"/> + <xs:enumeration value="KI"/> + <xs:enumeration value="KM"/> + <xs:enumeration value="KN"/> + <xs:enumeration value="KP"/> + <xs:enumeration value="KR"/> + <xs:enumeration value="KW"/> + <xs:enumeration value="KY"/> + <xs:enumeration value="KZ"/> + <xs:enumeration value="LA"/> + <xs:enumeration value="LB"/> + <xs:enumeration value="LC"/> + <xs:enumeration value="LI"/> + <xs:enumeration value="LK"/> + <xs:enumeration value="LR"/> + <xs:enumeration value="LS"/> + <xs:enumeration value="LT"/> + <xs:enumeration value="LU"/> + <xs:enumeration value="LV"/> + <xs:enumeration value="LY"/> + <xs:enumeration value="MA"/> + <xs:enumeration value="MC"/> + <xs:enumeration value="MD"/> + <xs:enumeration value="MG"/> + <xs:enumeration value="MH"/> + <xs:enumeration value="MK"/> + <xs:enumeration value="ML"/> + <xs:enumeration value="MM"/> + <xs:enumeration value="MN"/> + <xs:enumeration value="MO"/> + <xs:enumeration value="MP"/> + <xs:enumeration value="MQ"/> + <xs:enumeration value="MR"/> + <xs:enumeration value="MS"/> + <xs:enumeration value="MT"/> + <xs:enumeration value="MU"/> + <xs:enumeration value="MV"/> + <xs:enumeration value="MW"/> + <xs:enumeration value="MX"/> + <xs:enumeration value="MY"/> + <xs:enumeration value="MZ"/> + <xs:enumeration value="NA"/> + <xs:enumeration value="NC"/> + <xs:enumeration value="NE"/> + <xs:enumeration value="NF"/> + <xs:enumeration value="NG"/> + <xs:enumeration value="NI"/> + <xs:enumeration value="NL"/> + <xs:enumeration value="NO"/> + <xs:enumeration value="NP"/> + <xs:enumeration value="NR"/> + <xs:enumeration value="NT"/> + <xs:enumeration value="NU"/> + <xs:enumeration value="NZ"/> + <xs:enumeration value="OM"/> + <xs:enumeration value="PA"/> + <xs:enumeration value="PE"/> + <xs:enumeration value="PF"/> + <xs:enumeration value="PG"/> + <xs:enumeration value="PH"/> + <xs:enumeration value="PK"/> + <xs:enumeration value="PL"/> + <xs:enumeration value="PM"/> + <xs:enumeration value="PN"/> + <xs:enumeration value="PR"/> + <xs:enumeration value="PT"/> + <xs:enumeration value="PW"/> + <xs:enumeration value="PY"/> + <xs:enumeration value="QA"/> + <xs:enumeration value="RE"/> + <xs:enumeration value="RO"/> + <xs:enumeration value="RU"/> + <xs:enumeration value="RW"/> + <xs:enumeration value="SA"/> + <xs:enumeration value="SB"/> + <xs:enumeration value="SC"/> + <xs:enumeration value="SD"/> + <xs:enumeration value="SE"/> + <xs:enumeration value="SG"/> + <xs:enumeration value="SH"/> + <xs:enumeration value="SI"/> + <xs:enumeration value="SJ"/> + <xs:enumeration value="SK"/> + <xs:enumeration value="SL"/> + <xs:enumeration value="SM"/> + <xs:enumeration value="SN"/> + <xs:enumeration value="SO"/> + <xs:enumeration value="SR"/> + <xs:enumeration value="ST"/> + <xs:enumeration value="SV"/> + <xs:enumeration value="SY"/> + <xs:enumeration value="SZ"/> + <xs:enumeration value="TC"/> + <xs:enumeration value="TD"/> + <xs:enumeration value="TF"/> + <xs:enumeration value="TG"/> + <xs:enumeration value="TH"/> + <xs:enumeration value="TJ"/> + <xs:enumeration value="TK"/> + <xs:enumeration value="TM"/> + <xs:enumeration value="TN"/> + <xs:enumeration value="TO"/> + <xs:enumeration value="TP"/> + <xs:enumeration value="TR"/> + <xs:enumeration value="TT"/> + <xs:enumeration value="TV"/> + <xs:enumeration value="TW"/> + <xs:enumeration value="TZ"/> + <xs:enumeration value="UA"/> + <xs:enumeration value="UG"/> + <xs:enumeration value="UM"/> + <xs:enumeration value="US"/> + <xs:enumeration value="UY"/> + <xs:enumeration value="UZ"/> + <xs:enumeration value="VA"/> + <xs:enumeration value="VC"/> + <xs:enumeration value="VE"/> + <xs:enumeration value="VG"/> + <xs:enumeration value="VI"/> + <xs:enumeration value="VN"/> + <xs:enumeration value="VU"/> + <xs:enumeration value="WF"/> + <xs:enumeration value="WS"/> + <xs:enumeration value="YE"/> + <xs:enumeration value="YT"/> + <xs:enumeration value="YU"/> + <xs:enumeration value="ZA"/> + <xs:enumeration value="ZM"/> + <xs:enumeration value="ZR"/> + <xs:enumeration value="ZW"/> + </xs:restriction> + </xs:simpleType> + </xs:element> + <xs:element name="GlobalPartnerRoleClassificationCode"> + <xs:annotation> + <xs:documentation>Code identifying a party's role in the supply chain.</xs:documentation> + </xs:annotation> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:enumeration value="Account Supplier"/> + <xs:enumeration value="Account User"/> + <xs:enumeration value="Anonymous Buyer"/> + <xs:enumeration value="Appointment Provider"/> + <xs:enumeration value="Authorized Service Provider"/> + <xs:enumeration value="Authorizer"/> + <xs:enumeration value="Buyer"/> + <xs:enumeration value="Catalog Distributor"/> + <xs:enumeration value="Catalog Producer"/> + <xs:enumeration value="Change Requester"/> + <xs:enumeration value="Change Review Forum"/> + <xs:enumeration value="Claim Requester"/> + <xs:enumeration value="Consignee"/> + <xs:enumeration value="Consumption Notification Provider"/> + <xs:enumeration value="Consumption Notification User"/> + <xs:enumeration value="Credit Provider"/> + <xs:enumeration value="Credit Reference Requester"/> + <xs:enumeration value="Customer"/> + <xs:enumeration value="Customer Manager"/> + <xs:enumeration value="Decision Stakeholder"/> + <xs:enumeration value="Delivery Appointment Provider"/> + <xs:enumeration value="Delivery Appointment Requester"/> + <xs:enumeration value="Demand Creator"/> + <xs:enumeration value="Design Engineering Information Receiver"/> + <xs:enumeration value="Design Engineering Information Sender"/> + <xs:enumeration value="Exception Identifier"/> + <xs:enumeration value="Exception Recipient"/> + <xs:enumeration value="Failure Report Administrator"/> + <xs:enumeration value="Financing Processor"/> + <xs:enumeration value="Forecast Owner"/> + <xs:enumeration value="Forecast Recipient"/> + <xs:enumeration value="Forecast Reply Recipient"/> + <xs:enumeration value="Implementation Plan Creator"/> + <xs:enumeration value="Initiator"/> + <xs:enumeration value="Integrator"/> + <xs:enumeration value="In-transit Information User"/> + <xs:enumeration value="Inventory Information Provider"/> + <xs:enumeration value="Inventory Information User"/> + <xs:enumeration value="Invoice Provider"/> + <xs:enumeration value="Invoice Receiver"/> + <xs:enumeration value="Invoice Reject Provider"/> + <xs:enumeration value="Invoice Reject Receiver"/> + <xs:enumeration value="Marketing Activity Information User"/> + <xs:enumeration value="Marketing Activity Initiator"/> + <xs:enumeration value="Material Release Information Provider"/> + <xs:enumeration value="Material Release Information User"/> + <xs:enumeration value="Payee"/> + <xs:enumeration value="Payer"/> + <xs:enumeration value="PIP Failure Notifier"/> + <xs:enumeration value="Product Distributor"/> + <xs:enumeration value="Product Information Distributor"/> + <xs:enumeration value="Product Information Subscriber"/> + <xs:enumeration value="Product Information User"/> + <xs:enumeration value="Product Provider"/> + <xs:enumeration value="Product Supplier"/> + <xs:enumeration value="Qualification Owner"/> + <xs:enumeration value="Quality Data Provider"/> + <xs:enumeration value="Quality Data User"/> + <xs:enumeration value="Receiver"/> + <xs:enumeration value="Responder"/> + <xs:enumeration value="Return Provider"/> + <xs:enumeration value="Return Receiver"/> + <xs:enumeration value="Return Requester"/> + <xs:enumeration value="Sales Facilitator"/> + <xs:enumeration value="Sales Lead Originator"/> + <xs:enumeration value="Sales Lead Processor"/> + <xs:enumeration value="Sales Marketing Claim Processor"/> + <xs:enumeration value="Sales Marketing Claimant"/> + <xs:enumeration value="Sales Marketing Program Reimbursement Recipient"/> + <xs:enumeration value="Sales Marketing Program Reimburser"/> + <xs:enumeration value="Self-Billing Invoice Provider"/> + <xs:enumeration value="Self-Billing Invoice Receiver"/> + <xs:enumeration value="Seller"/> + <xs:enumeration value="Service Provider"/> + <xs:enumeration value="Shipment Information User"/> + <xs:enumeration value="Shipment Requester"/> + <xs:enumeration value="ShipmentController"/> + <xs:enumeration value="Shipper"/> + <xs:enumeration value="Shipping Provider"/> + <xs:enumeration value="Solution Provider"/> + <xs:enumeration value="Solution Requester"/> + <xs:enumeration value="Specification Provider"/> + <xs:enumeration value="Specification User"/> + <xs:enumeration value="Stakeholder"/> + <xs:enumeration value="Status Requester"/> + <xs:enumeration value="Status Responder"/> + <xs:enumeration value="Supplier"/> + <xs:enumeration value="Tender Information User"/> + <xs:enumeration value="Transport Service Provider"/> + <xs:enumeration value="Warranty Provider"/> + </xs:restriction> + </xs:simpleType> + </xs:element> + <xs:element name="GlobalProductUnitOfMeasureCode"> + <xs:annotation> + <xs:documentation xml:lang="en">Code identifying a product unit of measure.</xs:documentation> + </xs:annotation> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:enumeration value="10 Kilogram Drum"/> + <xs:enumeration value="10,000 Gallon Tankcar"/> + <xs:enumeration value="100 Board Feet"/> + <xs:enumeration value="100 Pound Drum"/> + <xs:enumeration value="1000-pack"/> + <xs:enumeration value="100-Pack"/> + <xs:enumeration value="10-pack"/> + <xs:enumeration value="115 Kilogram Drum"/> + <xs:enumeration value="15 Kilogram Drum"/> + <xs:enumeration value="20 Foot Container"/> + <xs:enumeration value="20,000 Gallon Tankcar"/> + <xs:enumeration value="20-Pack"/> + <xs:enumeration value="25 Kilogram Bulk Bag"/> + <xs:enumeration value="300 Kilogram Bulk Bag"/> + <xs:enumeration value="40 Foot Container"/> + <xs:enumeration value="50 Pound Bag"/> + <xs:enumeration value="500 Kilogram Bulk Bag"/> + <xs:enumeration value="50-pack"/> + <xs:enumeration value="55 Gallon Drum"/> + <xs:enumeration value="Acre"/> + <xs:enumeration value="Actual Pounds"/> + <xs:enumeration value="Aluminum Pounds Only"/> + <xs:enumeration value="Ampere"/> + <xs:enumeration value="Angstrom"/> + <xs:enumeration value="Bag"/> + <xs:enumeration value="Bale"/> + <xs:enumeration value="Ball"/> + <xs:enumeration value="Band"/> + <xs:enumeration value="Bar"/> + <xs:enumeration value="Barrel"/> + <xs:enumeration value="Barrel, Imperial"/> + <xs:enumeration value="Barrels Per Day"/> + <xs:enumeration value="Barrels Per Minute"/> + <xs:enumeration value="Base Box"/> + <xs:enumeration value="Base Weight"/> + <xs:enumeration value="Basket"/> + <xs:enumeration value="Batch"/> + <xs:enumeration value="Batt"/> + <xs:enumeration value="Batting Pound"/> + <xs:enumeration value="Beam"/> + <xs:enumeration value="Becquerel/kilogram"/> + <xs:enumeration value="Belt"/> + <xs:enumeration value="Billet"/> + <xs:enumeration value="Bin"/> + <xs:enumeration value="Bit"/> + <xs:enumeration value="Block"/> + <xs:enumeration value="Board"/> + <xs:enumeration value="Board Feet"/> + <xs:enumeration value="Bolt"/> + <xs:enumeration value="Bottle"/> + <xs:enumeration value="Box"/> + <xs:enumeration value="British Thermal Unit (BTU)"/> + <xs:enumeration value="British Thermal Units (BTUs) Per Cubic Foot"/> + <xs:enumeration value="British Thermal Units (BTUs) Per Pound"/> + <xs:enumeration value="Bucket"/> + <xs:enumeration value="Bulk"/> + <xs:enumeration value="Bulk Car Load"/> + <xs:enumeration value="Bulk Pack"/> + <xs:enumeration value="Bundle"/> + <xs:enumeration value="Bunks"/> + <xs:enumeration value="Bushel"/> + <xs:enumeration value="Bushel, Dry Imperial"/> + <xs:enumeration value="Bytes"/> + <xs:enumeration value="Calorie"/> + <xs:enumeration value="Can"/> + <xs:enumeration value="Candela"/> + <xs:enumeration value="Canister"/> + <xs:enumeration value="Car"/> + <xs:enumeration value="Carat"/> + <xs:enumeration value="Carboy"/> + <xs:enumeration value="Card"/> + <xs:enumeration value="Carload"/> + <xs:enumeration value="Carton"/> + <xs:enumeration value="Cartridge"/> + <xs:enumeration value="Case"/> + <xs:enumeration value="Cask"/> + <xs:enumeration value="Cassette"/> + <xs:enumeration value="Catchweight"/> + <xs:enumeration value="Cell"/> + <xs:enumeration value="Centigram"/> + <xs:enumeration value="Centiliter"/> + <xs:enumeration value="Centimeter"/> + <xs:enumeration value="Centipoise (CPS)"/> + <xs:enumeration value="Chains (Land Survey)"/> + <xs:enumeration value="Chest"/> + <xs:enumeration value="Coil"/> + <xs:enumeration value="Coil Group"/> + <xs:enumeration value="Composite Product Pounds (Total Weight)"/> + <xs:enumeration value="Cone"/> + <xs:enumeration value="Connector"/> + <xs:enumeration value="Container"/> + <xs:enumeration value="Coulomb"/> + <xs:enumeration value="Cover"/> + <xs:enumeration value="Crate"/> + <xs:enumeration value="Cubic centimeter"/> + <xs:enumeration value="Cubic centimeter/second"/> + <xs:enumeration value="Cubic Foot"/> + <xs:enumeration value="Cubic inch"/> + <xs:enumeration value="Cubic yard"/> + <xs:enumeration value="Cubicmeter"/> + <xs:enumeration value="Cup"/> + <xs:enumeration value="Cycles"/> + <xs:enumeration value="Cylinder"/> + <xs:enumeration value="Day"/> + <xs:enumeration value="Deal"/> + <xs:enumeration value="Decagram"/> + <xs:enumeration value="Decibels"/> + <xs:enumeration value="Decigram"/> + <xs:enumeration value="Deciliter"/> + <xs:enumeration value="Decimeter"/> + <xs:enumeration value="Degree Celsius"/> + <xs:enumeration value="Degree Fahrenheit"/> + <xs:enumeration value="Dep. Factor"/> + <xs:enumeration value="Die"/> + <xs:enumeration value="Disk (Disc)"/> + <xs:enumeration value="Dispenser"/> + <xs:enumeration value="Display"/> + <xs:enumeration value="Dozen"/> + <xs:enumeration value="Dram"/> + <xs:enumeration value="Drum"/> + <xs:enumeration value="Dry Pounds"/> + <xs:enumeration value="Each"/> + <xs:enumeration value="Electrical Capacitance"/> + <xs:enumeration value="Farad"/> + <xs:enumeration value="Fluid Ounce"/> + <xs:enumeration value="Fluid Ounce (Imperial)"/> + <xs:enumeration value="Fluid Ounce US"/> + <xs:enumeration value="Foot"/> + <xs:enumeration value="Fuel Usage (Gallons)"/> + <xs:enumeration value="Gage Systems"/> + <xs:enumeration value="Gallon"/> + <xs:enumeration value="Gigajoules"/> + <xs:enumeration value="Gill (Imperial)"/> + <xs:enumeration value="Grain"/> + <xs:enumeration value="Gram"/> + <xs:enumeration value="Gram/Cubic Centimeter"/> + <xs:enumeration value="Gram/square meter"/> + <xs:enumeration value="Grams Per 100 Centimeters"/> + <xs:enumeration value="Grams Per 100 Grams"/> + <xs:enumeration value="Grams Per Cubic Centimeter"/> + <xs:enumeration value="Grams Per Kilogram"/> + <xs:enumeration value="Grams Per Liter"/> + <xs:enumeration value="Grams Per Milliliter"/> + <xs:enumeration value="Grams Per Square Centimeter"/> + <xs:enumeration value="Grams Per Square Meter"/> + <xs:enumeration value="Great Gross (Dozen Gross)"/> + <xs:enumeration value="Gross"/> + <xs:enumeration value="Gross Barrels"/> + <xs:enumeration value="Gross Gallons"/> + <xs:enumeration value="Gross Kilogram"/> + <xs:enumeration value="Gross Ton"/> + <xs:enumeration value="Gross Yard"/> + <xs:enumeration value="Group"/> + <xs:enumeration value="Half Gallon"/> + <xs:enumeration value="Half Hour"/> + <xs:enumeration value="Half Liter"/> + <xs:enumeration value="Hank"/> + <xs:enumeration value="Heat lots"/> + <xs:enumeration value="Hectare"/> + <xs:enumeration value="Hectoliter"/> + <xs:enumeration value="Hectopascal"/> + <xs:enumeration value="Hertz"/> + <xs:enumeration value="Hour"/> + <xs:enumeration value="Hours"/> + <xs:enumeration value="Hundred Boxes"/> + <xs:enumeration value="Hundred Count"/> + <xs:enumeration value="Hundred Sheets"/> + <xs:enumeration value="Hundredth of a Carat"/> + <xs:enumeration value="Imperial Gallons"/> + <xs:enumeration value="Inch"/> + <xs:enumeration value="Jar"/> + <xs:enumeration value="Joint"/> + <xs:enumeration value="Joule"/> + <xs:enumeration value="Keg"/> + <xs:enumeration value="Kelvin"/> + <xs:enumeration value="Kiloampere"/> + <xs:enumeration value="Kilobecquerel/Kilogram"/> + <xs:enumeration value="Kilobyte"/> + <xs:enumeration value="Kilogram"/> + <xs:enumeration value="Kilogram per cubic meter"/> + <xs:enumeration value="Kilogram/Kilogram"/> + <xs:enumeration value="Kilogram/square meter"/> + <xs:enumeration value="Kilogramm pro Sekunde"/> + <xs:enumeration value="Kilohertz"/> + <xs:enumeration value="Kilojoule"/> + <xs:enumeration value="Kilometer"/> + <xs:enumeration value="Kilometer/hour"/> + <xs:enumeration value="Kiloohm"/> + <xs:enumeration value="Kilovolt"/> + <xs:enumeration value="Kilowatt"/> + <xs:enumeration value="Kilowatt-hour"/> + <xs:enumeration value="Kit"/> + <xs:enumeration value="Kubikdezimeter"/> + <xs:enumeration value="Kubikmeter pro Sekunde"/> + <xs:enumeration value="Lifts"/> + <xs:enumeration value="Link"/> + <xs:enumeration value="Liquid Pounds"/> + <xs:enumeration value="Liter"/> + <xs:enumeration value="Load"/> + <xs:enumeration value="Lot"/> + <xs:enumeration value="Lug"/> + <xs:enumeration value="Mat"/> + <xs:enumeration value="Megabyte"/> + <xs:enumeration value="Megagram"/> + <xs:enumeration value="Megagrams Per Hour"/> + <xs:enumeration value="Megahertz"/> + <xs:enumeration value="Megapascal"/> + <xs:enumeration value="Megawatt"/> + <xs:enumeration value="Meter"/> + <xs:enumeration value="Meter pro Quadratsekunde"/> + <xs:enumeration value="Meters per second"/> + <xs:enumeration value="Microgram"/> + <xs:enumeration value="Micrograms Per Cubic Meter"/> + <xs:enumeration value="Micrometer"/> + <xs:enumeration value="Microsecond"/> + <xs:enumeration value="Mikrogram/cubic meter"/> + <xs:enumeration value="Mile"/> + <xs:enumeration value="Miles"/> + <xs:enumeration value="Milliampere"/> + <xs:enumeration value="Milliamperes"/> + <xs:enumeration value="Millibar"/> + <xs:enumeration value="Milligram"/> + <xs:enumeration value="Milligram/cubic meter"/> + <xs:enumeration value="Milligram/kilogram"/> + <xs:enumeration value="Milligram/Liter"/> + <xs:enumeration value="Milligrams Per Cubic Meter"/> + <xs:enumeration value="Milligrams Per Square Meter"/> + <xs:enumeration value="Millijoule"/> + <xs:enumeration value="Milliliter"/> + <xs:enumeration value="Millimeter"/> + <xs:enumeration value="Millimeter H20"/> + <xs:enumeration value="Millimol"/> + <xs:enumeration value="Millimol/kilogram"/> + <xs:enumeration value="Million BTU's"/> + <xs:enumeration value="Millipascal seconds"/> + <xs:enumeration value="Millisecond"/> + <xs:enumeration value="Millitesla"/> + <xs:enumeration value="Millivolt"/> + <xs:enumeration value="Millivolts"/> + <xs:enumeration value="Milliwatt"/> + <xs:enumeration value="Minute"/> + <xs:enumeration value="Miter"/> + <xs:enumeration value="Mol"/> + <xs:enumeration value="Mol/kilogram"/> + <xs:enumeration value="Month"/> + <xs:enumeration value="Multichip"/> + <xs:enumeration value="Nanometer"/> + <xs:enumeration value="Nanosecond"/> + <xs:enumeration value="Net Barrels"/> + <xs:enumeration value="Net Gallons"/> + <xs:enumeration value="Net Imperial Gallons"/> + <xs:enumeration value="Net Liters"/> + <xs:enumeration value="Newton"/> + <xs:enumeration value="Ohm"/> + <xs:enumeration value="One"/> + <xs:enumeration value="One Thousand Pieces"/> + <xs:enumeration value="Ounce"/> + <xs:enumeration value="Pack (PAK)"/> + <xs:enumeration value="Package"/> + <xs:enumeration value="Packet"/> + <xs:enumeration value="Pad"/> + <xs:enumeration value="Pail"/> + <xs:enumeration value="Pair"/> + <xs:enumeration value="Pallet"/> + <xs:enumeration value="Pallet (Lift)"/> + <xs:enumeration value="Pallet/Unit Load"/> + <xs:enumeration value="Pallete"/> + <xs:enumeration value="Panel"/> + <xs:enumeration value="Parcel"/> + <xs:enumeration value="Parts per billion (US)"/> + <xs:enumeration value="Parts per million"/> + <xs:enumeration value="Pascal"/> + <xs:enumeration value="Pascal second"/> + <xs:enumeration value="Pennyweight"/> + <xs:enumeration value="Per Hundred Pieces"/> + <xs:enumeration value="Percent"/> + <xs:enumeration value="Percent Per 1000 Hours"/> + <xs:enumeration value="Percent Weight"/> + <xs:enumeration value="Percentage"/> + <xs:enumeration value="Picofarad"/> + <xs:enumeration value="Piece"/> + <xs:enumeration value="Pint - US liquid"/> + <xs:enumeration value="Pint U.S. Dry"/> + <xs:enumeration value="Plate"/> + <xs:enumeration value="Pound"/> + <xs:enumeration value="Pounds Per 1000 Square Feet"/> + <xs:enumeration value="Pounds Per Foot"/> + <xs:enumeration value="Pounds Per Gallon"/> + <xs:enumeration value="Pounds Per Piece of Product"/> + <xs:enumeration value="Pounds Per Pound of Product"/> + <xs:enumeration value="Pounds Per Thousand"/> + <xs:enumeration value="Quart - US liquid"/> + <xs:enumeration value="Rack"/> + <xs:enumeration value="Ream of 500 Sheets"/> + <xs:enumeration value="Reel"/> + <xs:enumeration value="Ring"/> + <xs:enumeration value="Rod"/> + <xs:enumeration value="Roll"/> + <xs:enumeration value="Sack"/> + <xs:enumeration value="Second"/> + <xs:enumeration value="SET"/> + <xs:enumeration value="Sheet"/> + <xs:enumeration value="Sheet-Metric measure"/> + <xs:enumeration value="Shipment"/> + <xs:enumeration value="Shot"/> + <xs:enumeration value="Skein"/> + <xs:enumeration value="Skid"/> + <xs:enumeration value="Sleeve"/> + <xs:enumeration value="Slip Sheet"/> + <xs:enumeration value="Spool"/> + <xs:enumeration value="Square"/> + <xs:enumeration value="Square foot"/> + <xs:enumeration value="Square inch"/> + <xs:enumeration value="Square kilometer"/> + <xs:enumeration value="Square meter"/> + <xs:enumeration value="Square meter/second"/> + <xs:enumeration value="Square mile"/> + <xs:enumeration value="Square millimeter"/> + <xs:enumeration value="Square Yard"/> + <xs:enumeration value="Statute Mile"/> + <xs:enumeration value="Stick"/> + <xs:enumeration value="Strip"/> + <xs:enumeration value="Super Bulk Bag"/> + <xs:enumeration value="Tablet"/> + <xs:enumeration value="Tank"/> + <xs:enumeration value="Tank Truck"/> + <xs:enumeration value="Tesla"/> + <xs:enumeration value="Thousand"/> + <xs:enumeration value="Ton"/> + <xs:enumeration value="Tonne"/> + <xs:enumeration value="Torr"/> + <xs:enumeration value="Tote"/> + <xs:enumeration value="Track Foot"/> + <xs:enumeration value="Trailer"/> + <xs:enumeration value="Train"/> + <xs:enumeration value="Tray"/> + <xs:enumeration value="Troy"/> + <xs:enumeration value="Troy OZ"/> + <xs:enumeration value="Truckload"/> + <xs:enumeration value="Tube"/> + <xs:enumeration value="Unit"/> + <xs:enumeration value="Unitless Unit of Measure"/> + <xs:enumeration value="US gallon"/> + <xs:enumeration value="US pound"/> + <xs:enumeration value="US ton"/> + <xs:enumeration value="Vial"/> + <xs:enumeration value="Volt"/> + <xs:enumeration value="Volts (Alternating Current)"/> + <xs:enumeration value="Volts (Direct Current)"/> + <xs:enumeration value="Volts Per Meter"/> + <xs:enumeration value="Wafer"/> + <xs:enumeration value="Watt"/> + <xs:enumeration value="Week"/> + <xs:enumeration value="WF"/> + <xs:enumeration value="Wrap"/> + <xs:enumeration value="Yard"/> + <xs:enumeration value="Year"/> + </xs:restriction> + </xs:simpleType> + </xs:element> + <xs:element name="GlobalPurchaseOrderTypeCode"> + <xs:annotation> + <xs:documentation xml:lang="en">Code identifying category specification for a purchase order.</xs:documentation> + </xs:annotation> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:enumeration value="Blanket"> + <xs:annotation> + <xs:documentation source="Order quantity for blanket type purchase order is understood to be a blanket quantity maximum." xml:lang="en"/> + </xs:annotation> + </xs:enumeration> + <xs:enumeration value="Consigned order"/> + <xs:enumeration value="Do not ship/invoice only"/> + <xs:enumeration value="ERS"> + <xs:annotation> + <xs:documentation source="Evaluated Receipt Settlement -Self Billing Invoice (SBI)." xml:lang="en"/> + </xs:annotation> + </xs:enumeration> + <xs:enumeration value="ESD"/> + <xs:enumeration value="Evaluation"/> + <xs:enumeration value="Exchange Order"> + <xs:annotation> + <xs:documentation xml:lang="en">PO generated to exchange a product that is not related to Warranty Replacement.</xs:documentation> + </xs:annotation> + </xs:enumeration> + <xs:enumeration value="Fulfillment"/> + <xs:enumeration value="Government"/> + <xs:enumeration value="Non-cancelable/non-returnable"/> + <xs:enumeration value="Packaged product"/> + <xs:enumeration value="Production"> + <xs:annotation> + <xs:documentation xml:lang="en">for mass production wafer</xs:documentation> + </xs:annotation> + </xs:enumeration> + <xs:enumeration value="Quote to order"/> + <xs:enumeration value="Repair"/> + <xs:enumeration value="Replenishment"> + <xs:annotation> + <xs:documentation xml:lang="en">PO generated to replenish stock to achieve target levels.</xs:documentation> + </xs:annotation> + </xs:enumeration> + <xs:enumeration value="Rework"/> + <xs:enumeration value="Risk Production"> + <xs:annotation> + <xs:documentation xml:lang="en">Before the yield is qualifed, the buyer requests the wafer manufacturer to produce the wafer according to the current spec., however, the manufacturer is not responsible for the yield</xs:documentation> + </xs:annotation> + </xs:enumeration> + <xs:enumeration value="Sample"/> + <xs:enumeration value="Service"/> + <xs:enumeration value="Site"> + <xs:annotation> + <xs:documentation xml:lang="en">applicable to a single geographical site</xs:documentation> + </xs:annotation> + </xs:enumeration> + <xs:enumeration value="Standard"/> + <xs:enumeration value="Warranty repair"/> + <xs:enumeration value="Warranty replacement"/> + <xs:enumeration value="Worldwide"> + <xs:annotation> + <xs:documentation xml:lang="en">applicable to worldwide</xs:documentation> + </xs:annotation> + </xs:enumeration> + </xs:restriction> + </xs:simpleType> + </xs:element> + <xs:element name="GlobalTransportEventCode"> + <xs:annotation> + <xs:documentation xml:lang="en">Code identifying an event during the transportation of a shipment.</xs:documentation> + </xs:annotation> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:enumeration value="Dock"> + <xs:annotation> + <xs:documentation xml:lang="en">The event representing when the product should arrive on the recipient's dock.</xs:documentation> + </xs:annotation> + </xs:enumeration> + <xs:enumeration value="Pickup"> + <xs:annotation> + <xs:documentation xml:lang="en">The event representing when the product is scheduled to be picked up from the shipper's dock.</xs:documentation> + </xs:annotation> + </xs:enumeration> + <xs:enumeration value="Ship"> + <xs:annotation> + <xs:documentation xml:lang="en">The event representing when the product is requested to ship.</xs:documentation> + </xs:annotation> + </xs:enumeration> + </xs:restriction> + </xs:simpleType> + </xs:element> + <xs:element name="GlobalPurchaseOrderStatusCode"> + <xs:annotation> + <xs:documentation>Code identifying the status of a purchase order.</xs:documentation> + </xs:annotation> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:enumeration value="Accept"/> + <xs:enumeration value="Pending"/> + <xs:enumeration value="Reject"/> + </xs:restriction> + </xs:simpleType> + </xs:element> + <xs:element name="GlobalCurrencyCode"> + <xs:annotation> + <xs:documentation>Code identifying the three character currency code specified in ISO 4217-1995.</xs:documentation> + </xs:annotation> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:enumeration value="ADP"/> + <xs:enumeration value="AED"/> + <xs:enumeration value="AFA"/> + <xs:enumeration value="ALL"/> + <xs:enumeration value="AMD"/> + <xs:enumeration value="ANG"/> + <xs:enumeration value="AON"/> + <xs:enumeration value="AOR"/> + <xs:enumeration value="ARS"/> + <xs:enumeration value="ATS"/> + <xs:enumeration value="AUD"/> + <xs:enumeration value="AWG"/> + <xs:enumeration value="AZM"/> + <xs:enumeration value="BAM"/> + <xs:enumeration value="BBD"/> + <xs:enumeration value="BDT"/> + <xs:enumeration value="BEF"/> + <xs:enumeration value="BGL"/> + <xs:enumeration value="BHD"/> + <xs:enumeration value="BIF"/> + <xs:enumeration value="BMD"/> + <xs:enumeration value="BND"/> + <xs:enumeration value="BOB"/> + <xs:enumeration value="BOV"/> + <xs:enumeration value="BRL"/> + <xs:enumeration value="BSD"/> + <xs:enumeration value="BTN"/> + <xs:enumeration value="BWP"/> + <xs:enumeration value="BYB"/> + <xs:enumeration value="BZD"/> + <xs:enumeration value="CAD"/> + <xs:enumeration value="CHF"/> + <xs:enumeration value="CLP"/> + <xs:enumeration value="CNY"/> + <xs:enumeration value="COP"/> + <xs:enumeration value="CRC"/> + <xs:enumeration value="CUP"/> + <xs:enumeration value="CVE"/> + <xs:enumeration value="CYP"/> + <xs:enumeration value="CZK"/> + <xs:enumeration value="DEM"/> + <xs:enumeration value="DJF"/> + <xs:enumeration value="DKK"/> + <xs:enumeration value="DOP"/> + <xs:enumeration value="DZD"/> + <xs:enumeration value="ECS"/> + <xs:enumeration value="EEK"/> + <xs:enumeration value="EGP"/> + <xs:enumeration value="ERN"/> + <xs:enumeration value="ESP"/> + <xs:enumeration value="ETB"/> + <xs:enumeration value="EUR"/> + <xs:enumeration value="FIM"/> + <xs:enumeration value="FJD"/> + <xs:enumeration value="FKP"/> + <xs:enumeration value="FRF"/> + <xs:enumeration value="GBP"/> + <xs:enumeration value="GEL"/> + <xs:enumeration value="GHC"/> + <xs:enumeration value="GIP"/> + <xs:enumeration value="GMD"/> + <xs:enumeration value="GNF"/> + <xs:enumeration value="GRD"/> + <xs:enumeration value="GTQ"/> + <xs:enumeration value="GWP"/> + <xs:enumeration value="GYD"/> + <xs:enumeration value="HKD"/> + <xs:enumeration value="HNL"/> + <xs:enumeration value="HRK"/> + <xs:enumeration value="HTG"/> + <xs:enumeration value="HUF"/> + <xs:enumeration value="IDR"/> + <xs:enumeration value="IEP"/> + <xs:enumeration value="ILS"/> + <xs:enumeration value="INR"/> + <xs:enumeration value="IQD"/> + <xs:enumeration value="IRR"/> + <xs:enumeration value="ISK"/> + <xs:enumeration value="ITL"/> + <xs:enumeration value="JMD"/> + <xs:enumeration value="JOD"/> + <xs:enumeration value="JPY"/> + <xs:enumeration value="KES"/> + <xs:enumeration value="KGS"/> + <xs:enumeration value="KHR"/> + <xs:enumeration value="KMF"/> + <xs:enumeration value="KPW"/> + <xs:enumeration value="KRW"/> + <xs:enumeration value="KWD"/> + <xs:enumeration value="KYD"/> + <xs:enumeration value="KZT"/> + <xs:enumeration value="LAK"/> + <xs:enumeration value="LBP"/> + <xs:enumeration value="LKR"/> + <xs:enumeration value="LRD"/> + <xs:enumeration value="LTL"/> + <xs:enumeration value="LUF"/> + <xs:enumeration value="LVL"/> + <xs:enumeration value="LYD"/> + <xs:enumeration value="MAD"/> + <xs:enumeration value="MDL"/> + <xs:enumeration value="MGF"/> + <xs:enumeration value="MKD"/> + <xs:enumeration value="MMK"/> + <xs:enumeration value="MNT"/> + <xs:enumeration value="MOP"/> + <xs:enumeration value="MRO"/> + <xs:enumeration value="MTL"/> + <xs:enumeration value="MUR"/> + <xs:enumeration value="MVR"/> + <xs:enumeration value="MWK"/> + <xs:enumeration value="MXN"/> + <xs:enumeration value="MYR"/> + <xs:enumeration value="MZM"/> + <xs:enumeration value="NGN"/> + <xs:enumeration value="NIO"/> + <xs:enumeration value="NLG"/> + <xs:enumeration value="NOK"/> + <xs:enumeration value="NPR"/> + <xs:enumeration value="NZD"/> + <xs:enumeration value="OMR"/> + <xs:enumeration value="PAB"/> + <xs:enumeration value="PEN"/> + <xs:enumeration value="PGK"/> + <xs:enumeration value="PHP"/> + <xs:enumeration value="PKR"/> + <xs:enumeration value="PLN"/> + <xs:enumeration value="PTE"/> + <xs:enumeration value="PYG"/> + <xs:enumeration value="QAR"/> + <xs:enumeration value="ROL"/> + <xs:enumeration value="RUR"/> + <xs:enumeration value="RWF"/> + <xs:enumeration value="SAR"/> + <xs:enumeration value="SBD"/> + <xs:enumeration value="SCR"/> + <xs:enumeration value="SDD"/> + <xs:enumeration value="SEK"/> + <xs:enumeration value="SGD"/> + <xs:enumeration value="SHP"/> + <xs:enumeration value="SIT"/> + <xs:enumeration value="SKK"/> + <xs:enumeration value="SLL"/> + <xs:enumeration value="SOS"/> + <xs:enumeration value="SRG"/> + <xs:enumeration value="STD"/> + <xs:enumeration value="SVC"/> + <xs:enumeration value="SYP"/> + <xs:enumeration value="SZL"/> + <xs:enumeration value="THB"/> + <xs:enumeration value="TJR"/> + <xs:enumeration value="TMM"/> + <xs:enumeration value="TND"/> + <xs:enumeration value="TOP"/> + <xs:enumeration value="TPE"/> + <xs:enumeration value="TRL"/> + <xs:enumeration value="TTD"/> + <xs:enumeration value="TWD"/> + <xs:enumeration value="TZS"/> + <xs:enumeration value="UAH"/> + <xs:enumeration value="UGX"/> + <xs:enumeration value="USD"/> + <xs:enumeration value="UYU"/> + <xs:enumeration value="UZS"/> + <xs:enumeration value="VEB"/> + <xs:enumeration value="VND"/> + <xs:enumeration value="VUV"/> + <xs:enumeration value="WST"/> + <xs:enumeration value="XAF"/> + <xs:enumeration value="XCD"/> + <xs:enumeration value="XDR"/> + <xs:enumeration value="XOF"/> + <xs:enumeration value="XPF"/> + <xs:enumeration value="XPR"/> + <xs:enumeration value="YER"/> + <xs:enumeration value="YUM"/> + <xs:enumeration value="ZAR"/> + <xs:enumeration value="ZMK"/> + <xs:enumeration value="ZRN"/> + <xs:enumeration value="ZWD"/> + </xs:restriction> + </xs:simpleType> + </xs:element> +</xs:schema>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/lib/SAWADLParser/Files/3A4_Simplified_PurchaseOrderRequest.xsd Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,76 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- edited with XMLSpy v2006 sp2 U (http://www.altova.com) by michal (jakas) --> +<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" + xmlns="http://www.sws-challenge.org/schemas/rnet/POR" + xmlns:dict="http://www.sws-challenge.org/schemas/rnet/dictionary" + xmlns:core="http://www.sws-challenge.org/schemas/rnet/coreElements" + targetNamespace="http://www.sws-challenge.org/schemas/rnet/POR" + elementFormDefault="qualified" + attributeFormDefault="unqualified" + xmlns:sawsdl="http://www.w3.org/2002/ws/sawsdl/spec/sawsdl#" + xmlns:Ontology1="http://www.owl-ontologies.com/sws_challenge.owl"> + <xs:annotation> + <xs:documentation>Authors: Michal Zaremba, Holger Lausen +$Revision: 1.6 $ +$Date: 2006/04/12 16:32:29 $ + +This XML Schema has been created on the basis of the RosettaNet specification (http://rosettanet.org/) +and is solely intended for the Semantic Web Challenge (http://www.sws-challenge.org/). The Schema has +been simplified in several aspect, e.g. all Tax related aspect have been deleted for the saint of simplicity.</xs:documentation> + </xs:annotation> + <xs:import namespace="http://www.sws-challenge.org/schemas/rnet/dictionary" schemaLocation="3A4_PurchaseOrder_Dictionary.xsd"/> + <xs:import namespace="http://www.sws-challenge.org/schemas/rnet/coreElements" schemaLocation="3A4_PurchaseOrder_CoreElements.xsd"/> + <xs:element name="Pip3A4PurchaseOrderRequest" sawsdl:modelReference="Ontology1#PurchaseOrderRequest"> + <xs:complexType> + <xs:sequence> + <xs:element ref="core:fromRole" /> + <xs:element ref="PurchaseOrder" sawsdl:modelReference="Ontology1#PurchaseOrder" sawsdl:liftingSchemaMapping="http://localhost:9090/testcase/PurchaseOrderLifting.xq"/> + <xs:element ref="core:thisDocumentGenerationDateTime" sawsdl:modelReference="Ontology1#RequestedDateTime" /> + <xs:element ref="core:thisDocumentIdentifier" sawsdl:modelReference="Ontology1#DocumentIdentifier" /> + <xs:element ref="core:toRole" /> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="PurchaseOrder"> + <xs:annotation> + <xs:documentation>The collection of business properties that describe a buyer's offer to purchase a quantity of products at an agreed price and schedule.</xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:element ref="dict:GlobalPurchaseOrderTypeCode" maxOccurs="unbounded"/> + <xs:element ref="core:isDropShip"/> + <xs:element ref="ProductLineItem" maxOccurs="unbounded"/> + <xs:element ref="core:requestedEvent" minOccurs="0"/> + <xs:element ref="core:shipTo" minOccurs="0"/> + <xs:element ref="core:totalAmount" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="ProductLineItem" sawsdl:modelReference="Ontology1#LineItem"> + <xs:annotation> + <xs:documentation>The collection of business properties that describe a business document entry for a product.</xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:element ref="dict:GlobalProductUnitOfMeasureCode"/> + <xs:element ref="core:isDropShip"/> + <xs:element ref="core:LineNumber"/> + <xs:element ref="OrderQuantity"/> + <xs:element ref="core:ProductIdentification"/> + <xs:element ref="core:requestedEvent"/> + <xs:element ref="core:requestedUnitPrice" minOccurs="0"/> + <xs:element ref="core:totalLineItemAmount" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="OrderQuantity"> + <xs:annotation> + <xs:documentation>The collection of business properties that describe various types of product quantity used in an ordering process.</xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:element ref="core:requestedQuantity"/> + </xs:sequence> + </xs:complexType> + </xs:element> +</xs:schema>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/lib/SAWADLParser/Files/AcknowledgementOfReceipt.xsd Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,43 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.sws-challenge.org/schemas/rnet/ACK" targetNamespace="http://www.sws-challenge.org/schemas/rnet/ACK" elementFormDefault="qualified" + xmlns:sawsdl="http://www.w3.org/2002/ws/sawsdl/spec/sawsdl#" + xmlns:Ontology1="http://www.owl-ontologies.com/sws_challenge.owl"> + + <xs:annotation> + <xs:documentation>Authors: Michal Zaremba, Holger Lausen +$Revision: 1.1 $ +$Date: 2006/03/06 17:45:10 $ + +This XML Schema has been created on the basis of the RosettaNet specification (http://rosettanet.org/) +and is solely intended for the Semantic Web Challenge (http://www.sws-challenge.org/). </xs:documentation> + </xs:annotation> + <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="xml.xsd"/> + <xs:element name="ReceiptAcknowledgment"> + <xs:annotation> + <xs:documentation>Business information returned to a requesting party to verify business document receipt.</xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:element ref="NonRepudiationInformation" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="NonRepudiationInformation"> + <xs:annotation> + <xs:documentation>Information required to support non-repudiation of receipt.</xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:element ref="OriginalMessageDigest"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="OriginalMessageDigest" sawsdl:modelReference="Ontology1#PurchaseOrderRequest"> + <xs:annotation> + <xs:documentation>The base-64 encoded digest of the entire original mime message received. The digest MUST use the same algorithm as the original signed message.</xs:documentation> + </xs:annotation> + <xs:complexType mixed="true"> + <xs:choice minOccurs="0" maxOccurs="unbounded"/> + </xs:complexType> + </xs:element> +</xs:schema>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/lib/SAWADLParser/Files/NewTemplate.sawadl Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,37 @@ +<?xml version="1.0"?> +<application targetNamespace="http://wadl.dev.java.net/2009/02" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://wadl.dev.java.net/2009/02 wadl.xsd" + xmlns:tns="TempforXSD" + xmlns:sawadl="http://www.w3.org/2002/ws/sawadl/spec/sawadl#" + xmlns:xsd="http://www.w3.org/2001/XMLSchema" + xmlns:Ontology1="http://www.owl-ontologies.com/sws_challenge.owl" + xmlns="http://wadl.dev.java.net/2009/02"> +<grammars> + <include + href="3A4_Simplified_PurchaseOrderRequest.xsd" sawadl:modelReference="Ontology1#PurchaseOrderRequest"/> + <include + href="AcknowledgementOfReceipt.xsd" sawadl:modelReference="Ontology1#PurchaseOrderAck"/> +</grammars> + +<resources base="http://MoonSemanticTemplate.com/"> + <resource path="placeorder" sawadl:modelReference="Ontology1#ResourceCategory"> + <method name="POST" id="order" sawadl:modelReference="Ontology1#PurchaseRequest"> + <sawadl:precondition expression="placeOrder"/> + <request sawadl:modelReference="Ontology1#PurchaseOrder"> + <param name="user" style="query" type="xsd:string" required="true"> + <doc title="prompt">Min Molecular Weight (Daltons)</doc> + </param> + <param name="cost" style="query" type="xsd:string"> + </param> + </request> + <sawadl:effect expression="confirmedOrder"/> + <response status="200" sawadl:modelReference="Ontology1#PurchaseOrderAck"> + <representation mediaType="application/xml" + element="AcknowledgementofReceipt.xsd"/> + </response> + </method> + </resource> + </resources> + +</application>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/lib/SAWADLParser/Files/NewTemplate.sawadl~ Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,36 @@ +<?xml version="1.0"?> +<application targetNamespace="http://wadl.dev.java.net/2009/02" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://wadl.dev.java.net/2009/02 wadl.xsd" + xmlns:tns="TempforXSD" + xmlns:sawadl="http://www.w3.org/2002/ws/sawadl/spec/sawadl#" + xmlns:xsd="http://www.w3.org/2001/XMLSchema" + xmlns:Ontology1="http://www.owl-ontologies.com/sws_challenge.owl" + xmlns="http://wadl.dev.java.net/2009/02"> +<grammars> + <include + href="3A4_Simplified_PurchaseOrderRequest.xsd" sawadl:modelReference="Ontology1#PurchaseOrderRequest"/> + <include + href="AcknowledgementOfReceipt.xsd" sawadl:modelReference="Ontology1#PurchaseOrderAck"/> +</grammars> + +<resources base="http://MoonSemanticTemplate.com/"> + <resource path="placeorder" sawadl:modelReference="Ontology1#ResourceCategory"> + <method name="POST" id="order" sawadl:modelReference="Ontology1#PurchaseRequest"> + <sawadl:precondition expression="placeOrder"/> + <request sawadl:modelReference="Ontology1#PurchaseOrder"> + <param name="user" style="query" type="xsd:string" required="true"> + <doc title="prompt">Min Molecular Weight (Daltons)</doc> + </param> + <param name="cost" style="query" type="xsd:string"> + </request> + <sawadl:effect expression="confirmedOrder"/> + <response status="200" sawadl:modelReference="Ontology1#PurchaseOrderAck"> + <representation mediaType="application/xml" + element="AcknowledgementofReceipt.xsd"/> + </response> + </method> + </resource> + </resources> + +</application>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/lib/SAWADLParser/Files/NewsSearchResponse.xsd Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,41 @@ +<?xml version="1.0" encoding="utf-8" ?> +<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" + targetNamespace="urn:yahoo:yn" + xmlns="urn:yahoo:yn" + elementFormDefault="qualified"> + + <xs:element name="ResultSet"> + <xs:complexType> + <xs:sequence> + <xs:element name="Result" type="ResultType" minOccurs="0" maxOccurs="50" /> + </xs:sequence> + <xs:attribute name="totalResultsAvailable" type="xs:integer" /> + <xs:attribute name="totalResultsReturned" type="xs:integer" /> + <xs:attribute name="firstResultPosition" type="xs:integer" /> + </xs:complexType> + </xs:element> + + <xs:complexType name="ResultType"> + <xs:sequence> + <xs:element name="Title" type="xs:string" /> + <xs:element name="Summary" type="xs:string" /> + <xs:element name="Url" type="xs:string" /> + <xs:element name="ClickUrl" type="xs:string" /> + <xs:element name="NewsSource" type="xs:string" /> + <xs:element name="NewsSourceUrl" type="xs:string" /> + <xs:element name="Language" type="xs:string" /> + <xs:element name="PublishDate" type="xs:string" /> + <xs:element name="ModificationDate" type="xs:string" minOccurs="0" /> + <xs:element name="Thumbnail" type="ImageType" minOccurs="0" /> + </xs:sequence> + </xs:complexType> + + <xs:complexType name="ImageType"> + <xs:sequence> + <xs:element name="Url" type="xs:string" /> + <xs:element name="Height" type="xs:integer" minOccurs="0" /> + <xs:element name="Width" type="xs:integer" minOccurs="0" /> + </xs:sequence> + </xs:complexType> + +</xs:schema> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/lib/SAWADLParser/Files/Template.sawadl Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,34 @@ +<?xml version="1.0"?> +<application targetNamespace="http://wadl.dev.java.net/2009/02" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://wadl.dev.java.net/2009/02 wadl.xsd" + xmlns:tns="TempforXSD" + xmlns:sawadl="http://www.w3.org/2002/ws/sawadl/spec/sawadl#" + xmlns:xsd="http://www.w3.org/2001/XMLSchema" + xmlns:Ontology1="http://www.owl-ontologies.com/sws_challenge.owl" + xmlns="http://wadl.dev.java.net/2009/02"> +<grammars> + <include + href="3A4_Simplified_PurchaseOrderRequest.xsd" sawadl:modelReference="Ontology1#PurchaseOrderRequest"/> + <include + href="AcknowledgementOfReceipt.xsd" sawadl:modelReference="Ontology1#PurchaseOrderAck"/> +</grammars> + +<resources base="http://MoonSemanticTemplate.com/"> + <resource path="placeorder" sawadl:modelReference="Ontology1#ResourceCategory"> + <method name="POST" id="order" sawadl:modelReference="Ontology1#PurchaseRequest"> + <sawadl:precondition expression="placeOrder"/> + <request sawadl:modelReference="Ontology1#PurchaseOrder"> + <representation mediaType="application/xml" + element="3A4_Simplified_PurchaseOrderRequest.xsd"/> + </request> + <sawadl:effect expression="confirmedOrder"/> + <response status="200" sawadl:modelReference="Ontology1#PurchaseOrderAck"> + <representation mediaType="application/xml" + element="AcknowledgementofReceipt.xsd"/> + </response> + </method> + </resource> + </resources> + +</application> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/lib/SAWADLParser/Files/sample.wadl Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,49 @@ +<?xml version="1.0"?> +<application xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://wadl.dev.java.net/2009/02 wadl.xsd" + xmlns:tns="urn:yahoo:yn" + xmlns:xsd="http://www.w3.org/2001/XMLSchema" + xmlns:yn="urn:yahoo:yn" + xmlns:ya="urn:yahoo:api" + xmlns="http://wadl.dev.java.net/2009/02"> + <grammars> + <include + href="NewsSearchResponse.xsd"/> + <include + href="3A4_Simplified_PurchaseOrderRequest.xsd"/> + </grammars> + + <resources base="http://api.search.yahoo.com/NewsSearchService/V1/"> + <resource path="newsSearch"> + <method name="GET" id="search"> + <request> + <param name="appid" type="xsd:string" + style="query" required="true"/> + <param name="query" type="xsd:string" + style="query" required="true"/> + <param name="type" style="query" default="all"> + <option value="all"/> + <option value="any"/> + <option value="phrase"/> + </param> + <param name="results" style="query" type="xsd:int" default="10"/> + <param name="start" style="query" type="xsd:int" default="1"/> + <param name="sort" style="query" default="rank"> + <option value="rank"/> + <option value="date"/> + </param> + <param name="language" style="query" type="xsd:string"/> + </request> + <response status="200"> + <representation mediaType="application/xml" + element="yn:ResultSet"/> + </response> + <response status="400"> + <representation mediaType="application/xml" + element="3A4_Simplified_PurchaseOrderRequest.xsd"/> + </response> + </method> + </resource> + </resources> + +</application> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/lib/SAWADLParser/Files/xml.xsd Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,146 @@ +<?xml version='1.0'?> +<xs:schema targetNamespace="http://www.w3.org/XML/1998/namespace" xmlns:xs="http://www.w3.org/2001/XMLSchema" xml:lang="en"> + + <xs:annotation> + <xs:documentation> + See http://www.w3.org/XML/1998/namespace.html and + http://www.w3.org/TR/REC-xml for information about this namespace. + + This schema document describes the XML namespace, in a form + suitable for import by other schema documents. + + Note that local names in this namespace are intended to be defined + only by the World Wide Web Consortium or its subgroups. The + following names are currently defined in this namespace and should + not be used with conflicting semantics by any Working Group, + specification, or document instance: + + base (as an attribute name): denotes an attribute whose value + provides a URI to be used as the base for interpreting any + relative URIs in the scope of the element on which it + appears; its value is inherited. This name is reserved + by virtue of its definition in the XML Base specification. + + id (as an attribute name): denotes an attribute whose value + should be interpreted as if declared to be of type ID. + The xml:id specification is not yet a W3C Recommendation, + but this attribute is included here to facilitate experimentation + with the mechanisms it proposes. Note that it is _not_ included + in the specialAttrs attribute group. + + lang (as an attribute name): denotes an attribute whose value + is a language code for the natural language of the content of + any element; its value is inherited. This name is reserved + by virtue of its definition in the XML specification. + + space (as an attribute name): denotes an attribute whose + value is a keyword indicating what whitespace processing + discipline is intended for the content of the element; its + value is inherited. This name is reserved by virtue of its + definition in the XML specification. + + Father (in any context at all): denotes Jon Bosak, the chair of + the original XML Working Group. This name is reserved by + the following decision of the W3C XML Plenary and + XML Coordination groups: + + In appreciation for his vision, leadership and dedication + the W3C XML Plenary on this 10th day of February, 2000 + reserves for Jon Bosak in perpetuity the XML name + xml:Father + </xs:documentation> + </xs:annotation> + + <xs:annotation> + <xs:documentation>This schema defines attributes and an attribute group + suitable for use by + schemas wishing to allow xml:base, xml:lang, xml:space or xml:id + attributes on elements they define. + + To enable this, such a schema must import this schema + for the XML namespace, e.g. as follows: + <schema . . .> + . . . + <import namespace="http://www.w3.org/XML/1998/namespace" + schemaLocation="http://www.w3.org/2001/xml.xsd"/> + + Subsequently, qualified reference to any of the attributes + or the group defined below will have the desired effect, e.g. + + <type . . .> + . . . + <attributeGroup ref="xml:specialAttrs"/> + + will define a type which will schema-validate an instance + element with any of those attributes</xs:documentation> + </xs:annotation> + + <xs:annotation> + <xs:documentation>In keeping with the XML Schema WG's standard versioning + policy, this schema document will persist at + http://www.w3.org/2005/08/xml.xsd. + At the date of issue it can also be found at + http://www.w3.org/2001/xml.xsd. + The schema document at that URI may however change in the future, + in order to remain compatible with the latest version of XML Schema + itself, or with the XML namespace itself. In other words, if the XML + Schema or XML namespaces change, the version of this document at + http://www.w3.org/2001/xml.xsd will change + accordingly; the version at + http://www.w3.org/2005/08/xml.xsd will not change. + </xs:documentation> + </xs:annotation> + + <xs:attribute name="lang"> + <xs:annotation> + <xs:documentation>Attempting to install the relevant ISO 2- and 3-letter + codes as the enumerated possible values is probably never + going to be a realistic possibility. See + RFC 3066 at http://www.ietf.org/rfc/rfc3066.txt and the IANA registry + at http://www.iana.org/assignments/lang-tag-apps.htm for + further information. + + The union allows for the 'un-declaration' of xml:lang with + the empty string.</xs:documentation> + </xs:annotation> + <xs:simpleType> + <xs:union memberTypes="xs:language"> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:enumeration value=""/> + </xs:restriction> + </xs:simpleType> + </xs:union> + </xs:simpleType> + </xs:attribute> + + <xs:attribute name="space"> + <xs:simpleType> + <xs:restriction base="xs:NCName"> + <xs:enumeration value="default"/> + <xs:enumeration value="preserve"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + + <xs:attribute name="base" type="xs:anyURI"> + <xs:annotation> + <xs:documentation>See http://www.w3.org/TR/xmlbase/ for + information about this attribute.</xs:documentation> + </xs:annotation> + </xs:attribute> + + <xs:attribute name="id" type="xs:ID"> + <xs:annotation> + <xs:documentation>See http://www.w3.org/TR/xml-id/ for + information about this attribute.</xs:documentation> + </xs:annotation> + </xs:attribute> + + <xs:attributeGroup name="specialAttrs"> + <xs:attribute ref="xml:base"/> + <xs:attribute ref="xml:lang"/> + <xs:attribute ref="xml:space"/> + </xs:attributeGroup> + +</xs:schema>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/lib/SAWADLParser/bin/.classpath Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8"?> +<classpath> + <classpathentry kind="src" path=""/> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/> + <classpathentry kind="output" path=""/> +</classpath>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/lib/SAWADLParser/bin/.project Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>SAWADALParser</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + <buildCommand> + <name>org.eclipse.jdt.core.javabuilder</name> + <arguments> + </arguments> + </buildCommand> + </buildSpec> + <natures> + <nature>org.eclipse.jdt.core.javanature</nature> + </natures> +</projectDescription>
Binary file WebServiceToolWorkflow/lib/SAWADLParser/bin/edu/uga/cs/lsdis/meteors/wadls/ApplicationImpl.class has changed
Binary file WebServiceToolWorkflow/lib/SAWADLParser/bin/edu/uga/cs/lsdis/meteors/wadls/Constants$SemanticExtensionType.class has changed
Binary file WebServiceToolWorkflow/lib/SAWADLParser/bin/edu/uga/cs/lsdis/meteors/wadls/Constants.class has changed
Binary file WebServiceToolWorkflow/lib/SAWADLParser/bin/edu/uga/cs/lsdis/meteors/wadls/GrammarsImpl.class has changed
Binary file WebServiceToolWorkflow/lib/SAWADLParser/bin/edu/uga/cs/lsdis/meteors/wadls/IncludeImpl.class has changed
Binary file WebServiceToolWorkflow/lib/SAWADLParser/bin/edu/uga/cs/lsdis/meteors/wadls/MethodImpl.class has changed
Binary file WebServiceToolWorkflow/lib/SAWADLParser/bin/edu/uga/cs/lsdis/meteors/wadls/ModelReferenceImpl.class has changed
Binary file WebServiceToolWorkflow/lib/SAWADLParser/bin/edu/uga/cs/lsdis/meteors/wadls/OperationAddOnImpl.class has changed
Binary file WebServiceToolWorkflow/lib/SAWADLParser/bin/edu/uga/cs/lsdis/meteors/wadls/ParamImpl.class has changed
Binary file WebServiceToolWorkflow/lib/SAWADLParser/bin/edu/uga/cs/lsdis/meteors/wadls/ParamsImpl.class has changed
Binary file WebServiceToolWorkflow/lib/SAWADLParser/bin/edu/uga/cs/lsdis/meteors/wadls/RequestImpl.class has changed
Binary file WebServiceToolWorkflow/lib/SAWADLParser/bin/edu/uga/cs/lsdis/meteors/wadls/ResourceImpl.class has changed
Binary file WebServiceToolWorkflow/lib/SAWADLParser/bin/edu/uga/cs/lsdis/meteors/wadls/ResponseImpl.class has changed
Binary file WebServiceToolWorkflow/lib/SAWADLParser/bin/edu/uga/cs/lsdis/meteors/wadls/SAWADLParserDriver.class has changed
Binary file WebServiceToolWorkflow/lib/SAWADLParser/bin/edu/uga/cs/lsdis/meteors/wadls/extensions/schema/SchemaConstants.class has changed
Binary file WebServiceToolWorkflow/lib/SAWADLParser/bin/edu/uga/cs/lsdis/meteors/wadls/extensions/schema/SchemaDeserializer.class has changed
Binary file WebServiceToolWorkflow/lib/SAWADLParser/bin/edu/uga/cs/lsdis/meteors/wadls/extensions/schema/SchemaImpl.class has changed
Binary file WebServiceToolWorkflow/lib/SAWADLParser/bin/edu/uga/cs/lsdis/meteors/wadls/extensions/schema/SchemaImportImpl.class has changed
Binary file WebServiceToolWorkflow/lib/SAWADLParser/bin/edu/uga/cs/lsdis/meteors/wadls/extensions/schema/SchemaReferenceImpl.class has changed
Binary file WebServiceToolWorkflow/lib/SAWADLParser/bin/edu/uga/cs/lsdis/meteors/wadls/extensions/schema/SchemaSerializer.class has changed
Binary file WebServiceToolWorkflow/lib/SAWADLParser/bin/edu/uga/cs/lsdis/meteors/wadls/factory/WADLFactoryImpl.class has changed
Binary file WebServiceToolWorkflow/lib/SAWADLParser/bin/edu/uga/cs/lsdis/meteors/wadls/util/IOUtils.class has changed
Binary file WebServiceToolWorkflow/lib/SAWADLParser/bin/edu/uga/cs/lsdis/meteors/wadls/util/ObjectRegistry.class has changed
Binary file WebServiceToolWorkflow/lib/SAWADLParser/bin/edu/uga/cs/lsdis/meteors/wadls/util/SchemaUtils.class has changed
Binary file WebServiceToolWorkflow/lib/SAWADLParser/bin/edu/uga/cs/lsdis/meteors/wadls/util/StringUtils.class has changed
Binary file WebServiceToolWorkflow/lib/SAWADLParser/bin/edu/uga/cs/lsdis/meteors/wadls/util/xml/DOM2Writer.class has changed
Binary file WebServiceToolWorkflow/lib/SAWADLParser/bin/edu/uga/cs/lsdis/meteors/wadls/util/xml/DOMUtils.class has changed
Binary file WebServiceToolWorkflow/lib/SAWADLParser/bin/edu/uga/cs/lsdis/meteors/wadls/util/xml/QNameUtils.class has changed
Binary file WebServiceToolWorkflow/lib/SAWADLParser/bin/edu/uga/cs/lsdis/meteors/wadls/util/xml/XPathUtils.class has changed
Binary file WebServiceToolWorkflow/lib/SAWADLParser/bin/edu/uga/cs/lsdis/meteors/wadls/xml/WADLReaderImpl.class has changed
Binary file WebServiceToolWorkflow/lib/SAWADLParser/bin/edu/uga/cs/lsdis/meteors/wadls/xml/WADLWriterImpl.class has changed
Binary file WebServiceToolWorkflow/lib/SAWADLParser/bin/javax/wadls/ModelReference.class has changed
Binary file WebServiceToolWorkflow/lib/SAWADLParser/bin/javax/wadls/ModelReferenceExtensible.class has changed
Binary file WebServiceToolWorkflow/lib/SAWADLParser/bin/javax/wadls/WADLSException.class has changed
Binary file WebServiceToolWorkflow/lib/SAWADLParser/bin/javax/wadls/extensions/AttributeExtensible.class has changed
Binary file WebServiceToolWorkflow/lib/SAWADLParser/bin/javax/wadls/extensions/ElementExtensible.class has changed
Binary file WebServiceToolWorkflow/lib/SAWADLParser/bin/javax/wadls/extensions/ExtensibilityElement.class has changed
Binary file WebServiceToolWorkflow/lib/SAWADLParser/bin/javax/wadls/extensions/ExtensionDeserializer.class has changed
Binary file WebServiceToolWorkflow/lib/SAWADLParser/bin/javax/wadls/extensions/ExtensionRegistry.class has changed
Binary file WebServiceToolWorkflow/lib/SAWADLParser/bin/javax/wadls/extensions/ExtensionSerializer.class has changed
Binary file WebServiceToolWorkflow/lib/SAWADLParser/bin/javax/wadls/extensions/UnknownExtensibilityElement.class has changed
Binary file WebServiceToolWorkflow/lib/SAWADLParser/bin/javax/wadls/extensions/UnknownExtensionDeserializer.class has changed
Binary file WebServiceToolWorkflow/lib/SAWADLParser/bin/javax/wadls/extensions/UnknownExtensionSerializer.class has changed
Binary file WebServiceToolWorkflow/lib/SAWADLParser/bin/javax/wadls/extensions/schema/Schema.class has changed
Binary file WebServiceToolWorkflow/lib/SAWADLParser/bin/javax/wadls/extensions/schema/SchemaImport.class has changed
Binary file WebServiceToolWorkflow/lib/SAWADLParser/bin/javax/wadls/extensions/schema/SchemaReference.class has changed
Binary file WebServiceToolWorkflow/lib/SAWADLParser/bin/javax/wadls/factory/WADLFactory.class has changed
Binary file WebServiceToolWorkflow/lib/SAWADLParser/bin/javax/wadls/xml/WADLLocator.class has changed
Binary file WebServiceToolWorkflow/lib/SAWADLParser/bin/javax/wadls/xml/WADLReader.class has changed
Binary file WebServiceToolWorkflow/lib/SAWADLParser/bin/javax/wadls/xml/WADLWriter.class has changed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/lib/SAWADLParser/euPathWADL/GenesByMolecularWeight.sawadl Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,169 @@ +<?xml version="1.0"?> +<application targetNamespace="http://wadl.dev.java.net/2009/02" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://wadl.dev.java.net/2009/02 wadl.xsd" + xmlns:sawadl="http://www.w3.org/2002/ws/sawadl/spec/sawadl#" + xmlns:euPathOntology="http://www.owl-ontologies.com/sws_euPathOntology.owl" + xmlns="http://wadl.dev.java.net/2009/02" > +<resources base="http://eupathdb.org/webservices/GeneQuestions/"> + <resource path="GenesByMolecularWeight.xml" sawadl:modelReference="euPathOntology#GeneQuestions"> +<method name="POST" id="genesbymolecularweight" sawadl:modelReference="euPathOntology#Genesbymolecularweight"> + <doc title="display_name">Molecular Weight</doc> + <doc title="summary"> + Find genes whose unmodified protein product has a molecular weight in a range that you specify. + </doc> + <doc title="description"> + Find genes whose unmodified protein product has a molecular weight in a range that you specify. + Molecular weights are machine calculated from the raw translation and does not take into account any protein or residue modifications. For translations containing ambiguous amino acid codes (B, Z, X) we calculate the average of the upper and lower bound of the molecular weight. + </doc> + +<request> +<param name="organism" style="query" type="xsd:string" required="true" sawadl:modelReference="euPathOntology#Organism"> +<doc title="prompt">Organism</doc> +<doc title="help">Organism</doc> +<doc title="default"> +Entamoeba dispar,Entamoeba histolytica,Entamoeba invadens,Cryptosporidium parvum,Cryptosporidium hominis,Cryptosporidium muris,Giardia Assemblage A isolate WB,Giardia Assemblage B isolate GS,Giardia Assemblage E isolate P15,Encephalitozoon cuniculi,Encephalitozoon intestinalis,Plasmodium falciparum,Plasmodium vivax,Plasmodium yoelii,Plasmodium berghei,Plasmodium chabaudi,Plasmodium knowlesi,Toxoplasma gondii,Neospora caninum,Trichomonas vaginalis,Trypanosoma cruzi,Leishmania braziliensis,Leishmania infantum,Leishmania major,Leishmania mexicana,Trypanosoma brucei,Trypanosoma congolense,Trypanosoma vivax +p </doc> +<doc title="MultiValued"> +Provide one or more values. Use comma as a delimter. +</doc> +<option value="Entamoeba dispar"> +<doc title="description">Entamoeba dispar</doc> +</option> + +<option value="Entamoeba histolytica"> +<doc title="description">Entamoeba histolytica</doc> +</option> + +<option value="Entamoeba invadens"> +<doc title="description">Entamoeba invadens</doc> +</option> + +<option value="Cryptosporidium parvum"> +<doc title="description">Cryptosporidium parvum</doc> +</option> + +<option value="Cryptosporidium hominis"> +<doc title="description">Cryptosporidium hominis</doc> +</option> + +<option value="Cryptosporidium muris"> +<doc title="description">Cryptosporidium muris</doc> +</option> + +<option value="Giardia Assemblage A isolate WB"> +<doc title="description">Giardia Assemblage A isolate WB</doc> +</option> + +<option value="Giardia Assemblage B isolate GS"> +<doc title="description">Giardia Assemblage B isolate GS</doc> +</option> + +<option value="Giardia Assemblage E isolate P15"> +<doc title="description">Giardia Assemblage E isolate P15</doc> +</option> + +<option value="Encephalitozoon cuniculi"> +<doc title="description">Encephalitozoon cuniculi</doc> +</option> + +<option value="Encephalitozoon intestinalis"> +<doc title="description">Encephalitozoon intestinalis</doc> +</option> + +<option value="Plasmodium falciparum"> +<doc title="description">Plasmodium falciparum</doc> +</option> + +<option value="Plasmodium vivax"> +<doc title="description">Plasmodium vivax</doc> +</option> + +<option value="Plasmodium yoelii"> +<doc title="description">Plasmodium yoelii</doc> +</option> + +<option value="Plasmodium berghei"> +<doc title="description">Plasmodium berghei</doc> +</option> + +<option value="Plasmodium chabaudi"> +<doc title="description">Plasmodium chabaudi</doc> +</option> + +<option value="Plasmodium knowlesi"> +<doc title="description">Plasmodium knowlesi</doc> +</option> + +<option value="Toxoplasma gondii"> +<doc title="description">Toxoplasma gondii</doc> +</option> + +<option value="Neospora caninum"> +<doc title="description">Neospora caninum</doc> +</option> + +<option value="Trichomonas vaginalis"> +<doc title="description">Trichomonas vaginalis</doc> +</option> + +<option value="Trypanosoma cruzi"> +<doc title="description">Trypanosoma cruzi</doc> +</option> + +<option value="Leishmania braziliensis"> +<doc title="description">Leishmania braziliensis</doc> +</option> + +<option value="Leishmania infantum"> +<doc title="description">Leishmania infantum</doc> +</option> + +<option value="Leishmania major"> +<doc title="description">Leishmania major</doc> +</option> + +<option value="Leishmania mexicana"> +<doc title="description">Leishmania mexicana</doc> +</option> + +<option value="Trypanosoma brucei"> +<doc title="description">Trypanosoma brucei</doc> +</option> + +<option value="Trypanosoma congolense"> +<doc title="description">Trypanosoma congolense</doc> +</option> + +<option value="Trypanosoma vivax"> +<doc title="description">Trypanosoma vivax</doc> +</option> +</param> + +<param name="min_molecular_weight" style="query" type="xsd:string" required="true" sawadl:modelReference="euPathOntology#MolecularWeight"> +<doc title="prompt">Min Molecular Weight (Daltons)</doc> +<doc title="help">Lower bound for the protein molecular weight</doc> +<doc title="default">10000</doc> +</param> + +<param name="max_molecular_weight" style="query" type="xsd:string" required="true" sawadl:modelReference="euPathOntology#MolecularWeight"> +<doc title="prompt">Max Molecular Weight (Daltons)</doc> +<doc title="help">Upper bound for the protein molecular weight</doc> +<doc title="default">50000</doc> +</param> +<param name="o-fields" style="query" type="xsd:string" required="false" default="none" sawadl:modelReference="euPathOntology#OFields"> +</param> +<param name="o-tables" style="query" type="xsd:string" required="false" default="none" sawadl:modelReference="euPathOntology#OTables"> +</param> + + +</request> + +<response> +<representation mediaType="text/xml" sawadl:modelReference="euPathOntology#ListOfGenes"/> +<representation mediaType="text/plain" sawadl:modelReference="euPathOntology#ListOfGenes"/> +</response> +</method> +</resource> +</resources> +</application>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/lib/SAWADLParser/euPathWADL/GenesByMolecularWeight.sawadl~ Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,169 @@ +<?xml version="1.0"?> +<application targetNamespace="http://wadl.dev.java.net/2009/02" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://wadl.dev.java.net/2009/02 wadl.xsd" + xmlns:sawadl="http://www.w3.org/2002/ws/sawadl/spec/sawadl#" + xmlns:euPathOntology="http://www.owl-ontologies.com/sws_euPathOntology.owl" + xmlns="http://wadl.dev.java.net/2009/02" > +<resources base="http://eupathdb.org/webservices/GeneQuestions/"> + <resource path="GenesByMolecularWeight.xml" sawadl:modelReference="euPathOntology#GeneQuestions"> +<method name="POST" id="genesbymolecularweight" sawadl:modelReference="euPathOntology#Genesbymolecularweight"> + <doc title="display_name">Molecular Weight</doc> + <doc title="summary"> + Find genes whose unmodified protein product has a molecular weight in a range that you specify. + </doc> + <doc title="description"> + Find genes whose unmodified protein product has a molecular weight in a range that you specify. + Molecular weights are machine calculated from the raw translation and does not take into account any protein or residue modifications. For translations containing ambiguous amino acid codes (B, Z, X) we calculate the average of the upper and lower bound of the molecular weight. + </doc> + +<request> +<param name="organism" style="query" type="xsd:string" required="true" sawadl:modelReference="euPathOntology#Organism"> +<doc title="prompt">Organism</doc> +<doc title="help">Organism</doc> +<doc title="default"> +Entamoeba dispar,Entamoeba histolytica,Entamoeba invadens,Cryptosporidium parvum,Cryptosporidium hominis,Cryptosporidium muris,Giardia Assemblage A isolate WB,Giardia Assemblage B isolate GS,Giardia Assemblage E isolate P15,Encephalitozoon cuniculi,Encephalitozoon intestinalis,Plasmodium falciparum,Plasmodium vivax,Plasmodium yoelii,Plasmodium berghei,Plasmodium chabaudi,Plasmodium knowlesi,Toxoplasma gondii,Neospora caninum,Trichomonas vaginalis,Trypanosoma cruzi,Leishmania braziliensis,Leishmania infantum,Leishmania major,Leishmania mexicana,Trypanosoma brucei,Trypanosoma congolense,Trypanosoma vivax +p </doc> +<doc title="MultiValued"> +Provide one or more values. Use comma as a delimter. +</doc> +<option value="Entamoeba dispar"> +<doc title="description">Entamoeba dispar</doc> +</option> + +<option value="Entamoeba histolytica"> +<doc title="description">Entamoeba histolytica</doc> +</option> + +<option value="Entamoeba invadens"> +<doc title="description">Entamoeba invadens</doc> +</option> + +<option value="Cryptosporidium parvum"> +<doc title="description">Cryptosporidium parvum</doc> +</option> + +<option value="Cryptosporidium hominis"> +<doc title="description">Cryptosporidium hominis</doc> +</option> + +<option value="Cryptosporidium muris"> +<doc title="description">Cryptosporidium muris</doc> +</option> + +<option value="Giardia Assemblage A isolate WB"> +<doc title="description">Giardia Assemblage A isolate WB</doc> +</option> + +<option value="Giardia Assemblage B isolate GS"> +<doc title="description">Giardia Assemblage B isolate GS</doc> +</option> + +<option value="Giardia Assemblage E isolate P15"> +<doc title="description">Giardia Assemblage E isolate P15</doc> +</option> + +<option value="Encephalitozoon cuniculi"> +<doc title="description">Encephalitozoon cuniculi</doc> +</option> + +<option value="Encephalitozoon intestinalis"> +<doc title="description">Encephalitozoon intestinalis</doc> +</option> + +<option value="Plasmodium falciparum"> +<doc title="description">Plasmodium falciparum</doc> +</option> + +<option value="Plasmodium vivax"> +<doc title="description">Plasmodium vivax</doc> +</option> + +<option value="Plasmodium yoelii"> +<doc title="description">Plasmodium yoelii</doc> +</option> + +<option value="Plasmodium berghei"> +<doc title="description">Plasmodium berghei</doc> +</option> + +<option value="Plasmodium chabaudi"> +<doc title="description">Plasmodium chabaudi</doc> +</option> + +<option value="Plasmodium knowlesi"> +<doc title="description">Plasmodium knowlesi</doc> +</option> + +<option value="Toxoplasma gondii"> +<doc title="description">Toxoplasma gondii</doc> +</option> + +<option value="Neospora caninum"> +<doc title="description">Neospora caninum</doc> +</option> + +<option value="Trichomonas vaginalis"> +<doc title="description">Trichomonas vaginalis</doc> +</option> + +<option value="Trypanosoma cruzi"> +<doc title="description">Trypanosoma cruzi</doc> +</option> + +<option value="Leishmania braziliensis"> +<doc title="description">Leishmania braziliensis</doc> +</option> + +<option value="Leishmania infantum"> +<doc title="description">Leishmania infantum</doc> +</option> + +<option value="Leishmania major"> +<doc title="description">Leishmania major</doc> +</option> + +<option value="Leishmania mexicana"> +<doc title="description">Leishmania mexicana</doc> +</option> + +<option value="Trypanosoma brucei"> +<doc title="description">Trypanosoma brucei</doc> +</option> + +<option value="Trypanosoma congolense"> +<doc title="description">Trypanosoma congolense</doc> +</option> + +<option value="Trypanosoma vivax"> +<doc title="description">Trypanosoma vivax</doc> +</option> +</param> + +<param name="min_molecular_weight" style="query" type="xsd:string" required="true" sawadl:modelReference="euPathOntology#MolecularWeight"> +<doc title="prompt">Min Molecular Weight (Daltons)</doc> +<doc title="help">Lower bound for the protein molecular weight</doc> +<doc title="default">10000</doc> +</param> + +<param name="max_molecular_weight" style="query" type="xsd:string" required="true" sawadl:modelReference="euPathOntology#MolecularWeight"> +<doc title="prompt">Max Molecular Weight (Daltons)</doc> +<doc title="help">Upper bound for the protein molecular weight</doc> +<doc title="default">50000</doc> +</param> +<param name="o-fields" style="query" type="xsd:string" required="false" default="none" sawadl:modelReference="euPathOntology#MolecularWeight"> +</param> +<param name="o-tables" style="query" type="xsd:string" required="false" default="none"> +</param> + + +</request> + +<response> +<representation mediaType="text/xml" sawadl:modelReference="euPathOntology#ListOfGenes"/> +<representation mediaType="text/plain" sawadl:modelReference="euPathOntology#ListOfGenes"/> +</response> +</method> +</resource> +</resources> +</application>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/lib/SAWADLParser/src/.classpath Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8"?> +<classpath> + <classpathentry kind="src" path=""/> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/> + <classpathentry kind="output" path=""/> +</classpath>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/lib/SAWADLParser/src/.project Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>SAWADALParser</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + <buildCommand> + <name>org.eclipse.jdt.core.javabuilder</name> + <arguments> + </arguments> + </buildCommand> + </buildSpec> + <natures> + <nature>org.eclipse.jdt.core.javanature</nature> + </natures> +</projectDescription>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/lib/SAWADLParser/src/Parser.java Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,47 @@ +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Vector; + +import javax.wadls.Application; +import javax.wadls.Method; +import javax.wadls.Param; +import javax.wadls.Request; +import javax.wadls.Resource; +import javax.wadls.WADLSException; +import javax.wadls.factory.WADLFactory; +import javax.wadls.xml.WADLReader; +import javax.xml.namespace.QName; + +import edu.uga.cs.lsdis.meteors.wadls.Constants; +import edu.uga.cs.lsdis.meteors.wadls.ParamImpl; +import edu.uga.cs.lsdis.meteors.wadls.SAWADLParserDriver; + + +public class Parser { + + + public static void main(String[] args){ + +// //String consumerWADLS="http://localhost:9090/testcase2/Template.sawadl"; +// String consumerWADLS="/home/ganjoo/parser/SAWADLParser/Files/Template.sawadl"; +// WADLReader wadlReader; +// try { +// wadlReader = WADLFactory.newInstance().newWADLReader(); +// wadlReader.setFeature(Constants.FEATURE_PARSE_SAWADL,true); +// //wadlReader.setExtensionRegistry(new PopulatedExtensionRegistry()); +// Application app = wadlReader.readWADL(consumerWADLS); +// + SAWADLParserDriver spd = new SAWADLParserDriver(); + //String fileURL = "/home/ganjoo/parser/SAWADLParser/Files/sample.wadl"; + String fileURL = "/home/ganjoo/parser/SAWADLParser/euPathWADL/GenesByMolecularWeight.sawadl"; + try { + spd.parse(fileURL); + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + + } + }
Binary file WebServiceToolWorkflow/lib/SAWADLParser/src/edu/uga/cs/lsdis/meteors/wadls/ApplicationImpl.class has changed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/lib/SAWADLParser/src/edu/uga/cs/lsdis/meteors/wadls/ApplicationImpl.java Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,606 @@ +/* + * (c) Copyright IBM Corp 2001, 2005 + */ + +package edu.uga.cs.lsdis.meteors.wadls; + +import java.net.URI; +import java.util.*; + +import javax.wadls.*; +import javax.wadls.extensions.*; +import javax.wadls.extensions.ExtensionRegistry; +import javax.xml.namespace.*; +import org.w3c.dom.*; + +/** + * This class represents a WSDLS definition. + * + * @author Zixin Wu (wuzixin@uga.edu) + * @author Paul Fremantle + * @author Nirmal Mukhi + * @author Matthew J. Duftler + * @author namelessNerd + */ +public class ApplicationImpl implements Application +{ + protected String documentBaseURI = null; + protected QName name = null; + protected String targetNamespace = null; + protected Map namespaces = new HashMap(); + protected Map includes = new HashMap(); + protected Params params = null; + protected Grammars grammars = null; + protected Map resources = new HashMap(); + protected Element docEl = null; + protected String resourcespath=null; + protected List extElements = new Vector(); + + // added by namelessNerd + protected List modelReferenceList= new ArrayList(); + protected List ontologyNamespaces= new ArrayList(); + // end namelessNerd additions + + protected ExtensionRegistry extReg = null; + + public static final long serialVersionUID = 1; + + /** + * Get all the Parts which has a modelReference with the specified namespace and concept. + * @param namespace The namespace of the modelReference + * @param concept The concept of the modelReference + * @return All the Parts which has a modelReference with the specified namespace and concept. + */ + + /** + * Get all the Operations which has a modelReference with the specified namespace and concept. + * @param namespace The namespace of the modelReference + * @param concept The concept of the modelReference + * @return All the Operations which has a modelReference with the specified namespace and concept. + */ + public List getMethodsByModelReference(URI namespace, String concept){ + //TODO not implemented yet. + return null; + } + + + /** + * Get all the XSD Elements which has a modelReference with the specified namespace and concept. + * @param namespace The namespace of the modelReference + * @param concept The concept of the modelReference + * @return All the XSD Elements which has a modelReference with the specified namespace and concept. + */ + public List getXSDElementsByModelReference(URI namespace, String concept){ + //TODO not implemented yet. + return null; + } + + /** + * Get all the XSD ComplexTypes which has a modelReference with the specified namespace and concept. + * @param namespace The namespace of the modelReference + * @param concept The concept of the modelReference + * @return All the XSD ComplexTypes which has a modelReference with the specified namespace and concept. + */ + public List getXSDComplexTypeByModelReference(URI namespace, String concept){ + //TODO not implemented yet. + return null; + } + + + /** + * Set the document base URI of this definition. Can be used to + * represent the origin of the Definition, and can be exploited + * when resolving relative URIs (e.g. in <import>s). + * + * @param documentBaseURI the document base URI of this definition + */ + + /** + * Create a new modelReference. + * + * @return the newly created modelReference. + */ + public ModelReference createModelReference(){ + return new ModelReferenceImpl(); + } + + + + /** + * Create a new precondition. + * + * @return the newly created precondition + */ + public PreCondition createPreCondition(){ + return new OperationAddOnImpl(); + } + + /** + * Create a new effect. + * + * @return the newly created effect + */ + public Effect createEffect(){ + return new OperationAddOnImpl(); + } + + public void setDocumentBaseURI(String documentBaseURI) + { + this.documentBaseURI = documentBaseURI; + } + + + /** + * Get the document base URI of this definition. + * + * @return the document base URI + */ + public String getDocumentBaseURI() + { + return documentBaseURI; + } + + public void setResourcesPath(String resourcespath) + { + this.resourcespath = resourcespath; + } + + + /** + * Get the document base URI of this definition. + * + * @return the document base URI + */ + public String getResourcesPath() + { + return resourcespath; + } + + /** + * Set the name of this definition. + * + * @param name the desired name + */ + public void setQName(QName name) + { + this.name = name; + } + + /** + * Get the name of this definition. + * + * @return the definition name + */ + public QName getQName() + { + return name; + } + + /** + * Set the target namespace in which WSDL elements are defined. + * + * @param targetNamespace the target namespace + */ + public void setTargetNamespace(String targetNamespace) + { + this.targetNamespace = targetNamespace; + } + + /** + * Get the target namespace in which the WSDL elements + * are defined. + * + * @return the target namespace + */ + public String getTargetNamespace() + { + return targetNamespace; + } + + /** + * Get the target namespace in which the WSDL elements + * are defined. + * + * @return the target namespace + */ + public List getAllModelReference() + { + // grabModel + return modelReferenceList; + } + + /** + * This is a way to add a namespace association to a definition. + * It is similar to adding a namespace prefix declaration to the + * top of a <wsdl:definition> element. This has nothing to do + * with the <wsdl:import> element; there are separate methods for + * dealing with information described by <wsdl:import> elements. + * + * @param prefix the prefix to use for this namespace (when + * rendering this information as XML). Use null or an empty string + * to describe the default namespace (i.e. xmlns="..."). + * @param namespaceURI the namespace URI to associate the prefix + * with. If you use null, the namespace association will be removed. + */ + public void addNamespace(String prefix, String namespaceURI) + { + if (prefix == null) + { + prefix = ""; + } + + if (namespaceURI != null) + { + namespaces.put(prefix, namespaceURI); + } + else + { + namespaces.remove(prefix); + } + } + + /** + * Get the namespace URI associated with this prefix. Or null if + * there is no namespace URI associated with this prefix. This is + * unrelated to the <wsdl:import> element. + * + * @see #addNamespace(String, String) + * @see #getPrefix(String) + */ + public String getNamespace(String prefix) + { + if (prefix == null) + { + prefix = ""; + } + + return (String)namespaces.get(prefix); + } + + /** + * Get a prefix associated with this namespace URI. Or null if + * there are no prefixes associated with this namespace URI. This is + * unrelated to the <wsdl:import> element. + * + * @see #addNamespace(String, String) + * @see #getNamespace(String) + */ + public String getPrefix(String namespaceURI) + { + if (namespaceURI == null) + { + return null; + } + + Iterator entryIterator = namespaces.entrySet().iterator(); + + while (entryIterator.hasNext()) + { + Map.Entry entry = (Map.Entry)entryIterator.next(); + String prefix = (String)entry.getKey(); + String assocNamespaceURI = (String)entry.getValue(); + + if (namespaceURI.equals(assocNamespaceURI)) + { + return prefix; + } + } + + return null; + } + + /** + * Get all namespace associations in this definition. The keys are + * the prefixes, and the namespace URIs are the values. This is + * unrelated to the <wsdl:import> element. + * + * @see #addNamespace(String, String) + */ + public Map getNamespaces() + { + return namespaces; + } + + /** + * Set the types section. + */ + public void setParams(Params params) + { + this.params = params; + } + + public void setGrammars(Grammars grammars) + { + this.grammars = grammars; + } + /** + * Get the types section. + * + * @return the types section + */ + public Params getParams() + { + return params; + } + + public Grammars getGrammars() + { + return grammars; + } + + /** + * Add an import to this WADL description. + * + * @param importDef the import to be added + */ + public void addInclude(Include includeApp) + { + String namespaceURI = includeApp.getNamespaceURI(); + List includeList = (List)includes.get(namespaceURI); + + if (includeList == null) + { + includeList = new Vector(); + + includes.put(namespaceURI, includeList); + } + + includeList.add(includeApp); + } + + /** + * Get the list of imports for the specified namespaceURI. + * + * @param namespaceURI the namespaceURI associated with the + * desired imports. + * @return a list of the corresponding imports, or null if + * there weren't any matching imports + */ + public List getIncludes(String namespaceURI) + { + return (List)includes.get(namespaceURI); + } + + /** + * Get a map of lists containing all the imports defined here. + * The map's keys are the namespaceURIs, and the map's values + * are lists. There is one list for each namespaceURI for which + * imports have been defined. + */ + public Map getIncludes() + { + return includes; + } + + + /** + * Add a portType to this WSDL description. + * + * @param portType the portType to be added + */ + public void addResource(Resource portType) + { + resources.put(portType.getQName(), portType); + + } + + /** + * Get the specified portType. Also checks imported documents. + * + * @param name the name of the desired portType. + * @return the corresponding portType, or null if there wasn't + * any matching portType + */ + public Resource getResource(QName name) + { + Resource resource = (Resource)resources.get(name); + + if (resource == null && name != null) + { + resource = (Resource)getFromIncludes(Constants.ELEM_RESOURCE, name); + } + + return resource; + } + + /** + * Remove the specified portType from this definition. + * + * @param name the name of the portType to remove + * @return the portType previously associated with this qname, if there + * was one; may return null + */ + public Resource removeResource(QName name) + { + return (Resource)resources.remove(name); + } + + /** + * Get all the portTypes defined here. + */ + public Map getResources() + { + return resources; + } + + + /** + * Set the documentation element for this document. This dependency + * on org.w3c.dom.Element should eventually be removed when a more + * appropriate way of representing this information is employed. + * + * @param docEl the documentation element + */ + public void setDocumentationElement(Element docEl) + { + this.docEl = docEl; + } + + /** + * Get the documentation element. This dependency on org.w3c.dom.Element + * should eventually be removed when a more appropriate way of + * representing this information is employed. + * + * @return the documentation element + */ + public Element getDocumentationElement() + { + return docEl; + } + + /** + * Get all the extensibility elements defined here. + */ + public List getExtensibilityElements() + { + return extElements; + } + + + /** + * Create a new import. + * + * @return the newly created import + */ + public Include createInclude() + { + return new IncludeImpl(); + } + + /** + * Create a new input. + * + * @return the newly created input + */ + public Request createRequest() + { + return new RequestImpl(); + } + + + /** + * Create a new operation. + * + * @return the newly created operation + */ + public Method createMethod() + { + return new MethodImpl(); + } + + /** + * Create a new output. + * + * @return the newly created output + */ + public Response createResponse() + { + return new ResponseImpl(); + } + + /** + * Create a new port type. + * + * @return the newly created port type + */ + public Resource createResource() + { + return new ResourceImpl(); + } + + /** + * Create a new types section. + * + * @return the newly created types section + */ + public Params createParams() + { + return new ParamsImpl(this); + } + public Grammars createGrammars() + { + return new GrammarsImpl(this); + } + + private Object getFromIncludes(String typeOfApplication, QName name) + { + Object ret = null; + List includeList = getIncludes(name.getNamespaceURI()); + + if (includeList != null) + { + Iterator includeIterator = includeList.iterator(); + + while (includeIterator.hasNext()) + { + Include includeApp = (Include)includeIterator.next(); + + if (includeApp != null) + { + Application includedApp = includeApp.getApplication(); + + if (includedApp != null) + { + /* + These object comparisons will work fine because + this private method is only called from within + this class, using only the pre-defined constants + from the Constants class as the typeOfDefinition + argument. + */ + if (typeOfApplication == Constants.ELEM_RESOURCE) + { + ret = includedApp.getResource(name); + } + + if (ret != null) + { + return ret; + } + } + } + } + } + + return ret; + } + + public String toString() + { + StringBuffer strBuf = new StringBuffer(); + + strBuf.append("Definition: name=" + name + + " targetNamespace=" + targetNamespace); + + if (includes != null) + { + Iterator includeIterator = includes.values().iterator(); + + while (includeIterator.hasNext()) + { + strBuf.append("\n" + includeIterator.next()); + } + } + + if (params != null) + { + strBuf.append("\n" + params); + } + + + + if (resources != null) + { + Iterator resourceIterator = resources.values().iterator(); + + while (resourceIterator.hasNext()) + { + strBuf.append("\n" + resourceIterator.next()); + } + } + + + return strBuf.toString(); + } + +}
Binary file WebServiceToolWorkflow/lib/SAWADLParser/src/edu/uga/cs/lsdis/meteors/wadls/Constants$SemanticExtensionType.class has changed
Binary file WebServiceToolWorkflow/lib/SAWADLParser/src/edu/uga/cs/lsdis/meteors/wadls/Constants.class has changed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/lib/SAWADLParser/src/edu/uga/cs/lsdis/meteors/wadls/Constants.java Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,191 @@ +/* + * (c) Copyright IBM Corp 2001, 2005 + */ + +package edu.uga.cs.lsdis.meteors.wadls; + +import javax.xml.namespace.*; + +/** + * This class contains the constatns of WSDLS + * @author Zixin Wu (wuzixin@uga.edu) + * @author Matthew J. Duftler (duftler@us.ibm.com) + */ +public class Constants +{ + // Namespace URIs. + public static final String NS_URI_WADL = + "http://wadl.dev.java.net/2009/02"; + + public static final String NS_URI_WADLS = + "http://lsdis.cs.uga.edu/projects/meteor-s/wadl-s/examples/WSSemantics.xsd"; + public static final String NS_URI_SAWADL = + "http://www.w3.org/2002/ws/sawadl/spec/sawadl#"; + public static final String NS_URI_XMLNS = + "http://www.w3.org/2000/xmlns/"; + + //Prefix + public static final String PREFIX_WSDLS = + "wssem"; + + // Top-level element names. + public static final String ELEM_DEFINITIONS = "application"; + public static final String ELEM_GRAMMARS = "grammars"; + public static final String ELEM_PARAM = "param"; + public static final String ELEM_TYPES = "types"; + public static final String ELEM_RESOURCE = "resource"; + // Non top-level element names. + public static final String ELEM_OPERATION = "method"; + public static final String ELEM_PRECON = "precondition"; + public static final String ELEM_EFFECT = "effect"; + public static final String ELEM_INPUT = "request"; + public static final String ELEM_OUTPUT = "response"; + public static final String ELEM_HREF = "href"; + public static final String ELEM_RESOURCES = "resources"; + public static final String ELEM_INCLUDE = "include"; + public static final String ELEM_IMPORT = "import"; + public static final String ELEM_DOCUMENTATION = "doc"; + public static final String ELEM_REPRESENTATION = "representation"; + + + // Top-level qualified element names. + public static final QName Q_ELEM_DEFINITIONS = + new QName(NS_URI_WADL, ELEM_DEFINITIONS); + public static final QName Q_ELEM_TYPES = + new QName(NS_URI_WADL, ELEM_TYPES); + public static final QName Q_ELEM_GRAMMARS = + new QName(NS_URI_WADL, ELEM_GRAMMARS); + public static final QName Q_ELEM_PARAM = + new QName(NS_URI_WADL, ELEM_PARAM); + public static final QName Q_ELEM_RESOURCE = + new QName(NS_URI_WADL, ELEM_RESOURCE); + public static final QName Q_ELEM_RESOURCES = + new QName(NS_URI_WADL, ELEM_RESOURCES); + + // Non top-level qualified element names. + public static final QName Q_ELEM_OPERATION = + new QName(NS_URI_WADL, ELEM_OPERATION); + public static QName Q_ELEM_PRECON; + public static QName Q_ELEM_EFFECT; + public static QName Q_ELEM_CATEGORY; + public static final QName Q_ELEM_INPUT = + new QName(NS_URI_WADL, ELEM_INPUT); + public static final QName Q_ELEM_OUTPUT = + new QName(NS_URI_WADL, ELEM_OUTPUT); + public static final QName Q_ELEM_DOCUMENTATION = + new QName(NS_URI_WADL, ELEM_DOCUMENTATION); + public static final QName Q_ELEM_REPRESENTATION = + new QName(NS_URI_WADL, ELEM_REPRESENTATION); + public static final QName Q_ELEM_INCLUDE = + new QName(NS_URI_WADL, ELEM_INCLUDE); + + // Attribute names. + public static final String ATTR_NAME = "name"; + public static final String PARAM_STYLE = "style"; + public static final String PARAM_NAME = "name"; + public static final String PARAM_TYPE = "type"; + public static final String PARAM_REQUIRED = "required"; + public static final String PARAM_DEFAULT = "default"; + public static final String OPTION_VALUE = "value"; + public static final String ATTR_BASE = "base"; + public static final String REQUEST_ELEMENT_NAME ="element"; + public static final String ATTR_PRE = "precondition"; + public static final String ID_NAME = "id"; + public static final String RESOURCE_ATTR_NAME = "path"; + public static final String ATTR_TARGET_NAMESPACE = "targetNamespace"; + public static final String ATTR_ELEMENT = "element"; + public static final String ATTR_TYPE = "type"; + public static final String ATTR_MESSAGE = "message"; + public static final String ATTR_MODELREF = "modelReference"; + public static final String ATTR_LIFTINGSCHEMAMAPPING = "liftingSchemaMapping"; + public static final String ATTR_LOWERINGSCHEMAMAPPING = "loweringSchemaMapping"; + public static final String ATTR_PARAMETER_ORDER = "parameterOrder"; + public static final String ATTR_EXPRESSION = "expression"; + public static final String ATTR_BINDING = "binding"; + public static final String ATTR_XMLNS = "xmlns"; + public static final String ATTR_NAMESPACE = "namespace"; + public static final String ATTR_LOCATION = "location"; + public static final String ATTR_REQUIRED = "required"; + public static final String ATTR_TAXONOMYURI = "taxonomyURI"; + public static final String ATTR_TAXONOMYCODE = "taxonomyCode"; + + // Lists of native attribute names. + public static final String[] PART_ATTR_NAMES = + new String[]{ATTR_NAME, ATTR_TYPE, ATTR_ELEMENT, ATTR_MODELREF}; + public static final String[] BINDING_ATTR_NAMES = + new String[]{ATTR_NAME, ATTR_TYPE}; + public static final String[] BINDING_FAULT_ATTR_NAMES = + new String[]{ATTR_NAME}; + public static final String[] BINDING_INPUT_ATTR_NAMES = + new String[]{ATTR_NAME}; + public static final String[] BINDING_OPERATION_ATTR_NAMES = + new String[]{ATTR_NAME}; + public static final String[] BINDING_OUTPUT_ATTR_NAMES = + new String[]{ATTR_NAME}; + public static final String[] FAULT_ATTR_NAMES = + new String[]{ATTR_NAME, ATTR_MESSAGE}; + public static final String[] IMPORT_ATTR_NAMES = + new String[]{ATTR_NAMESPACE, ATTR_LOCATION}; + public static final String[] INPUT_ATTR_NAMES = + new String[]{ATTR_NAME, ATTR_MESSAGE}; + public static final String[] CATEGORY_ATTR_NAMES = + new String[]{ATTR_NAME, ATTR_TAXONOMYURI, ATTR_TAXONOMYCODE}; + public static final String[] OPADDON_ATTR_NAMES = + new String[]{ATTR_NAME, ATTR_EXPRESSION}; + public static final String[] MESSAGE_ATTR_NAMES = + new String[]{ATTR_NAME}; + public static final String[] OPERATION_ATTR_NAMES = + new String[]{ATTR_NAME, ATTR_PARAMETER_ORDER}; + public static final String[] OUTPUT_ATTR_NAMES = + new String[]{ATTR_NAME, ATTR_MESSAGE}; + public static final String[] PORT_ATTR_NAMES = + new String[]{ATTR_NAME, ATTR_BINDING}; + public static final String[] PORT_TYPE_ATTR_NAMES = + new String[]{RESOURCE_ATTR_NAME}; + public static final String[] SERVICE_ATTR_NAMES = + new String[]{ATTR_NAME}; + public static final String[] TYPES_ATTR_NAMES = + new String[]{}; + + // Qualified attribute names. + public static final QName Q_ATTR_REQUIRED = + new QName(NS_URI_WADL, ATTR_REQUIRED); + public static QName Q_ATTR_MODELREF; + public static QName Q_ATTR_LIFTINGSCHEMAMAPPING; + public static QName Q_ATTR_LOWERINGSCHEMAMAPPING; + + // XML Declaration string. + public static final String XML_DECL_DEFAULT = "UTF-8"; + public static final String XML_DECL_START = + "<?xml version=\"1.0\" encoding=\""; + public static final String XML_DECL_END = "\"?>"; + + // Feature names. + public static final String FEATURE_VERBOSE = "javax.wsdl.verbose"; + public static final String FEATURE_IMPORT_DOCUMENTS = + "javax.wsdl.importDocuments"; + public static final String FEATURE_PARSE_SAWSDL = "urn:w3.org:sawsdl"; + public static final String FEATURE_PARSE_SAWADL = "urn:w3.org:sawadl"; + + public static enum SemanticExtensionType { + WADLS, SAWADL; + } + + public static final void setSemanticExtensionURI(SemanticExtensionType type) { + String uri = NS_URI_WADLS; + if(type == SemanticExtensionType.SAWADL) + uri = NS_URI_SAWADL; + + Q_ELEM_PRECON = + new QName(uri, ELEM_PRECON); + Q_ELEM_EFFECT = + new QName(uri, ELEM_EFFECT); + Q_ATTR_MODELREF = + new QName(uri, ATTR_MODELREF); + Q_ATTR_LIFTINGSCHEMAMAPPING = + new QName(uri, ATTR_LIFTINGSCHEMAMAPPING); + Q_ATTR_LOWERINGSCHEMAMAPPING = + new QName(uri, ATTR_LOWERINGSCHEMAMAPPING); + } + +}
Binary file WebServiceToolWorkflow/lib/SAWADLParser/src/edu/uga/cs/lsdis/meteors/wadls/GrammarsImpl.class has changed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/lib/SAWADLParser/src/edu/uga/cs/lsdis/meteors/wadls/GrammarsImpl.java Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,272 @@ +/* + * (c) Copyright IBM Corp 2001, 2005 + */ + +package edu.uga.cs.lsdis.meteors.wadls; + +import java.net.URISyntaxException; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Vector; + +import javax.wadls.Application; +import javax.wadls.ModelReference; +import javax.wadls.Grammars; +import javax.wadls.WADLSException; +import javax.wadls.extensions.schema.Schema; +import javax.wadls.extensions.ExtensibilityElement; +import javax.xml.namespace.QName; + +import org.w3c.dom.Attr; +import org.w3c.dom.Element; + +import edu.uga.cs.lsdis.meteors.wadls.util.SchemaUtils; + +/** + * This class represents the <types> section of a WSDL document. + * + * @author Zixin Wu (wuzixin@uga.edu) + * @author Matthew J. Duftler (duftler@us.ibm.com) + */ +public class GrammarsImpl implements Grammars +{ + protected Application app = null; //WADLS Definition + protected List<ModelReference> modelReferences = null; + protected Element docEl = null; + protected List extElements = new Vector(); + protected Map allSchemas = null; + + + public static final long serialVersionUID = 1; + + public GrammarsImpl(Application app){ + this.app = app; + } + + public List getTopLevelSchemas(){ + return SchemaUtils.getSchemas(this.extElements); + } + + /** + * Get the DOM elements of all the schemas in this Types. + * @return A list of DOM elements of all the schemas in this Types. + */ + public Map getSchemas(){ + return this.allSchemas; + } + + public void setSchemas(Map allSchemas){ + this.allSchemas = allSchemas; + } + + + /** + * Get the DOM element of the first schema in this Types. + * @return The DOM element of the first schema in this Types. + */ + public Schema getFirstSchema(){ + return SchemaUtils.getFirstSchema(this.extElements); + } + public ModelReference getModelReference(){ + if(modelReferences == null) + return null; + return modelReferences.get(0); + } + + public List<ModelReference> getModelReferences(Element startElement, String path, Application app) throws WADLSException, URISyntaxException { + Element el = getXSDEle(startElement, path); + if (el == null) + return null; + String attrModelReference = el.getAttributeNS(Constants.NS_URI_WADLS, Constants.ATTR_MODELREF); + if (attrModelReference.equals("")) + return null; + List<ModelReference> mrefs = ModelReferenceImpl.getModelReferences(attrModelReference, app); + if(mrefs.size() == 0) + return null; + return mrefs; + } + public ModelReference getModelReference(Element startElement, String path, Application app) throws WADLSException, URISyntaxException{ + List<ModelReference> mrefs = getModelReferences(startElement, path, app); + return mrefs.get(0); + } + + + private Element getXSDEle(Element startElement, String path) throws WADLSException{ + if (path == null || path == "") + return startElement; + String eleName = startElement.getLocalName(); + if (eleName.equals("element")){ //search the target from <element ... + return SchemaUtils.findXSDEleOnEle(startElement, path, this); + } + else if (eleName.equals("complexType")){ //search the target from <complexType ... + return SchemaUtils.findXSDEleOnComplexType(startElement, path, this); + } + else{ //error + WADLSException wsdlsExc = new WADLSException(WADLSException.PATH_ERROR, + "simpleType cannot has path"); + throw wsdlsExc; + } + } + + + + /** + * Get all the extensibility elements defined here. + */ + + /** + * Set the modelReference. + * + * @param modelReference The desired modelReference. + */ + public void addModelReference(ModelReference modelReference){ + if(modelReferences == null) + modelReferences = new ArrayList<ModelReference>(); + modelReferences.add(0, modelReference); + } + + public List<ModelReference> getModelReferences() { + return modelReferences; + } + + public void setModelReferences(List<ModelReference> refs) { + modelReferences = refs; + } + + /** + * Set the documentation element for this document. This dependency + * on org.w3c.dom.Element should eventually be removed when a more + * appropriate way of representing this information is employed. + * + * @param docEl the documentation element + */ + public void setDocumentationElement(Element docEl) + { + this.docEl = docEl; + } + + public void setModelReferences(Element startElement, String path, List<ModelReference> refs) throws WADLSException { + for(ModelReference ref : refs) { + addModelReference(startElement, path, ref); + } + } + + public void addModelReference(Element startElement, String path, ModelReference modelReference) throws WADLSException{ + Element el = getXSDEle(startElement, path); + + if (modelReference != null){ + String strModelReference = modelReference.value(); + Attr attr = el.getAttributeNodeNS( + Constants.NS_URI_WADLS, Constants.ATTR_MODELREF); + if(attr == null) { + attr = el.getOwnerDocument().createAttributeNS(Constants.NS_URI_WADLS, Constants.ATTR_MODELREF); + attr.setPrefix(Constants.PREFIX_WSDLS); + el.setAttributeNodeNS(attr); + } + String value = attr.getValue(); + if(value != null) { + value += " " + strModelReference; + } else { + value = strModelReference; + } + attr.setValue(value); + modelReference.setParent(el); + } + else + el.removeAttributeNS(Constants.NS_URI_WADLS, Constants.ATTR_MODELREF); + } + + + /** + * Get the documentation element. This dependency on org.w3c.dom.Element + * should eventually be removed when a more appropriate way of + * representing this information is employed. + * + * @return the documentation element + */ + public Element getDocumentationElement() + { + return docEl; + } + + public void setLoweringSchemaMapping(Element startElement, String path, String schemaMapping) throws WADLSException{ + Element el = getXSDEle(startElement, path); + if (schemaMapping != null){ + Attr attr = el.getOwnerDocument().createAttributeNS(Constants.NS_URI_WADLS, Constants.ATTR_LOWERINGSCHEMAMAPPING); + attr.setPrefix(Constants.PREFIX_WSDLS); + attr.setValue(schemaMapping); + el.setAttributeNodeNS(attr); + } + else + el.removeAttributeNS(Constants.NS_URI_WADLS, Constants.ATTR_LOWERINGSCHEMAMAPPING); + } + + public void setLiftingSchemaMapping(Element startElement, String path, String schemaMapping) throws WADLSException{ + Element el = getXSDEle(startElement, path); + if (schemaMapping != null){ + Attr attr = el.getOwnerDocument().createAttributeNS(Constants.NS_URI_WADLS, Constants.ATTR_LIFTINGSCHEMAMAPPING); + attr.setPrefix(Constants.PREFIX_WSDLS); + attr.setValue(schemaMapping); + el.setAttributeNodeNS(attr); + } + else + el.removeAttributeNS(Constants.NS_URI_WADLS, Constants.ATTR_LIFTINGSCHEMAMAPPING); + } + public String getLoweringSchemaMapping(Element startElement, String path) throws WADLSException{ + Element el = getXSDEle(startElement, path); + if (el == null) + return null; + String attrSchemaMapping = el.getAttributeNS(Constants.NS_URI_WADLS, Constants.ATTR_LOWERINGSCHEMAMAPPING); + if (attrSchemaMapping == "") + return null; + return attrSchemaMapping; + + } + + public String getLiftingSchemaMapping(Element startElement, String path) throws WADLSException{ + Element el = getXSDEle(startElement, path); + if (el == null) + return null; + String attrSchemaMapping = el.getAttributeNS(Constants.NS_URI_WADLS, Constants.ATTR_LIFTINGSCHEMAMAPPING); + if (attrSchemaMapping == "") + return null; + return attrSchemaMapping; + + } + + + /** + * Add an extensibility element. + * + * @param extElement the extensibility element to be added + */ + + + /** + * Get all the extensibility elements defined here. + */ + + + public String toString() + { + StringBuffer strBuf = new StringBuffer(); + + strBuf.append("Types:"); + + if (extElements != null) + { + Iterator extIterator = extElements.iterator(); + + while (extIterator.hasNext()) + { + strBuf.append("\n" + extIterator.next()); + } + } + + return strBuf.toString(); + } + + +}
Binary file WebServiceToolWorkflow/lib/SAWADLParser/src/edu/uga/cs/lsdis/meteors/wadls/IncludeImpl.class has changed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/lib/SAWADLParser/src/edu/uga/cs/lsdis/meteors/wadls/IncludeImpl.java Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,207 @@ +/* + * (c) Copyright IBM Corp 2001, 2005 + */ + +package edu.uga.cs.lsdis.meteors.wadls; + +import java.util.*; + +import javax.wadls.*; +import javax.xml.namespace.*; +import org.w3c.dom.*; + +/** + * This class represents an import, and may contain a reference + * to the imported definition. + * + * @author Matthew J. Duftler (duftler@us.ibm.com) + */ +public class IncludeImpl implements Include +{ + protected String namespaceURI = null; + protected String locationURI = null; + /* + This would need to be made into a generic reference to handle other + types of referenced documents. + */ + protected Application application = null; + protected Element docEl = null; + protected Map extensionAttributes = new HashMap(); + protected List nativeAttributeNames = + Arrays.asList(Constants.IMPORT_ATTR_NAMES); + + public static final long serialVersionUID = 1; + + public void setNamespaceURI(String namespaceURI) + { + this.namespaceURI = namespaceURI; + } + + public String getNamespaceURI() + { + return namespaceURI; + } + + public void setLocationURI(String locationURI) + { + this.locationURI = locationURI; + } + + public String getLocationURI() + { + return locationURI; + } + + /** + * This property can be used to hang a referenced Definition, + * and the top-level Definition (i.e. the one with the <import>) + * will use this Definition when resolving referenced WSDL parts. + * This would need to be made into a generic reference to handle + * other types of referenced documents. + */ + public void setApplication(Application application) + { + this.application = application; + } + + /** + * This property can be used to hang a referenced Definition, + * and the top-level Definition (i.e. the one with the <import>) + * will use this Definition when resolving referenced WSDL parts. + * This would need to be made into a generic reference to handle + * other types of referenced documents. + */ + public Application getApplication() + { + return application; + } + + /** + * Set the documentation element for this document. This dependency + * on org.w3c.dom.Element should eventually be removed when a more + * appropriate way of representing this information is employed. + * + * @param docEl the documentation element + */ + public void setDocumentationElement(Element docEl) + { + this.docEl = docEl; + } + + /** + * Get the documentation element. This dependency on org.w3c.dom.Element + * should eventually be removed when a more appropriate way of + * representing this information is employed. + * + * @return the documentation element + */ + public Element getDocumentationElement() + { + return docEl; + } + + /** + * Set an extension attribute on this element. Pass in a null value to remove + * an extension attribute. + * + * @param name the extension attribute name + * @param value the extension attribute value. Can be a String, a QName, a + * List of Strings, or a List of QNames. + * + * @see #getExtensionAttribute + * @see #getExtensionAttributes + * @see ExtensionRegistry#registerExtensionAttributeType + * @see ExtensionRegistry#queryExtensionAttributeType + */ + public void setExtensionAttribute(QName name, Object value) + { + if (value != null) + { + extensionAttributes.put(name, value); + } + else + { + extensionAttributes.remove(name); + } + } + + /** + * Retrieve an extension attribute from this element. If the extension + * attribute is not defined, null is returned. + * + * @param name the extension attribute name + * + * @return the value of the extension attribute, or null if + * it is not defined. Can be a String, a QName, a List of Strings, or a List + * of QNames. + * + * @see #setExtensionAttribute + * @see #getExtensionAttributes + * @see ExtensionRegistry#registerExtensionAttributeType + * @see ExtensionRegistry#queryExtensionAttributeType + */ + public Object getExtensionAttribute(QName name) + { + return extensionAttributes.get(name); + } + + /** + * Get the map containing all the extension attributes defined + * on this element. The keys are the qnames of the attributes. + * + * @return a map containing all the extension attributes defined + * on this element + * + * @see #setExtensionAttribute + * @see #getExtensionAttribute + */ + public Map getExtensionAttributes() + { + return extensionAttributes; + } + + /** + * Get the list of local attribute names defined for this element in + * the WSDL specification. + * + * @return a List of Strings, one for each local attribute name + */ + public List getNativeAttributeNames() + { + return nativeAttributeNames; + } + + public String toString() + { + StringBuffer strBuf = new StringBuffer(); + + strBuf.append("Import:"); + + if (namespaceURI != null) + { + strBuf.append("\nnamespaceURI=" + namespaceURI); + } + + if (locationURI != null) + { + strBuf.append("\nlocationURI=" + locationURI); + } + + if (application != null) + { + strBuf.append("\napplication=" + application); + } + + Iterator keys = extensionAttributes.keySet().iterator(); + + while (keys.hasNext()) + { + QName name = (QName)keys.next(); + + strBuf.append("\nextension attribute: " + name + "=" + + extensionAttributes.get(name)); + } + + return strBuf.toString(); + } +}
Binary file WebServiceToolWorkflow/lib/SAWADLParser/src/edu/uga/cs/lsdis/meteors/wadls/MethodImpl.class has changed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/lib/SAWADLParser/src/edu/uga/cs/lsdis/meteors/wadls/MethodImpl.java Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,274 @@ +/* + * (c) Copyright IBM Corp 2001, 2005 + */ + +package edu.uga.cs.lsdis.meteors.wadls; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Vector; +import javax.wadls.Effect; +import javax.wadls.Request; +import javax.wadls.ModelReference; +import javax.wadls.Method; +import javax.wadls.Response; +import javax.wadls.PreCondition; +import org.w3c.dom.Element; + +/** + * This class represents a WSDL operation. + * It includes information on input, output and fault + * messages associated with usage of the operation. + * + * @author Zixin Wu (wuzixin@uga.edu) + * @author Paul Fremantle (pzf@us.ibm.com) + * @author Nirmal Mukhi (nmukhi@us.ibm.com) + * @author Matthew J. Duftler (duftler@us.ibm.com) + */ +public class MethodImpl implements Method +{ + protected String name = null; + protected Request request = null; + protected Response response = null; + protected List<ModelReference> modelRefs = null; + protected PreCondition preCondition = null; + protected Effect effect = null; + protected List parameterOrder = null; + protected Element docEl = null; + protected List extElements = new Vector(); + protected boolean isUndefined = true; + + public static final long serialVersionUID = 1; + + + public void addModelReference (ModelReference modelReference){ + if (this.modelRefs == null) + modelRefs= new ArrayList<ModelReference> (); + modelRefs.add(modelReference); + } + + + /** + * Get the modelReference of this operation. + * + * @return the modelReference value + */ + + public ModelReference getModelReference(){ + if(modelRefs == null) + return null; + return modelRefs.get(0); + } + + /** + * Set the precondition of this operation. + * + * @param preCondition the desired precondition + */ + public void setPreCondition(PreCondition preCondition){ + this.preCondition = preCondition; + } + + /** + * Get the precondition of this operation. + * + * @return the precondition + */ + public PreCondition getPreCondition(){ + return this.preCondition; + } + + /** + * Set the effect of this operation. + * + * @param effect the desired effect + */ + public void setEffect(Effect effect){ + this.effect = effect; + } + + /** + * Get the effect of this operation. + * + * @return The effect + */ + public Effect getEffect(){ + return this.effect; + } + + /** + * Set the name of this operation. + * + * @param name the desired name + */ + public void setName(String name) + { + this.name = name; + } + + /** + * Get the name of this operation. + * + * @return the operation name + */ + public String getName() + { + return name; + } + + /** + * Set the input message specification for this operation. + * + * @param input the new input message + */ + public void setRequest(Request request) + { + this.request = request; + } + + /** + * Get the input message specification for this operation. + * + * @return the input message + */ + public Request getRequest() + { + return request; + } + + /** + * Set the output message specification for this operation. + * + * @param output the new output message + */ + public void setResponse(Response response) + { + this.response = response; + } + + /** + * Get the output message specification for this operation. + * + * @return the output message specification for the operation + */ + public Response getResponse() + { + return response; + } + + + + /** + * Set the parameter ordering for a request-response, + * or solicit-response operation. + * + * @param parameterOrder a list of named parameters + * containing the part names to reflect the desired + * order of parameters for RPC-style operations + */ + public void setParameterOrdering(List parameterOrder) + { + this.parameterOrder = parameterOrder; + } + + /** + * Get the parameter ordering for this operation. + * + * @return the parameter ordering, a list consisting + * of message part names + */ + public List getParameterOrdering() + { + return parameterOrder; + } + + /** + * Set the documentation element for this document. This dependency + * on org.w3c.dom.Element should eventually be removed when a more + * appropriate way of representing this information is employed. + * + * @param docEl the documentation element + */ + public void setDocumentationElement(Element docEl) + { + this.docEl = docEl; + } + + /** + * Get the documentation element. This dependency on org.w3c.dom.Element + * should eventually be removed when a more appropriate way of + * representing this information is employed. + * + * @return the documentation element + */ + public Element getDocumentationElement() + { + return docEl; + } + + public void setUndefined(boolean isUndefined) + { + this.isUndefined = isUndefined; + } + + public boolean isUndefined() + { + return isUndefined; + } + + public String toString() + { + StringBuffer strBuf = new StringBuffer(); + + strBuf.append("Operation: name=" + name); + + if (parameterOrder != null) + { + strBuf.append("\nparameterOrder=" + parameterOrder); + } + + + if (request != null) + { + strBuf.append("\n" + request); + } + + if (response != null) + { + strBuf.append("\n" + response); + } + + if (modelRefs != null) + for(ModelReference ref : modelRefs) { + strBuf.append('\n'); + strBuf.append(ref); + } + /* if (modelRef != null) + { + strBuf.append("\n" + modelRef); + }*/ + + if (preCondition != null) + { + strBuf.append("\n" + preCondition); + } + + if (effect != null) + { + strBuf.append("\n" + effect); + } + + return strBuf.toString(); + } + + public List<ModelReference> getModelReferences() { + return modelRefs; + } + + public void setModelReferences(List<ModelReference> refs) { + modelRefs = refs; + } +}
Binary file WebServiceToolWorkflow/lib/SAWADLParser/src/edu/uga/cs/lsdis/meteors/wadls/ModelReferenceImpl.class has changed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/lib/SAWADLParser/src/edu/uga/cs/lsdis/meteors/wadls/ModelReferenceImpl.java Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,217 @@ +package edu.uga.cs.lsdis.meteors.wadls; + +import java.net.URI; +import java.net.URISyntaxException; +import java.util.ArrayList; +import java.util.List; + +import javax.wadls.Application; +import javax.wadls.ModelReference; +import javax.wadls.WADLSException; + +/** + * This class represents a ModelReference. + * + * @author Zixin Wu (wuzixin@uga.edu) + * + */ +public class ModelReferenceImpl implements ModelReference { + + /** + * The URI of the ontology used in the model reference + */ + protected URI namespace; + + /** + * The parent WSDL-S element of this model reference + */ + protected Object parent; + + /** + * The NS Prefix of the model reference + */ + protected String prefix; + + /** + * The ontology concept of this model reference + */ + protected String concept; + + /** + * Get the concept of this modelReference. + * @return The concept of this modelReference. + */ + public String getConcept(){ + return this.concept; + } + + /** + * Set the concept of this modelReference + * @param concept The desired concept of this modelReference + */ + public void setConcept(String concept){ + this.concept = concept; + } + + /** + * Get the prefix of this modelReference + * @return The prefix of this modelReference + */ + public String getPrefix(){ + return this.prefix; + } + + /** + * Set the prefix of the ontology used in this modelReference + * @param prefix The desired prefix of the ontology used in this modelReference + */ + public void setPrefix(String prefix){ + this.prefix = prefix; + } + + /** + * Get the namespace of the ontology used in this modelReference + * @return The namespace of the ontology used in this modelReference + */ + public URI getNamespace(){ + return this.namespace; + } + + /** + * Set the namespace of the ontology used in this modelReference + * @param nameSpace The desired namespace of the ontology used in this modelReference + */ + public void setNamespace(String nameSpace) + throws URISyntaxException{ + //System.out.println("namespace is "+nameSpace); + this.namespace = new URI(nameSpace); + } + + /** + * Get the parent object of this modelReference + * @return The parent object of this modelReference + */ + public Object getParent(){ + return this.parent; + } + + /** + * Set the parent object of this modelReference + * @param parent The desired parent object of this modelReference + */ + public void setParent(Object parent){ + this.parent = parent; + } + + /** + * Return a formatted string representing this modelReference. + * @return A formatted string representing this modelReference. + */ + public String value(){ + if (this.concept == null || this.namespace == null) + return null; + return (this.namespace + "#" + this.concept); + } + + public String toString(){ + if (this.concept == null) + return null; + if (this.prefix != null){ //use the prefix + return (this.prefix + "#" + this.concept); + } + else if (this.namespace != null){ //use the namespace + return (this.namespace + "#" + this.concept); + } + else + return null; + } + + public static List<ModelReference> getModelReferences(String mrefs, Application app) throws URISyntaxException, WADLSException { + String[] refs = mrefs.split(" "); + List<ModelReference> list = new ArrayList<ModelReference>(refs.length); + for(String ref : refs) { + ModelReference mr = app.createModelReference(); + mr.valueOf(ref, app); + list.add(mr); + } + return list; + } + + public void valueOf(String modelReferenceAsString, Application app) throws URISyntaxException, WADLSException{ + int index = modelReferenceAsString.indexOf('#'); + String prefix = (index != -1) + ? modelReferenceAsString.substring(0, index) + : null; + String namespaceURI = prefix; + String localPart = null; + + //System.out.println("Namespace URI:"+namespaceURI); + //assume the user give prefix#localName + if (prefix != null){ + //try to find a namespaceURI for that prefix + String tmpNamespaceURI = app.getNamespace(prefix); + //System.out.println("Temp Namespace URI:"+tmpNamespaceURI); + if(tmpNamespaceURI != null) { //the user did give prefix + namespaceURI = tmpNamespaceURI.substring(0, tmpNamespaceURI.length()); + } + else{ //the user gave namespaceURI instead of prefix + //try to find a prefix for that namespaceURI + prefix = app.getPrefix(namespaceURI); + if (prefix == null) + prefix = app.getPrefix(namespaceURI+"#"); + } + localPart = modelReferenceAsString.substring(index + 1); + } + else if (!prefix.equals("")){ //no prefix or namespaceURI is given, but '#' is included + //use target namespace + namespaceURI = app.getTargetNamespace(); + prefix = app.getPrefix(namespaceURI); + localPart = modelReferenceAsString.substring(1); + } + else{ + throw new IllegalArgumentException( + "No Namespace URI is provided for this modelReference: " + + modelReferenceAsString + + "."); + } + + if (namespaceURI != null){ + System.out.println("namespaceURI is "+namespaceURI); + this.setNamespace(namespaceURI); + //System.out.println("Concept:"+localPart); + this.setConcept(localPart); + this.setPrefix(prefix); + } + else{ + String faultCode = (prefix == null) + ? WADLSException.NO_PREFIX_SPECIFIED + : WADLSException.UNBOUND_PREFIX; + + WADLSException wadlExc = new WADLSException(faultCode, + "Unable to determine " + + "namespace of '" + + modelReferenceAsString + "'."); + + throw wadlExc; + } + } + + /** + * Equals method overriden to compare two modelreferences. + * We campare the namespace and the concept name (literally) + * @param obj + */ + public boolean equals(Object obj) { + if (!(obj instanceof ModelReference)){ + return false; + }else{ + ModelReference ref = (ModelReference)obj; + return (concept.equals(ref.getConcept()) && + namespace.equals(ref.getNamespace())); + } + } + + public int hashCode(){ + return this.value().hashCode(); + } +}
Binary file WebServiceToolWorkflow/lib/SAWADLParser/src/edu/uga/cs/lsdis/meteors/wadls/OperationAddOnImpl.class has changed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/lib/SAWADLParser/src/edu/uga/cs/lsdis/meteors/wadls/OperationAddOnImpl.java Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,223 @@ +/* + * Created on Apr 4, 2005 + * + */ +package edu.uga.cs.lsdis.meteors.wadls; + +import java.util.*; + +import javax.wadls.*; +import javax.xml.namespace.*; + +import org.w3c.dom.*; + +/** + * This class represents an instance of PreCondition or Effect, + * + * @author Zixin Wu + */ +public class OperationAddOnImpl implements PreCondition, Effect +{ + protected String name = null; + protected List<ModelReference> modelReferences = null; + protected String expression = null; + protected Element docEl = null; + protected Map extensionAttributes = new HashMap(); + protected List nativeAttributeNames = + Arrays.asList(Constants.OPADDON_ATTR_NAMES); + + public static final long serialVersionUID = 1; + + /** + * Set the name. + * + * @param name the desired name + */ + public void setName(String name) + { + this.name = name; + } + + /** + * Get the name. + * + * @return the name + */ + public String getName() + { + return name; + } + + /** + * Get the modelReference. + * + * @return The modelReference + */ + public ModelReference getModelReference(){ + if(modelReferences == null) + return null; + return modelReferences.get(0); + } + + /** + * Set the modelReference. + * + * @param modelReference The desired modelReference. + */ + public void addModelReference(ModelReference modelReference){ + if(modelReferences == null) + modelReferences = new ArrayList<ModelReference>(); + modelReferences.add(0, modelReference); + } + + /** + * Set the expression. + * + * @param expression The desired expression. + */ + public void setExpression(String expression){ + this.expression = expression; + } + + /** + * Get the expression. + * + * @return The expression. + */ + public String getExpression(){ + return this.expression; + } + + /** + * Set the documentation element for this document. This dependency + * on org.w3c.dom.Element should eventually be removed when a more + * appropriate way of representing this information is employed. + * + * @param docEl the documentation element + */ + public void setDocumentationElement(Element docEl) + { + this.docEl = docEl; + } + + /** + * Get the documentation element. This dependency on org.w3c.dom.Element + * should eventually be removed when a more appropriate way of + * representing this information is employed. + * + * @return the documentation element + */ + public Element getDocumentationElement() + { + return docEl; + } + + /** + * Set an extension attribute on this element. Pass in a null value to remove + * an extension attribute. + * + * @param name the extension attribute name + * @param value the extension attribute value. Can be a String, a QName, a + * List of Strings, or a List of QNames. + * + * @see #getExtensionAttribute + * @see #getExtensionAttributes + * @see ExtensionRegistry#registerExtensionAttributeType + * @see ExtensionRegistry#queryExtensionAttributeType + */ + public void setExtensionAttribute(QName name, Object value) + { + if (value != null) + { + extensionAttributes.put(name, value); + } + else + { + extensionAttributes.remove(name); + } + } + + /** + * Retrieve an extension attribute from this element. If the extension + * attribute is not defined, null is returned. + * + * @param name the extension attribute name + * + * @return the value of the extension attribute, or null if + * it is not defined. Can be a String, a QName, a List of Strings, or a List + * of QNames. + * + * @see #setExtensionAttribute + * @see #getExtensionAttributes + * @see ExtensionRegistry#registerExtensionAttributeType + * @see ExtensionRegistry#queryExtensionAttributeType + */ + public Object getExtensionAttribute(QName name) + { + return extensionAttributes.get(name); + } + + /** + * Get the map containing all the extension attributes defined + * on this element. The keys are the qnames of the attributes. + * + * @return a map containing all the extension attributes defined + * on this element + * + * @see #setExtensionAttribute + * @see #getExtensionAttribute + */ + public Map getExtensionAttributes() + { + return extensionAttributes; + } + + /** + * Get the list of local attribute names defined for this element in + * the WSDLS specification. + * + * @return a List of Strings, one for each local attribute name + */ + public List getNativeAttributeNames() + { + return nativeAttributeNames; + } + + public String toString() + { + StringBuffer strBuf = new StringBuffer(); + + strBuf.append("name=" + name); + + strBuf.append("\nmodelReference="); + for(ModelReference ref : modelReferences) { + strBuf.append(ref.toString()); + strBuf.append('\n'); + } + + if (expression != null) + { + strBuf.append("\nexpression=" + expression); + } + +// Iterator keys = extensionAttributes.keySet().iterator(); +// +// while (keys.hasNext()) +// { +// QName name = (QName)keys.next(); +// +// strBuf.append("\nextension attribute: " + name + "=" + +// extensionAttributes.get(name)); +// } + + return strBuf.toString(); + } + + public List<ModelReference> getModelReferences() { + return modelReferences; + } + + public void setModelReferences(List<ModelReference> refs) { + modelReferences = refs; + } +}
Binary file WebServiceToolWorkflow/lib/SAWADLParser/src/edu/uga/cs/lsdis/meteors/wadls/ParamImpl.class has changed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/lib/SAWADLParser/src/edu/uga/cs/lsdis/meteors/wadls/ParamImpl.java Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,212 @@ +/* + * Copyright (c) 2009 Srikalyan Swayampakula.. All rights reserved. + * + * Author : Srikalyan Swayampakula. . + * Name of the File : Param.java . + * Created on : Nov 22, 2009 at 4:03:57 PM . + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above + * copyright notice, this list of conditions and the following + * disclaimer. + * 2. Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials + * provided with the distribution. + * 3. Neither the name of the University of Georgia nor the names + * of its contributors may be used to endorse or promote + * products derived from this software without specific prior + * written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package edu.uga.cs.lsdis.meteors.wadls; + +import java.net.URI; +import java.util.ArrayList; +import java.util.List; +import java.util.Vector; + +import javax.wadls.Param; + +/** + * + * @author Srikalyan Swayampakula. + */ +public class ParamImpl implements Param +{ + + List<String> optionvalue = new Vector(); + protected String name; + protected String style; + protected String id; + protected String type; + protected String default1; + protected String required = "false"; + protected boolean repeation = false; + protected String fixed; + protected String path; + protected String modelreference =null; + protected String liftingschemamapping=null; + protected String loweringschemamapping=null; + + + + public String getModelreference() { + return modelreference; + } + + public void setModelreference(String modelreference) { + this.modelreference = modelreference; + } + + public String getLiftingschemamapping() { + return liftingschemamapping; + } + + public void setLiftingschemamapping(String liftingschemamapping) { + this.liftingschemamapping = liftingschemamapping; + } + + public String getLoweringschemamapping() { + return loweringschemamapping; + } + + public void setLoweringschemamapping(String loweringschemamapping) { + this.loweringschemamapping = loweringschemamapping; + } + + public List<String> getOptionvalue() { + return optionvalue; + } + + public void setOptionvalue(List<String> optionvalue) { + this.optionvalue = optionvalue; + } + + public ParamImpl() + { + } + + public ParamImpl(URI href, String name, String style, String id, String type, String default1, String fixed, String path) + { + + + this.name = name; + this.style = style; + this.id = id; + this.type = type; + this.default1 = default1; + this.fixed = fixed; + this.path = path; + } + + public String getDefault1() + { + return default1; + } + + public void setDefault1(String default1) + { + this.default1 = default1; + } + + + + public String getFixed() + { + return fixed; + } + + public void setFixed(String fixed) + { + this.fixed = fixed; + } + + + public String getId() + { + return id; + } + + public void setId(String id) + { + this.id = id; + } + + public String getName() + { + return name; + } + + public void setName(String name) + { + this.name = name; + } + + + public String getPath() + { + return path; + } + + public void setPath(String path) + { + this.path = path; + } + + public boolean isRepeation() + { + return repeation; + } + + public void setRepeation(boolean repeation) + { + this.repeation = repeation; + } + + public String getRequired() + { + return required; + } + + public void setRequired(String required) + { + this.required = required; + } + + public String getStyle() + { + return style; + } + + public void setStyle(String style) + { + this.style = style; + } + + public String getType() + { + return type; + } + + public void setType(String type) + { + this.type = type; + } +}
Binary file WebServiceToolWorkflow/lib/SAWADLParser/src/edu/uga/cs/lsdis/meteors/wadls/ParamsImpl.class has changed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/lib/SAWADLParser/src/edu/uga/cs/lsdis/meteors/wadls/ParamsImpl.java Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,347 @@ +package edu.uga.cs.lsdis.meteors.wadls; + +import java.net.URISyntaxException; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Vector; + +import javax.wadls.Application; +import javax.wadls.ModelReference; +import javax.wadls.Params; +import javax.wadls.WADLSException; +import javax.wadls.extensions.schema.Schema; +import javax.xml.namespace.QName; + +import org.w3c.dom.Attr; +import org.w3c.dom.Element; + +import edu.uga.cs.lsdis.meteors.wadls.util.SchemaUtils; + +/** + * This class represents the <types> section of a WSDL document. + * + * @author Zixin Wu (wuzixin@uga.edu) + * @author Matthew J. Duftler (duftler@us.ibm.com) + */ +public class ParamsImpl implements Params +{ + protected List<ModelReference> modelRefs = null; + protected Application app = null; //WSDLS Definition + protected Element docEl = null; + protected List extElements = new Vector(); + protected Map allSchemas = null; + + public static final long serialVersionUID = 1; + + public ParamsImpl(Application app){ + this.app = app; + } + + public List getTopLevelSchemas(){ + return SchemaUtils.getSchemas(this.extElements); + } + + /** + * Get the DOM elements of all the schemas in this Types. + * @return A list of DOM elements of all the schemas in this Types. + */ + public Map getSchemas(){ + return this.allSchemas; + } + + public void setSchemas(Map allSchemas){ + this.allSchemas = allSchemas; + } + + + + public void addModelReference (ModelReference modelReference){ + if (this.modelRefs == null) + modelRefs= new ArrayList<ModelReference> (); + modelRefs.add(modelReference); + } + + + /** + * Get the modelReference of this operation. + * + * @return the modelReference value + */ + + public ModelReference getModelReference(){ + if(modelRefs == null) + return null; + return modelRefs.get(0); + } + /** + * Get the DOM element of the first schema in this Types. + * @return The DOM element of the first schema in this Types. + */ + public Schema getFirstSchema(){ + return SchemaUtils.getFirstSchema(this.extElements); + } + public List<ModelReference> getModelReferences() { + return modelRefs; + } + public void setModelReferences(List<ModelReference> refs) { + modelRefs = refs; + } + /** + * Get the XSD simpleType with the given name. + * @param name The QName of the type + * @return A DOM Element representing the simpleType + * @throws WADLSException + */ + + public Element getXSDElement(String xpath) throws WADLSException{ + Element returnElt = null; + Map schemas = this.getSchemas(); + Iterator it = schemas.values().iterator(); + while(it.hasNext()){ + Schema schema = (Schema)(it.next()); + Element schemaEle = schema.getElement(); + returnElt = this.getXSDElement(schemaEle, xpath); + if (returnElt != null) + return returnElt; + } + return null; + } + + /** + * Get the modelReference on the element located by the given path. + * @param startElement The starting element of the path + * @param path + * @return The modelReference + */ + public ModelReference getModelReference(Element startElement, String path, Application app) throws WADLSException, URISyntaxException{ + List<ModelReference> mrefs = getModelReferences(startElement, path, app); + return mrefs.get(0); + } + + /** + * Set the modelReference on the element located by the given path. + * @param startElement The starting element of the path + * @param path + * @param modelReference The desired modelReference + */ + public void addModelReference(Element startElement, String path, ModelReference modelReference) throws WADLSException{ + Element el = getXSDEle(startElement, path); + + if (modelReference != null){ + String strModelReference = modelReference.value(); + Attr attr = el.getAttributeNodeNS( + Constants.NS_URI_WADLS, Constants.ATTR_MODELREF); + if(attr == null) { + attr = el.getOwnerDocument().createAttributeNS(Constants.NS_URI_WADLS, Constants.ATTR_MODELREF); + attr.setPrefix(Constants.PREFIX_WSDLS); + el.setAttributeNodeNS(attr); + } + String value = attr.getValue(); + if(value != null) { + value += " " + strModelReference; + } else { + value = strModelReference; + } + attr.setValue(value); + modelReference.setParent(el); + } + else + el.removeAttributeNS(Constants.NS_URI_WADLS, Constants.ATTR_MODELREF); + } + + /** + * Get the liftingSchemaMapping on the element located by the given path. + * @param startElement The starting element of the path + * @param path + * @return The schemaMapping value + */ + public String getLiftingSchemaMapping(Element startElement, String path) throws WADLSException{ + Element el = getXSDEle(startElement, path); + if (el == null) + return null; + String attrSchemaMapping = el.getAttributeNS(Constants.NS_URI_WADLS, Constants.ATTR_LIFTINGSCHEMAMAPPING); + if (attrSchemaMapping == "") + return null; + return attrSchemaMapping; + } + + /** + * Get the loweringSchemaMapping on the element located by the given path. + * @param startElement The starting element of the path + * @param path + * @return The schemaMapping value + */ + public String getLoweringSchemaMapping(Element startElement, String path) throws WADLSException{ + Element el = getXSDEle(startElement, path); + if (el == null) + return null; + String attrSchemaMapping = el.getAttributeNS(Constants.NS_URI_WADLS, Constants.ATTR_LOWERINGSCHEMAMAPPING); + if (attrSchemaMapping == "") + return null; + return attrSchemaMapping; + } + + /** + * Set the liftingSchemaMapping on the element located by the given path. + * @param startElement The starting element of the path + * @param path + * @param schemaMapping The desired schemaMapping + */ + public void setLiftingSchemaMapping(Element startElement, String path, String schemaMapping) throws WADLSException{ + Element el = getXSDEle(startElement, path); + if (schemaMapping != null){ + Attr attr = el.getOwnerDocument().createAttributeNS(Constants.NS_URI_WADLS, Constants.ATTR_LIFTINGSCHEMAMAPPING); + attr.setPrefix(Constants.PREFIX_WSDLS); + attr.setValue(schemaMapping); + el.setAttributeNodeNS(attr); + } + else + el.removeAttributeNS(Constants.NS_URI_WADLS, Constants.ATTR_LIFTINGSCHEMAMAPPING); + } + + /** + * Set the loweringSchemaMapping on the element located by the given path. + * @param startElement The starting element of the path + * @param path + * @param schemaMapping The desired schemaMapping + */ + public void setLoweringSchemaMapping(Element startElement, String path, String schemaMapping) throws WADLSException{ + Element el = getXSDEle(startElement, path); + if (schemaMapping != null){ + Attr attr = el.getOwnerDocument().createAttributeNS(Constants.NS_URI_WADLS, Constants.ATTR_LOWERINGSCHEMAMAPPING); + attr.setPrefix(Constants.PREFIX_WSDLS); + attr.setValue(schemaMapping); + el.setAttributeNodeNS(attr); + } + else + el.removeAttributeNS(Constants.NS_URI_WADLS, Constants.ATTR_LOWERINGSCHEMAMAPPING); + } + + private Element getXSDEle(Element startElement, String path) throws WADLSException{ + if (path == null || path == "") + return startElement; + String eleName = startElement.getLocalName(); + if (eleName.equals("element")){ //search the target from <element ... + return SchemaUtils.findXSDEleOnEle(startElement, path, this); + } + else if (eleName.equals("complexType")){ //search the target from <complexType ... + return SchemaUtils.findXSDEleOnComplexType(startElement, path, this); + } + else{ //error + WADLSException wsdlsExc = new WADLSException(WADLSException.PATH_ERROR, + "simpleType cannot has path"); + throw wsdlsExc; + } + } + + /** + * Return an XML Schema Element by locating it from the XSD Element startElement and using the path. + * @param startElement + * @param path + * @return an XML Schema Element + * @throws WADLSException + */ + public Element getXSDElement(Element startElement, String path) throws WADLSException{ + return SchemaUtils.findXSDEleOnEle(startElement, path, this); + } + + /** + * Return a list of XSD elements contained in the ComplexType startElement, search in only 1 level depth. + * @param startXSDElement + * @return A list of XSD elements contained in the startElement. If no XSD element is contained, the list has 0 element. + * @throws WADLSException + */ + public List getXSDElementsInComplexType(Element startXSDElement) throws WADLSException{ + return SchemaUtils.listXSDElesInComplexType(startXSDElement); + } + + /** + * Return a list of XSD elements contained in the startElement, search in only 1 level depth. + * @param startXSDComplexType + * @return A list of XSD elements contained in the startElement. If no XSD element is contained, the list has 0 element. + * @throws WADLSException + */ + public List getXSDElementsInElement(Element startXSDComplexType) throws WADLSException{ + return SchemaUtils.listXSDElesInEle(startXSDComplexType, this); + } + + + + /** + * Set the documentation element for this document. This dependency + * on org.w3c.dom.Element should eventually be removed when a more + * appropriate way of representing this information is employed. + * + * @param docEl the documentation element + */ + public void setDocumentationElement(Element docEl) + { + this.docEl = docEl; + } + + /** + * Get the documentation element. This dependency on org.w3c.dom.Element + * should eventually be removed when a more appropriate way of + * representing this information is employed. + * + * @return the documentation element + */ + public Element getDocumentationElement() + { + return docEl; + } + + /** + * Add an extensibility element. + * + * @param extElement the extensibility element to be added + */ + + + /** + * Get all the extensibility elements defined here. + */ + public List getExtensibilityElements() + { + return extElements; + } + + public String toString() + { + StringBuffer strBuf = new StringBuffer(); + + strBuf.append("Types:"); + + if (extElements != null) + { + Iterator extIterator = extElements.iterator(); + + while (extIterator.hasNext()) + { + strBuf.append("\n" + extIterator.next()); + } + } + + return strBuf.toString(); + } + + public List<ModelReference> getModelReferences(Element startElement, String path, Application app) throws WADLSException, URISyntaxException { + Element el = getXSDEle(startElement, path); + if (el == null) + return null; + String attrModelReference = el.getAttributeNS(Constants.NS_URI_WADLS, Constants.ATTR_MODELREF); + if (attrModelReference.equals("")) + return null; + List<ModelReference> mrefs = ModelReferenceImpl.getModelReferences(attrModelReference, app); + if(mrefs.size() == 0) + return null; + return mrefs; + } + public void setModelReferences(Element startElement, String path, List<ModelReference> refs) throws WADLSException { + for(ModelReference ref : refs) { + addModelReference(startElement, path, ref); + } + } +}
Binary file WebServiceToolWorkflow/lib/SAWADLParser/src/edu/uga/cs/lsdis/meteors/wadls/RequestImpl.class has changed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/lib/SAWADLParser/src/edu/uga/cs/lsdis/meteors/wadls/RequestImpl.java Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,205 @@ +/* + * (c) Copyright IBM Corp 2001, 2005 + */ + +package edu.uga.cs.lsdis.meteors.wadls; + +import java.util.*; + +import javax.wadls.*; +import javax.wadls.ModelReference; +import javax.xml.namespace.*; +import org.w3c.dom.*; + +/** + * This class represents an input message, and contains the name + * of the input and the message itself. + * + * @author Matthew J. Duftler + */ +public class RequestImpl implements Request +{ + protected String name = null; + List<String> inputXSDList = new Vector(); + List<ParamImpl> paramList = new Vector(); + protected List<ModelReference> modelReferences = null; + protected Element docEl = null; + protected Map extensionAttributes = new HashMap(); + protected List nativeAttributeNames = + Arrays.asList(Constants.INPUT_ATTR_NAMES); + + public static final long serialVersionUID = 1; + + /** + * Set the name of this input message. + * + * @param name the desired name + */ + public void setName(String name) + { + this.name = name; + } + public List<ModelReference> getModelReferences() { + return modelReferences; + } + + public void setModelReferences(List<ModelReference> refs) { + modelReferences = refs; + } + public ModelReference getModelReference(){ + if(modelReferences == null) + return null; + return modelReferences.get(0); + } + + /** + * Set the modelReference. + * + * @param modelReference The desired modelReference. + */ + public void addModelReference(ModelReference modelReference){ + if(modelReferences == null) + modelReferences = new ArrayList<ModelReference>(); + modelReferences.add(0, modelReference); + } + /** + * Get the name of this input message. + * + * @return the input message name + */ + public String getName() + { + return name; + } + + public void setInputXSDList(List inputXSDList){ + this.inputXSDList=inputXSDList; + } + public List getInputXSDList(){ + + return this.inputXSDList; + } + + + public void setParamList(List paramList){ + this.paramList=paramList; + } + public List getParamList(){ + + return this.paramList; + } + + /** + * Set the documentation element for this document. This dependency + * on org.w3c.dom.Element should eventually be removed when a more + * appropriate way of representing this information is employed. + * + * @param docEl the documentation element + */ + public void setDocumentationElement(Element docEl) + { + this.docEl = docEl; + } + + /** + * Get the documentation element. This dependency on org.w3c.dom.Element + * should eventually be removed when a more appropriate way of + * representing this information is employed. + * + * @return the documentation element + */ + public Element getDocumentationElement() + { + return docEl; + } + + /** + * Set an extension attribute on this element. Pass in a null value to remove + * an extension attribute. + * + * @param name the extension attribute name + * @param value the extension attribute value. Can be a String, a QName, a + * List of Strings, or a List of QNames. + * + * @see #getExtensionAttribute + * @see #getExtensionAttributes + * @see ExtensionRegistry#registerExtensionAttributeType + * @see ExtensionRegistry#queryExtensionAttributeType + */ + public void setExtensionAttribute(QName name, Object value) + { + if (value != null) + { + extensionAttributes.put(name, value); + } + else + { + extensionAttributes.remove(name); + } + } + + /** + * Retrieve an extension attribute from this element. If the extension + * attribute is not defined, null is returned. + * + * @param name the extension attribute name + * + * @return the value of the extension attribute, or null if + * it is not defined. Can be a String, a QName, a List of Strings, or a List + * of QNames. + * + * @see #setExtensionAttribute + * @see #getExtensionAttributes + * @see ExtensionRegistry#registerExtensionAttributeType + * @see ExtensionRegistry#queryExtensionAttributeType + */ + public Object getExtensionAttribute(QName name) + { + return extensionAttributes.get(name); + } + + /** + * Get the map containing all the extension attributes defined + * on this element. The keys are the qnames of the attributes. + * + * @return a map containing all the extension attributes defined + * on this element + * + * @see #setExtensionAttribute + * @see #getExtensionAttribute + */ + public Map getExtensionAttributes() + { + return extensionAttributes; + } + + /** + * Get the list of local attribute names defined for this element in + * the WSDL specification. + * + * @return a List of Strings, one for each local attribute name + */ + public List getNativeAttributeNames() + { + return nativeAttributeNames; + } + + public String toString() + { + StringBuffer strBuf = new StringBuffer(); + + strBuf.append("Input: name=" + name); + + Iterator keys = extensionAttributes.keySet().iterator(); + + while (keys.hasNext()) + { + QName name = (QName)keys.next(); + + strBuf.append("\nextension attribute: " + name + "=" + + extensionAttributes.get(name)); + } + + return strBuf.toString(); + } +}
Binary file WebServiceToolWorkflow/lib/SAWADLParser/src/edu/uga/cs/lsdis/meteors/wadls/ResourceImpl.class has changed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/lib/SAWADLParser/src/edu/uga/cs/lsdis/meteors/wadls/ResourceImpl.java Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,364 @@ +/* + * (c) Copyright IBM Corp 2001, 2005 + */ + +package edu.uga.cs.lsdis.meteors.wadls; + +import java.util.*; + +import javax.wadls.*; +import javax.wadls.ModelReference; +import javax.xml.namespace.*; +import org.w3c.dom.*; + +/** + * This class represents a port type. It contains information about + * operations associated with this port type. + * + * @author Paul Fremantle + * @author Nirmal Mukhi + * @author Matthew J. Duftler + * @author Zixin Wu + */ +public class ResourceImpl implements Resource +{ + protected QName name = null; + protected List<ModelReference> modelReferences = null; + protected List methods = new Vector(); + protected List categories = new Vector(); + protected Element docEl = null; + protected Map extensionAttributes = new HashMap(); + protected List nativeAttributeNames = + Arrays.asList(Constants.PORT_TYPE_ATTR_NAMES); + protected boolean isUndefined = true; + + public static final long serialVersionUID = 1; + + + /** + * Get the category specifications in this portType. + * @return All the categories in this portType. + */ + public List getCategories() + { + return this.categories; + } + + /** + * Set the name of this port type. + * + * @param name the desired name + */ + public void setQName(QName name) + { + this.name = name; + } + + /** + * Get the name of this port type. + * + * @return the port type name + */ + public QName getQName() + { + return name; + } + + /** + * Add an operation to this port type. + * + * @param operation the operation to be added + */ + public void addMethod(Method operation) + { + methods.add(operation); + } + + /** + * Get the specified operation. Note that operation names can + * be overloaded within a PortType. In case of overloading, the + * names of the input and output messages can be used to further + * refine the search. + * + * @param name the name of the desired operation. + * @param inputName the name of the input message; if this is null + * it will be ignored. + * @param outputName the name of the output message; if this is null + * it will be ignored. + * @return the corresponding operation, or null if there wasn't + * any matching operation + */ + public Method getMethod(String name, + String inputName, + String outputName) + { + boolean found = false; + Method ret = null; + Iterator opIterator = methods.iterator(); + + while (opIterator.hasNext()) + { + Method op = (Method)opIterator.next(); + String opName = op.getName(); + + if (name != null && opName != null) + { + if (!name.equals(opName)) + { + op = null; + } + } + else if (name != null || opName != null) + { + op = null; + } + + if (op != null && inputName != null) + { + + String defaultInputName = opName; + defaultInputName = opName + "Request"; + boolean specifiedDefault = inputName.equals(defaultInputName); + Request input = op.getRequest(); + + if (input != null) + { + String opInputName = input.getName(); + + if (opInputName == null) + { + if (!specifiedDefault) + { + op = null; + } + } + else if (!opInputName.equals(inputName)) + { + op = null; + } + } + else + { + op = null; + } + } + + if (op != null && outputName != null) + { + String defaultOutputName = opName; + defaultOutputName = opName + "Response"; + boolean specifiedDefault = outputName.equals(defaultOutputName); + Response output = op.getResponse(); + + if (output != null) + { + String opOutputName = output.getName(); + + if (opOutputName == null) + { + if (!specifiedDefault) + { + op = null; + } + } + else if (!opOutputName.equals(outputName)) + { + op = null; + } + } + else + { + op = null; + } + } + + if (op != null) + { + if (found) + { + throw new IllegalArgumentException("Duplicate operation with " + + "name=" + name + + (inputName != null + ? ", inputName=" + inputName + : "") + + (outputName != null + ? ", outputName=" + outputName + : "") + + ", found in portType '" + + getQName() + "'."); + } + else + { + found = true; + ret = op; + } + } + } + + return ret; + } + public ModelReference getModelReference(){ + if(modelReferences == null) + return null; + return modelReferences.get(0); + } + + /** + * Set the modelReference. + * + * @param modelReference The desired modelReference. + */ + public void addModelReference(ModelReference modelReference){ + if(modelReferences == null) + modelReferences = new ArrayList<ModelReference>(); + modelReferences.add(0, modelReference); + } + public List<ModelReference> getModelReferences() { + return modelReferences; + } + + public void setModelReferences(List<ModelReference> refs) { + modelReferences = refs; + } + /** + * Get all the operations defined here. + */ + public List getMethods() + { + return methods; + } + + /** + * Set the documentation element for this document. This dependency + * on org.w3c.dom.Element should eventually be removed when a more + * appropriate way of representing this information is employed. + * + * @param docEl the documentation element + */ + public void setDocumentationElement(Element docEl) + { + this.docEl = docEl; + } + + /** + * Get the documentation element. This dependency on org.w3c.dom.Element + * should eventually be removed when a more appropriate way of + * representing this information is employed. + * + * @return the documentation element + */ + public Element getDocumentationElement() + { + return docEl; + } + + public void setUndefined(boolean isUndefined) + { + this.isUndefined = isUndefined; + } + + public boolean isUndefined() + { + return isUndefined; + } + + /** + * Set an extension attribute on this element. Pass in a null value to remove + * an extension attribute. + * + * @param name the extension attribute name + * @param value the extension attribute value. Can be a String, a QName, a + * List of Strings, or a List of QNames. + * + * @see #getExtensionAttribute + * @see #getExtensionAttributes + * @see ExtensionRegistry#registerExtensionAttributeType + * @see ExtensionRegistry#queryExtensionAttributeType + */ + public void setExtensionAttribute(QName name, Object value) + { + if (value != null) + { + extensionAttributes.put(name, value); + } + else + { + extensionAttributes.remove(name); + } + } + + /** + * Retrieve an extension attribute from this element. If the extension + * attribute is not defined, null is returned. + * + * @param name the extension attribute name + * + * @return the value of the extension attribute, or null if + * it is not defined. Can be a String, a QName, a List of Strings, or a List + * of QNames. + * + * @see #setExtensionAttribute + * @see #getExtensionAttributes + * @see ExtensionRegistry#registerExtensionAttributeType + * @see ExtensionRegistry#queryExtensionAttributeType + */ + public Object getExtensionAttribute(QName name) + { + return extensionAttributes.get(name); + } + + /** + * Get the map containing all the extension attributes defined + * on this element. The keys are the qnames of the attributes. + * + * @return a map containing all the extension attributes defined + * on this element + * + * @see #setExtensionAttribute + * @see #getExtensionAttribute + */ + public Map getExtensionAttributes() + { + return extensionAttributes; + } + + /** + * Get the list of local attribute names defined for this element in + * the WSDL specification. + * + * @return a List of Strings, one for each local attribute name + */ + public List getNativeAttributeNames() + { + return nativeAttributeNames; + } + + public String toString() + { + StringBuffer strBuf = new StringBuffer(); + + strBuf.append("PortType: name=" + name); + + if (methods != null) + { + Iterator opIterator = methods.iterator(); + + while (opIterator.hasNext()) + { + strBuf.append("\n" + opIterator.next()); + } + } + + Iterator keys = extensionAttributes.keySet().iterator(); + + while (keys.hasNext()) + { + QName name = (QName)keys.next(); + + strBuf.append("\nextension attribute: " + name + "=" + + extensionAttributes.get(name)); + } + + return strBuf.toString(); + } +}
Binary file WebServiceToolWorkflow/lib/SAWADLParser/src/edu/uga/cs/lsdis/meteors/wadls/ResponseImpl.class has changed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/lib/SAWADLParser/src/edu/uga/cs/lsdis/meteors/wadls/ResponseImpl.java Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,205 @@ +/* + * (c) Copyright IBM Corp 2001, 2005 + */ + +package edu.uga.cs.lsdis.meteors.wadls; + +import java.util.*; + +import javax.wadls.*; +import javax.xml.namespace.*; +import org.w3c.dom.*; + +/** + * This class represents an output message, and contains the name + * of the output and the message itself. + * + * @author Matthew J. Duftler + */ +public class ResponseImpl implements Response +{ + protected String name = null; + List<String> inputXSDList = new Vector(); + List<ParamImpl> paramList = new Vector(); + protected List<ModelReference> modelReferences = null; + protected Element docEl = null; + protected Map extensionAttributes = new HashMap(); + protected List nativeAttributeNames = + Arrays.asList(Constants.OUTPUT_ATTR_NAMES); + + public static final long serialVersionUID = 1; + + /** + * Set the name of this output message. + * + * @param name the desired name + */ + public void setName(String name) + { + this.name = name; + } + + public void setInputXSDList(List inputXSDList){ + this.inputXSDList=inputXSDList; + } + public List getInputXSDList(){ + + return this.inputXSDList; + } + + + public void setParamList(List paramList){ + this.paramList=paramList; + } + public List getParamList(){ + + return this.paramList; + } + /** + * Get the name of this output message. + * + * @return the output message name + */ + public String getName() + { + return name; + } + + + /** + * Set the documentation element for this document. This dependency + * on org.w3c.dom.Element should eventually be removed when a more + * appropriate way of representing this information is employed. + * + * @param docEl the documentation element + */ + public void setDocumentationElement(Element docEl) + { + this.docEl = docEl; + } + public ModelReference getModelReference(){ + if(modelReferences == null) + return null; + return modelReferences.get(0); + } + + /** + * Set the modelReference. + * + * @param modelReference The desired modelReference. + */ + public void addModelReference(ModelReference modelReference){ + if(modelReferences == null) + modelReferences = new ArrayList<ModelReference>(); + modelReferences.add(0, modelReference); + } + public List<ModelReference> getModelReferences() { + return modelReferences; + } + + public void setModelReferences(List<ModelReference> refs) { + modelReferences = refs; + } + /** + * Get the documentation element. This dependency on org.w3c.dom.Element + * should eventually be removed when a more appropriate way of + * representing this information is employed. + * + * @return the documentation element + */ + public Element getDocumentationElement() + { + return docEl; + } + + /** + * Set an extension attribute on this element. Pass in a null value to remove + * an extension attribute. + * + * @param name the extension attribute name + * @param value the extension attribute value. Can be a String, a QName, a + * List of Strings, or a List of QNames. + * + * @see #getExtensionAttribute + * @see #getExtensionAttributes + * @see ExtensionRegistry#registerExtensionAttributeType + * @see ExtensionRegistry#queryExtensionAttributeType + */ + public void setExtensionAttribute(QName name, Object value) + { + if (value != null) + { + extensionAttributes.put(name, value); + } + else + { + extensionAttributes.remove(name); + } + } + + /** + * Retrieve an extension attribute from this element. If the extension + * attribute is not defined, null is returned. + * + * @param name the extension attribute name + * + * @return the value of the extension attribute, or null if + * it is not defined. Can be a String, a QName, a List of Strings, or a List + * of QNames. + * + * @see #setExtensionAttribute + * @see #getExtensionAttributes + * @see ExtensionRegistry#registerExtensionAttributeType + * @see ExtensionRegistry#queryExtensionAttributeType + */ + public Object getExtensionAttribute(QName name) + { + return extensionAttributes.get(name); + } + + /** + * Get the map containing all the extension attributes defined + * on this element. The keys are the qnames of the attributes. + * + * @return a map containing all the extension attributes defined + * on this element + * + * @see #setExtensionAttribute + * @see #getExtensionAttribute + */ + public Map getExtensionAttributes() + { + return extensionAttributes; + } + + /** + * Get the list of local attribute names defined for this element in + * the WSDL specification. + * + * @return a List of Strings, one for each local attribute name + */ + public List getNativeAttributeNames() + { + return nativeAttributeNames; + } + + public String toString() + { + StringBuffer strBuf = new StringBuffer(); + + strBuf.append("Output: name=" + name); + + + Iterator keys = extensionAttributes.keySet().iterator(); + + while (keys.hasNext()) + { + QName name = (QName)keys.next(); + + strBuf.append("\nextension attribute: " + name + "=" + + extensionAttributes.get(name)); + } + + return strBuf.toString(); + } +}
Binary file WebServiceToolWorkflow/lib/SAWADLParser/src/edu/uga/cs/lsdis/meteors/wadls/SAWADLParserDriver.class has changed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/lib/SAWADLParser/src/edu/uga/cs/lsdis/meteors/wadls/SAWADLParserDriver.java Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,153 @@ +package edu.uga.cs.lsdis.meteors.wadls; + +import java.net.MalformedURLException; +import java.net.URL; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Vector; + +import javax.wadls.Application; +import javax.wadls.Method; +import javax.wadls.Param; +import javax.wadls.Request; +import javax.wadls.Resource; +import javax.wadls.WADLSException; +import javax.wadls.factory.WADLFactory; +import javax.wadls.xml.WADLReader; +import javax.xml.namespace.QName; + + +public class SAWADLParserDriver { + + + private List<Method> completeMethodList = new ArrayList<Method>(); + private List<String> url = new ArrayList<String>(); + private List<String> paramList = new ArrayList<String>(); + private List<String> paramTypeList = new ArrayList<String>(); + private List<String> paramModelRef = new ArrayList<String>(); + private Application application; + + + public List<Method> getCompleteMethodList() { + return completeMethodList; + } + + public List<String> getUrl() { + return url; + } + + public List<String> getParamList() { + return paramList; + } + public List<String> getParamTypeList() { + return paramTypeList; + } + + + + + public static void main(String[] args) throws Exception { + + //WADLParserDriver mpw = new WADLParserDriver(); + //mpw.parse(new URL(args[0])); + SAWADLParserDriver spd = new SAWADLParserDriver(); + //String fileURL = "/home/ganjoo/parser/SAWADLParser/Files/sample.wadl"; + String fileURL = "/home/ganjoo/parser/SAWADLParser/euPathWADL/GenesByTextSearch.sawadl"; + //String fileURL = "http://cs.uga.edu/~ganjoo/galaxy/GenesByTextSearch.sawadl"; + spd.parse(fileURL); + } + + public void parse(String fileURL) throws Exception { + int i=0; + Map resources = new HashMap(); + List methods = new Vector(); + List<ParamImpl> paramList = new Vector(); + + //URL fileURL = new URL("http://www.eupathdb.org/webservices/GeneQuestions/GenesByMolecularWeight.wadl"); + WADLReader wadlReader; + try { + wadlReader = WADLFactory.newInstance().newWADLReader(); + wadlReader.setFeature(Constants.FEATURE_PARSE_SAWADL,true); + //wadlReader.setExtensionRegistry(new PopulatedExtensionRegistry()); + Application app = wadlReader.readWADL(fileURL); + this.application = app; + + + String temp = ""; + String tempHref=""; + int count =0; + Map<QName, Resource> resourceMap = app.getResources(); + for(Map.Entry entry : resourceMap.entrySet() ){ + count++; + Resource resource = (Resource) entry.getValue(); + // System.out.println("Resource " + count + "is " + resource.getQName().getNamespaceURI()); + + methods = resource.getMethods(); + + for(int j =0;j<methods.size();j++){ + + Method method = (Method) methods.get(j); + completeMethodList.add(method); + url.add(app.getResourcesPath()+resource.getQName().getLocalPart()); + + System.out.println("-------------------------------\n"); + System.out.println("Resources path : " + app.getResourcesPath()); + System.out.println("Method name is : " + method.getName()); + System.out.println("Qname uri : " + resource.getQName().getNamespaceURI()); + System.out.println("Qname local part : " + resource.getQName().getLocalPart()); + System.out.println("Qname prefix : " + resource.getQName().getPrefix()); + System.out.println("\n-------------------------------\n"); + + Request request = method.getRequest(); + paramList = request.getParamList(); + +// Map namespaces = new HashMap(); +// namespaces = app.getNamespaces(); +// System.out.println( namespaces.get("euPathOntology")); + + for(Param param : paramList){ + System.out.println("Parameter : "); + System.out.println("\t name: "+ param.getName()); + System.out.println("\t type: "+param.getType()); + System.out.println("\t ontology reference: "+ param.getModelreference()); + System.out.println("\t required: " + param.getRequired()); + System.out.println("\t option size: "+param.getOptionvalue().size()); + + + } + + + } + + + + } + + + + + + + + } catch (WADLSException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + + } + } + + public String getCompleteModelReference(Param param){ + String prefix = null; + String namespace = null; + if(param.getModelreference() != null){ + prefix = param.getModelreference().split("#")[0]; + namespace = application.getNamespace(prefix); + } + + return namespace+"#"+param.getModelreference().split("#")[1]; + } + + +}
Binary file WebServiceToolWorkflow/lib/SAWADLParser/src/edu/uga/cs/lsdis/meteors/wadls/extensions/schema/SchemaConstants.class has changed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/lib/SAWADLParser/src/edu/uga/cs/lsdis/meteors/wadls/extensions/schema/SchemaConstants.java Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,106 @@ +/* + * (c) Copyright IBM Corp 2004, 2005 + */ + +package edu.uga.cs.lsdis.meteors.wadls.extensions.schema; + +import java.util.Arrays; +import java.util.List; +import javax.xml.namespace.QName; + +import edu.uga.cs.lsdis.meteors.wadls.Constants; + +/** + * Constants used for handling XML Schemas + * + * @author Zixin Wu (wuzixin@uga.edu) + * @author John Kaputin <kaputin@uk.ibm.com> + */ +public class SchemaConstants { + + //Schema attribute names + public static final String ATTR_ID = "id"; + public static final String ATTR_SCHEMA_LOCATION = "schemaLocation"; + public static final String ATTR_HREF = "href"; + public static final String ATTR_NAME = "name"; + public static final String ATTR_TYPE = "type"; + public static final String ATTR_REF = "ref"; + public static final String ATTR_BASE = "base"; + public static final String ATTR_MAXOCCURS = "maxOccurs"; + public static final String ATTR_MINOCCURS = "minOccurs"; + + //Schema element names + public static final String ELEM_SCHEMA = "schema"; + public static final String ELEM_INCLUDE = "include"; + public static final String ELEM_REDEFINE = "redefine"; + public static final String ELEM_ELEMENT = "element"; + public static final String ELEM_SIMPLETYPE = "simpleType"; + public static final String ELEM_COMPLEXTYPE = "complexType"; + public static final String ELEM_ALL = "all"; + public static final String ELEM_SEQUENCE = "sequence"; + public static final String ELEM_CHOICE = "choice"; + public static final String ELEM_COMPLEXCONTENT = "complexContent"; + public static final String ELEM_RESTRICTION = "restriction"; + public static final String ELEM_EXTENSION = "extension"; + public static final String ELEM_GROUP = "group"; + + //Schema uri + public static final String NS_URI_XSD_1998 = + "http://www.w3.org/XML/1998/namespace"; + public static final String NS_URI_WADL = + "http://wadl.dev.java.net/2009/02"; + public static final String NS_URI_XSD_1999 = + "http://www.w3.org/1999/XMLSchema"; + public static final String NS_URI_XSD_2000 = + "http://www.w3.org/2000/10/XMLSchema"; + public static final String NS_URI_XSD_2001 = + "http://www.w3.org/2001/XMLSchema"; + public static final List XSD_STR_LIST = Arrays.asList(new String[] + {NS_URI_XSD_1998, NS_URI_XSD_1999, NS_URI_XSD_2000, NS_URI_XSD_2001}); + + //Schema qnames + public static final QName Q_ELEM_XSD_1999 = + new QName(NS_URI_XSD_1999, ELEM_SCHEMA); + public static final QName Q_ELEM_XSD_2000 = + new QName(NS_URI_XSD_2000, ELEM_SCHEMA); + public static final QName Q_ELEM_XSD_2001 = + new QName(NS_URI_XSD_2001, ELEM_SCHEMA); + public static final List XSD_QNAME_LIST = Arrays.asList(new QName[] + {Q_ELEM_XSD_1999, Q_ELEM_XSD_2000, Q_ELEM_XSD_2001}); + + //Schema import qnames + public static final QName Q_ELEM_IMPORT_XSD_1999 = new QName( + NS_URI_XSD_1999, Constants.ELEM_IMPORT); + public static final QName Q_ELEM_IMPORT_XSD_2000 = new QName( + NS_URI_XSD_2000, Constants.ELEM_IMPORT); + public static final QName Q_ELEM_IMPORT_XSD_2001 = new QName( + NS_URI_XSD_2001, Constants.ELEM_IMPORT); + public static final List XSD_IMPORT_QNAME_LIST = Arrays.asList(new QName[] + { Q_ELEM_IMPORT_XSD_1999, Q_ELEM_IMPORT_XSD_2000, Q_ELEM_IMPORT_XSD_2001 }); + + + //Schema include qnames + public static final QName Q_ELEM_INCLUDE_XSD_1999 = new QName( + NS_URI_XSD_1999, ELEM_INCLUDE); + public static final QName Q_ELEM_INCLUDE_XSD_2000 = new QName( + NS_URI_XSD_2000, ELEM_INCLUDE); + public static final QName Q_ELEM_INCLUDE_XSD_2001 = new QName( + NS_URI_XSD_2001, ELEM_INCLUDE); + public static final QName Q_ELEM_INCLUDE_WADL = new QName( + NS_URI_WADL, ELEM_INCLUDE); + + public static final List XSD_INCLUDE_QNAME_LIST = Arrays.asList(new QName[] + { Q_ELEM_INCLUDE_XSD_1999, Q_ELEM_INCLUDE_XSD_2000, Q_ELEM_INCLUDE_XSD_2001,Q_ELEM_INCLUDE_WADL }); + + //Schema redefine qnames + public static final QName Q_ELEM_REDEFINE_XSD_1999 = new QName( + NS_URI_XSD_1999, ELEM_REDEFINE); + public static final QName Q_ELEM_REDEFINE_XSD_2000 = new QName( + NS_URI_XSD_2000, ELEM_REDEFINE); + public static final QName Q_ELEM_REDEFINE_XSD_2001 = new QName( + NS_URI_XSD_2001, ELEM_REDEFINE); + public static final List XSD_REDEFINE_QNAME_LIST = Arrays.asList(new QName[] + { Q_ELEM_REDEFINE_XSD_1999, Q_ELEM_REDEFINE_XSD_2000, Q_ELEM_REDEFINE_XSD_2001 }); + + +}
Binary file WebServiceToolWorkflow/lib/SAWADLParser/src/edu/uga/cs/lsdis/meteors/wadls/extensions/schema/SchemaDeserializer.class has changed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/lib/SAWADLParser/src/edu/uga/cs/lsdis/meteors/wadls/extensions/schema/SchemaDeserializer.java Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,196 @@ +/* + * (c) Copyright IBM Corp 2004, 2005 + */ + +package edu.uga.cs.lsdis.meteors.wadls.extensions.schema; + +import java.io.Serializable; +import java.util.Hashtable; +import java.util.Map; + +import javax.wadls.Application; +import javax.wadls.WADLSException; +import javax.wadls.extensions.ExtensionDeserializer; +import javax.wadls.extensions.schema.Schema; +import javax.wadls.extensions.schema.SchemaImport; +import javax.wadls.extensions.schema.SchemaReference; +import javax.wadls.xml.WADLLocator; +import javax.wadls.WADLSException; +import javax.wadls.extensions.ExtensibilityElement; +import javax.wadls.extensions.ExtensionRegistry; +import javax.xml.namespace.QName; + +import org.w3c.dom.Element; + + +import edu.uga.cs.lsdis.meteors.wadls.extensions.schema.SchemaConstants; +import edu.uga.cs.lsdis.meteors.wadls.Constants; +import edu.uga.cs.lsdis.meteors.wadls.util.xml.DOMUtils; +import edu.uga.cs.lsdis.meteors.wadls.util.xml.QNameUtils; + +/** + * This class is used to deserialize <code><schema></code> elements into + * Schema instances. + * + * @see SchemaImpl + * @see SchemaSerializer + * + * @author Jeremy Hughes <hughesj@uk.ibm.com> + */ +public class SchemaDeserializer implements Serializable +{ + + // Need to set this since a Definition is serializable and it contains an + // extension registry which contains one of these + public static final long serialVersionUID = 1; + + private final Map allReferencedSchemas = new Hashtable(); + + private static ThreadLocal wsdlLocator = new ThreadLocal(); + + /** + * Set the WSDLLocator to be used by the deserializer on this thread. + * + * @param loc The WSDLLocator to be used. + * + * @see WSDLLocator + */ + public static void setLocator(WADLLocator loc) + { + wsdlLocator.set(loc); + } + public Schema unmarshall(QName elementType, + Element el, + Application def) +throws WADLSException +{ + +Schema schema = new SchemaImpl(); + +schema.setElementType(elementType); +schema.setElement(el); +schema.setDocumentBaseURI(def.getDocumentBaseURI()); + +//TODO: check if the 'required' attribute needs to be set + +// Go through the schema Element looking for child schemas +if(elementType.getLocalPart().equalsIgnoreCase("include")){ + + Element tempEl = el; + + QName tempElType = QNameUtils.newQName(tempEl); + + // Create the appropriate SchemaReference subclass to represent + // an <import>, an <include> or a <redefine> + + SchemaReference sr = null; + String locationURI = null; + + + if (SchemaConstants.XSD_INCLUDE_QNAME_LIST.contains(tempElType)) + { + + // Create a new include. Don't use the + // ExtensionRegistry.createExtension() + // method as a Schema include is not a WSDL import. + sr = schema.createInclude(); + + sr.setId(DOMUtils.getAttribute(tempEl, SchemaConstants.ATTR_ID)); + + locationURI = DOMUtils.getAttribute(tempEl, SchemaConstants.ATTR_HREF); + + sr.setSchemaLocationURI(locationURI); + + // Now the include is set up except for the pointer to the + // referenced LWS, add the include to the LightWeightSchema. + schema.addInclude(sr); + } + +} +else{ +Element tempEl = DOMUtils.getFirstChildElement(el); + + +for (; tempEl != null; tempEl = DOMUtils.getNextSiblingElement(tempEl)) +{ + +QName tempElType = QNameUtils.newQName(tempEl); + +// Create the appropriate SchemaReference subclass to represent +// an <import>, an <include> or a <redefine> + +SchemaReference sr = null; +String locationURI = null; + +if (SchemaConstants.XSD_IMPORT_QNAME_LIST.contains(tempElType)) +{ + + +// Create a new import. Don't use the +// ExtensionRegistry.createExtension() +// method as a Schema import is not a WSDL import. +SchemaImport im = schema.createImport(); + + +im.setId(DOMUtils.getAttribute(tempEl, SchemaConstants.ATTR_ID)); +im.setNamespaceURI(DOMUtils.getAttribute(tempEl, Constants.ATTR_NAMESPACE)); + +locationURI = DOMUtils.getAttribute(tempEl, SchemaConstants.ATTR_SCHEMA_LOCATION); +im.setSchemaLocationURI(locationURI); + +// Now the import is set up except for the point to the +// referenced LWS, add the import to the LightWeightSchema. +schema.addImport(im); +} +else +if (SchemaConstants.XSD_INCLUDE_QNAME_LIST.contains(tempElType)) +{ + +// Create a new include. Don't use the +// ExtensionRegistry.createExtension() +// method as a Schema include is not a WSDL import. +sr = schema.createInclude(); + +sr.setId(DOMUtils.getAttribute(tempEl, SchemaConstants.ATTR_ID)); + +locationURI = DOMUtils.getAttribute(tempEl, SchemaConstants.ATTR_SCHEMA_LOCATION); + +sr.setSchemaLocationURI(locationURI); + +// Now the include is set up except for the pointer to the +// referenced LWS, add the include to the LightWeightSchema. +schema.addInclude(sr); +} +else +if (SchemaConstants.XSD_REDEFINE_QNAME_LIST.contains(tempElType)) +{ +// Create a new redefine. Don't use the +// ExtensionRegistry.createExtension() method as a Schema redefine +// is not a WSDL import. +sr = schema.createRedefine(); + +sr.setId(DOMUtils.getAttribute(tempEl, SchemaConstants.ATTR_ID)); + +locationURI = DOMUtils.getAttribute(tempEl, SchemaConstants.ATTR_SCHEMA_LOCATION); + +sr.setSchemaLocationURI(locationURI); + +// Now the redefine is set up except for the pointer to the +// referenced LWS, add the redefine to the LightWeightSchema. +schema.addRedefine(sr); +} +else +{ +// The element isn't one we're interested in so look at the next +// one +continue; +} + +} //end for +} + +return schema; +} + + +} \ No newline at end of file
Binary file WebServiceToolWorkflow/lib/SAWADLParser/src/edu/uga/cs/lsdis/meteors/wadls/extensions/schema/SchemaImpl.class has changed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/lib/SAWADLParser/src/edu/uga/cs/lsdis/meteors/wadls/extensions/schema/SchemaImpl.java Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,235 @@ +/* + * (c) Copyright IBM Corp 2004, 2005 + */ + +package edu.uga.cs.lsdis.meteors.wadls.extensions.schema; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Vector; + +import javax.wadls.extensions.schema.Schema; +import javax.wadls.extensions.schema.SchemaImport; +import javax.wadls.extensions.schema.SchemaReference; +import javax.xml.namespace.QName; + +import org.w3c.dom.Element; + +/** + * This class is used to wrap schema elements. It holds the DOM Element to the + * <code><schema></code> element. + * + * @see SchemaSerializer + * @see SchemaDeserializer + * + * @author Jeremy Hughes <hughesj@uk.ibm.com> + */ +public class SchemaImpl implements Schema +{ + protected QName elementType = null; + // Uses the wrapper type so we can tell if it was set or not. + protected Boolean required = null; + protected Element element = null; + + public static final long serialVersionUID = 1; + + /* + * imports is a Map of Lists with key of the import's namespace URI. Each List + * contains the SchemaImport objects for that namespace. There can be more + * than one SchemaImport in a List - one for each schemaLocation attribute + * setting. + */ + private Map imports = new HashMap(); + + /* + * includes is a List of Include objects for the targetNamespace of the + * enclosing schema. There is one Include in the List for each <include> + * element in the XML Schema. + */ + private List includes = new Vector(); + + /* + * redefines is a list of Redefine obejcts for the targetNamespace of the + * enclosing schema. There is one Redefine in the List for each <redefine> + * element in the XML Schema. + */ + private List redefines = new Vector(); + + private String documentBaseURI = null; + + /** + * Get a map of lists containing all the imports defined here. The map's keys + * are Strings representing the namespace URIs, and the map's values are + * lists. There is one list for each namespace URI for which imports have been + * defined. + * + * @return a Map of Lists of Import instances keyed off the import's namespace + */ + public Map getImports() + { + return this.imports; + } + + /** + * Create a new schema import. + * + * @return the newly created schema import + */ + public SchemaImport createImport() + { + return new SchemaImportImpl(); + } + + /** + * Add an import to this LightWeightSchema + * + * @param importSchema the import to be added + */ + public void addImport(SchemaImport importSchema) + { + String namespaceURI = importSchema.getNamespaceURI(); + List importList = (List) this.imports.get(namespaceURI); + + if (importList == null) + { + importList = new Vector(); + + this.imports.put(namespaceURI, importList); + } + + importList.add(importSchema); + } + + /** + * Get list of includes defined here. + * + * @return a List of SchemaReference instances representing the schema + * includes. + */ + + public List getIncludes() + { + return this.includes; + } + + public SchemaReference createInclude() + { + return new SchemaReferenceImpl(); + } + + public void addInclude(SchemaReference includeSchema) + { + this.includes.add(includeSchema); + } + + public List getRedefines() + { + return this.redefines; + } + + public SchemaReference createRedefine() + { + return new SchemaReferenceImpl(); + } + + public void addRedefine(SchemaReference redefineSchema) + { + this.redefines.add(redefineSchema); + } + + public String toString() + { + StringBuffer strBuf = new StringBuffer(); + + strBuf.append("SchemaExtensibilityElement (" + this.elementType + "):"); + strBuf.append("\nrequired=" + this.required); + + if (this.element != null) + { + strBuf.append("\nelement=" + this.element); + } + + return strBuf.toString(); + } + + /** + * Set the type of this extensibility element. + * + * @param elementType the type + */ + public void setElementType(QName elementType) + { + this.elementType = elementType; + } + + /** + * Get the type of this extensibility element. + * + * @return the extensibility element's type + */ + public QName getElementType() + { + return elementType; + } + + /** + * Set whether or not the semantics of this extension + * are required. Relates to the wsdl:required attribute. + */ + public void setRequired(Boolean required) + { + this.required = required; + } + + /** + * Get whether or not the semantics of this extension + * are required. Relates to the wsdl:required attribute. + */ + public Boolean getRequired() + { + return required; + } + + /** + * Set the DOM Element that represents this schema element. + * + * @param element the DOM element representing this schema + */ + public void setElement(Element element) + { + this.element = element; + } + + /** + * Get the DOM Element that represents this schema element. + * + * @return the DOM element representing this schema + */ + public Element getElement() + { + return element; + } + + /** + * Set the document base URI of this schema definition. Can be used to + * represent the origin of the schema, and can be exploited when resolving + * relative URIs (e.g. in <import>s). + * + * @param documentBaseURI the document base URI of this schema + */ + public void setDocumentBaseURI(String documentBaseURI) + { + this.documentBaseURI = documentBaseURI; + } + + /** + * Get the document base URI of this schema + * + * @return the document base URI + */ + public String getDocumentBaseURI() + { + return this.documentBaseURI; + } +} \ No newline at end of file
Binary file WebServiceToolWorkflow/lib/SAWADLParser/src/edu/uga/cs/lsdis/meteors/wadls/extensions/schema/SchemaImportImpl.class has changed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/lib/SAWADLParser/src/edu/uga/cs/lsdis/meteors/wadls/extensions/schema/SchemaImportImpl.java Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,33 @@ +/* + * (c) Copyright IBM Corp 2004, 2005 + */ + +package edu.uga.cs.lsdis.meteors.wadls.extensions.schema; + +import javax.wadls.extensions.schema.SchemaImport; + +/** + * @author Jeremy Hughes <hughesj@uk.ibm.com> + */ +public class SchemaImportImpl extends SchemaReferenceImpl implements SchemaImport +{ + public static final long serialVersionUID = 1; + + private String namespace = null; + + /** + * @return Returns the namespace. + */ + public String getNamespaceURI() + { + return this.namespace; + } + + /** + * @param namespace The namespace to set. + */ + public void setNamespaceURI(String namespace) + { + this.namespace = namespace; + } +} \ No newline at end of file
Binary file WebServiceToolWorkflow/lib/SAWADLParser/src/edu/uga/cs/lsdis/meteors/wadls/extensions/schema/SchemaReferenceImpl.class has changed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/lib/SAWADLParser/src/edu/uga/cs/lsdis/meteors/wadls/extensions/schema/SchemaReferenceImpl.java Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,71 @@ +/* + * (c) Copyright IBM Corp 2004, 2005 + */ + +package edu.uga.cs.lsdis.meteors.wadls.extensions.schema; + +import javax.wadls.extensions.schema.Schema; +import javax.wadls.extensions.schema.SchemaReference; + +/** + * @author Jeremy Hughes <hughesj@uk.ibm.com> + */ +public class SchemaReferenceImpl implements SchemaReference +{ + + public static final long serialVersionUID = 1; + + private String id = null; + + private String schemaLocation = null; + + private Schema referencedSchema = null; + + /** + * @return Returns the id. + */ + public String getId() + { + return this.id; + } + + /** + * @param id The id to set. + */ + public void setId(String id) + { + this.id = id; + } + + /** + * @return Returns the schemaLocation. + */ + public String getSchemaLocationURI() + { + return this.schemaLocation; + } + + /** + * @param schemaLocation The schemaLocation to set. + */ + public void setSchemaLocationURI(String schemaLocation) + { + this.schemaLocation = schemaLocation; + } + + /** + * @return Returns the importedSchema. + */ + public Schema getReferencedSchema() + { + return this.referencedSchema; + } + + /** + * @param referencedSchema The importedSchema to set. + */ + public void setReferencedSchema(Schema referencedSchema) + { + this.referencedSchema = referencedSchema; + } +} \ No newline at end of file
Binary file WebServiceToolWorkflow/lib/SAWADLParser/src/edu/uga/cs/lsdis/meteors/wadls/extensions/schema/SchemaSerializer.class has changed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/lib/SAWADLParser/src/edu/uga/cs/lsdis/meteors/wadls/extensions/schema/SchemaSerializer.java Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,50 @@ +/* + * (c) Copyright IBM Corp 2004, 2005 + */ + +package edu.uga.cs.lsdis.meteors.wadls.extensions.schema; + +import java.io.PrintWriter; +import java.io.Serializable; + +import javax.wadls.Application; +import javax.wadls.WADLSException; +import javax.wadls.extensions.ExtensionDeserializer; +import javax.wadls.extensions.schema.Schema; +import javax.wadls.extensions.ExtensionSerializer; +import javax.wadls.WADLSException; +import javax.wadls.extensions.ExtensibilityElement; +import javax.wadls.extensions.ExtensionRegistry; +import javax.xml.namespace.QName; + +import edu.uga.cs.lsdis.meteors.wadls.util.xml.DOM2Writer; + +/** + * This class is used to serialize Schema instances + * into the PrintWriter. + * + * @see SchemaImpl + * @see SchemaDeserializer + * + * @author Jeremy Hughes <hughesj@uk.ibm.com> + */ +public class SchemaSerializer implements ExtensionSerializer,Serializable +{ + public static final long serialVersionUID = 1; + public void marshall(Class parentType, + QName elementType, + ExtensibilityElement extension, + PrintWriter pw, + Application def, + ExtensionRegistry extReg) + throws WADLSException +{ +Schema schema = (Schema)extension; + +pw.print(" "); + +DOM2Writer.serializeAsXML(schema.getElement(), pw); + +pw.println(); +} +} \ No newline at end of file
Binary file WebServiceToolWorkflow/lib/SAWADLParser/src/edu/uga/cs/lsdis/meteors/wadls/factory/WADLFactoryImpl.class has changed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/lib/SAWADLParser/src/edu/uga/cs/lsdis/meteors/wadls/factory/WADLFactoryImpl.java Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,52 @@ +/* + * (c) Copyright IBM Corp 2001, 2005 + */ + +package edu.uga.cs.lsdis.meteors.wadls.factory; + +import javax.wadls.*; +import javax.wadls.extensions.*; +import javax.wadls.factory.*; +import javax.wadls.xml.*; + +import edu.uga.cs.lsdis.meteors.wadls.*; +import edu.uga.cs.lsdis.meteors.wadls.xml.*; + +/** + * This class is a concrete implementation of the abstract class + * WSDLFactory. Some ideas used here have been shamelessly + * copied from the wonderful JAXP and Xerces work. + * + * @author Matthew J. Duftler (duftler@us.ibm.com) + */ +public class WADLFactoryImpl extends WADLFactory +{ + /** + * Create a new instance of a Definition, with an instance + * of a PopulatedExtensionRegistry as its ExtensionRegistry. + * + * @see edu.uga.cs.lsdis.meteors.wadls.extensions.PopulatedExtensionRegistry + */ + public Application newApplication() + { + Application app = new ApplicationImpl(); + return app; + } + + /** + * Create a new instance of a WSDLReader. + */ + public WADLReader newWADLReader() + { + return new WADLReaderImpl(); + } + + /** + * Create a new instance of a WSDLWriter. + */ + public WADLWriter newWADLWriter() + { + return new WADLWriterImpl(); + } + +} \ No newline at end of file
Binary file WebServiceToolWorkflow/lib/SAWADLParser/src/edu/uga/cs/lsdis/meteors/wadls/util/IOUtils.class has changed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/lib/SAWADLParser/src/edu/uga/cs/lsdis/meteors/wadls/util/IOUtils.java Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,36 @@ +/* + * (c) Copyright IBM Corp 2001, 2005 + */ + +package edu.uga.cs.lsdis.meteors.wadls.util; + +import java.io.*; + +/** + * This file is a collection of input/output utilities. + * + * @author Sanjiva Weerawarana + * @author Matthew J. Duftler + */ +public class IOUtils { + // debug flag - generates debug stuff if true + static boolean debug = false; + + ////////////////////////////////////////////////////////////////////////// + + public static String getStringFromReader (Reader reader) throws IOException { + BufferedReader bufIn = new BufferedReader(reader); + StringWriter swOut = new StringWriter(); + PrintWriter pwOut = new PrintWriter(swOut); + String tempLine; + + while ((tempLine = bufIn.readLine()) != null) { + pwOut.println(tempLine); + } + + pwOut.flush(); + + return swOut.toString(); + } +} +
Binary file WebServiceToolWorkflow/lib/SAWADLParser/src/edu/uga/cs/lsdis/meteors/wadls/util/ObjectRegistry.class has changed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/lib/SAWADLParser/src/edu/uga/cs/lsdis/meteors/wadls/util/ObjectRegistry.java Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,55 @@ +/* + * (c) Copyright IBM Corp 2001, 2005 + */ + +package edu.uga.cs.lsdis.meteors.wadls.util; + +import java.util.*; + +/** + * The <em>ObjectRegistry</em> is used to do name-to-object reference lookups. + * If an <em>ObjectRegistry</em> is passed as a constructor argument, then this + * <em>ObjectRegistry</em> will be a cascading registry: when a lookup is + * invoked, it will first look in its own table for a name, and if it's not + * there, it will cascade to the parent <em>ObjectRegistry</em>. + * All registration is always local. [??] + * + * @author Sanjiva Weerawarana + * @author Matthew J. Duftler + */ +public class ObjectRegistry { + Hashtable reg = new Hashtable (); + ObjectRegistry parent = null; + + public ObjectRegistry () { + } + + public ObjectRegistry (ObjectRegistry parent) { + this.parent = parent; + } + + // register an object + public void register (String name, Object obj) { + reg.put (name, obj); + } + + // unregister an object (silent if unknown name) + public void unregister (String name) { + reg.remove (name); + } + + // lookup an object: cascade up if needed + public Object lookup (String name) throws IllegalArgumentException { + Object obj = reg.get (name); + + if (obj == null && parent != null) { + obj = parent.lookup (name); + } + + if (obj == null) { + throw new IllegalArgumentException ("object '" + name + "' not in registry"); + } + + return obj; + } +} \ No newline at end of file
Binary file WebServiceToolWorkflow/lib/SAWADLParser/src/edu/uga/cs/lsdis/meteors/wadls/util/SchemaUtils.class has changed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/lib/SAWADLParser/src/edu/uga/cs/lsdis/meteors/wadls/util/SchemaUtils.java Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,543 @@ +/* + * Created on Apr 10, 2005 + * + */ +package edu.uga.cs.lsdis.meteors.wadls.util; + +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +import java.util.Map; + +import javax.wadls.Grammars; +import javax.wadls.Params; +import javax.wadls.WADLSException; +import javax.wadls.extensions.schema.Schema; +import javax.xml.namespace.QName; + +import org.w3c.dom.DOMException; +import org.w3c.dom.Element; +import org.w3c.dom.Node; +import org.w3c.dom.NodeList; + +import edu.uga.cs.lsdis.meteors.wadls.Constants; +import edu.uga.cs.lsdis.meteors.wadls.extensions.schema.SchemaConstants; +import edu.uga.cs.lsdis.meteors.wadls.util.xml.QNameUtils; +import edu.uga.cs.lsdis.meteors.wadls.util.xml.XPathUtils; + +/** + * This file is a collection of utilities which find the location of a XML/XSD Element by using the given path. + * @author Zixin Wu + * + */ + +public class SchemaUtils { + + /** + * Search an XML element in the schemas contained in the given Types. + * @param types Search in the schemas contained in this WSDLS Types. + * @param tagName XML Element name of the desired element. + * @param elementName The value of the attribute "name" of the desired element. + * @return An XML element whose XML Element name is "tagName" and whose attribute "name" is "elementName". + * @throws WADLSException + */ + public static Element findXMLEleInSchemas(Grammars grammars, String tagName, QName elementName) throws WADLSException{ + Map schemas = grammars.getSchemas(); + Iterator it = schemas.values().iterator(); + while(it.hasNext()){ + Schema schema = (Schema)(it.next()); + Element schemaEle = schema.getElement(); + if (schemaEle.getAttribute(Constants.ATTR_TARGET_NAMESPACE).equals(elementName.getNamespaceURI())){ + Element foundEle = findXMLEleByName(schemaEle, tagName, elementName); + if (foundEle != null) + return foundEle; + } + } + return null; + } + + /** + * Search the element whose XML Element name is "tagName" and whose attribute "name" is "elementName", + * in the startElement, search in only one level depth. + * @param startElement Start searching from this XML Element. + * @param tagName XML Element name of the desired element. + * @param elementName The value of the attribute "name" of the desired element. + * @return An XML element whose XML Element name is "tagName" and whose attribute "name" is "elementName". + * @throws WADLSException + */ + public static Element findXMLEleByName(Element startElement, String tagName, QName elementName) throws WADLSException{ + NodeList nodeList = startElement.getChildNodes(); + //find the element with the required name as an attribute + int listLength = nodeList.getLength(); + for(int i=0;i<listLength;i++){ + Node currentNode = nodeList.item(i); + if (currentNode.getNodeType() != Node.ELEMENT_NODE) continue; + Element currentElement = (Element)nodeList.item(i); + //get the "name" attribute + String nameAttr = currentElement.getAttribute(SchemaConstants.ATTR_NAME); + QName qNameAttr = QNameUtils.getQName(nameAttr, currentElement); + //compare both namespaceURI and localname of the "name" attribute + if (elementName == null || qNameAttr.equals(elementName)){ + //compare localname of the tag, and check namespace of the tag is XSD + QName currentTagQName = QNameUtils.getQName(currentElement.getTagName(), currentElement); + if (SchemaConstants.XSD_STR_LIST.contains(currentTagQName.getNamespaceURI()) + && tagName.equals(currentTagQName.getLocalPart())){ + //this is the element we are looking for. + return currentElement; + } + } + } + return null; + } + + + /** + * Return a list of XSD elements contained in the startElement (XSD Element), search in only 1 level depth. + * @param startElement Start search from this XSD element. + * @param types WSDLS Types + * @return A list of XSD elements contained in the startElement. If no XSD element is contained, the list has 0 element. + * @throws WADLSException + */ + public static List listXSDElesInEle(Element startElement, Grammars grammars) throws WADLSException{ + String refAttr = startElement.getAttribute(SchemaConstants.ATTR_REF); + if (refAttr != ""){ + //look for the referenced element + QName elementQName = QNameUtils.getQName(refAttr, startElement); + Element refenecedElement = findXMLEleInSchemas(grammars, SchemaConstants.ELEM_ELEMENT, elementQName); + if (refenecedElement != null) + return listXSDElesInEle(refenecedElement, grammars); + else{ + throw new DOMException(DOMException.NOT_FOUND_ERR, "Cannot find referenced element"); + } + } + else{ + Element complexElement = null; + String typeAttr = startElement.getAttribute(SchemaConstants.ATTR_TYPE); + if (typeAttr != ""){ + //get the QName of typeAttr + QName typeQName = QNameUtils.getQName(typeAttr, startElement); + if (SchemaConstants.XSD_STR_LIST.contains(typeQName.getNamespaceURI())) + //primitive data type + return new ArrayList(); + else{ + //ComplexType or SimpleType + complexElement = findXMLEleInSchemas(grammars, SchemaConstants.ELEM_COMPLEXTYPE, typeQName); + if (complexElement == null) + //simpleType + return new ArrayList();; + } + } + else{ + //No type, look for complexType in the subNodes + complexElement = findXMLEleByName(startElement, SchemaConstants.ELEM_COMPLEXTYPE, null); + if (complexElement == null){ + WADLSException wsdlsExc = new WADLSException(WADLSException.NOT_FOUND_ELE_BY_PATH, + "cannot find complexType matching the path"); + wsdlsExc.setLocation(XPathUtils.getXPathExprFromNode(startElement)); + throw wsdlsExc; + } + } + + //we got the complexType element so far. + //we need to collect all the elements + return listXSDElesInComplexType(complexElement); + } + } + + public static List listXSDElesInEle(Element startElement, Params params) throws WADLSException{ + /*String refAttr = startElement.getAttribute(SchemaConstants.ATTR_REF); + if (refAttr != ""){ + //look for the referenced element + QName elementQName = QNameUtils.getQName(refAttr, startElement); + Element refenecedElement = findXMLEleInSchemas(grammars, SchemaConstants.ELEM_ELEMENT, elementQName); + if (refenecedElement != null) + return listXSDElesInEle(refenecedElement, grammars); + else{ + throw new DOMException(DOMException.NOT_FOUND_ERR, "Cannot find referenced element"); + } + } + else{ + Element complexElement = null; + String typeAttr = startElement.getAttribute(SchemaConstants.ATTR_TYPE); + if (typeAttr != ""){ + //get the QName of typeAttr + QName typeQName = QNameUtils.getQName(typeAttr, startElement); + if (SchemaConstants.XSD_STR_LIST.contains(typeQName.getNamespaceURI())) + //primitive data type + return new ArrayList(); + else{ + //ComplexType or SimpleType + complexElement = findXMLEleInSchemas(grammars, SchemaConstants.ELEM_COMPLEXTYPE, typeQName); + if (complexElement == null) + //simpleType + return new ArrayList();; + } + } + else{ + //No type, look for complexType in the subNodes + complexElement = findXMLEleByName(startElement, SchemaConstants.ELEM_COMPLEXTYPE, null); + if (complexElement == null){ + WADLSException wsdlsExc = new WADLSException(WADLSException.NOT_FOUND_ELE_BY_PATH, + "cannot find complexType matching the path"); + wsdlsExc.setLocation(XPathUtils.getXPathExprFromNode(startElement)); + throw wsdlsExc; + } + } + + //we got the complexType element so far. + //we need to collect all the elements + return listXSDElesInComplexType(complexElement); + }*/ + + List temp = null; + temp.set(1, startElement); + return temp; + + } + + /** + * Return a list of XSD elements contained in the complexElement (XSD complexType), search in only 1 level depth. + * @param complexElement Start search from this XSD complexType. + * @return A list of XSD elements contained in the startElement. If no XSD element is contained, the list has 0 element. + * @throws WADLSException + */ + public static List listXSDElesInComplexType(Element complexElement) throws WADLSException{ + List subElements = new ArrayList(); + + NodeList subNodes = complexElement.getChildNodes(); + int length = subNodes.getLength(); + for(int i=0;i<length;i++){ + Node currentNode = subNodes.item(i); + if (currentNode.getNodeType() != Node.ELEMENT_NODE) continue; + Element currentElement = (Element)currentNode; + String tagName = currentElement.getTagName(); + QName tagQName = QNameUtils.getQName(tagName, currentElement); + String localPart = tagQName.getLocalPart(); + if (!SchemaConstants.XSD_STR_LIST.contains(tagQName.getNamespaceURI())) + continue; + if (localPart.equals(SchemaConstants.ELEM_ELEMENT)) + subElements.add(currentElement); + else if + (localPart.equals(SchemaConstants.ELEM_ALL) + || localPart.equals(SchemaConstants.ELEM_SEQUENCE) + || localPart.equals(SchemaConstants.ELEM_CHOICE) + || localPart.equals(SchemaConstants.ELEM_COMPLEXCONTENT) + || localPart.equals(SchemaConstants.ELEM_RESTRICTION) + ) + //Just skip it, call this method recursively. + subElements.addAll(listXSDElesInComplexType(currentElement)); + } + return subElements; + } + + /** + * Search an XSD element located by the startElement and path. + * @param startElement Start search from this XSD element. + * @param path + * @param types WSDLS Types + * @return An XSD element + * @throws WADLSException + */ + public static Element findXSDEleOnEle(Element startElement, String path, Grammars grammars) throws WADLSException{ + String refAttr = startElement.getAttribute(SchemaConstants.ATTR_REF); + if (refAttr != ""){ + //look for the referenced element + QName elementQName = QNameUtils.getQName(refAttr, startElement); + Element refenecedElement = findXMLEleInSchemas(grammars, SchemaConstants.ELEM_ELEMENT, elementQName); + if (refenecedElement != null) + return findXSDEleOnEle(refenecedElement, path, grammars); + else{ + throw new DOMException(DOMException.NOT_FOUND_ERR, "Cannot find referenced element"); + } + } + else{ + if (path == "") + return startElement; + + String typeAttr = startElement.getAttribute(SchemaConstants.ATTR_TYPE); + if (typeAttr != ""){ //<... type="..."> + //get the QName of typeAttr + QName typeQName = QNameUtils.getQName(typeAttr, startElement); + if (SchemaConstants.XSD_STR_LIST.contains(typeQName.getNamespaceURI())){ + //primitive data type + WADLSException wsdlsExc = new WADLSException(WADLSException.PATH_ERROR, + "Primitive type cannot has path"); + wsdlsExc.setLocation(XPathUtils.getXPathExprFromNode(startElement)); + throw wsdlsExc; + } + else{ + //find the complexType with the given type QName + Element complexTypeElement = findXMLEleInSchemas(grammars, SchemaConstants.ELEM_COMPLEXTYPE, typeQName); + if (complexTypeElement != null) + return findXSDEleOnComplexType(complexTypeElement, path, grammars); + else + //cannot find in complexType + throw new DOMException(DOMException.NOT_FOUND_ERR, "cannot find complexType by the given path"); + } + } + else{ + //No type, look for complexType in the subNodes + Element complexElement = findXMLEleByName(startElement, SchemaConstants.ELEM_COMPLEXTYPE, null); + if (complexElement != null) + return findXSDEleOnComplexType(complexElement, path, grammars); + else{ + WADLSException wsdlsExc = new WADLSException(WADLSException.NOT_FOUND_ELE_BY_PATH, + "cannot find complexType matching the path"); + wsdlsExc.setLocation(XPathUtils.getXPathExprFromNode(startElement)); + throw wsdlsExc; + } + } + } + } + + public static Element findXSDEleOnEle(Element startElement, String path, Params params) throws WADLSException{ + /*String refAttr = startElement.getAttribute(SchemaConstants.ATTR_REF); + if (refAttr != ""){ + //look for the referenced element + QName elementQName = QNameUtils.getQName(refAttr, startElement); + Element refenecedElement = findXMLEleInSchemas(params, SchemaConstants.ELEM_ELEMENT, elementQName); + if (refenecedElement != null) + return findXSDEleOnEle(refenecedElement, path, grammars); + else{ + throw new DOMException(DOMException.NOT_FOUND_ERR, "Cannot find referenced element"); + } + } + else{ + if (path == "") + return startElement; + + String typeAttr = startElement.getAttribute(SchemaConstants.ATTR_TYPE); + if (typeAttr != ""){ //<... type="..."> + //get the QName of typeAttr + QName typeQName = QNameUtils.getQName(typeAttr, startElement); + if (SchemaConstants.XSD_STR_LIST.contains(typeQName.getNamespaceURI())){ + //primitive data type + WADLSException wsdlsExc = new WADLSException(WADLSException.PATH_ERROR, + "Primitive type cannot has path"); + wsdlsExc.setLocation(XPathUtils.getXPathExprFromNode(startElement)); + throw wsdlsExc; + } + else{ + //find the complexType with the given type QName + Element complexTypeElement = findXMLEleInSchemas(grammars, SchemaConstants.ELEM_COMPLEXTYPE, typeQName); + if (complexTypeElement != null) + return findXSDEleOnComplexType(complexTypeElement, path, grammars); + else + //cannot find in complexType + throw new DOMException(DOMException.NOT_FOUND_ERR, "cannot find complexType by the given path"); + } + } + else{ + //No type, look for complexType in the subNodes + Element complexElement = findXMLEleByName(startElement, SchemaConstants.ELEM_COMPLEXTYPE, null); + if (complexElement != null) + return findXSDEleOnComplexType(complexElement, path, grammars); + else{ + WADLSException wsdlsExc = new WADLSException(WADLSException.NOT_FOUND_ELE_BY_PATH, + "cannot find complexType matching the path"); + wsdlsExc.setLocation(XPathUtils.getXPathExprFromNode(startElement)); + throw wsdlsExc; + } + } + }*/ + return startElement; + } + + /** + * Search an XSD Element from the XSD complexType. + * @param complexTypeElement Start searching from this XSD ComplexType + * @param path + * @param types WSDLS Types + * @return An XSD Element + * @throws WADLSException + */ + public static Element findXSDEleOnComplexType(Element complexTypeElement, String path, Grammars grammars) throws WADLSException{ + if (path == null || path == "") + return null; + //look for the matching element. + String splitedPath[] = splitPath(path); + String elementName = splitedPath[0]; + path = splitedPath[1]; + Element targetElement = findXSDEleInComplexType(complexTypeElement, elementName, grammars); + if (targetElement != null) + return findXSDEleOnEle(targetElement, path, grammars); + else{ + WADLSException wsdlsExc = new WADLSException(WADLSException.NOT_FOUND_ELE_BY_PATH, + "Cannot find the element matching the path"); + wsdlsExc.setLocation(XPathUtils.getXPathExprFromNode(complexTypeElement)); + throw wsdlsExc; + } + } + + public static Element findXSDEleOnComplexType(Element complexTypeElement, String path, Params params) throws WADLSException{ + /*if (path == null || path == "") + return null; + //look for the matching element. + String splitedPath[] = splitPath(path); + String elementName = splitedPath[0]; + path = splitedPath[1]; + Element targetElement = findXSDEleInComplexType(complexTypeElement, elementName, grammars); + if (targetElement != null) + return findXSDEleOnEle(targetElement, path, grammars); + else{ + WADLSException wsdlsExc = new WADLSException(WADLSException.NOT_FOUND_ELE_BY_PATH, + "Cannot find the element matching the path"); + wsdlsExc.setLocation(XPathUtils.getXPathExprFromNode(complexTypeElement)); + throw wsdlsExc; + }*/ + return complexTypeElement; + } + + /** + * Search an XSD Element recursively inside of the complexType. + * @param startElement + * @param elementName The desired attribute "name" + * @param types WSDL Types + * @return A XSD Element + * @throws WADLSException + */ + public static Element findXSDEleInComplexType(Element startElement, String elementName, Grammars grammars) throws WADLSException{ + NodeList subNodes = startElement.getChildNodes(); + int length = subNodes.getLength(); + for(int i=0;i<length;i++){ + Node currentNode = subNodes.item(i); + if (currentNode.getNodeType() != Node.ELEMENT_NODE) continue; + Element currentElement = (Element)currentNode; + String tagName = currentElement.getTagName(); + QName tagQName = QNameUtils.getQName(tagName, currentElement); + String localPart = tagQName.getLocalPart(); + if (!SchemaConstants.XSD_STR_LIST.contains(tagQName.getNamespaceURI())) + continue; + if (localPart.equals(SchemaConstants.ELEM_ELEMENT)){ + String refAttr = currentElement.getAttribute(SchemaConstants.ATTR_REF); + if (refAttr != ""){ + if (refAttr.equals(elementName)){ //TODO need to compare the namespaces + //look for the referenced element + QName elementQName = QNameUtils.getQName(refAttr, currentElement); + Element refenecedElement = findXMLEleInSchemas(grammars, SchemaConstants.ELEM_ELEMENT, elementQName); + return refenecedElement; + } + } + else{ + String nameAttr = currentElement.getAttribute(SchemaConstants.ATTR_NAME); +// if (nameAttr == "") continue; + if (nameAttr.equals(elementName)) //TODO need to compare the namespaces + //this is the element we are looking for. + return currentElement; + } + } + else if + (localPart.equals(SchemaConstants.ELEM_ALL) + || localPart.equals(SchemaConstants.ELEM_SEQUENCE) + || localPart.equals(SchemaConstants.ELEM_CHOICE) + || localPart.equals(SchemaConstants.ELEM_COMPLEXCONTENT) + || localPart.equals(SchemaConstants.ELEM_RESTRICTION) + ){ + //Just skip it, call this method recursively. + return findXSDEleInComplexType(currentElement, elementName, grammars); + } + else if (localPart.equals(SchemaConstants.ELEM_EXTENSION)){ + //try to find it inside the <xsd:extension> + Element returnElement = findXSDEleInComplexType(currentElement, elementName, grammars); + if (returnElement != null) + return returnElement; + else{ + String baseAttr = currentElement.getAttribute(SchemaConstants.ATTR_BASE); + QName baseQName = QNameUtils.getQName(baseAttr, currentElement); + Element baseElement = findXMLEleInSchemas(grammars, SchemaConstants.ELEM_COMPLEXTYPE, baseQName); + return findXSDEleInComplexType(baseElement, elementName, grammars); + } + } + else if (localPart.equals(SchemaConstants.ELEM_GROUP)){ + //find <group>. + String refAttr = currentElement.getAttribute(SchemaConstants.ATTR_REF); + if (refAttr != ""){ + //look for the referenced <group> + QName groupQName = QNameUtils.getQName(refAttr, currentElement); + Element groupElement = findXMLEleInSchemas(grammars, SchemaConstants.ELEM_GROUP, groupQName); + if (groupElement != null){ + //try to find it in the referenced <group> + Element returnElement = findXSDEleInComplexType(groupElement, elementName, grammars); + if (returnElement != null) + return returnElement; + else + //Not in the referenced <group> + continue; + } + else + throw new DOMException(DOMException.NOT_FOUND_ERR, "Cannot find the referenced group"); + } + else + //Just skip it, call this method recursively. + return findXSDEleInComplexType(currentElement, elementName, grammars); + } + } + return null; + } + + /** + * return the first schema in the given extensible elements. + * @param extElements Search the first schema in this extensible elements. + * @return The first schema in the given extensible elements. + * @throws WADLSException + */ + public static Schema getFirstSchema(List extElements){ + if (extElements == null) + return null; + Object schemaObj = extElements.iterator().next(); + if (schemaObj == null) + return null; + /* ExtensibilityElement schemaEE = (ExtensibilityElement) schemaObj; + if (SchemaConstants.XSD_QNAME_LIST.contains(schemaEE.getElementType())) + return (Schema)schemaObj; + else*/ + return null; + } + + /** + * return all schemas in the given extensible elements. + * @param extElements Search the first schema in this extensible elements. + * @return All schemas in the given extensible elements. + * @throws WADLSException + */ + public static List getSchemas(List extElements){ + List schemas = new ArrayList(); + if (extElements != null){ + Iterator it = extElements.iterator(); + while(it.hasNext()){ + Object schemaObj = it.next(); + if (schemaObj == null) + continue; + /*ExtensibilityElement schemaEE = (ExtensibilityElement) schemaObj; + if (SchemaConstants.XSD_QNAME_LIST.contains(schemaEE.getElementType())) + schemas.add((Schema)schemaObj);*/ + } + } + return schemas; + } + + /** + * This method split the path string, return a string array, + * whose first dim is the string before the first '/' , + * and the second dim is the remaining string. + * @param path The path to be splitted. + * @return The splitted string. + */ + public static String[] splitPath(String path){ + String returnStr[] = new String[2]; //the string before '/' + int slashPosition = path.indexOf('/'); + if (slashPosition == -1){ + //no deeper path + returnStr[0] = path; + returnStr[1] = ""; + } + else{ + returnStr[0] = path.substring(0, slashPosition); + returnStr[1] = path.substring(slashPosition+1); + //if the remaining path is "/", empty it. + if (returnStr[1] == "/") returnStr[1] = ""; + } + return returnStr; + } + +}
Binary file WebServiceToolWorkflow/lib/SAWADLParser/src/edu/uga/cs/lsdis/meteors/wadls/util/StringUtils.class has changed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/lib/SAWADLParser/src/edu/uga/cs/lsdis/meteors/wadls/util/StringUtils.java Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,230 @@ +/* + * (c) Copyright IBM Corp 2001, 2005 + */ + +package edu.uga.cs.lsdis.meteors.wadls.util; + +import java.io.*; +import java.util.*; +import java.net.URL; +import java.net.MalformedURLException; + +/** + * Deals with strings (probably need to elaborate some more). + * + * @author Matthew J. Duftler + */ +public class StringUtils +{ + public static final String lineSeparator = + System.getProperty("line.separator", "\n"); + public static final String lineSeparatorStr = cleanString(lineSeparator); + + // Ensure that escape sequences are passed through properly. + public static String cleanString(String str) + { + if (str == null) + return null; + else + { + char[] charArray = str.toCharArray(); + StringBuffer sBuf = new StringBuffer(); + + for (int i = 0; i < charArray.length; i++) + switch (charArray[i]) + { + case '\"' : sBuf.append("\\\""); + break; + case '\\' : sBuf.append("\\\\"); + break; + case '\n' : sBuf.append("\\n"); + break; + case '\r' : sBuf.append("\\r"); + break; + default : sBuf.append(charArray[i]); + break; + } + + return sBuf.toString(); + } + } + + /* + This method will return the correct name for a class object representing + a primitive, a single instance of a class, as well as n-dimensional arrays + of primitives or instances. This logic is needed to handle the string returned + from Class.getName(). If the class object represents a single instance (or + a primitive), Class.getName() returns the fully-qualified name of the class + and no further work is needed. However, if the class object represents an + array (of n dimensions), Class.getName() returns a Descriptor (the Descriptor + grammar is defined in section 4.3 of the Java VM Spec). This method will + parse the Descriptor if necessary. + */ + public static String getClassName(Class targetClass) + { + String className = targetClass.getName(); + + return targetClass.isArray() ? parseDescriptor(className) : className; + } + + /* + See the comment above for getClassName(targetClass)... + */ + private static String parseDescriptor(String className) + { + char[] classNameChars = className.toCharArray(); + int arrayDim = 0; + int i = 0; + + while (classNameChars[i] == '[') + { + arrayDim++; + i++; + } + + StringBuffer classNameBuf = new StringBuffer(); + + switch (classNameChars[i++]) + { + case 'B' : classNameBuf.append("byte"); + break; + case 'C' : classNameBuf.append("char"); + break; + case 'D' : classNameBuf.append("double"); + break; + case 'F' : classNameBuf.append("float"); + break; + case 'I' : classNameBuf.append("int"); + break; + case 'J' : classNameBuf.append("long"); + break; + case 'S' : classNameBuf.append("short"); + break; + case 'Z' : classNameBuf.append("boolean"); + break; + case 'L' : classNameBuf.append(classNameChars, + i, classNameChars.length - i - 1); + break; + } + + for (i = 0; i < arrayDim; i++) + classNameBuf.append("[]"); + + return classNameBuf.toString(); + } + + /* + @param contextURL the context in which to attempt to resolve the spec. + Effectively a document base. + */ + public static URL getURL(URL contextURL, String spec) + throws MalformedURLException + { + if (contextURL != null) + { + File tempFile = new File(spec); + + if (tempFile.isAbsolute()) + { + return tempFile.toURL(); + } + } + + try + { + return new URL(contextURL, spec); + } + catch (MalformedURLException e) + { + if (contextURL == null) + { + return new File(spec).toURL(); + } + else + { + throw e; + } + } + } + + /* + Returns an InputStream for reading from the specified resource, if the + resource points to a stream. + */ + public static InputStream getContentAsInputStream(URL url) + throws SecurityException, + IllegalArgumentException, + IOException + { + if (url == null) + { + throw new IllegalArgumentException("URL cannot be null."); + } + + try + { + Object content = url.getContent(); + + if (content == null) + { + throw new IllegalArgumentException("No content."); + } + + if (content instanceof InputStream) + { + return (InputStream)content; + } + else + { + throw new IllegalArgumentException((content instanceof String) + ? (String)content + : "This URL points to a: " + + StringUtils.getClassName(content.getClass())); + } + } + catch (SecurityException e) + { + throw new SecurityException("Your JVM's SecurityManager has " + + "disallowed this."); + } + catch (FileNotFoundException e) + { + throw new FileNotFoundException("This file was not found: " + url); + } + } + + public static List parseNMTokens(String nmTokens) + { + StringTokenizer strTok = new StringTokenizer(nmTokens, " "); + List tokens = new Vector(); + + while (strTok.hasMoreTokens()) + { + tokens.add(strTok.nextToken()); + } + + return tokens; + } + + public static String getNMTokens(List list) + { + if (list != null) + { + StringBuffer strBuf = new StringBuffer(); + int size = list.size(); + + for (int i = 0; i < size; i++) + { + String token = (String)list.get(i); + + strBuf.append((i > 0 ? " " : "") + token); + } + + return strBuf.toString(); + } + else + { + return null; + } + } +} \ No newline at end of file
Binary file WebServiceToolWorkflow/lib/SAWADLParser/src/edu/uga/cs/lsdis/meteors/wadls/util/xml/DOM2Writer.class has changed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/lib/SAWADLParser/src/edu/uga/cs/lsdis/meteors/wadls/util/xml/DOM2Writer.java Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,427 @@ +/* + * (c) Copyright IBM Corp 2001, 2005 + */ + +package edu.uga.cs.lsdis.meteors.wadls.util.xml; + +import java.io.*; +import java.util.*; +import org.w3c.dom.*; + +import edu.uga.cs.lsdis.meteors.wadls.*; +import edu.uga.cs.lsdis.meteors.wadls.util.*; + +/** + * This class is a utility to serialize a DOM node as XML. This class + * uses the <code>DOM Level 2</code> APIs. + * The main difference between this class and DOMWriter is that this class + * generates and prints out namespace declarations. + * + * @author Matthew J. Duftler (duftler@us.ibm.com) + * @author Joseph Kesselman + */ +public class DOM2Writer +{ + /** + * The namespaceURI represented by the prefix <code>xmlns</code>. + */ + private static String NS_URI_XMLNS = "http://www.w3.org/2000/xmlns/"; + + /** + * The namespaceURI represented by the prefix <code>xml</code>. + */ + private static String NS_URI_XML = "http://www.w3.org/XML/1998/namespace"; + + private static Map xmlEncodingMap = new HashMap(); + + static + { + xmlEncodingMap.put(null, Constants.XML_DECL_DEFAULT); + xmlEncodingMap.put(System.getProperty("file.encoding"), + Constants.XML_DECL_DEFAULT); + xmlEncodingMap.put("UTF8", "UTF-8"); + xmlEncodingMap.put("UTF-16", "UTF-16"); + xmlEncodingMap.put("UnicodeBig", "UTF-16"); + xmlEncodingMap.put("UnicodeLittle", "UTF-16"); + xmlEncodingMap.put("ASCII", "US-ASCII"); + xmlEncodingMap.put("ISO8859_1", "ISO-8859-1"); + xmlEncodingMap.put("ISO8859_2", "ISO-8859-2"); + xmlEncodingMap.put("ISO8859_3", "ISO-8859-3"); + xmlEncodingMap.put("ISO8859_4", "ISO-8859-4"); + xmlEncodingMap.put("ISO8859_5", "ISO-8859-5"); + xmlEncodingMap.put("ISO8859_6", "ISO-8859-6"); + xmlEncodingMap.put("ISO8859_7", "ISO-8859-7"); + xmlEncodingMap.put("ISO8859_8", "ISO-8859-8"); + xmlEncodingMap.put("ISO8859_9", "ISO-8859-9"); + xmlEncodingMap.put("ISO8859_13", "ISO-8859-13"); + xmlEncodingMap.put("ISO8859_15_FDIS", "ISO-8859-15"); + xmlEncodingMap.put("GBK", "GBK"); + xmlEncodingMap.put("Big5", "Big5"); + } + + /** + * Return a string containing this node serialized as XML. + */ + public static String nodeToString(Node node) + { + StringWriter sw = new StringWriter(); + + serializeAsXML(node, sw); + + return sw.toString(); + } + + + /** + * Print an XML declaration before serializing the element. + */ + public static void serializeElementAsDocument(Element el, Writer writer) + { + PrintWriter pw = new PrintWriter(writer); + String javaEncoding = (writer instanceof OutputStreamWriter) + ? ((OutputStreamWriter) writer).getEncoding() + : null; + + String xmlEncoding = java2XMLEncoding(javaEncoding); + + if (xmlEncoding != null) + { + pw.println(Constants.XML_DECL_START + + xmlEncoding + + Constants.XML_DECL_END); + } + else + { + pw.println("<?xml version=\"1.0\"?>"); + } + + serializeAsXML(el, writer); + } + + /** + * Serialize this node into the writer as XML. + */ + public static void serializeAsXML(Node node, Writer writer) + { + ObjectRegistry namespaceStack = new ObjectRegistry(); + + namespaceStack.register("xml", NS_URI_XML); + + PrintWriter pw = new PrintWriter(writer); + String javaEncoding = (writer instanceof OutputStreamWriter) + ? ((OutputStreamWriter) writer).getEncoding() + : null; + + print(node, namespaceStack, pw, java2XMLEncoding(javaEncoding)); + } + + private static void print(Node node, ObjectRegistry namespaceStack, + PrintWriter out, String xmlEncoding) + { + if (node == null) + { + return; + } + + boolean hasChildren = false; + int type = node.getNodeType(); + + switch (type) + { + case Node.DOCUMENT_NODE : + { + if (xmlEncoding != null) + { + out.println(Constants.XML_DECL_START + + xmlEncoding + + Constants.XML_DECL_END); + } + else + { + out.println("<?xml version=\"1.0\"?>"); + } + + NodeList children = node.getChildNodes(); + + if (children != null) + { + int numChildren = children.getLength(); + + for (int i = 0; i < numChildren; i++) + { + print(children.item(i), namespaceStack, out, xmlEncoding); + } + } + break; + } + + case Node.ELEMENT_NODE : + { + namespaceStack = new ObjectRegistry(namespaceStack); + + out.print('<' + node.getNodeName()); + + String elPrefix = node.getPrefix(); + String elNamespaceURI = node.getNamespaceURI(); + + if (elPrefix != null && elNamespaceURI != null) + { + boolean prefixIsDeclared = false; + + try + { + String namespaceURI = (String)namespaceStack.lookup(elPrefix); + + if (elNamespaceURI.equals(namespaceURI)) + { + prefixIsDeclared = true; + } + } + catch (IllegalArgumentException e) + { + // ignore this and carry on + } + + if (!prefixIsDeclared) + { + printNamespaceDecl(node, namespaceStack, out); + } + } + + NamedNodeMap attrs = node.getAttributes(); + int len = (attrs != null) ? attrs.getLength() : 0; + + for (int i = 0; i < len; i++) + { + Attr attr = (Attr)attrs.item(i); + + out.print(' ' + attr.getNodeName() +"=\"" + + normalize(attr.getValue()) + '\"'); + + String attrPrefix = attr.getPrefix(); + String attrNamespaceURI = attr.getNamespaceURI(); + + if (attrPrefix != null && attrNamespaceURI != null) + { + boolean prefixIsDeclared = false; + + try + { + String namespaceURI = (String)namespaceStack.lookup(attrPrefix); + + if (attrNamespaceURI.equals(namespaceURI)) + { + prefixIsDeclared = true; + } + } + catch (IllegalArgumentException e) + { + // ignore this and carry on + } + + if (!prefixIsDeclared) + { + printNamespaceDecl(attr, namespaceStack, out); + } + } + } + + NodeList children = node.getChildNodes(); + + if (children != null) + { + int numChildren = children.getLength(); + + hasChildren = (numChildren > 0); + + if (hasChildren) + { + out.print('>'); + } + + for (int i = 0; i < numChildren; i++) + { + print(children.item(i), namespaceStack, out, xmlEncoding); + } + } + else + { + hasChildren = false; + } + + if (!hasChildren) + { + out.print("/>"); + } + break; + } + + case Node.ENTITY_REFERENCE_NODE : + { + out.print('&'); + out.print(node.getNodeName()); + out.print(';'); + break; + } + + case Node.CDATA_SECTION_NODE : + { + out.print("<![CDATA["); + out.print(node.getNodeValue()); + out.print("]]>"); + break; + } + + case Node.TEXT_NODE : + { + out.print(normalize(node.getNodeValue())); + break; + } + + case Node.COMMENT_NODE : + { + out.print("<!--"); + out.print(node.getNodeValue()); + out.print("-->"); + break; + } + + case Node.PROCESSING_INSTRUCTION_NODE : + { + out.print("<?"); + out.print(node.getNodeName()); + + String data = node.getNodeValue(); + + if (data != null && data.length() > 0) + { + out.print(' '); + out.print(data); + } + + out.println("?>"); + break; + } + } + + if (type == Node.ELEMENT_NODE && hasChildren == true) + { + out.print("</"); + out.print(node.getNodeName()); + out.print('>'); + hasChildren = false; + } + } + + public static String java2XMLEncoding(String javaEnc) + { + return (String)xmlEncodingMap.get(javaEnc); + } + + + private static void printNamespaceDecl(Node node, + ObjectRegistry namespaceStack, + PrintWriter out) + { + switch (node.getNodeType()) + { + case Node.ATTRIBUTE_NODE : + { + printNamespaceDecl(((Attr)node).getOwnerElement(), node, + namespaceStack, out); + break; + } + + case Node.ELEMENT_NODE : + { + printNamespaceDecl((Element)node, node, namespaceStack, out); + break; + } + } + } + + private static void printNamespaceDecl(Element owner, Node node, + ObjectRegistry namespaceStack, + PrintWriter out) + { + String namespaceURI = node.getNamespaceURI(); + String prefix = node.getPrefix(); + + if (!(namespaceURI.equals(NS_URI_XMLNS) && prefix.equals("xmlns"))) + { + if (DOMUtils.getAttributeNS(owner, NS_URI_XMLNS, prefix) == null) + { + out.print(" xmlns:" + prefix + "=\"" + namespaceURI + '\"'); + } + } + else + { + prefix = node.getLocalName(); + namespaceURI = node.getNodeValue(); + } + + namespaceStack.register(prefix, namespaceURI); + } + + private static String normalize(String s) + { + StringBuffer str = new StringBuffer(); + int len = (s != null) ? s.length() : 0; + + for (int i = 0; i < len; i++) + { + char ch = s.charAt(i); + + switch (ch) + { + case '<' : + { + str.append("<"); + break; + } + case '>' : + { + str.append(">"); + break; + } + case '&' : + { + str.append("&"); + break; + } + case '"' : + { + str.append("""); + break; + } + case '\n' : + { + if (i > 0) + { + char lastChar = str.charAt(str.length() - 1); + + if (lastChar != '\r') + { + str.append(StringUtils.lineSeparator); + } + else + { + str.append('\n'); + } + } + else + { + str.append(StringUtils.lineSeparator); + } + break; + } + default : + { + str.append(ch); + } + } + } + + return (str.toString()); + } +} \ No newline at end of file
Binary file WebServiceToolWorkflow/lib/SAWADLParser/src/edu/uga/cs/lsdis/meteors/wadls/util/xml/DOMUtils.class has changed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/lib/SAWADLParser/src/edu/uga/cs/lsdis/meteors/wadls/util/xml/DOMUtils.java Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,641 @@ +/* + * (c) Copyright IBM Corp 2001, 2005 + */ + +package edu.uga.cs.lsdis.meteors.wadls.util.xml; + +import java.io.*; +import java.util.*; +import org.w3c.dom.*; + +import javax.wadls.*; +import javax.xml.namespace.*; + +public class DOMUtils { + /** + * The namespaceURI represented by the prefix <code>xmlns</code>. + */ + private static String NS_URI_XMLNS = "http://www.w3.org/2000/xmlns/"; + + private static final String ATTR_XMLNS = "xmlns"; + + /** + * Returns a list of attributes of an element. Returns an + * empty list if the element has no attributes. Does not + * include namespace declarations. + * + * @param el Element whose attributes are returned + * @return the List of Attr + */ + static public List getAttributes (Element el) { + String nodename, prefix = null; + List attrs = new Vector(); + NamedNodeMap attrMap = el.getAttributes(); + for(int i = 0; i < attrMap.getLength(); i++) + { + nodename = attrMap.item(i).getNodeName(); + prefix = attrMap.item(i).getPrefix(); + + if (ATTR_XMLNS.equals(nodename) || ATTR_XMLNS.equals(prefix)) + { + //ignore namespace declarations + continue; + } + else + { + attrs.add(attrMap.item(i)); + } + } + + return attrs; + } + + /** + * Returns the value of an attribute of an element. Returns null + * if the attribute is not found (whereas Element.getAttribute + * returns "" if an attrib is not found). This method should be + * used for elements that support extension attributes because it + * does not track unexpected attributes. + * + * @param el Element whose attrib is looked for + * @param attrName name of attribute to look for + * @return the attribute value + */ + static public String getAttribute (Element el, String attrName) { + String sRet = null; + Attr attr = el.getAttributeNode(attrName); + + if (attr != null) { + sRet = attr.getValue(); + } + return sRet; + } + + /** + * Returns the value of an attribute of an element. Returns null + * if the attribute is not found (whereas Element.getAttribute + * returns "" if an attrib is not found). This method should be + * used for elements that do not support extension attributes + * because it tracks the element's remaining attributes so that + * eventually any unexpected attributes can be identified. + * + * @param el Element whose attrib is looked for + * @param attrName name of attribute to look for + * @param remainingAttrs List of remaining attributes + * @return the attribute value + */ + static public String getAttribute (Element el, String attrName, List remainingAttrs) { + String sRet = null; + Attr attr = el.getAttributeNode(attrName); + + if (attr != null) { + sRet = attr.getValue(); + remainingAttrs.remove(attr); + } + return sRet; + } + + /** + * Returns the value of an attribute of an element. Returns null + * if the attribute is not found (whereas Element.getAttributeNS + * returns "" if an attrib is not found). + * + * @param el Element whose attrib is looked for + * @param namespaceURI namespace URI of attribute to look for + * @param localPart local part of attribute to look for + * @return the attribute value + */ + static public String getAttributeNS (Element el, + String namespaceURI, + String localPart) { + String sRet = null; + Attr attr = el.getAttributeNodeNS (namespaceURI, localPart); + + if (attr != null) { + sRet = attr.getValue (); + } + + return sRet; + } + + /** + * Returns the value of an attribute of an element. Returns null + * if the attribute is not found (whereas Element.getAttributeNS + * returns "" if an attrib is not found). + * + * @param el Element whose attrib is looked for + * @param namespaceURI namespace URI of attribute to look for + * @param localPart local part of attribute to look for + * @return the attribute value + */ + static public String getAttributeNS (Element el, + String namespaceURI, + String localPart, + List remainingAttrs) { + String sRet = null; + Attr attr = el.getAttributeNodeNS (namespaceURI, localPart); + + if (attr != null) { + sRet = attr.getValue(); + remainingAttrs.remove(attr); + } + + return sRet; + } + + /** + * Concat all the text and cdata node children of this elem and return + * the resulting text. + * + * @param parentEl the element whose cdata/text node values are to + * be combined. + * @return the concatanated string. + */ + static public String getChildCharacterData (Element parentEl) { + if (parentEl == null) { + return null; + } + Node tempNode = parentEl.getFirstChild(); + StringBuffer strBuf = new StringBuffer(); + CharacterData charData; + + while (tempNode != null) { + switch (tempNode.getNodeType()) { + case Node.TEXT_NODE : + case Node.CDATA_SECTION_NODE : charData = (CharacterData)tempNode; + strBuf.append(charData.getData()); + break; + } + tempNode = tempNode.getNextSibling(); + } + return strBuf.toString(); + } + + /** + * Return the first child element of the given element. Null if no + * children are found. + * + * @param elem Element whose child is to be returned + * @return the first child element. + */ + public static Element getFirstChildElement (Element elem) { + for (Node n = elem.getFirstChild (); n != null; n = n.getNextSibling ()) { + if (n.getNodeType () == Node.ELEMENT_NODE) { + return (Element) n; + } + } + return null; + } + + /** + * Return the next sibling element of the given element. Null if no + * more sibling elements are found. + * + * @param elem Element whose sibling element is to be returned + * @return the next sibling element. + */ + public static Element getNextSiblingElement (Element elem) { + for (Node n = elem.getNextSibling (); n != null; n = n.getNextSibling ()) { + if (n.getNodeType () == Node.ELEMENT_NODE) { + return (Element) n; + } + } + return null; + } + + /** + * Return the first child element of the given element which has the + * given attribute with the given value. + * + * @param elem the element whose children are to be searched + * @param attrName the attrib that must be present + * @param attrValue the desired value of the attribute + * + * @return the first matching child element. + */ + public static Element findChildElementWithAttribute (Element elem, + String attrName, + String attrValue) { + for (Node n = elem.getFirstChild (); n != null; n = n.getNextSibling ()) { + if (n.getNodeType () == Node.ELEMENT_NODE) { + if (attrValue.equals (DOMUtils.getAttribute ((Element) n, attrName))) { + return (Element) n; + } + } + } + return null; + } + + /** + * Count number of children of a certain type of the given element. + * + * @param elem the element whose kids are to be counted + * + * @return the number of matching kids. + */ + public static int countKids (Element elem, short nodeType) { + int nkids = 0; + for (Node n = elem.getFirstChild (); n != null; n = n.getNextSibling ()) { + if (n.getNodeType () == nodeType) { + nkids++; + } + } + return nkids; + } + + /** + * Given a prefix and a node, return the namespace URI that the prefix + * has been associated with. This method is useful in resolving the + * namespace URI of attribute values which are being interpreted as + * QNames. If prefix is null, this method will return the default + * namespace. + * + * @param context the starting node (looks up recursively from here) + * @param prefix the prefix to find an xmlns:prefix=uri for + * + * @return the namespace URI or null if not found + */ + public static String getNamespaceURIFromPrefix (Node context, + String prefix) { + short nodeType = context.getNodeType (); + Node tempNode = null; + + switch (nodeType) + { + case Node.ATTRIBUTE_NODE : + { + tempNode = ((Attr) context).getOwnerElement (); + break; + } + case Node.ELEMENT_NODE : + { + tempNode = context; + break; + } + default : + { + tempNode = context.getParentNode (); + break; + } + } + + while (tempNode != null && tempNode.getNodeType () == Node.ELEMENT_NODE) + { + Element tempEl = (Element) tempNode; + String namespaceURI = null; + if (prefix == null){ + namespaceURI = getAttribute (tempEl, "xmlns"); + if (namespaceURI == null) + namespaceURI = getAttribute (tempEl, "targetNamespace"); + } + else + namespaceURI = getAttributeNS (tempEl, NS_URI_XMLNS, prefix); + + if (namespaceURI != null) + { + return namespaceURI; + } + else + { + tempNode = tempEl.getParentNode (); + } + } + + return null; + } + + public static QName getQName(String prefixedValue, + Element contextEl, + Application app) + throws WADLSException + { + int index = prefixedValue.indexOf(':'); + String prefix = (index != -1) + ? prefixedValue.substring(0, index) + : null; + String localPart = prefixedValue.substring(index + 1); + String namespaceURI = getNamespaceURIFromPrefix(contextEl, prefix); + + if (namespaceURI != null) + { + registerUniquePrefix(prefix, namespaceURI, app); + + return new QName(namespaceURI, localPart); + } + else + { + String faultCode = (prefix == null) + ? WADLSException.NO_PREFIX_SPECIFIED + : WADLSException.UNBOUND_PREFIX; + + WADLSException wsdlExc = new WADLSException(faultCode, + "Unable to determine " + + "namespace of '" + + prefixedValue + "'."); + + wsdlExc.setLocation(XPathUtils.getXPathExprFromNode(contextEl)); + + throw wsdlExc; + } + } + + public static void registerUniquePrefix(String prefix, + String namespaceURI, + Application app) + { + String tempNSUri = app.getNamespace(prefix); + + if (tempNSUri != null && tempNSUri.equals(namespaceURI)) + { + return; + } + + while (tempNSUri != null && !tempNSUri.equals(namespaceURI)) + { + prefix += "_"; + tempNSUri = app.getNamespace(prefix); + } + + app.addNamespace(prefix, namespaceURI); + } + + /** + * This method should be used for elements that support extension attributes + * because it does not track the remaining attributes to test for unexpected + * attributes. + */ + public static QName getQualifiedAttributeValue(Element el, + String attrName, + String elDesc, + boolean isRequired, + Application app) + throws WADLSException + { + String attrValue = DOMUtils.getAttribute(el, attrName); + + if (attrValue != null) + { + return getQName(attrValue, el, app); + } + else if (isRequired) + { + WADLSException wsdlExc = new WADLSException(WADLSException.INVALID_WADL, + "The '" + attrName + + "' attribute must be " + + "specified for every " + + elDesc + " element."); + + wsdlExc.setLocation(XPathUtils.getXPathExprFromNode(el)); + + throw wsdlExc; + } + else + { + return null; + } + } + + /** + * This method should be used for elements that do not support extension attributes + * because it tracks the remaining attributes so that eventually any + * unexpected attributes can be identified. + */ + public static QName getQualifiedAttributeValue(Element el, + String attrName, + String elDesc, + boolean isRequired, + Application app, + List remainingAttrs) + throws WADLSException + { + String attrValue = null; + + attrValue = DOMUtils.getAttribute(el, attrName, remainingAttrs); + + if (attrValue != null) + { + return getQName(attrValue, el, app); + } + else if (isRequired) + { + WADLSException wsdlExc = new WADLSException(WADLSException.INVALID_WADL, + "The '" + attrName + + "' attribute must be " + + "specified for every " + + elDesc + " element."); + + wsdlExc.setLocation(XPathUtils.getXPathExprFromNode(el)); + + throw wsdlExc; + } + else + { + return null; + } + } + + public static void throwWADLException(Element location) throws WADLSException + { + String elName = QNameUtils.newQName(location).toString(); + + WADLSException wsdlExc = new WADLSException(WADLSException.INVALID_WADL, + "Encountered unexpected element '" + + elName + "'."); + + wsdlExc.setLocation(XPathUtils.getXPathExprFromNode(location)); + + throw wsdlExc; + } + + public static void throwWADLException(Element location, List remainingAttrs) throws WADLSException + { + String elName = QNameUtils.newQName(location).toString(); + + StringBuffer sb = new StringBuffer(); + ListIterator i = remainingAttrs.listIterator(); + while (i.hasNext()) + { + String attrName = QNameUtils.newQName((Attr)i.next()).toString(); + sb.append(attrName); + sb.append( i.hasNext() ? " " : ""); + } + + WADLSException wsdlExc = new WADLSException(WADLSException.INVALID_WADL, + "Element '" + + elName + + "' contained unexpected attributes: '" + + sb.toString() + + "'"); + + wsdlExc.setLocation(XPathUtils.getXPathExprFromNode(location)); + + throw wsdlExc; + } + + public static void printAttribute(String name, + String value, + PrintWriter pw) + { + if (value != null) + { + pw.print(' ' + name + "=\"" + cleanString(value) + '\"'); + } + } + + /** + * Prints attributes with qualified names. + */ + public static void printQualifiedAttribute(QName name, + String value, + Application app, + PrintWriter pw) + throws WADLSException + { + if (name != null) + { + printAttribute(getQualifiedValue(name.getNamespaceURI(), + name.getLocalPart(), + app), + value, + pw); + } + } + + public static void printQualifiedAttribute(QName name, + QName value, + Application app, + PrintWriter pw) + throws WADLSException + { + if (value != null) + { + printAttribute(getQualifiedValue(name.getNamespaceURI(), + name.getLocalPart(), + app), + getQualifiedValue(value.getNamespaceURI(), + value.getLocalPart(), + app), + pw); + } + } + + public static void printQualifiedAttribute(String name, + QName value, + Application app, + PrintWriter pw) + throws WADLSException + { + if (value != null) + { + printAttribute(name, + getQualifiedValue(value.getNamespaceURI(), + value.getLocalPart(), + app), + pw); + } + } + + public static String getQualifiedValue(String namespaceURI, + String localPart, + Application app) + throws WADLSException + { + String prefix = null; + + if (namespaceURI != null && !namespaceURI.equals("")) + { + prefix = getPrefix(namespaceURI, app); + } + + return ((prefix != null && !prefix.equals("")) + ? prefix + ":" + : "") + localPart; + } + + public static String getPrefix(String namespaceURI, + Application app) + throws WADLSException + { + String prefix = app.getPrefix(namespaceURI); + + if (prefix == null) + { + throw new WADLSException(WADLSException.OTHER_ERROR, + "Can't find prefix for '" + namespaceURI + + "'. Namespace prefixes must be set on the" + + " Definition object using the " + + "addNamespace(...) method."); + } + + return prefix; + } + + public static String cleanString(String orig) + { + if (orig == null) + { + return ""; + } + + StringBuffer strBuf = new StringBuffer(); + char[] chars = orig.toCharArray(); + boolean inCDATA = false; + + for (int i = 0; i < chars.length; i++) + { + if (!inCDATA) + { + switch (chars[i]) + { + case '&' : strBuf.append("&"); + break; + case '\"' : strBuf.append("""); + break; + case '\'' : strBuf.append("'"); + break; + case '<' : + { + if (chars.length >= i + 9) + { + String tempStr = new String(chars, i, 9); + + if (tempStr.equals("<![CDATA[")) + { + strBuf.append(tempStr); + i += 8; + inCDATA = true; + } + else + { + strBuf.append("<"); + } + } + else + { + strBuf.append("<"); + } + } + break; + case '>' : strBuf.append(">"); + break; + default : strBuf.append(chars[i]); + break; + } + } + else + { + strBuf.append(chars[i]); + + if (chars[i] == '>' + && chars[i - 1] == ']' + && chars[i - 2] == ']') + { + inCDATA = false; + } + } + } + + return strBuf.toString(); + } +} +
Binary file WebServiceToolWorkflow/lib/SAWADLParser/src/edu/uga/cs/lsdis/meteors/wadls/util/xml/QNameUtils.class has changed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/lib/SAWADLParser/src/edu/uga/cs/lsdis/meteors/wadls/util/xml/QNameUtils.java Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,132 @@ +/* + * (c) Copyright IBM Corp 2002, 2005 + */ + +package edu.uga.cs.lsdis.meteors.wadls.util.xml; + +import javax.wadls.Application; +import javax.wadls.WADLSException; +import javax.xml.XMLConstants; +import javax.xml.namespace.*; + +import org.w3c.dom.*; + +public class QNameUtils +{ + public static boolean matches(QName qname, Node node) + { + return (node != null && qname.equals(newQName(node))); + } + + public static QName newQName(Node node) + { + if (node != null) + { + // System.out.println("node:namespace uri is " + node.getNamespaceURI()); + QName q = new QName(node.getNamespaceURI(), node.getLocalName()); + //System.out.println("Qname generated is "+q); + return q; + + } + else + { + return new QName(null, null); + } + } + + public static QName getQName(String prefixedValue, + Element contextEl) + throws WADLSException{ + int index = prefixedValue.indexOf(':'); + String prefix = (index != -1) + ? prefixedValue.substring(0, index) + : null; + String localPart = prefixedValue.substring(index + 1); + String namespaceURI = DOMUtils.getNamespaceURIFromPrefix(contextEl, prefix); + + if (namespaceURI != null) + return new QName(namespaceURI, localPart); + else{ + String faultCode = (prefix == null) + ? WADLSException.NO_PREFIX_SPECIFIED + : WADLSException.UNBOUND_PREFIX; + + WADLSException wsdlExc = new WADLSException(faultCode, + "Unable to determine " + + "namespace of '" + + prefixedValue + "'."); + + wsdlExc.setLocation(XPathUtils.getXPathExprFromNode(contextEl)); + + throw wsdlExc; + } + } + + /** + * Parse a string, return a QName. + * The String can be only in the form of "{namespace}localpart" + * @param qNameAsString + * @return A QName by parsing the given string. + */ + public static QName generateQName(String qNameAsString){ + return generateQName(qNameAsString, null); + } + + /** + * Parse a string, return a QName. + * The String may be in the form of "prefix:localpart" or "{namespace}localpart" + * @param qNameAsString + * @param wsdlDef Wsdl definition for the purpose of getting URI from prefix, and vice versa. + * @return A QName by paring the given string. + */ + public static QName generateQName(String qNameAsString, Application wadlApp){ + String nsURI = null; + String prefix = null; + String localPart = null; + + if (qNameAsString == null) { + throw new IllegalArgumentException("cannot create QName from \"null\" or \"\" String"); + } + + if (qNameAsString.charAt(0) == '{') { //namespace + localpart + int endOfNamespaceURI = qNameAsString.indexOf('}'); + if (endOfNamespaceURI == -1) { + throw new IllegalArgumentException( + "cannot create QName from \"" + + qNameAsString + + "\", missing closing \"}\""); + } + else{ + nsURI = qNameAsString.substring(1, endOfNamespaceURI); + //get prefix from wsdls definition + if (wadlApp != null) + prefix = wadlApp.getPrefix(nsURI); + localPart = qNameAsString.substring(endOfNamespaceURI + 1); + return new QName(nsURI, localPart, nsURI); + } + + } + else{ + int endOfPrefix = qNameAsString.indexOf(':'); //try prefix + + if (endOfPrefix == -1){ //localpart only, use tagetNamespace from wsdls definition + if (wadlApp != null) + nsURI = wadlApp.getTargetNamespace(); + else + nsURI = XMLConstants.NULL_NS_URI; + return new QName(nsURI, qNameAsString); + } + else if (wadlApp != null){ //prefix + localpart + prefix = qNameAsString.substring(1, endOfPrefix); + nsURI = wadlApp.getNamespace(prefix); + localPart = qNameAsString.substring(endOfPrefix + 1); + return new QName(nsURI, localPart, nsURI); + } + else + throw new IllegalArgumentException( + "cannot create QName from \"" + + qNameAsString + + "\", no URI and no wsdl definition is given"); + } + } +} \ No newline at end of file
Binary file WebServiceToolWorkflow/lib/SAWADLParser/src/edu/uga/cs/lsdis/meteors/wadls/util/xml/XPathUtils.class has changed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/lib/SAWADLParser/src/edu/uga/cs/lsdis/meteors/wadls/util/xml/XPathUtils.java Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,197 @@ +/* + * (c) Copyright IBM Corp 2001, 2005 + */ + +package edu.uga.cs.lsdis.meteors.wadls.util.xml; + +import java.util.Vector; +import org.w3c.dom.*; + +/** + * A <code>XPathUtils</code> ... + * + * @author Matthew J. Duftler (duftler@us.ibm.com) + * @author Sanjiva Weerawarana (sanjiva@watson.ibm.com) + */ +public class XPathUtils +{ + private static Node getPreviousTypedNode(Node node, short nodeType) + { + node = node.getPreviousSibling(); + + while (node != null && node.getNodeType() != nodeType) + { + node = node.getPreviousSibling(); + } + + return node; + } + + private static Node getNextTypedNode(Node node, short nodeType) + { + node = node.getNextSibling(); + + while (node != null && node.getNodeType() != nodeType) + { + node = node.getNextSibling(); + } + + return node; + } + + private static String getValue(Node node, short nodeType) + { + switch (nodeType) + { + case Node.ELEMENT_NODE : + return ((Element)node).getTagName(); + + case Node.TEXT_NODE : + return ((Text)node).getData(); + + case Node.PROCESSING_INSTRUCTION_NODE : + return ((ProcessingInstruction)node).getData(); + + default : + return ""; + } + } + + private static short getNodeType(Node node) + { + return (node != null ? node.getNodeType() : -1); + } + + private static String getXPathFromVector(Vector path) + { + StringBuffer strBuf = new StringBuffer(); + int length = path.size(); + + for (int i = 0; i < length; i++) + { + Node tempNode = (Node)path.elementAt(i); + short nodeType = getNodeType(tempNode); + String targetValue = getValue(tempNode, nodeType); + int position = 1; + + tempNode = getPreviousTypedNode(tempNode, nodeType); + + while (tempNode != null) + { + if (nodeType == Node.ELEMENT_NODE) + { + if (getValue(tempNode, nodeType).equals(targetValue)) + { + position++; + } + } + else + { + position++; + } + + tempNode = getPreviousTypedNode(tempNode, nodeType); + } + + boolean hasMatchingSiblings = (position > 1); + + if (!hasMatchingSiblings) + { + tempNode = (Node)path.elementAt(i); + tempNode = getNextTypedNode(tempNode, nodeType); + + while (!hasMatchingSiblings && tempNode != null) + { + if (nodeType == Node.ELEMENT_NODE) + { + if (getValue(tempNode, nodeType).equals(targetValue)) + { + hasMatchingSiblings = true; + } + else + { + tempNode = getNextTypedNode(tempNode, nodeType); + } + } + else + { + hasMatchingSiblings = true; + } + } + } + + String step; + + switch (nodeType) + { + case Node.TEXT_NODE : + step = "text()"; + break; + case Node.PROCESSING_INSTRUCTION_NODE : + step = "processing-instruction()"; + break; + default : + step = targetValue; + break; + } + + if (step != null && step.length() > 0) + { + strBuf.append('/' + step); + } + + if (hasMatchingSiblings) + { + strBuf.append("[" + position + "]"); + } + } + + return strBuf.toString(); + } + + private static Vector getVectorPathFromNode(Node node) + { + Vector path = new Vector(); + + while (node != null) + { + path.insertElementAt(node, 0); + node = node.getParentNode(); + } + + return path; + } + + /** + * Generates an XPath expression that will return only the given node as its + * result. This method only works for element, text, document and PI nodes. + * + * @param node the node to generate an XPath expression for. This node must + * be an element node, a text node, a document node, or a processing + * instruction node. + * @return an XPath expression that will return only the given node as its + * result. + * @exception IllegalArgumentException if the given node is not an element, + * text, document or PI node. + */ + public static String getXPathExprFromNode(Node node) + throws IllegalArgumentException + { + short nodeType = getNodeType(node); + + switch (nodeType) + { + case Node.ELEMENT_NODE : + case Node.TEXT_NODE : + case Node.PROCESSING_INSTRUCTION_NODE : + return getXPathFromVector(getVectorPathFromNode(node)); + + case Node.DOCUMENT_NODE : + return "/"; + + default : + throw new IllegalArgumentException("Only works for element, text, " + + "document, and PI nodes."); + } + } +} \ No newline at end of file
Binary file WebServiceToolWorkflow/lib/SAWADLParser/src/edu/uga/cs/lsdis/meteors/wadls/xml/WADLReaderImpl.class has changed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/lib/SAWADLParser/src/edu/uga/cs/lsdis/meteors/wadls/xml/WADLReaderImpl.java Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,1727 @@ +/* + * (c) Copyright IBM Corp 2001, 2005 + */ + +package edu.uga.cs.lsdis.meteors.wadls.xml; + +import java.io.*; +import java.net.*; +import java.util.*; + +import javax.xml.namespace.*; +import javax.xml.parsers.*; +import org.w3c.dom.*; +import org.xml.sax.*; + +import javax.wadls.*; +import javax.wadls.extensions.*; +import javax.wadls.extensions.schema.Schema; +import javax.wadls.extensions.schema.SchemaReference; +import javax.wadls.factory.*; +import javax.wadls.xml.*; +import javax.wadls.Effect; +import javax.wadls.PreCondition; +import javax.wadls.extensions.ExtensionRegistry; + + + +import javax.wadls.extensions.ExtensibilityElement; +import javax.wadls.extensions.ExtensionDeserializer; +import javax.wadls.factory.WADLFactory; + +import edu.uga.cs.lsdis.meteors.wadls.*; +import edu.uga.cs.lsdis.meteors.wadls.extensions.schema.SchemaConstants; +import edu.uga.cs.lsdis.meteors.wadls.extensions.schema.SchemaSerializer; +import edu.uga.cs.lsdis.meteors.wadls.util.*; +import edu.uga.cs.lsdis.meteors.wadls.util.xml.*; +import edu.uga.cs.lsdis.meteors.wadls.Constants; +import edu.uga.cs.lsdis.meteors.wadls.util.xml.QNameUtils; +import edu.uga.cs.lsdis.meteors.wadls.util.StringUtils; +import edu.uga.cs.lsdis.meteors.wadls.util.xml.XPathUtils; +import edu.uga.cs.lsdis.meteors.wadls.extensions.schema.SchemaDeserializer; + + +/** + * This class describes a collection of methods + * that enable conversion of a WSDL-S document (in XML, + * following the WSDL schema described in the WSDL + * specification) into a WSDL-S model. + * + * @author Zixin Wu (wuzixin@uga.edu) + * @author Matthew J. Duftler + * @author Nirmal Mukhi + */ +public class WADLReaderImpl implements WADLReader +{ + + static { + Constants.setSemanticExtensionURI(Constants.SemanticExtensionType.SAWADL); + } + // Used for determining the style of operations. + private static final List STYLE_ONE_WAY = + Arrays.asList(new String[]{Constants.ELEM_INPUT}); + private static final List STYLE_REQUEST_RESPONSE = + Arrays.asList(new String[]{Constants.ELEM_INPUT, Constants.ELEM_OUTPUT}); + private static final List STYLE_SOLICIT_RESPONSE = + Arrays.asList(new String[]{Constants.ELEM_OUTPUT, Constants.ELEM_INPUT}); + private static final List STYLE_NOTIFICATION = + Arrays.asList(new String[]{Constants.ELEM_OUTPUT}); + + protected boolean verbose = true; + protected ExtensionRegistry extReg = null; + protected boolean importDocuments = true; + protected boolean parseSAWSDL = false; + protected String factoryImplName = null; + protected WADLLocator loc = null; + + //Contains all schemas used by this wsdl, either in-line or nested + //via wsdl imports or schema imports, includes or redefines + protected Map allSchemas = new Hashtable(); + + private String WORKING_SEMANTIC_NAMESPACE = Constants.NS_URI_SAWADL; + + + /** + * Sets the specified feature to the specified value. + * <p> + * The supported features are: + * <p> + * <table border=1> + * <tr> + * <th>Name</th> + * <th>Description</th> + * <th>Default Value</th> + * </tr> + * <tr> + * <td><center>javax.wsdls.verbose</center></td> + * <td>If set to true, status messages will be displayed.</td> + * <td><center>true</center></td> + * </tr> + * <tr> + * <td><center>javax.wsdls.importDocuments</center></td> + * <td>If set to true, imported WSDL documents will be + * retrieved and processed.</td> + * <td><center>true</center></td> + * </tr> + * </table> + * <p> + * All feature names must be fully-qualified, Java package style. All + * names starting with javax.wsdls. are reserved for features defined + * by the JWSDL specification. It is recommended that implementation- + * specific features be fully-qualified to match the package name + * of that implementation. For example: com.abc.featureName + * + * @param name the name of the feature to be set. + * @param value the value to set the feature to. + * @throws IllegalArgumentException if the feature name is not recognized. + * @see #getFeature(String) + */ + public void setFeature(String name, boolean value) + throws IllegalArgumentException + { + if (name == null) + { + throw new IllegalArgumentException("Feature name must not be null."); + } + + if (name.equals(Constants.FEATURE_VERBOSE)) + { + verbose = value; + } + else if (name.equals(Constants.FEATURE_IMPORT_DOCUMENTS)) + { + importDocuments = value; + } else if(name.equals(Constants.FEATURE_PARSE_SAWADL)) { + if(value) { + WORKING_SEMANTIC_NAMESPACE = Constants.NS_URI_SAWADL; + Constants.setSemanticExtensionURI(Constants.SemanticExtensionType.SAWADL); + } else { + WORKING_SEMANTIC_NAMESPACE = Constants.NS_URI_WADLS; + Constants.setSemanticExtensionURI(Constants.SemanticExtensionType.WADLS); + } + parseSAWSDL = value; + } + else + { + throw new IllegalArgumentException("Feature name '" + name + + "' not recognized."); + } + } + + /** + * Gets the value of the specified feature. + * + * @param name the name of the feature to get the value of. + * @throws IllegalArgumentException if the feature name is not recognized. + * @see #setFeature(String, boolean) + */ + public boolean getFeature(String name) throws IllegalArgumentException + { + if (name == null) + { + throw new IllegalArgumentException("Feature name must not be null."); + } + + if (name.equals(Constants.FEATURE_VERBOSE)) + { + return verbose; + } + else if (name.equals(Constants.FEATURE_IMPORT_DOCUMENTS)) + { + return importDocuments; + } + else + { + throw new IllegalArgumentException("Feature name '" + name + + "' not recognized."); + } + } + + public void setExtensionRegistry(ExtensionRegistry extReg) + { + this.extReg = extReg; + } + + /** + * Get the extension registry, if one was set. Default is + * null. + */ + public ExtensionRegistry getExtensionRegistry() + { + return extReg; + } + + /** + * Set the extension registry to be used when reading + * WSDL documents into a WSDL definition. If an + * extension registry is set, that is the extension + * registry that will be set as the extensionRegistry + * property of the definitions resulting from invoking + * readWSDL(...). Default is null. + * + * @param extReg the extension registry to use for new + * definitions + */ + + + + + /** + * Set a different factory implementation to use for + * creating definitions when reading WSDL documents. + * As some WSDLReader implementations may only be + * capable of creating definitions using the same + * factory implementation from which the reader was + * obtained, this method is optional. Default is null. + * + * @param factoryImplName the fully-qualified class name of the + * class which provides a concrete implementation of the abstract + * class WSDLFactory. + * @throws UnsupportedOperationException if this method + * is invoked on an implementation which does not + * support it. + */ + public void setFactoryImplName(String factoryImplName) + throws UnsupportedOperationException + { + this.factoryImplName = factoryImplName; + } + + /** + * Get the factoryImplName, if one was set. Default is null. + */ + public String getFactoryImplName() + { + return factoryImplName; + } + + protected Application parseApplications(String documentBaseURI, + Element defEl, + Map importedDefs) + throws WADLSException, URISyntaxException + { + checkElementName(defEl, Constants.Q_ELEM_DEFINITIONS); + + WADLFactory factory = (factoryImplName != null) + ? WADLFactory.newInstance(factoryImplName) + : WADLFactory.newInstance(); + Application def = factory.newApplication(); + + + + String name = DOMUtils.getAttribute(defEl, Constants.ATTR_NAME); + String targetNamespace = DOMUtils.getAttribute(defEl, + Constants.ATTR_TARGET_NAMESPACE); + System.out.println("Target Name Space:"+targetNamespace); + NamedNodeMap attrs = defEl.getAttributes(); + + if (documentBaseURI != null) + { + def.setDocumentBaseURI(documentBaseURI); + } + + if (name != null) + { + def.setQName(new QName(targetNamespace, name)); + } + + if (targetNamespace != null) + { + def.setTargetNamespace(targetNamespace); + } + + int size = attrs.getLength(); + + for (int i = 0; i < size; i++) + { + Attr attr = (Attr)attrs.item(i); + String namespaceURI = attr.getNamespaceURI(); + String localPart = attr.getLocalName(); + String value = attr.getValue(); + + + if (namespaceURI != null && namespaceURI.equals(Constants.NS_URI_XMLNS)) + { + if (localPart != null && !localPart.equals(Constants.ATTR_XMLNS)) + { + System.out.println("LocalPart is set to "+localPart+" and it's value is "+value); + def.addNamespace(localPart, value); + } + else + { + System.out.println("LocalPart is set to null and it's value is "+value); + def.addNamespace(null, value); + } + } + } + + Element tempEl = DOMUtils.getFirstChildElement(defEl); + System.out.println("%%%% "); + System.out.println("%%%% First Child: "+tempEl.getNodeName()); + + while (tempEl != null) + { + if (QNameUtils.matches(Constants.Q_ELEM_DOCUMENTATION, tempEl)) + { + System.out.println("%%%% Documentation Element:"+tempEl.getTextContent()); + def.setDocumentationElement(tempEl); + } + else if (QNameUtils.matches(Constants.Q_ELEM_GRAMMARS, tempEl)) + { + System.out.println("%%%% Grammars element is parsed."); + def.setGrammars(parseGrammars(tempEl, def)); + } + else if (QNameUtils.matches(Constants.Q_ELEM_RESOURCES, tempEl)){ + + System.out.println("%%%% Resources Element is parsed."); + String path = DOMUtils.getAttribute(tempEl, Constants.ATTR_BASE); + def.setResourcesPath(path); + System.out.println("Resources path is:"+path); + Element tempEl1 = DOMUtils.getFirstChildElement(tempEl); + for (; tempEl1 != null; tempEl1 = DOMUtils.getNextSiblingElement(tempEl1)){ + if (QNameUtils.matches(Constants.Q_ELEM_RESOURCE, tempEl1)) + { + def.addResource(parseResource(tempEl1, def)); + } + } + + } + else{ + + } + + tempEl = DOMUtils.getNextSiblingElement(tempEl); + } + + return def; + } + + protected Include parseInclude(Element importEl, + Application def, + Map importedDefs) + throws WADLSException + { + Include importDef = def.createInclude(); + + try + { + String namespaceURI = DOMUtils.getAttribute(importEl, + Constants.ATTR_NAMESPACE); + String locationURI = DOMUtils.getAttribute(importEl, + Constants.ATTR_LOCATION); + String contextURI = null; + + if (namespaceURI != null) + { + importDef.setNamespaceURI(namespaceURI); + } + + if (locationURI != null) + { + importDef.setLocationURI(locationURI); + + if (importDocuments) + { + try + { + contextURI = def.getDocumentBaseURI(); + Application importedDef = null; + InputStream inputStream = null; + InputSource inputSource = null; + URL url = null; + + if (loc != null) + { + inputSource = loc.getImportInputSource(contextURI, locationURI); + + /* + We now have available the latest import URI. This might + differ from the locationURI so check the importedDefs for it + since it is this that we pass as the documentBaseURI later. + */ + String liu = loc.getLatestImportURI(); + + importedDef = (Application)importedDefs.get(liu); + } + else + { + URL contextURL = (contextURI != null) + ? StringUtils.getURL(null, contextURI) + : null; + + url = StringUtils.getURL(contextURL, locationURI); + importedDef = (Application)importedDefs.get(url.toString()); + + if (importedDef == null) + { + inputStream = StringUtils.getContentAsInputStream(url); + + if (inputStream != null) + { + inputSource = new InputSource(inputStream); + } + } + } + + if (importedDef == null) + { + if (inputSource == null) + { + throw new WADLSException(WADLSException.OTHER_ERROR, + "Unable to locate imported document " + + "at '" + locationURI + "'" + + (contextURI == null + ? "." + : ", relative to '" + contextURI + + "'.")); + } + + inputSource.setSystemId(url.toString()); + Document doc = getDocument(inputSource, url.toString()); + + if (inputStream != null) + { + inputStream.close(); + } + + Element documentElement = doc.getDocumentElement(); + + /* + Check if it's a wsdl document. + If it's not, don't retrieve and process it. + This should later be extended to allow other types of + documents to be retrieved and processed, such as schema + documents (".xsd"), etc... + */ + if (QNameUtils.matches(Constants.Q_ELEM_DEFINITIONS, + documentElement)) + { + if (verbose) + { + System.out.println("Retrieving document at '" + locationURI + + "'" + + (contextURI == null + ? "." + : ", relative to '" + contextURI + "'.")); + } + + String urlString = + (loc != null) + ? loc.getLatestImportURI() + : (url != null) + ? url.toString() + : locationURI; + + importedDef = readWADL(urlString, + documentElement, + importedDefs); + } + else + { + QName docElementQName = QNameUtils.newQName(documentElement); + + if (SchemaConstants.XSD_QNAME_LIST.contains(docElementQName)) + { + WADLFactory factory = + (factoryImplName != null) + ? WADLFactory.newInstance(factoryImplName) + : WADLFactory.newInstance(); + + importedDef = factory.newApplication(); + + + String urlString = + (loc != null) + ? loc.getLatestImportURI() + : (url != null) + ? url.toString() + : locationURI; + + importedDef.setDocumentBaseURI(urlString); + + Params types = importedDef.createParams(); + importedDef.setParams(types); + } + } + } + + if (importedDef != null) + { + importDef.setApplication(importedDef); + } + } + catch (WADLSException e) + { + throw e; + } + catch (Throwable t) + { + throw new WADLSException(WADLSException.OTHER_ERROR, + "Unable to resolve imported document at '" + + locationURI + + (contextURI == null + ? "'." : "', relative to '" + contextURI + "'") + , t); + } + } //end importDocs + } //end locationURI + + } + catch (WADLSException e) + { + if (e.getLocation() == null) + { + e.setLocation(XPathUtils.getXPathExprFromNode(importEl)); + } + else + { + //If definitions are being parsed recursively for nested imports + //the exception location must be built up recursively too so + //prepend this element's xpath to exception location. + String loc = XPathUtils.getXPathExprFromNode(importEl) + e.getLocation(); + e.setLocation(loc); + } + + throw e; + } + + Element tempEl = DOMUtils.getFirstChildElement(importEl); + + while (tempEl != null) + { + if (QNameUtils.matches(Constants.Q_ELEM_DOCUMENTATION, tempEl)) + { + importDef.setDocumentationElement(tempEl); + } + else + { + DOMUtils.throwWADLException(tempEl); + } + + tempEl = DOMUtils.getNextSiblingElement(tempEl); + } + + + return importDef; + + } + + + + protected Grammars parseGrammars(Element typesEl, Application def) + throws WADLSException + { + Grammars grammars = def.createGrammars(); + List<String> schemaList =new Vector(); + List<Schema> docElement =new Vector(); + List<String> targetNS =new Vector(); + Element tempEl = DOMUtils.getFirstChildElement(typesEl); + QName tempElType; + + while (tempEl != null) + { + tempElType = QNameUtils.newQName(tempEl); + + if (QNameUtils.matches(Constants.Q_ELEM_DOCUMENTATION, tempEl)) + { + grammars.setDocumentationElement(tempEl); + } + else if (QNameUtils.matches(Constants.Q_ELEM_INCLUDE, tempEl)) + { + String xsd = DOMUtils.getAttribute(tempEl, Constants.ELEM_HREF); + schemaList.add(xsd); + System.out.println("Xsd element in Grammars tag:"+xsd); + + docElement.add(parseSchema(tempEl,def)); + //targetNS.add(parseSchemaNS(tempEl,def)); + List remainingAttrs = DOMUtils.getAttributes(tempEl); + //the element qname indicates it is a schema. + String modelReference = DOMUtils.getAttributeNS(tempEl, + WORKING_SEMANTIC_NAMESPACE, + Constants.ATTR_MODELREF, + remainingAttrs); + System.out.println("XSD Element's model reference is:"+modelReference); + if (modelReference != null) + { + try { + parseModelReference(modelReference, def, grammars); + } catch (URISyntaxException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + /*ModelReference mr = def.createModelReference(); + mr.valueOf(modelReference, def); + mr.setParent(preCondition); + preCondition.addModelReference(mr);*/ + } + + } + + tempEl = DOMUtils.getNextSiblingElement(tempEl); + } + grammars.setSchemas(this.allSchemas); + Map temp = grammars.getSchemas(); + System.out.println("Schemas added to grammars class:"+temp.size()); + return grammars; + } + + +protected Schema parseSchema(Element el,Application def) + throws WADLSException + { + /* + * This method returns ExtensibilityElement rather than Schema because we + * do not insist that a suitable XSD schema deserializer is registered. + * PopulatedExtensionRegistry registers SchemaDeserializer by default, but + * if the user chooses not to register a suitable deserializer then the + * UnknownDeserializer will be used, returning an UnknownExtensibilityElement. + */ + + + Schema schema = null; + SchemaReference schemaRef = null; + try + { + + QName elementType = QNameUtils.newQName(el); + + edu.uga.cs.lsdis.meteors.wadls.extensions.schema.SchemaDeserializer scDS = new edu.uga.cs.lsdis.meteors.wadls.extensions.schema.SchemaDeserializer(); + + //Now unmarshall the DOM element. + Schema ee = + scDS.unmarshall(elementType, el, def); + + if (ee instanceof Schema) + { + + schema = (Schema) ee; + } + String location = null; + + //Keep track of parsed schemas to avoid duplicating Schema objects + //through duplicate or circular references (eg: A imports B imports A). + if (schema.getDocumentBaseURI() != null) + { + + + this.allSchemas.put(schema.getDocumentBaseURI(), schema); + } + + ArrayList allSchemaRefs = new ArrayList(); + + Collection ic = schema.getImports().values(); + + + Iterator importsIterator = ic.iterator(); + while(importsIterator.hasNext()) + { + allSchemaRefs.addAll( (Collection) importsIterator.next() ); + } + + allSchemaRefs.addAll(schema.getIncludes()); + allSchemaRefs.addAll(schema.getRedefines()); + + //Then, retrieve the schema referred to by each schema reference. If the + //schema has been read in previously, use the existing schema object. + //Otherwise unmarshall the DOM element into a new schema object. + + ListIterator schemaRefIterator = allSchemaRefs.listIterator(); + + + while(schemaRefIterator.hasNext()){ + + try + { + schemaRef = (SchemaReference) schemaRefIterator.next(); + + if (schemaRef.getSchemaLocationURI() == null) + { + + //cannot get the referenced schema, so ignore this schema reference + continue; + } + + if (verbose) + { + System.out.println("change: Retrieving schema at '" + + schemaRef.getSchemaLocationURI() + + (schema.getDocumentBaseURI() == null + ? "'." + : "', relative to '" + + schema.getDocumentBaseURI() + "'.")); + } + + + InputStream inputStream = null; + InputSource inputSource = null; + + + + //This is the child schema referred to by the schemaReference + Schema referencedSchema = null; + + //This is the child schema's location obtained from the WSDLLocator or the URL + + + if (loc != null) + { + + //Try to get the referenced schema using the wsdl locator + inputSource = loc.getImportInputSource( + schema.getDocumentBaseURI(), schemaRef.getSchemaLocationURI()); + + if (inputSource == null) + { + throw new WADLSException(WADLSException.OTHER_ERROR, + "Unable to locate with a locator " + + "the schema referenced at '" + + schemaRef.getSchemaLocationURI() + + "' relative to document base '" + + schema.getDocumentBaseURI() + "'"); + } + location = loc.getLatestImportURI(); + + + //if a schema from this location has been read previously, use it. + referencedSchema = (Schema) this.allSchemas.get(location); + } + else + { + // We don't have a wsdl locator, so try to retrieve the schema by its URL + + String contextURI = schema.getDocumentBaseURI(); + URL contextURL = (contextURI != null) ? StringUtils.getURL(null, contextURI) : null; + //System.out.println("%%%% Context URL OF SCHEMA:"+contextURL); + URL url = StringUtils.getURL(contextURL, schemaRef.getSchemaLocationURI()); + //System.out.println("%%%%URL :"+url); + location = url.toExternalForm(); + //System.out.println("%%%% schema location:"+location); + //if a schema from this location has been retrieved previously, use it. + referencedSchema = (Schema) this.allSchemas.get(location); + + if (referencedSchema == null) + { + //System.out.println("%%%% Referenced Schema is equal to null"); + // We haven't read this schema in before so do it now + inputStream = url.openStream(); + + if (inputStream != null) + { + inputSource = new InputSource(inputStream); + } + + if (inputSource == null) + { + throw new WADLSException(WADLSException.OTHER_ERROR, + "Unable to locate with a url " + + "the document referenced at '" + + schemaRef.getSchemaLocationURI() + + "'" + + (contextURI == null ? "." : ", relative to '" + + contextURI + "'.")); + } + } + + } //end if loc + + // If we have not previously read the schema, get its DOM element now. + if (referencedSchema == null) + { + //System.out.println("%%%% Referenced Schema is equal to null 2"); + inputSource.setSystemId(location); + Document doc = getDocument(inputSource, location); + + if (inputStream != null) + { + inputStream.close(); + } + + Element documentElement = doc.getDocumentElement(); + NodeList nodeList = documentElement.getChildNodes(); + + /*for(int i=0; i<nodeList.getLength(); i++){ + Node childNode = nodeList.item(i); + System.out.println("Children$$$$ : "+childNode.getTextContent()); + // Do something with childNode... + }*/ + //System.out.println("#####Child Nodes:"+documentElement.getChildNodes()); + //System.out.println("%%%% documentElement:"+ documentElement.getNodeName()); + // If it's a schema doc process it, otherwise the schema reference remains null + + QName docElementQName = QNameUtils.newQName(documentElement); + + if (SchemaConstants.XSD_QNAME_LIST.contains(docElementQName)) + { + //We now need to call parseSchema recursively to parse the referenced + //schema. The document base URI of the referenced schema will be set to + //the document base URI of the current schema plus the schemaLocation in + //the schemaRef. We cannot explicitly pass in a new document base URI + //to the schema deserializer, so instead we will create a dummy + //Definition and set its documentBaseURI to the new document base URI. + //We can leave the other definition fields empty because we know + //that the SchemaDeserializer.unmarshall method uses the definition + //parameter only to get its documentBaseURI. If the unmarshall method + //implementation changes (ie: its use of definition changes) we may need + //to rethink this approach. + //System.out.println("%%%%%SchemaConstants.XSD_QNAME_LIST.contains(docElementQName)"+docElementQName.getLocalPart()); + + WADLFactory factory = (factoryImplName != null) + ? WADLFactory.newInstance(factoryImplName) + : WADLFactory.newInstance(); + Application dummyDef = factory.newApplication(); + + dummyDef.setDocumentBaseURI(location); + //System.out.println("%%%% End of Parse Schema"); + //By this point, we know we have a SchemaDeserializer registered + //so we can safely cast the ExtensibilityElement to a Schema. + referencedSchema = (Schema) parseSchema( documentElement, + dummyDef); + } + + } //end if referencedSchema + + schemaRef.setReferencedSchema(referencedSchema); + } + catch (WADLSException e) + { + throw e; + } + catch (Throwable t) + { + throw new WADLSException(WADLSException.OTHER_ERROR, + "An error occurred trying to resolve schema referenced at '" + + schemaRef.getSchemaLocationURI() + + "'" + + (schema.getDocumentBaseURI() == null ? "." : ", relative to '" + + schema.getDocumentBaseURI() + "'."), + t); + } + + } //end while loop + + return schema; + + } + catch (WADLSException e) + { + if (e.getLocation() == null) + { + e.setLocation(XPathUtils.getXPathExprFromNode(el)); + } + else + { + //If this method has been called recursively for nested schemas + //the exception location must be built up recursively too so + //prepend this element's xpath to exception location. + String loc = XPathUtils.getXPathExprFromNode(el) + e.getLocation(); + e.setLocation(loc); + } + + throw e; + } + + } + + + + + protected Resource parseResource(Element portTypeEl, Application def) + throws WADLSException, URISyntaxException + { + Resource portType = null; + String path = DOMUtils.getAttribute(portTypeEl, Constants.RESOURCE_ATTR_NAME); + List remainingAttrs = DOMUtils.getAttributes(portTypeEl); + //read modelReference + //String modelReference= null; + if (path != null) + { + QName resourceName = new QName(def.getTargetNamespace(), path); + System.out.println("Resource Path:"+path); + System.out.println("ResourceName:"+resourceName.toString()); + + portType = def.getResource(resourceName); + + if (portType == null) + { + portType = def.createResource(); + portType.setQName(resourceName); + } + } + else + { + portType = def.createResource(); + } + + // Whether it was retrieved or created, the definition has been found. + portType.setUndefined(false); + String modelReference = DOMUtils.getAttributeNS(portTypeEl, + WORKING_SEMANTIC_NAMESPACE, + Constants.ATTR_MODELREF, + remainingAttrs); + System.out.println("Resource modelreference:"+modelReference); + if (modelReference != null) + { + parseModelReference(modelReference, def, portType); + /*ModelReference mr = def.createModelReference(); + mr.valueOf(modelReference, def); + mr.setParent(preCondition); + preCondition.addModelReference(mr);*/ + } + + Element tempEl = DOMUtils.getFirstChildElement(portTypeEl); + + while (tempEl != null) + { + if (QNameUtils.matches(Constants.Q_ELEM_DOCUMENTATION, tempEl)) + { + portType.setDocumentationElement(tempEl); + } + else if (QNameUtils.matches(Constants.Q_ELEM_OPERATION, tempEl)) + { + Method op = parseMethod(tempEl, portType, def); + + if (op != null) + { + portType.addMethod(op); + } + } + else + { + DOMUtils.throwWADLException(tempEl); + } + + tempEl = DOMUtils.getNextSiblingElement(tempEl); + } + + return portType; + } + + /** + * This is for Ajith and Kats. Just make sure we handle the SAWSDL and WSDLS namespaces properly. + * The point being that we still might have to support wsdls and hence we want to see if we can use this operation with an internal + * flag indicating if the parser is being used in the context of WSDLS or SAWSDL. + * @param opEl + * @param portType + * @param def + * @return + * @throws WADLSException + * @throws URISyntaxException + */ + protected Method parseMethod(Element opEl, + Resource portType, + Application def) + throws WADLSException, URISyntaxException + { + Method op = null; + List remainingAttrs = DOMUtils.getAttributes(opEl); + String name = DOMUtils.getAttribute(opEl, Constants.ID_NAME, remainingAttrs); + //read modelReference + //String modelReference= null; + + String parameterOrderStr = DOMUtils.getAttribute(opEl, + Constants.ATTR_PARAMETER_ORDER, + remainingAttrs); + + + Element tempEl = DOMUtils.getFirstChildElement(opEl); + List messageOrder = new Vector(); + Element docEl = null; + Request input = null; + Response output = null; + PreCondition preCondition = null; + Effect effect = null; + List extElements = new Vector(); + boolean retrieved = true; + + while (tempEl != null) + { + if (QNameUtils.matches(Constants.Q_ELEM_DOCUMENTATION, tempEl)) + { + docEl = tempEl; + } + else if (QNameUtils.matches(Constants.Q_ELEM_INPUT, tempEl)) + { + input = parseRequest(tempEl, def); + + } + else if (QNameUtils.matches(Constants.Q_ELEM_PRECON, tempEl)) + { + preCondition = parsePreCondition(tempEl, def); + } + else if (QNameUtils.matches(Constants.Q_ELEM_EFFECT, tempEl)) + { + effect = parseEffect(tempEl, def); + + } + else if (QNameUtils.matches(Constants.Q_ELEM_OUTPUT, tempEl)) + { + output = parseResponse(tempEl, def); + } + tempEl = DOMUtils.getNextSiblingElement(tempEl); + } + + if (name != null) + { + String inputName = (input != null ? input.getName() : null); + String outputName = (output != null ? output.getName() : null); + + op = portType.getMethod(name, inputName, outputName); + + if (op != null && !op.isUndefined()) + { + op = null; + } + + if (op != null) + { + if (inputName == null) + { + Request tempIn = op.getRequest(); + + if (tempIn != null) + { + if (tempIn.getName() != null) + { + op = null; + } + } + } + } + + if (op != null) + { + if (outputName == null) + { + Response tempOut = op.getResponse(); + + if (tempOut != null) + { + if (tempOut.getName() != null) + { + op = null; + } + } + } + } + + if (op == null) + { + op = def.createMethod(); + op.setName(name); + retrieved = false; + } + } + else + { + op = def.createMethod(); + retrieved = false; + } + + // Whether it was retrieved or created, the definition has been found. + op.setUndefined(false); + + if (parameterOrderStr != null) + { + op.setParameterOrdering(StringUtils.parseNMTokens(parameterOrderStr)); + } + + if (docEl != null) + { + op.setDocumentationElement(docEl); + } + + if (input != null) + { + op.setRequest(input); + } + + if (output != null) + { + op.setResponse(output); + } + + if (preCondition != null) + { + op.setPreCondition(preCondition); + } + String modelReference = DOMUtils.getAttributeNS(opEl, + WORKING_SEMANTIC_NAMESPACE, + Constants.ATTR_MODELREF, + remainingAttrs); + System.out.println("Model Reference of method:"+modelReference); + if (modelReference != null) + { + parseModelReference(modelReference, def, op); + /*ModelReference mr = def.createModelReference(); + mr.valueOf(modelReference, def); + mr.setParent(preCondition); + preCondition.addModelReference(mr);*/ + } + if (effect != null) + { + op.setEffect(effect); + } + + + if (retrieved) + { + op = null; + } + + return op; + } + + + + + protected Request parseRequest(Element inputEl, Application def) + throws WADLSException + { + Request input = def.createRequest(); + List<String> inputXSDList = new ArrayList<String>(10); + List<Param> paramList = new ArrayList<Param>(20); + Element tempEl = DOMUtils.getFirstChildElement(inputEl); + List remainingAttrs = DOMUtils.getAttributes(inputEl); + String modelReference = DOMUtils.getAttributeNS(inputEl, + WORKING_SEMANTIC_NAMESPACE, + Constants.ATTR_MODELREF, + remainingAttrs); + System.out.println("Model reference for request:"+modelReference); + if (modelReference != null) + { + try { + parseModelReference(modelReference, def, input); + } catch (URISyntaxException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + /*ModelReference mr = def.createModelReference(); + mr.valueOf(modelReference, def); + mr.setParent(preCondition); + preCondition.addModelReference(mr);*/ + } + while (tempEl != null) + { + if (QNameUtils.matches(Constants.Q_ELEM_DOCUMENTATION, tempEl)) + { + input.setDocumentationElement(tempEl); + } + else if (QNameUtils.matches(Constants.Q_ELEM_REPRESENTATION, tempEl)) + { + String inputXSD = DOMUtils.getAttribute(tempEl, Constants.REQUEST_ELEMENT_NAME); + //input.setName(inputXSD); + inputXSDList.add(inputXSD); + System.out.println("InPut XSD : "+inputXSD); + } + else if (QNameUtils.matches(Constants.Q_ELEM_PARAM, tempEl)) + { + System.out.println("New paramter is added to request"); + Param param = new ParamImpl(); + List remainingParamAttrs = DOMUtils.getAttributes(tempEl); + String parammodelReference = DOMUtils.getAttributeNS(tempEl, + WORKING_SEMANTIC_NAMESPACE, + Constants.ATTR_MODELREF, + remainingAttrs); + String liftingschema = DOMUtils.getAttributeNS(tempEl, + WORKING_SEMANTIC_NAMESPACE, + Constants.ATTR_LIFTINGSCHEMAMAPPING, + remainingAttrs); + String loweringschema = DOMUtils.getAttributeNS(tempEl, + WORKING_SEMANTIC_NAMESPACE, + Constants.ATTR_LOWERINGSCHEMAMAPPING, + remainingAttrs); + + param.setModelreference(parammodelReference); + param.setLiftingschemamapping(liftingschema); + param.setLoweringschemamapping(loweringschema); + //param.setModelreference(liftingschema); + //param.setModelreference(loweringschema); + + String style = DOMUtils.getAttribute(tempEl, Constants.PARAM_STYLE); + System.out.println("Param Style:"+style); + String type = DOMUtils.getAttribute(tempEl, Constants.PARAM_TYPE); + System.out.println("Param Type:"+type); + + param.setName(DOMUtils.getAttribute(tempEl, Constants.PARAM_NAME)); + param.setDefault1(DOMUtils.getAttribute(tempEl, Constants.PARAM_DEFAULT)); + param.setRequired(DOMUtils.getAttribute(tempEl, Constants.PARAM_REQUIRED)); + + + if(type!=null){ + param.setType(type); + } + + List<String> optionValue = new ArrayList<String>(30); + Element paramoption = DOMUtils.getFirstChildElement(tempEl); + + + for (; paramoption != null; paramoption = DOMUtils.getNextSiblingElement(paramoption)) + { + if(paramoption.getLocalName().toString().equals("option")){ + optionValue.add(DOMUtils.getAttribute(paramoption, Constants.OPTION_VALUE)); + System.out.println("Param Option Value:"+DOMUtils.getAttribute(paramoption, Constants.OPTION_VALUE)); + } + } + + param.setOptionvalue(optionValue); + + + paramList.add(param); + + } + else + { + DOMUtils.throwWADLException(tempEl); + } + tempEl = DOMUtils.getNextSiblingElement(tempEl); + } + + input.setInputXSDList(inputXSDList); + input.setParamList(paramList); + return input; + } + + protected Response parseResponse(Element outputEl, Application def) + throws WADLSException + { + Response output = def.createResponse(); + List<String> outputXSDList = new ArrayList<String>(10); + List<Param> paramList = new ArrayList<Param>(20); + String name = DOMUtils.getAttribute(outputEl, Constants.ATTR_NAME); + QName messageName = getQualifiedAttributeValue(outputEl, + Constants.ATTR_MESSAGE, + Constants.ELEM_OUTPUT, + def); + + if (name != null) + { + output.setName(name); + } + List remainingAttrs = DOMUtils.getAttributes(outputEl); + String modelReference = DOMUtils.getAttributeNS(outputEl, + WORKING_SEMANTIC_NAMESPACE, + Constants.ATTR_MODELREF, + remainingAttrs); + System.out.println("Model reference for response:"+modelReference); + if (modelReference != null) + { + try { + parseModelReference(modelReference, def, output); + } catch (URISyntaxException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + /*ModelReference mr = def.createModelReference(); + mr.valueOf(modelReference, def); + mr.setParent(preCondition); + preCondition.addModelReference(mr);*/ + } + Element tempEl = DOMUtils.getFirstChildElement(outputEl); + + while (tempEl != null) + { + if (QNameUtils.matches(Constants.Q_ELEM_DOCUMENTATION, tempEl)) + { + output.setDocumentationElement(tempEl); + } + else if (QNameUtils.matches(Constants.Q_ELEM_REPRESENTATION, tempEl)) + { + String outputXSD = DOMUtils.getAttribute(tempEl, Constants.REQUEST_ELEMENT_NAME); + //output.setName(outputXSD); + outputXSDList.add(outputXSD); + System.out.println("OutPut XSD:"+outputXSD); + + } + else if (QNameUtils.matches(Constants.Q_ELEM_PARAM, tempEl)) + { + Param param = new ParamImpl(); + List remainingParamAttrs = DOMUtils.getAttributes(tempEl); + String parammodelReference = DOMUtils.getAttributeNS(tempEl, + WORKING_SEMANTIC_NAMESPACE, + Constants.ATTR_MODELREF, + remainingAttrs); + String liftingschema = DOMUtils.getAttributeNS(tempEl, + WORKING_SEMANTIC_NAMESPACE, + Constants.ATTR_LIFTINGSCHEMAMAPPING, + remainingAttrs); + String loweringschema = DOMUtils.getAttributeNS(tempEl, + WORKING_SEMANTIC_NAMESPACE, + Constants.ATTR_LOWERINGSCHEMAMAPPING, + remainingAttrs); + + param.setModelreference(parammodelReference); + param.setModelreference(liftingschema); + param.setModelreference(loweringschema); + + String style = DOMUtils.getAttribute(tempEl, Constants.PARAM_STYLE); + String type = DOMUtils.getAttribute(tempEl, Constants.PARAM_TYPE); + + param.setName(DOMUtils.getAttribute(tempEl, Constants.PARAM_NAME)); + param.setDefault1(DOMUtils.getAttribute(tempEl, Constants.PARAM_DEFAULT)); + param.setRequired(DOMUtils.getAttribute(tempEl, Constants.PARAM_REQUIRED)); + + if(style.equalsIgnoreCase("query") && type!=null){ + param.setType(type); + } + else{ + List<String> optionValue = new ArrayList<String>(30); + Element paramoption = DOMUtils.getFirstChildElement(tempEl); + + + for (; paramoption != null; paramoption = DOMUtils.getNextSiblingElement(paramoption)) + { + optionValue.add(DOMUtils.getAttribute(paramoption, Constants.OPTION_VALUE)); + } + + param.setOptionvalue(optionValue); + } + + paramList.add(param); + + } + + else + { + DOMUtils.throwWADLException(tempEl); + } + + tempEl = DOMUtils.getNextSiblingElement(tempEl); + } + + output.setInputXSDList(outputXSDList); + output.setParamList(paramList); + + return output; + } + + protected PreCondition parsePreCondition(Element preConEl, Application def) + throws WADLSException, URISyntaxException + { + PreCondition preCondition = def.createPreCondition(); + + //String name = DOMUtils.getAttribute(preConEl, Constants.ATTR_NAME); + String attrModelReference = DOMUtils.getQualifiedValue(WORKING_SEMANTIC_NAMESPACE, Constants.ATTR_MODELREF, def); + String modelReference = DOMUtils.getAttribute(preConEl, attrModelReference); + String expression = DOMUtils.getAttribute(preConEl, Constants.ATTR_EXPRESSION); + System.out.println("Pre Condition:"+expression); + + + if (modelReference != null) + { + parseModelReference(modelReference, def, preCondition); + /*ModelReference mr = def.createModelReference(); + mr.valueOf(modelReference, def); + mr.setParent(preCondition); + preCondition.addModelReference(mr);*/ + } + + if (expression != null) + { + preCondition.setExpression(expression); + } + + +// parseExtensibilityAttributes(preConEl, PreCondition.class, preCondition, def); + + return preCondition; + } + + protected Effect parseEffect(Element effectEl, Application def) + throws WADLSException, URISyntaxException + { + Effect effect = def.createEffect(); + //String name = DOMUtils.getAttribute(effectEl, Constants.ATTR_NAME); + String attrModelReference = DOMUtils.getQualifiedValue(WORKING_SEMANTIC_NAMESPACE, Constants.ATTR_MODELREF, def); + String modelReference = DOMUtils.getAttribute(effectEl, attrModelReference); + String expression = DOMUtils.getAttribute(effectEl, Constants.ATTR_EXPRESSION); + System.out.println("EFFECT:"+expression); + + /*if (name != null) + { + effect.setName(name); + }*/ + + if (modelReference != null) + { + parseModelReference(modelReference, def, effect); + /*ModelReference mr = def.createModelReference(); + mr.valueOf(modelReference, def); + mr.setParent(effect); + effect.addModelReference(mr);*/ + } + + if (expression != null) + { + effect.setExpression(expression); + } + + +// parseExtensibilityAttributes(effectEl, Effect.class, effect, def); + + return effect; + } + + /** + * This method should be used for elements that support extension + * attributes because it does not track unexpected remaining attributes. + */ + private static QName getQualifiedAttributeValue(Element el, + String attrName, + String elDesc, + Application def) + throws WADLSException + { + try + { + return DOMUtils.getQualifiedAttributeValue(el, + attrName, + elDesc, + false, + def); + } + catch (WADLSException e) + { + if (e.getFaultCode().equals(WADLSException.NO_PREFIX_SPECIFIED)) + { + String attrValue = DOMUtils.getAttribute(el, attrName); + + return new QName(attrValue); + } + else + { + throw e; + } + } + } + + /** + * This method should be used for elements that do not support extension + * attributes because it tracks unexpected remaining attributes. + */ + private static QName getQualifiedAttributeValue(Element el, + String attrName, + String elDesc, + Application def, + List remainingAttrs) + throws WADLSException + { + try + { + return DOMUtils.getQualifiedAttributeValue(el, + attrName, + elDesc, + false, + def, + remainingAttrs); + } + catch (WADLSException e) + { + if (e.getFaultCode().equals(WADLSException.NO_PREFIX_SPECIFIED)) + { + String attrValue = DOMUtils.getAttribute(el, attrName, remainingAttrs); + + return new QName(attrValue); + } + else + { + throw e; + } + } + } + + private static void checkElementName(Element el, QName qname) + throws WADLSException + { + System.out.println("Element Name:"+el); + System.out.println("Q Name:"+qname.toString()); + if (!QNameUtils.matches(qname, el)) + { + WADLSException wsdlExc = new WADLSException(WADLSException.INVALID_WADL, + "Expected element '" + + qname + "'."); + + wsdlExc.setLocation(XPathUtils.getXPathExprFromNode(el)); + + throw wsdlExc; + } + } + + private static Document getDocument(InputSource inputSource, + String desc) throws WADLSException + { + DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); + + factory.setNamespaceAware(true); + factory.setValidating(false); + + try + { + DocumentBuilder builder = factory.newDocumentBuilder(); + Document doc = builder.parse(inputSource); + + return doc; + } + catch (Throwable t) + { + throw new WADLSException(WADLSException.XSDPARSER_ERROR, + "Problem parsing '" + desc + "'.", + t); + } + } + + /** + * Read the WSDL document accessible via the given input stream + * @param wsdlIS a InputStream for a WSDL XML definition + * @return the definition. + * @throws WADLSException + */ + public Application readWADL(InputStream wsdlIS) + throws WADLSException + { + try + { + InputSource inputSource = new InputSource(wsdlIS); + Document doc = getDocument(inputSource, ""); + + wsdlIS.close(); + + //note that documentBaseURI will be null + //importing wsdl or schema should use absolution path/URL + Application def = readWADL(null, doc); + + return def; + } + catch (WADLSException e) + { + throw e; + } + catch (Throwable t) + { + throw new WADLSException(WADLSException.OTHER_ERROR, + "Unable to resolve imported document at '", t); + } + } + + /** + * Read the WSDL document accessible via the specified + * URI into a WSDL definition. + * + * @param wsdlURI a URI (can be a filename or URL) pointing to a + * WSDL XML definition. + * @return the definition. + */ + public Application readWADL(String wsdlURI) throws WADLSException + { + return readWADL(null, wsdlURI); + } + + /** + * Read the WSDL document accessible via the specified + * URI into a WSDL definition. + * + * @param contextURI the context in which to resolve the + * wsdlURI, if the wsdlURI is relative. Can be null, in which + * case it will be ignored. + * @param wsdlURI a URI (can be a filename or URL) pointing to a + * WSDL XML definition. + * @return the definition. + */ + public Application readWADL(String contextURI, String wsdlURI) + throws WADLSException + { + try + { + if (verbose) + { + System.out.println("Retrieving document at '" + wsdlURI + "'" + + (contextURI == null + ? "." + : ", relative to '" + contextURI + "'.")); + } + + URL contextURL = (contextURI != null) + ? StringUtils.getURL(null, contextURI) + : null; + URL url = StringUtils.getURL(contextURL, wsdlURI); + InputStream inputStream = url.openStream(); + InputSource inputSource = new InputSource(inputStream); + inputSource.setSystemId(url.toString()); + Document doc = getDocument(inputSource, url.toString()); + + inputStream.close(); + + Application def = readWADL(url.toString(), doc); + + return def; + } + catch (WADLSException e) + { + throw e; + } + catch (Throwable t) + { + throw new WADLSException(WADLSException.OTHER_ERROR, + "Unable to resolve imported document at '" + + wsdlURI + + (contextURI == null + ? "'." + : "', relative to '" + contextURI + "'.") + , t); + } + } + + /** + * Read the specified <wsdl:definitions> element into a WSDL + * definition. + * + * @param documentBaseURI the document base URI of the WSDL definition + * described by the element. Will be set as the documentBaseURI + * of the returned Definition. Can be null, in which case it + * will be ignored. + * @param definitionsElement the <wsdl:definitions> element + * @return the definition described by the element. + * @throws URISyntaxException + */ + public Application readWADL(String documentBaseURI, + Element definitionsElement) + throws WADLSException, URISyntaxException + { + return readWADL(documentBaseURI, definitionsElement, null); + } + + protected Application readWADL(String documentBaseURI, + Element definitionsElement, + Map importedDefs) + throws WADLSException, URISyntaxException + { + return parseApplications(documentBaseURI, definitionsElement, importedDefs); + } + + /** + * Read the specified WSDL document into a WSDL definition. + * + * @param documentBaseURI the document base URI of the WSDL definition + * described by the document. Will be set as the documentBaseURI + * of the returned Definition. Can be null, in which case it + * will be ignored. + * @param wsdlDocument the WSDL document, an XML + * document obeying the WSDL schema. + * @return the definition described in the document. + * @throws URISyntaxException + */ + public Application readWADL(String documentBaseURI, Document wsdlDocument) + throws WADLSException, URISyntaxException + { + return readWADL(documentBaseURI, wsdlDocument.getDocumentElement()); + } + + /** + * Read a WSDL document into a WSDL definition. + * + * @param documentBaseURI the document base URI of the WSDL definition + * described by the document. Will be set as the documentBaseURI + * of the returned Definition. Can be null, in which case it + * will be ignored. + * @param inputSource an InputSource pointing to the + * WSDL document, an XML document obeying the WSDL schema. + * @return the definition described in the document pointed to + * by the InputSource. + * @throws URISyntaxException + */ + public Application readWADL(String documentBaseURI, InputSource inputSource) + throws WADLSException, URISyntaxException + { + return readWADL(documentBaseURI, + getDocument(inputSource, "- WSDL Document -")); + } + + /** + * Read a WSDL document into a WSDL definition. + * + * @param locator A WSDLLocator object used to provide InputSources + * pointing to the wsdl file. + * @return the definition described in the document + * @throws URISyntaxException + */ + public Application readWADL(WADLLocator locator) throws WADLSException, URISyntaxException + { + InputSource is = locator.getBaseInputSource(); + String base = locator.getBaseURI(); + + if (is == null) + { + throw new WADLSException(WADLSException.OTHER_ERROR, + "Unable to locate document at '" + base + "'."); + } + + this.loc = locator; + + if (verbose) + { + System.out.println("Retrieving document at '" + base + "'."); + } + + return readWADL(base, is); + } + + protected List<ModelReference> parseModelReference (String modelReference, Application def, ModelReferenceExtensible op) throws URISyntaxException,WADLSException{ + List <ModelReference> modelReferenceList= new ArrayList<ModelReference>(); + String [] modelRefs= modelReference.split("\\s"); + ModelReference currentModelReference; + for(int modelRefsIT= 0;modelRefsIT<modelRefs.length;modelRefsIT++){ + currentModelReference= def.createModelReference(); + currentModelReference.valueOf(modelRefs[modelRefsIT], def); + currentModelReference.setParent(op); + modelReferenceList.add(currentModelReference); + op.addModelReference(currentModelReference); + }// end for modelRefsIT + + return modelReferenceList; + + + }// end method parseModelref + + protected List<ModelReference> parseModelReference(String modelReferences, Application def) throws URISyntaxException, WADLSException { + return ModelReferenceImpl.getModelReferences(modelReferences, def); + } +}
Binary file WebServiceToolWorkflow/lib/SAWADLParser/src/edu/uga/cs/lsdis/meteors/wadls/xml/WADLWriterImpl.class has changed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/lib/SAWADLParser/src/edu/uga/cs/lsdis/meteors/wadls/xml/WADLWriterImpl.java Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,696 @@ +/* + * (c) Copyright IBM Corp 2001, 2005 + */ + +package edu.uga.cs.lsdis.meteors.wadls.xml; + +import java.io.*; +import java.net.URISyntaxException; +import java.util.*; +import javax.xml.namespace.*; +import javax.xml.parsers.*; +import org.w3c.dom.*; +import org.xml.sax.*; + +import javax.wadls.*; +import javax.wadls.extensions.*; +import javax.wadls.factory.*; +import javax.wadls.xml.*; + +import edu.uga.cs.lsdis.meteors.wadls.*; +import edu.uga.cs.lsdis.meteors.wadls.util.*; +import edu.uga.cs.lsdis.meteors.wadls.util.xml.*; + +/** + * This class describes a collection of methods + * that allow a WSDL-S model to be written to a writer + * in an XML format that follows the WSDL schema. + * + * @author Zixin Wu (wuzixin@uga.edu) + * @author Matthew J. Duftler + * @author Nirmal Mukhi + */ +public class WADLWriterImpl implements WADLWriter +{ + /** + * Sets the specified feature to the specified value. + * <p> + * There are no minimum features that must be supported. + * <p> + * All feature names must be fully-qualified, Java package style. All + * names starting with javax.wsdls. are reserved for features defined + * by the JWSDL specification. It is recommended that implementation- + * specific features be fully-qualified to match the package name + * of that implementation. For example: com.abc.featureName + * + * @param name the name of the feature to be set. + * @param value the value to set the feature to. + * @throws IllegalArgumentException if the feature name is not recognized. + * @see #getFeature(String) + */ + public void setFeature(String name, boolean value) + throws IllegalArgumentException + { + if (name == null) + { + throw new IllegalArgumentException("Feature name must not be null."); + } + else + { + throw new IllegalArgumentException("Feature name '" + name + + "' not recognized."); + } + } + + /** + * Gets the value of the specified feature. + * + * @param name the name of the feature to get the value of. + * @throws IllegalArgumentException if the feature name is not recognized. + * @see #setFeature(String, boolean) + */ + public boolean getFeature(String name) throws IllegalArgumentException + { + if (name == null) + { + throw new IllegalArgumentException("Feature name must not be null."); + } + else + { + throw new IllegalArgumentException("Feature name '" + name + + "' not recognized."); + } + } + + protected void printDefinition(Application def, PrintWriter pw) + throws WADLSException, URISyntaxException + { + if (def == null) + { + return; + } + + if (def.getPrefix(Constants.NS_URI_WADL) == null) + { + String prefix = "wsdl"; + int subscript = 0; + + while (def.getNamespace(prefix) != null) + { + prefix = "wsdl" + subscript++; + } + + def.addNamespace(prefix, Constants.NS_URI_WADL); + } + + if (def.getPrefix(Constants.NS_URI_WADLS) == null) + { + String prefix = Constants.PREFIX_WSDLS; + int subscript = 0; + + while (def.getNamespace(prefix) != null) + { + prefix = Constants.PREFIX_WSDLS + subscript++; + } + + def.addNamespace(prefix, Constants.NS_URI_WADLS); + } + + String tagName = + DOMUtils.getQualifiedValue(Constants.NS_URI_WADL, + Constants.ELEM_DEFINITIONS, + def); + + pw.print('<' + tagName); + + QName name = def.getQName(); + String targetNamespace = def.getTargetNamespace(); + Map namespaces = def.getNamespaces(); + + if (name != null) + { + DOMUtils.printAttribute(Constants.ATTR_NAME, name.getLocalPart(), pw); + } + + DOMUtils.printAttribute(Constants.ATTR_TARGET_NAMESPACE, + targetNamespace, + pw); + + printNamespaceDeclarations(namespaces, pw); + + pw.println('>'); + + printDocumentation(def.getDocumentationElement(), pw); + printIncludes(def.getIncludes(), def, pw); + printTypes(def.getParams(), def, pw); + printResources(def.getResources(), def, pw); + + + + + + pw.println("</" + tagName + '>'); + + pw.flush(); + } + + + + + + + + + protected void printResources(Map portTypes, + Application def, + PrintWriter pw) + throws WADLSException, URISyntaxException + { + if (portTypes != null) + { + String tagName = + DOMUtils.getQualifiedValue(Constants.NS_URI_WADL, + Constants.ELEM_RESOURCE, + def); + Iterator portTypeIterator = portTypes.values().iterator(); + + while (portTypeIterator.hasNext()) + { + Resource portType = (Resource)portTypeIterator.next(); + + if (!portType.isUndefined()) + { + pw.print(" <" + tagName); + + QName name = portType.getQName(); + + if (name != null) + { + DOMUtils.printAttribute(Constants.ATTR_NAME, + name.getLocalPart(), + pw); + } + + + + pw.println('>'); + + printDocumentation(portType.getDocumentationElement(), pw); + printOperations(portType.getMethods(), def, pw); + pw.println(" </" + tagName + '>'); + } + } + } + } + + protected void printOperations(List operations, + Application def, + PrintWriter pw) + throws WADLSException, URISyntaxException + { + if (operations != null) + { + String tagName = + DOMUtils.getQualifiedValue(Constants.NS_URI_WADL, + Constants.ELEM_OPERATION, + def); + Iterator operationIterator = operations.iterator(); + + while (operationIterator.hasNext()) + { + Method operation = (Method)operationIterator.next(); + + if (!operation.isUndefined()) + { + pw.print(" <" + tagName); + + DOMUtils.printAttribute(Constants.ATTR_NAME, + operation.getName(), + pw); + //write modelReference + ModelReference mr = operation.getModelReference(); + if (mr != null){ + if (mr.getNamespace() != null) //has namespaceURI + mr.setPrefix(def.getPrefix(mr.getNamespace().toString())); + else //no namespaceURI, try prefix + mr.setNamespace(def.getNamespace(mr.getPrefix())); + if (mr.getNamespace() == null) //error + throw new WADLSException(WADLSException.UNBOUND_PREFIX, + "Cannot find the namespace for the prefix " + + mr.getPrefix()); + DOMUtils.printQualifiedAttribute(Constants.Q_ATTR_MODELREF, + mr.value(), + def, + pw); + } + + DOMUtils.printAttribute(Constants.ATTR_PARAMETER_ORDER, + StringUtils.getNMTokens(operation.getParameterOrdering()), + pw); + + pw.println('>'); + + printDocumentation(operation.getDocumentationElement(), pw); + // Must be OperationType.REQUEST_RESPONSE. + printInput(operation.getRequest(), def, pw); + printOutput(operation.getResponse(), def, pw); + + printPreCondition(operation.getPreCondition(), def, pw); + printEffect(operation.getEffect(), def, pw); + + + + + + + + pw.println(" </" + tagName + '>'); + } + } + } + } + + protected void printPreCondition(PreCondition preCondition, + Application def, + PrintWriter pw) + throws WADLSException, URISyntaxException +{ + if (preCondition != null) + { + String tagName = + DOMUtils.getQualifiedValue(Constants.NS_URI_WADLS, + Constants.ELEM_PRECON, + def); + + pw.print(" <" + tagName); + + DOMUtils.printAttribute(Constants.ATTR_NAME, preCondition.getName(), pw); + + //write modelReference + ModelReference mr = preCondition.getModelReference(); + if (mr != null){ + if (mr.getNamespace() != null) //has namespaceURI + mr.setPrefix(def.getPrefix(mr.getNamespace().toString())); + else //no namespaceURI, try prefix + mr.setNamespace(def.getNamespace(mr.getPrefix())); + if (mr.getNamespace() == null) //error + throw new WADLSException(WADLSException.UNBOUND_PREFIX, + "Cannot find the namespace for the prefix " + + mr.getPrefix()); + DOMUtils.printQualifiedAttribute(Constants.Q_ATTR_MODELREF, + mr.value(), + def, + pw); + } + + DOMUtils.printAttribute(Constants.ATTR_EXPRESSION, preCondition.getExpression(), pw); + +// printExtensibilityAttributes(PreCondition.class, preCondition, def, pw); + + Element docEl = preCondition.getDocumentationElement(); + + if (docEl == null) + { + pw.println("/>"); + } + else + { + pw.print('>'); + + printDocumentation(docEl, pw); + + pw.println("</" + tagName + '>'); + } + } +} + protected void printEffect(Effect effect, + Application def, + PrintWriter pw) + throws WADLSException, URISyntaxException +{ + if (effect != null) + { + String tagName = + DOMUtils.getQualifiedValue(Constants.NS_URI_WADLS, + Constants.ELEM_EFFECT, + def); + + pw.print(" <" + tagName); + + DOMUtils.printAttribute(Constants.ATTR_NAME, effect.getName(), pw); + + //write modelReference + ModelReference mr = effect.getModelReference(); + if (mr != null){ + if (mr.getNamespace() != null) //has namespaceURI + mr.setPrefix(def.getPrefix(mr.getNamespace().toString())); + else //no namespaceURI, try prefix + mr.setNamespace(def.getNamespace(mr.getPrefix())); + if (mr.getNamespace() == null) //error + throw new WADLSException(WADLSException.UNBOUND_PREFIX, + "Cannot find the namespace for the prefix " + + mr.getPrefix()); + DOMUtils.printQualifiedAttribute(Constants.Q_ATTR_MODELREF, + mr.value(), + def, + pw); + } + + DOMUtils.printAttribute(Constants.ATTR_EXPRESSION, effect.getExpression(), pw); + +// printExtensibilityAttributes(Effect.class, effect, def, pw); + + Element docEl = effect.getDocumentationElement(); + + if (docEl == null) + { + pw.println("/>"); + } + else + { + pw.print('>'); + + printDocumentation(docEl, pw); + + pw.println("</" + tagName + '>'); + } + } +} + + protected void printInput(Request input, + Application def, + PrintWriter pw) + throws WADLSException + { + if (input != null) + { + String tagName = + DOMUtils.getQualifiedValue(Constants.NS_URI_WADL, + Constants.ELEM_INPUT, + def); + + pw.print(" <" + tagName); + + DOMUtils.printAttribute(Constants.ATTR_NAME, input.getName(), pw); + + Element docEl = input.getDocumentationElement(); + + if (docEl == null) + { + pw.println("/>"); + } + else + { + pw.println('>'); + + printDocumentation(docEl, pw); + + pw.println(" </" + tagName + '>'); + } + } + } + + protected void printOutput(Response output, + Application def, + PrintWriter pw) + throws WADLSException + { + if (output != null) + { + String tagName = + DOMUtils.getQualifiedValue(Constants.NS_URI_WADL, + Constants.ELEM_OUTPUT, + def); + + pw.print(" <" + tagName); + + DOMUtils.printAttribute(Constants.ATTR_NAME, output.getName(), pw); + + Element docEl = output.getDocumentationElement(); + + if (docEl == null) + { + pw.println("/>"); + } + else + { + pw.println('>'); + + printDocumentation(docEl, pw); + + pw.println(" </" + tagName + '>'); + } + } + } + + + + + + protected void printDocumentation(Element docElement, + PrintWriter pw) + throws WADLSException + { + if (docElement != null) + { + DOM2Writer.serializeAsXML(docElement, pw); + + pw.println(); + } + } + + protected void printTypes(Params types, Application def, PrintWriter pw) + throws WADLSException + { + if (types != null) + { + String tagName = + DOMUtils.getQualifiedValue(Constants.NS_URI_WADL, + Constants.ELEM_TYPES, + def); + pw.print(" <" + tagName); + + pw.println('>'); + + printDocumentation(types.getDocumentationElement(), pw); + + + + + + pw.println(" </" + tagName + '>'); + } + } + + protected void printIncludes(Map imports, Application def, PrintWriter pw) + throws WADLSException + { + if (imports != null) + { + String tagName = + DOMUtils.getQualifiedValue(Constants.NS_URI_WADL, + Constants.ELEM_INCLUDE, + def); + Iterator importListIterator = imports.values().iterator(); + + while (importListIterator.hasNext()) + { + List importList = (List)importListIterator.next(); + Iterator importIterator = importList.iterator(); + + while (importIterator.hasNext()) + { + Include importDef = (Include)importIterator.next(); + + pw.print(" <" + tagName); + + DOMUtils.printAttribute(Constants.ATTR_NAMESPACE, + importDef.getNamespaceURI(), + pw); + DOMUtils.printAttribute(Constants.ATTR_LOCATION, + importDef.getLocationURI(), + pw); + + + + Element docEl = importDef.getDocumentationElement(); + + if (docEl == null) + { + pw.println("/>"); + } + else + { + pw.println('>'); + + printDocumentation(docEl, pw); + + pw.println(" </" + tagName + '>'); + } + } + } + } + } + + protected void printNamespaceDeclarations(Map namespaces, + PrintWriter pw) + throws WADLSException + { + if (namespaces != null) + { + Set keys = namespaces.keySet(); + Iterator keyIterator = keys.iterator(); + + while (keyIterator.hasNext()) + { + String prefix = (String)keyIterator.next(); + + if (prefix == null) + { + prefix = ""; + } + + DOMUtils.printAttribute(Constants.ATTR_XMLNS + + (!prefix.equals("") ? ":" + prefix : ""), + (String)namespaces.get(prefix), + pw); + } + } + } + + + private static Document getDocument(InputSource inputSource, + String desc) throws WADLSException + { + DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); + + factory.setNamespaceAware(true); + factory.setValidating(false); + + try + { + DocumentBuilder builder = factory.newDocumentBuilder(); + Document doc = builder.parse(inputSource); + + return doc; + } + catch (Throwable t) + { + throw new WADLSException(WADLSException.XSDPARSER_ERROR, + "Problem parsing '" + desc + "'.", + t); + } + } + + /** + * Return a document generated from the specified WSDL model. + * @throws URISyntaxException + */ + public Document getDocument(Application wsdlDef) throws WADLSException, URISyntaxException + { + StringWriter sw = new StringWriter(); + PrintWriter pw = new PrintWriter(sw); + + writeWADL(wsdlDef, pw); + + StringReader sr = new StringReader(sw.toString()); + InputSource is = new InputSource(sr); + + return getDocument(is, "- WSDL Document -"); + } + + /** + * Write the specified WSDL definition to the specified Writer. + * + * @param wsdlDef the WSDL definition to be written. + * @param sink the Writer to write the xml to. + * @throws URISyntaxException + */ + public void writeWADL(Application wsdlDef, Writer sink) + throws WADLSException, URISyntaxException + { + PrintWriter pw = new PrintWriter(sink); + String javaEncoding = (sink instanceof OutputStreamWriter) + ? ((OutputStreamWriter)sink).getEncoding() + : null; + + String xmlEncoding = DOM2Writer.java2XMLEncoding(javaEncoding); + + if (xmlEncoding == null) + { + throw new WADLSException(WADLSException.CONFIGURATION_ERROR, + "Unsupported Java encoding for writing " + + "wsdl file: '" + javaEncoding + "'."); + } + + pw.println(Constants.XML_DECL_START + + xmlEncoding + + Constants.XML_DECL_END); + + printDefinition(wsdlDef, pw); + } + + /** + * Write the specified WSDL definition to the specified OutputStream. + * + * @param wsdlDef the WSDL definition to be written. + * @param sink the OutputStream to write the xml to. + * @throws URISyntaxException + */ + public void writeWADL(Application wsdlDef, OutputStream sink) + throws WADLSException, URISyntaxException + { + Writer writer = null; + + try + { + writer = new OutputStreamWriter(sink, "UTF8"); + } + catch (UnsupportedEncodingException e) + { + e.printStackTrace(); + + writer = new OutputStreamWriter(sink); + } + + writeWADL(wsdlDef, writer); + } + + /** + * A test driver. + *<code> + *<pre>Usage:</pre> + *<p> + *<pre> java edu.uga.cs.lsdis.meteors.wsdls.xml.WSDLWriterImpl filename|URL</pre> + *<p> + *<pre> This test driver simply reads a WSDL document into a model + * (using a WSDLReader), and then serializes it back to + * standard out. In effect, it performs a round-trip test on + * the specified WSDL document.</pre> + * @throws URISyntaxException + */ + public static void main(String[] argv) throws WADLSException, URISyntaxException + { + if (argv.length == 1) + { + WADLFactory wsdlFactory = WADLFactory.newInstance(); + WADLReader wsdlReader = wsdlFactory.newWADLReader(); + WADLWriter wsdlWriter = wsdlFactory.newWADLWriter(); + + wsdlWriter.writeWADL(wsdlReader.readWADL(null, argv[0]), System.out); + } + else + { + System.err.println("Usage:"); + System.err.println(); + System.err.println(" java " + WADLWriterImpl.class.getName() + + " filename|URL"); + System.err.println(); + System.err.println("This test driver simply reads a WSDL document " + + "into a model (using a WSDLReader), and then " + + "serializes it back to standard out. In effect, " + + "it performs a round-trip test on the specified " + + "WSDL document."); + } + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/lib/SAWADLParser/src/javax/wadls/Application.java Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,268 @@ +package javax.wadls; + +import java.net.URI; +import java.util.*; +import org.w3c.dom.*; + +import javax.wadls.Params; +import javax.wadls.extensions.ExtensionRegistry; +import javax.xml.namespace.*; + +/** + * This interface represents a WADLS Application + * + */ +public interface Application extends java.io.Serializable +{ + + /** + * Get all the Operations which has a modelReference with the specified namespace and concept. + * @param namespace The namespace of the modelReference + * @param concept The concept of the modelReference + * @return All the Operations which has a modelReference with the specified namespace and concept. + */ + + + List getMethodsByModelReference(URI namespace, String concept); + + /** + * Get all the XSD Elements which has a modelReference with the specified namespace and concept. + * @param namespace The namespace of the modelReference + * @param concept The concept of the modelReference + * @return All the XSD Elements which has a modelReference with the specified namespace and concept. + */ + List getXSDElementsByModelReference(URI namespace, String concept); + + /** + * Get all the XSD ComplexTypes which has a modelReference with the specified namespace and concept. + * @param namespace The namespace of the modelReference + * @param concept The concept of the modelReference + * @return All the XSD ComplexTypes which has a modelReference with the specified namespace and concept. + */ + List getXSDComplexTypeByModelReference(URI namespace, String concept); + + /** + * Set the document base URI of this definition. Can be used to + * represent the origin of the Definition, and can be exploited + * when resolving relative URIs (e.g. in <import>s). + * + * @param documentBaseURI the document base URI of this definition + */ + public void setDocumentBaseURI(String documentBaseURI); + + /** + * Get the document base URI of this definition. + * + * @return the document base URI + */ + public String getDocumentBaseURI(); + + public String getResourcesPath(); + public void setResourcesPath(String path); + /** + * Set the name of this definition. + * + * @param name the desired name + */ + public void setQName(QName name); + + /** + * Get the name of this definition. + * + * @return the definition name + */ + public QName getQName(); + + /** + * Set the target namespace in which WADL elements are defined. + * + * @param targetNamespace the target namespace + */ + public void setTargetNamespace(String targetNamespace); + + /** + * Get the target namespace in which the WADL elements + * are defined. + * + * @return the target namespace + */ + public String getTargetNamespace(); + + /** + * This is a way to add a namespace association to a definition. + * It is similar to adding a namespace prefix declaration to the + * top of a <wsdl:definition> element. This has nothing to do + * with the <wsdl:import> element; there are separate methods for + * dealing with information described by <wsdl:import> elements. + * + * @param prefix the prefix to use for this namespace (when + * rendering this information as XML). Use null or an empty string + * to describe the default namespace (i.e. xmlns="..."). + * @param namespaceURI the namespace URI to associate the prefix + * with. If you use null, the namespace association will be removed. + */ + public void addNamespace(String prefix, String namespaceURI); + + /** + * Get the namespace URI associated with this prefix. Or null if + * there is no namespace URI associated with this prefix. This is + * unrelated to the <wsdl:import> element. + * + * @see #addNamespace(String, String) + * @see #getPrefix(String) + */ + public String getNamespace(String prefix); + + public void setGrammars(Grammars grammars); + public Grammars getGrammars(); + + /** + * Get the types section. + * + * @return the types section + */ + public Params getParams(); + public void setParams(Params params); + /** + * Get a prefix associated with this namespace URI. Or null if + * there are no prefixes associated with this namespace URI. This is + * unrelated to the <wsdl:import> element. + * + * @see #addNamespace(String, String) + * @see #getNamespace(String) + */ + public String getPrefix(String namespaceURI); + + /** + * Get all namespace associations in this application. The keys are + * the prefixes, and the namespace URIs are the values. This is + * unrelated to the <wsdl:import> element. + * + * @see #addNamespace(String, String) + */ + public Map getNamespaces(); + + + /** + * Add an import to this WADL description. + * + * @param importDef the import to be added + */ + public void addInclude(Include includeApp); + + /** + * Get the list of imports for the specified namespaceURI. + * + * @param namespaceURI the namespaceURI associated with the + * desired imports. + * @return a list of the corresponding imports, or null if + * there weren't any matching imports + */ + public List getIncludes(String namespaceURI); + + /** + * Get a map of lists containing all the imports defined here. + * The map's keys are the namespaceURIs, and the map's values + * are lists. There is one list for each namespaceURI for which + * imports have been defined. + */ + public Map getIncludes(); + + + /** + * Add a portType to this WADL description. + * + * @param resource the resource to be added + */ + public void addResource(Resource resource); + + /** + * Get the specified resource. Also checks imported documents. + * + * @param name the name of the desired resource. + * @return the corresponding resource, or null if there wasn't + * any matching resource + */ + public Resource getResource(QName name); + + /** + * Remove the specified resource from this app. + * + * @param name the name of the resource to remove + * @return the resource previously associated with this qname, if there + * was one; may return null + */ + public Resource removeResource(QName name); + + /** + * Get all the resources defined here. + */ + public Map getResources(); + + /** + * Set the documentation element for this document. This dependency + * on org.w3c.dom.Element should eventually be removed when a more + * appropriate way of representing this information is employed. + * + * @param docEl the documentation element + */ + public void setDocumentationElement(Element docEl); + + /** + * Get the documentation element. This dependency on org.w3c.dom.Element + * should eventually be removed when a more appropriate way of + * representing this information is employed. + * + * @return the documentation element + */ + public Element getDocumentationElement(); + + + public ModelReference createModelReference(); + + /** + * Create a new precondition. + * + * @return the newly created precondition + */ + public PreCondition createPreCondition(); + + /** + * Create a new effect. + * + * @return the newly created effect + */ + public Effect createEffect(); + + public Include createInclude(); + + /** + * Create a new input. + * + * @return the newly created input + */ + public Request createRequest(); + + + /** + * Create a new operation. + * + * @return the newly created operation + */ + public Method createMethod(); + + /** + * Create a new output. + * + * @return the newly created output + */ + public Response createResponse(); + + + + public Resource createResource(); + + + public Params createParams(); + public Grammars createGrammars(); + } \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/lib/SAWADLParser/src/javax/wadls/Effect.java Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,59 @@ +package javax.wadls; + +import org.w3c.dom.*; + + +/** + * This interface represents an effect. + * + * @author Zixin Wu + */ +public interface Effect extends java.io.Serializable, ModelReferenceExtensible +{ + /** + * Set the name of this effect. + * + * @param name the desired name + */ + public void setName(String name); + + /** + * Get the name of this effect. + * + * @return the effect name + */ + public String getName(); + + /** + * Set the expression of this effect. + * + * @param expression The desired expression. + */ + public void setExpression(String expression); + + /** + * Get the expression of this effect. + * + * @return The expression. + */ + public String getExpression(); + + /** + * Set the documentation element for this document. This dependency + * on org.w3c.dom.Element should eventually be removed when a more + * appropriate way of representing this information is employed. + * + * @param docEl the documentation element + */ + public void setDocumentationElement(Element docEl); + + /** + * Get the documentation element. This dependency on org.w3c.dom.Element + * should eventually be removed when a more appropriate way of + * representing this information is employed. + * + * @return the documentation element + */ + public Element getDocumentationElement(); + +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/lib/SAWADLParser/src/javax/wadls/Grammars.java Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,103 @@ + +package javax.wadls; + +import java.net.URISyntaxException; +import java.util.List; +import java.util.Map; + +import javax.wadls.extensions.ElementExtensible; +import javax.wadls.extensions.schema.Schema; +import javax.wadls.Application; +import javax.wadls.ModelReference; +import javax.wadls.WADLSException; +import javax.xml.namespace.QName; + +import org.w3c.dom.Element; + +/** + * This interface represents the <types> section of a WSDL document. + * + * @author Zixin Wu (wuzixin@uga.edu) + * @author Matthew J. Duftler (duftler@us.ibm.com) + */ +public interface Grammars extends java.io.Serializable,ModelReferenceExtensible +{public List getTopLevelSchemas(); + +/** + * Get the DOM elements of all the schemas in this Types. + * @return A list of DOM elements of all the schemas in this Types. + */ +public Map getSchemas(); + +public void setSchemas(Map allSchemas); + + + +/** + * Get the DOM element of the first schema in this Types. + * @return The DOM element of the first schema in this Types. + */ +public Schema getFirstSchema(); + +public ModelReference getModelReference(Element startElement, String path, Application app) throws WADLSException, URISyntaxException; + +/** + * Set the modelReference on the element located by the given path. + * @param startElement The starting element of the path + * @param path + * @param modelReference The desired modelReference + */ +public void addModelReference(Element startElement, String path, ModelReference modelReference) throws WADLSException; + +public void setModelReferences(Element startElement, String path, List<ModelReference> refs) throws WADLSException; + +/** + * Get the LiftingSchemaMapping on the element located by the given path. + * @param startElement The starting element of the path + * @param path + * @return The schemaMapping value + */ +public String getLiftingSchemaMapping(Element startElement, String path) throws WADLSException; + +/** + * Set the LiftingSchemaMapping on the element located by the given path. + * @param startElement The starting element of the path + * @param path + * @param schemaMapping The desired schemaMapping + */ +public void setLiftingSchemaMapping(Element startElement, String path, String schemaMapping) throws WADLSException; + +/** + * Get the LiftingSchemaMapping on the element located by the given path. + * @param startElement The starting element of the path + * @param path + * @return The schemaMapping value + */ +public String getLoweringSchemaMapping(Element startElement, String path) throws WADLSException; + +/** + * Set the LiftingSchemaMapping on the element located by the given path. + * @param startElement The starting element of the path + * @param path + * @param schemaMapping The desired schemaMapping + */ +public void setLoweringSchemaMapping(Element startElement, String path, String schemaMapping) throws WADLSException; + +/** + * Set the documentation element for this document. This dependency + * on org.w3c.dom.Element should eventually be removed when a more + * appropriate way of representing this information is employed. + * + * @param docEl the documentation element + */ +public void setDocumentationElement(Element docEl); + +/** + * Get the documentation element. This dependency on org.w3c.dom.Element + * should eventually be removed when a more appropriate way of + * representing this information is employed. + * + * @return the documentation element + */ +public Element getDocumentationElement(); +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/lib/SAWADLParser/src/javax/wadls/Include.java Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,78 @@ +/* + * (c) Copyright IBM Corp 2001, 2005 + */ + +package javax.wadls; + +import org.w3c.dom.*; + + + +/** + * This interface represents an import, and may contain a reference + * to the imported definition. + * + * @author Matthew J. Duftler (duftler@us.ibm.com) + */ +public interface Include extends java.io.Serializable +{ + /** + * Set the namespace URI of this import. + * + * @param namespaceURI the desired namespace URI + */ + public void setNamespaceURI(String namespaceURI); + + /** + * Get the namespace URI of this import. + */ + public String getNamespaceURI(); + + /** + * Set the location URI of this import. + * + * @param locationURI the desired location URI + */ + public void setLocationURI(String locationURI); + + /** + * Get the location URI of this import. + */ + public String getLocationURI(); + + /** + * This property can be used to hang a referenced Definition, + * and the top-level Definition (i.e. the one with the <import>) + * will use this Definition when resolving referenced WSDL parts. + * This would need to be made into a generic reference to handle + * other types of referenced documents. + */ + public void setApplication(Application app); + + /** + * This property can be used to hang a referenced Definition, + * and the top-level Definition (i.e. the one with the <import>) + * will use this Definition when resolving referenced WSDL parts. + * This would need to be made into a generic reference to handle + * other types of referenced documents. + */ + public Application getApplication(); + + /** + * Set the documentation element for this document. This dependency + * on org.w3c.dom.Element should eventually be removed when a more + * appropriate way of representing this information is employed. + * + * @param docEl the documentation element + */ + public void setDocumentationElement(Element docEl); + + /** + * Get the documentation element. This dependency on org.w3c.dom.Element + * should eventually be removed when a more appropriate way of + * representing this information is employed. + * + * @return the documentation element + */ + public Element getDocumentationElement(); +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/lib/SAWADLParser/src/javax/wadls/Method.java Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,142 @@ +/* + * (c) Copyright IBM Corp 2001, 2005 + */ + +package javax.wadls; + +import java.util.List; +import java.util.Map; +import org.w3c.dom.Element; + + +/** + * This interface represents a WSDL operation. + * It includes information on input, output and fault + * messages associated with usage of the operation. + * + * @author Zixin Wu (wuzixin@uga.edu) + * @author Paul Fremantle (pzf@us.ibm.com) + * @author Nirmal Mukhi (nmukhi@us.ibm.com) + * @author Matthew J. Duftler (duftler@us.ibm.com) + */ +public interface Method extends java.io.Serializable, ModelReferenceExtensible +{ + + /** + * Set the precondition of this operation. + * + * @param preCondition the desired precondition + */ + public void setPreCondition(PreCondition preCondition); + + /** + * Get the precondition of this operation. + * + * @return the precondition + */ + public PreCondition getPreCondition(); + + /** + * Set the effect of this operation. + * + * @param effect the desired effect + */ + public void setEffect(Effect effect); + + /** + * Get the effect of this operation. + * + * @return The effect + */ + public Effect getEffect(); + + /** + * Set the name of this operation. + * + * @param name the desired name + */ + public void setName(String name); + + /** + * Get the name of this operation. + * + * @return the operation name + */ + public String getName(); + + /** + * Set the input message specification for this operation. + * + * @param input the new input message + */ + public void setRequest(Request request); + + /** + * Get the input message specification for this operation. + * + * @return the input message + */ + public Request getRequest(); + + /** + * Set the output message specification for this operation. + * + * @param output the new output message + */ + public void setResponse(Response response); + + /** + * Get the output message specification for this operation. + * + * @return the output message specification for the operation + */ + public Response getResponse(); + + + /** + * Set the style for this operation (request-response, + * one way, solicit-response or notification). + * + * @param style the new operation style + + /** + * Set the parameter ordering for a request-response, + * or solicit-response operation. + * + * @param parameterOrder a list of named parameters + * containing the part names to reflect the desired + * order of parameters for RPC-style operations + */ + public void setParameterOrdering(List parameterOrder); + + /** + * Get the parameter ordering for this operation. + * + * @return the parameter ordering, a list consisting + * of message part names + */ + public List getParameterOrdering(); + + /** + * Set the documentation element for this document. This dependency + * on org.w3c.dom.Element should eventually be removed when a more + * appropriate way of representing this information is employed. + * + * @param docEl the documentation element + */ + public void setDocumentationElement(Element docEl); + + /** + * Get the documentation element. This dependency on org.w3c.dom.Element + * should eventually be removed when a more appropriate way of + * representing this information is employed. + * + * @return the documentation element + */ + public Element getDocumentationElement(); + + public void setUndefined(boolean isUndefined); + + public boolean isUndefined(); + +} \ No newline at end of file
Binary file WebServiceToolWorkflow/lib/SAWADLParser/src/javax/wadls/ModelReference.class has changed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/lib/SAWADLParser/src/javax/wadls/ModelReference.java Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,77 @@ +package javax.wadls; + +import java.net.URI; +import java.net.URISyntaxException; + +/** + * This interface represents a ModelReference. + * + * @author Zixin Wu (wuzixin@uga.edu) + * + */ +public interface ModelReference { + + /** + * Get the concept of this modelReference. + * @return The concept of this modelReference. + */ + public String getConcept(); + + /** + * Set the concept of this modelReference. + * @param concept The desired concept of this modelReference. + */ + public void setConcept(String concept); + + /** + * Get the prefix of this modelReference + * @return The prefix of this modelReference + */ + public String getPrefix(); + + /** + * Set the prefix of the ontology used in this modelReference + * @param prefix The desired prefix of the ontology used in this modelReference + */ + public void setPrefix(String prefix); + + /** + * Get the namespace of the ontology used in this modelReference + * @return The namespace of the ontology used in this modelReference + */ + public URI getNamespace(); + + /** + * Set the namespace of the ontology used in this modelReference + * @param nameSpace The desired namespace of the ontology used in this modelReference + */ + public void setNamespace(String nameSpace) + throws URISyntaxException; + + /** + * Get the parent object of this modelReference + * @return The parent object of this modelReference + */ + public Object getParent(); + + /** + * Set the parent object of this modelReference + * @param parent The desired parent object of this modelReference + */ + public void setParent(Object parent); + + /** + * Set the value of this modelReference by parsing the formatted string. + * @param modelReferenceAsString The formatted string + * @param def WSDLS definition + * @throws URISyntaxException + * @throws WSDLSException + */ + public void valueOf(String modelReferenceAsString, Application app) throws URISyntaxException, WADLSException; + + /** + * Return a formatted string representing this modelReference. + * @return A formatted string representing this modelReference. + */ + public String value(); +} \ No newline at end of file
Binary file WebServiceToolWorkflow/lib/SAWADLParser/src/javax/wadls/ModelReferenceExtensible.class has changed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/lib/SAWADLParser/src/javax/wadls/ModelReferenceExtensible.java Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,40 @@ +package javax.wadls; + +import java.util.List; + +/** + * This interface marks a WADL param being allowed to have a + * <code>javax.wadls.ModelReference</code> for SAWADL. + * + * @author Douglas Brewer + */ +public interface ModelReferenceExtensible { + + /** + * Add a single ModelReference to the Element. + * + * @param modelReference The ModelReference. + */ + public void addModelReference(ModelReference modelReference); + + /** + * Get the first ModelReference in the list of ModelReferences. + * + * @return The first ModelReference. + */ + public ModelReference getModelReference(); + + /** + * Get all the ModelReferences of the Element. + * + * @return A list of ModelReferences. + */ + public List<ModelReference> getModelReferences(); + + /** + * Set the ModelReferences of this Element. + * + * @param refs The ModelReferences for this Element. + */ + public void setModelReferences(List<ModelReference> refs); +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/lib/SAWADLParser/src/javax/wadls/Param.java Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,98 @@ +/* + * Copyright (c) 2009 Srikalyan Swayampakula.. All rights reserved. + * + * Author : Srikalyan Swayampakula. . + * Name of the File : Param.java . + * Created on : Nov 22, 2009 at 4:03:57 PM . + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above + * copyright notice, this list of conditions and the following + * disclaimer. + * 2. Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials + * provided with the distribution. + * 3. Neither the name of the University of Georgia nor the names + * of its contributors may be used to endorse or promote + * products derived from this software without specific prior + * written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package javax.wadls; + +import java.net.URI; +import java.util.ArrayList; +import java.util.List; + +/** + * + * @author Srikalyan Swayampakula. + */ +public interface Param extends java.io.Serializable +{ + + + + public String getModelreference(); + + public void setModelreference(String modelreference); + + public String getLiftingschemamapping(); + + public void setLiftingschemamapping(String liftingschemamapping) ; + public String getLoweringschemamapping() ; + + public void setLoweringschemamapping(String loweringschemamapping) ; + + public List<String> getOptionvalue() ; + + public void setOptionvalue(List<String> optionvalue) ; + + public String getDefault1(); + public void setDefault1(String default1); + + + + public String getFixed(); + + public void setFixed(String fixed); + + + public String getId(); + public void setId(String id); + + public String getName(); + + public void setName(String name); + + public String getPath(); + public void setPath(String path); + public boolean isRepeation(); + public void setRepeation(boolean repeation); + public String getRequired(); + + public void setRequired(String required); + public String getStyle(); + + public void setStyle(String style); + public String getType(); + + public void setType(String type); +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/lib/SAWADLParser/src/javax/wadls/Params.java Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,117 @@ +/* + * (c) Copyright IBM Corp 2001, 2005 + */ + +package javax.wadls; + +import java.net.URISyntaxException; +import java.util.List; +import java.util.Map; +import javax.wadls.extensions.schema.Schema; +import javax.xml.namespace.QName; + +import org.w3c.dom.Element; + +/** + * This interface represents the <types> section of a WSDL document. + * + * @author Zixin Wu (wuzixin@uga.edu) + * @author Matthew J. Duftler (duftler@us.ibm.com) + */ +public interface Params extends java.io.Serializable,ModelReferenceExtensible +{ + /** + * Get the XSD simpleType with the given name. + * @param name The QName of the type + * @return A DOM Element representing the simpleType + * @throws WADLSException + */ + + public Element getXSDElement(String xpath) throws WADLSException; + + /** + * Return a list of XSD elements contained in the startElement, search in only 1 level depth. + * @param startXSDElement + * @return A list of XSD elements contained in the startElement. If no XSD element is contained, the list has 0 element. + * @throws WADLSException + */ + public List getXSDElementsInComplexType(Element startXSDElement) throws WADLSException; + + /** + * Return a list of XSD elements contained in the startElement, search in only 1 level depth. + * @param startXSDComplexType + * @return A list of XSD elements contained in the startElement. If no XSD element is contained, the list has 0 element. + * @throws WADLSException + */ + public List getXSDElementsInElement(Element startXSDComplexType) throws WADLSException; + + /** + * Get the modelReference on the element located by the given path. + * @param startElement The starting element of the path + * @param path + * @return The modelReference + */ + public ModelReference getModelReference(Element startElement, String path, Application app) throws WADLSException, URISyntaxException; + + /** + * Set the modelReference on the element located by the given path. + * @param startElement The starting element of the path + * @param path + * @param modelReference The desired modelReference + */ + public void addModelReference(Element startElement, String path, ModelReference modelReference) throws WADLSException; + + public List<ModelReference> getModelReferences(Element startElement, String path, Application app) throws WADLSException, URISyntaxException; + + public void setModelReferences(Element startElement, String path, List<ModelReference> refs) throws WADLSException; + + /** + * Get the LiftingSchemaMapping on the element located by the given path. + * @param startElement The starting element of the path + * @param path + * @return The schemaMapping value + */ + public String getLiftingSchemaMapping(Element startElement, String path) throws WADLSException; + + /** + * Set the LiftingSchemaMapping on the element located by the given path. + * @param startElement The starting element of the path + * @param path + * @param schemaMapping The desired schemaMapping + */ + public void setLiftingSchemaMapping(Element startElement, String path, String schemaMapping) throws WADLSException; + + /** + * Get the LiftingSchemaMapping on the element located by the given path. + * @param startElement The starting element of the path + * @param path + * @return The schemaMapping value + */ + public String getLoweringSchemaMapping(Element startElement, String path) throws WADLSException; + + /** + * Set the LiftingSchemaMapping on the element located by the given path. + * @param startElement The starting element of the path + * @param path + * @param schemaMapping The desired schemaMapping + */ + public void setLoweringSchemaMapping(Element startElement, String path, String schemaMapping) throws WADLSException; + + /** + * Set the documentation element for this document. This dependency + * on org.w3c.dom.Element should eventually be removed when a more + * appropriate way of representing this information is employed. + * + * @param docEl the documentation element + */ + public void setDocumentationElement(Element docEl); + + /** + * Get the documentation element. This dependency on org.w3c.dom.Element + * should eventually be removed when a more appropriate way of + * representing this information is employed. + * + * @return the documentation element + */ + public Element getDocumentationElement(); +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/lib/SAWADLParser/src/javax/wadls/PreCondition.java Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,49 @@ + +package javax.wadls; + + + +import org.w3c.dom.Element; + +/** + * This interface represents a precondition. + * + * @author Zixin Wu + */ +public interface PreCondition extends java.io.Serializable,ModelReferenceExtensible +{ + + /** + * Set the expression of this precondition. + * + * @param expression The desired expression. + */ + public void setExpression(String expression); + + /** + * Get the expression of this precondition. + * + * @return The expression. + */ + public String getExpression(); + + public void setName(String name); + + /** + * Get the name of this precondition. + * + * @return the precondition name + */ + public String getName(); + + public void setDocumentationElement(Element docEl); + + /** + * Get the documentation element. This dependency on org.w3c.dom.Element + * should eventually be removed when a more appropriate way of + * representing this information is employed. + * + * @return the documentation element + */ + public Element getDocumentationElement(); +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/lib/SAWADLParser/src/javax/wadls/Request.java Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,60 @@ +/* + * (c) Copyright IBM Corp 2001, 2005 + */ + +package javax.wadls; + +import java.util.List; + +import org.w3c.dom.*; + + + +/** + * This interface represents an input message, and contains the name + * of the input and the message itself. + * + * @author Matthew J. Duftler + */ +public interface Request extends java.io.Serializable,ModelReferenceExtensible +{ + /** + * Set the name of this input message. + * + * @param name the desired name + */ + public void setName(String name); + + + + /** + * Get the name of this input message. + * + * @return the input message name + */ + public String getName(); + public void setParamList(List paramList); + public List getParamList(); + + + public void setInputXSDList(List inputXSDList); + public List getInputXSDList(); + + /** + * Set the documentation element for this document. This dependency + * on org.w3c.dom.Element should eventually be removed when a more + * appropriate way of representing this information is employed. + * + * @param docEl the documentation element + */ + public void setDocumentationElement(Element docEl); + + /** + * Get the documentation element. This dependency on org.w3c.dom.Element + * should eventually be removed when a more appropriate way of + * representing this information is employed. + * + * @return the documentation element + */ + public Element getDocumentationElement(); +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/lib/SAWADLParser/src/javax/wadls/Resource.java Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,90 @@ +/* + * (c) Copyright IBM Corp 2001, 2005 + */ + +package javax.wadls; + +import java.util.*; +import org.w3c.dom.*; +import javax.xml.namespace.*; + + +/** + * This interface represents a port type. It contains information about + * operations associated with this port type. + * + * @author Paul Fremantle + * @author Nirmal Mukhi + * @author Matthew J. Duftler + * @author Zixin Wu + */ +public interface Resource extends java.io.Serializable,ModelReferenceExtensible +{ + + + /** + * Set the name of this port type. + * + * @param name the desired name + */ + public void setQName(QName name); + + /** + * Get the name of this port type. + * + * @return the port type name + */ + public QName getQName(); + + /** + * Add an operation to this port type. + * + * @param operation the operation to be added + */ + public void addMethod(Method method); + + /** + * Get the specified operation. Note that operation names can + * be overloaded within a PortType. In case of overloading, the + * names of the input and output messages can be used to further + * refine the search. + * + * @param name the name of the desired operation. + * @param inputName the name of the input message; if this is null + * it will be ignored. + * @param outputName the name of the output message; if this is null + * it will be ignored. + * @return the corresponding operation, or null if there wasn't + * any matching operation + */ + public Method getMethod(String name, + String inputName, + String outputName); + + /** + * Get all the operations defined here. + */ + public List getMethods(); + + /** + * Set the documentation element for this document. This dependency + * on org.w3c.dom.Element should eventually be removed when a more + * appropriate way of representing this information is employed. + * + * @param docEl the documentation element + */ + public void setDocumentationElement(Element docEl); + + /** + * Get the documentation element. This dependency on org.w3c.dom.Element + * should eventually be removed when a more appropriate way of + * representing this information is employed. + * + * @return the documentation element + */ + public Element getDocumentationElement(); + + public void setUndefined(boolean isUndefined); + + public boolean isUndefined(); +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/lib/SAWADLParser/src/javax/wadls/Response.java Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,56 @@ +/* + * (c) Copyright IBM Corp 2001, 2005 + */ + +package javax.wadls; + +import java.util.List; + +import org.w3c.dom.*; + +/** + * This interface represents an output message, and contains the name + * of the output and the message itself. + * + * @author Matthew J. Duftler + */ +public interface Response extends java.io.Serializable,ModelReferenceExtensible +{ + /** + * Set the name of this output message. + * + * @param name the desired name + */ + public void setName(String name); + + /** + * Get the name of this output message. + * + * @return the output message name + */ + public String getName(); + + public void setParamList(List paramList); + public List getParamList(); + + + public void setInputXSDList(List inputXSDList); + public List getInputXSDList(); + /** + * Set the documentation element for this document. This dependency + * on org.w3c.dom.Element should eventually be removed when a more + * appropriate way of representing this information is employed. + * + * @param docEl the documentation element + */ + public void setDocumentationElement(Element docEl); + + /** + * Get the documentation element. This dependency on org.w3c.dom.Element + * should eventually be removed when a more appropriate way of + * representing this information is employed. + * + * @return the documentation element + */ + public Element getDocumentationElement(); +} \ No newline at end of file
Binary file WebServiceToolWorkflow/lib/SAWADLParser/src/javax/wadls/WADLSException.class has changed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/lib/SAWADLParser/src/javax/wadls/WADLSException.java Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,140 @@ +/* + * (c) Copyright IBM Corp 2001, 2005 + */ + +package javax.wadls; + +import java.io.*; + +/** + * This class represents a WADLS Exception + * @author Zixin Wu + * + */ +public class WADLSException extends Exception +{ + public static final long serialVersionUID = 1; + + public static final String INVALID_WADL = "INVALID_WADL"; + public static final String XSDPARSER_ERROR = "XSDPARSER_ERROR"; + public static final String OTHER_ERROR = "OTHER_ERROR"; + public static final String CONFIGURATION_ERROR = "CONFIGURATION_ERROR"; + public static final String UNBOUND_PREFIX = "UNBOUND_PREFIX"; + public static final String NO_PREFIX_SPECIFIED = "NO_PREFIX_SPECIFIED"; + public static final String PATH_ERROR = "PATH_ERROR"; + public static final String NOT_FOUND_ELE_BY_PATH = "NOT_FOUND_ELE_BY_PATH"; + public static final String NOT_FOUND_SCHEMA = "NOT_FOUND_SCHEMA"; + public static final String NOT_FOUND_ELE_IN_PART = "NOT_FOUND_ELE_IN_PART"; + + private String faultCode = null; + private Throwable targetThrowable = null; + private String location = null; + + public WADLSException(String faultCode, String msg, Throwable t) + { + super(msg); + setFaultCode(faultCode); + setTargetException(t); + } + + public WADLSException(String faultCode, String msg) + { + this(faultCode, msg, null); + } + + public void setFaultCode(String faultCode) + { + this.faultCode = faultCode; + } + + public String getFaultCode() + { + return faultCode; + } + + public void setTargetException(Throwable targetThrowable) + { + this.targetThrowable = targetThrowable; + } + + public Throwable getTargetException() + { + return targetThrowable; + } + + /** + * Set the location using an XPath expression. Used for error messages. + * + * @param location an XPath expression describing the location where + * the exception occurred. + */ + public void setLocation(String location) + { + this.location = location; + } + + /** + * Get the location, if one was set. Should be an XPath expression which + * is used for error messages. + */ + public String getLocation() + { + return location; + } + + public String getMessage() + { + StringBuffer strBuf = new StringBuffer(); + + strBuf.append("WADLSException"); + + if (location != null) + { + try + { + strBuf.append(" (at " + location + ")"); + } + catch (IllegalArgumentException e) + { + } + } + + if (faultCode != null) + { + strBuf.append(": faultCode=" + faultCode); + } + + String thisMsg = super.getMessage(); + String targetMsg = (targetThrowable != null) + ? targetThrowable.getMessage() + : null; + + if (thisMsg != null + && (targetMsg == null || !thisMsg.equals(targetMsg))) + { + strBuf.append(": " + thisMsg); + } + + if (targetMsg != null) + { + strBuf.append(": " + targetMsg); + } + + return strBuf.toString(); + } + + public String toString() + { + StringWriter sw = new StringWriter(); + PrintWriter pw = new PrintWriter(sw); + + pw.print(getMessage() + ": "); + + if (targetThrowable != null) + { + targetThrowable.printStackTrace(pw); + } + + return sw.toString(); + } +} \ No newline at end of file
Binary file WebServiceToolWorkflow/lib/SAWADLParser/src/javax/wadls/extensions/AttributeExtensible.class has changed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/lib/SAWADLParser/src/javax/wadls/extensions/AttributeExtensible.java Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,76 @@ + + +package javax.wadls.extensions; + +import java.util.*; +import javax.xml.namespace.*; + +/** + * Classes that implement this interface can contain extensibility + * attributes. + * + * @author Matthew J. Duftler + * @author Paul Fremantle + */ +public interface AttributeExtensible +{ + public static final int NO_DECLARED_TYPE = -1; + public static final int STRING_TYPE = 0; + public static final int QNAME_TYPE = 1; + public static final int LIST_OF_STRINGS_TYPE = 2; + public static final int LIST_OF_QNAMES_TYPE = 3; + + /** + * Set an extension attribute on this element. Pass in a null value to remove + * an extension attribute. + * + * @param name the extension attribute name + * @param value the extension attribute value. Can be a String, a QName, a + * List of Strings, or a List of QNames. + * + * @see #getExtensionAttribute + * @see #getExtensionAttributes + * @see ExtensionRegistry#registerExtensionAttributeType + * @see ExtensionRegistry#queryExtensionAttributeType + */ + public void setExtensionAttribute(QName name, Object value); + + /** + * Retrieve an extension attribute from this element. If the extension + * attribute is not defined, null is returned. + * + * @param name the extension attribute name + * + * @return the value of the extension attribute, or null if + * it is not defined. Can be a String, a QName, a List of Strings, or a List + * of QNames. + * + * @see #setExtensionAttribute + * @see #getExtensionAttributes + * @see ExtensionRegistry#registerExtensionAttributeType + * @see ExtensionRegistry#queryExtensionAttributeType + */ + public Object getExtensionAttribute(QName name); + + /** + * Get the map containing all the extension attributes defined + * on this element. The keys are the qnames of the attributes. + * + * @return a map containing all the extension attributes defined + * on this element + * + * @see #setExtensionAttribute + * @see #getExtensionAttribute + * @see ExtensionRegistry#registerExtensionAttributeType + * @see ExtensionRegistry#queryExtensionAttributeType + */ + public Map getExtensionAttributes(); + + /** + * Get the list of local attribute names defined for this element in + * the WSDL specification. + * + * @return a List of Strings, one for each local attribute name + */ + public List getNativeAttributeNames(); +}
Binary file WebServiceToolWorkflow/lib/SAWADLParser/src/javax/wadls/extensions/ElementExtensible.class has changed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/lib/SAWADLParser/src/javax/wadls/extensions/ElementExtensible.java Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,32 @@ +/* + * (c) Copyright IBM Corp 2004, 2005 + */ + +package javax.wadls.extensions; + +import java.util.*; + +import javax.wadls.extensions.ExtensibilityElement; + +/** + * Classes that implement this interface can contain extensibility + * elements. + * + * @author John Kaputin + */ +public interface ElementExtensible { + + /** + * Add an extensibility element. + * + * @param extElement the extensibility element to be added + */ + public void addExtensibilityElement(ExtensibilityElement extElement); + + /** + * Get all the extensibility elements defined here. + */ + public List getExtensibilityElements(); + + +}
Binary file WebServiceToolWorkflow/lib/SAWADLParser/src/javax/wadls/extensions/ExtensibilityElement.class has changed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/lib/SAWADLParser/src/javax/wadls/extensions/ExtensibilityElement.java Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,42 @@ +/* + * (c) Copyright IBM Corp 2001, 2005 + */ + +package javax.wadls.extensions; + +import javax.xml.namespace.*; + +/** + * This interface should be implemented by classes intending to represent + * extensions. + * + * @author Matthew J. Duftler (duftler@us.ibm.com) + */ +public interface ExtensibilityElement +{ + /** + * Set the type of this extensibility element. + * + * @param elementType the type + */ + public void setElementType(QName elementType); + + /** + * Get the type of this extensibility element. + * + * @return the extensibility element's type + */ + public QName getElementType(); + + /** + * Set whether or not the semantics of this extension + * are required. Relates to the wsdl:required attribute. + */ + public void setRequired(Boolean required); + + /** + * Get whether or not the semantics of this extension + * are required. Relates to the wsdl:required attribute. + */ + public Boolean getRequired(); +} \ No newline at end of file
Binary file WebServiceToolWorkflow/lib/SAWADLParser/src/javax/wadls/extensions/ExtensionDeserializer.class has changed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/lib/SAWADLParser/src/javax/wadls/extensions/ExtensionDeserializer.java Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,44 @@ +/* + * (c) Copyright IBM Corp 2001, 2005 + */ + +package javax.wadls.extensions; + +import org.w3c.dom.*; + +import javax.wadls.*; +import javax.xml.namespace.*; + +/** + * This interface should be implemented by classes which deserialize + * org.w3c.dom.Elements into extension-specific instances of + * ExtensibilityElement. + * + * @author Matthew J. Duftler (duftler@us.ibm.com) + */ +public interface ExtensionDeserializer +{ + /** + * This method deserializes elements into instances of classes + * which implement the ExtensibilityElement interface. The + * return value should be explicitly cast to the more-specific + * implementing type. + * + * @param parentType a class object indicating where in the WSDL + * document this extensibility element was encountered. For + * example, javax.wsdls.Binding.class would be used to indicate + * this element was encountered as an immediate child of + * a <wsdl:binding> element. + * @param elementType the qname of the extensibility element + * @param el the extensibility element to deserialize + * @param def the definition this extensibility element was + * encountered in + * @param extReg the ExtensionRegistry to use (if needed again) + */ + public ExtensibilityElement unmarshall(Class parentType, + QName elementType, + Element el, + Application app, + ExtensionRegistry extReg) + throws WADLSException; +} \ No newline at end of file
Binary file WebServiceToolWorkflow/lib/SAWADLParser/src/javax/wadls/extensions/ExtensionRegistry.class has changed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/lib/SAWADLParser/src/javax/wadls/extensions/ExtensionRegistry.java Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,466 @@ +/* + * (c) Copyright IBM Corp 2001, 2005 + */ + +package javax.wadls.extensions; + +import java.util.*; + +import javax.wadls.*; +import javax.xml.namespace.*; + +/** + * This class is used to associate serializers, deserializers, and + * Java implementation types with extensibility elements. + * + * @author Matthew J. Duftler (duftler@us.ibm.com) + */ +public class ExtensionRegistry implements java.io.Serializable +{ + public static final long serialVersionUID = 1; + + /** + * Creates the extension registry, and sets the defaultSerializer + * and defaultDeserializer properties to instances of an + * UnknownExtensionSerializer, and an UnknownExtensionDeserializer, + * respectively. + */ + public ExtensionRegistry() + { + setDefaultSerializer(new UnknownExtensionSerializer()); + setDefaultDeserializer(new UnknownExtensionDeserializer()); + } + + /* + This is a Map of Maps. The top-level Map is keyed by (Class)parentType, + and the inner Maps are keyed by (QName)elementType. + */ + protected Map serializerReg = new Hashtable(); + /* + This is a Map of Maps. The top-level Map is keyed by (Class)parentType, + and the inner Maps are keyed by (QName)elementType. + */ + protected Map deserializerReg = new Hashtable(); + /* + This is a Map of Maps. The top-level Map is keyed by (Class)parentType, + and the inner Maps are keyed by (QName)elementType. + */ + protected Map extensionTypeReg = new Hashtable(); + protected ExtensionSerializer defaultSer = null; + protected ExtensionDeserializer defaultDeser = null; + /* + This is a Map of Maps. The top-level Map is keyed by (Class)parentType, + and the inner Maps are keyed by (QName)attrName. + */ + protected Map extensionAttributeTypeReg = new Hashtable(); + + /** + * Set the serializer to be used when none is found for an extensibility + * element. Set this to null to have an exception thrown when + * unexpected extensibility elements are encountered. Default value is + * an instance of UnknownExtensionSerializer. + * + * @see UnknownExtensionSerializer + */ + public void setDefaultSerializer(ExtensionSerializer defaultSer) + { + this.defaultSer = defaultSer; + } + + /** + * Get the serializer to be used when none is found for an extensibility + * element. Default value is an instance of UnknownExtensionSerializer. + * + * @see UnknownExtensionSerializer + */ + public ExtensionSerializer getDefaultSerializer() + { + return defaultSer; + } + + /** + * Set the deserializer to be used when none is found for an encountered + * element. Set this to null to have an exception thrown when + * unexpected extensibility elements are encountered. Default value is + * an instance of UnknownExtensionDeserializer. + * + * @see UnknownExtensionDeserializer + */ + public void setDefaultDeserializer(ExtensionDeserializer defaultDeser) + { + this.defaultDeser = defaultDeser; + } + + /** + * Get the deserializer to be used when none is found for an encountered + * element. Default value is an instance of UnknownExtensionDeserializer. + * + * @see UnknownExtensionDeserializer + */ + public ExtensionDeserializer getDefaultDeserializer() + { + return defaultDeser; + } + + /** + * Declare that the specified serializer should be used to serialize + * all extensibility elements with a qname matching elementType, when + * encountered as children of the specified parentType. + * + * @param parentType a class object indicating where in the WSDL + * definition this extension was encountered. For + * example, javax.wsdls.Binding.class would be used to indicate + * this extensibility element was found in the list of + * extensibility elements belonging to a javax.wsdls.Binding. + * @param elementType the qname of the extensibility element + * @param es the extension serializer to use + * + * @see #querySerializer(Class, QName) + */ + public void registerSerializer(Class parentType, + QName elementType, + ExtensionSerializer es) + { + Map innerSerializerReg = (Map)serializerReg.get(parentType); + + if (innerSerializerReg == null) + { + innerSerializerReg = new Hashtable(); + + serializerReg.put(parentType, innerSerializerReg); + } + + innerSerializerReg.put(elementType, es); + } + + /** + * Declare that the specified deserializer should be used to deserialize + * all extensibility elements with a qname matching elementType, when + * encountered as immediate children of the element represented by the + * specified parentType. + * + * @param parentType a class object indicating where in the WSDL + * document this extensibility element was encountered. For + * example, javax.wsdls.Binding.class would be used to indicate + * this element was encountered as an immediate child of + * a <wsdl:binding> element. + * @param elementType the qname of the extensibility element + * @param ed the extension deserializer to use + * + * @see #queryDeserializer(Class, QName) + */ + public void registerDeserializer(Class parentType, + QName elementType, + ExtensionDeserializer ed) + { + Map innerDeserializerReg = (Map)deserializerReg.get(parentType); + + if (innerDeserializerReg == null) + { + innerDeserializerReg = new Hashtable(); + + deserializerReg.put(parentType, innerDeserializerReg); + } + + innerDeserializerReg.put(elementType, ed); + } + + /** + * Look up the serializer to use for the extensibility element with + * the qname elementType, which was encountered as a child of the + * specified parentType. + * + * @param parentType a class object indicating where in the WSDL + * definition this extension was encountered. For + * example, javax.wsdls.Binding.class would be used to indicate + * this extensibility element was found in the list of + * extensibility elements belonging to a javax.wsdls.Binding. + * @param elementType the qname of the extensibility element + * + * @return the extension serializer, if one was found. If none was + * found, the behavior depends on the value of the defaultSerializer + * property. If the defaultSerializer property is set to a non-null + * value, that value is returned; otherwise, a WSDLSException is + * thrown. + * + * @see #registerSerializer(Class, QName, ExtensionSerializer) + * @see #setDefaultSerializer(ExtensionSerializer) + */ + public ExtensionSerializer querySerializer(Class parentType, + QName elementType) + throws WADLSException + { + Map innerSerializerReg = (Map)serializerReg.get(parentType); + ExtensionSerializer es = null; + + if (innerSerializerReg != null) + { + es = (ExtensionSerializer)innerSerializerReg.get(elementType); + } + + if (es == null) + { + es = defaultSer; + } + + if (es == null) + { + throw new WADLSException(WADLSException.CONFIGURATION_ERROR, + "No ExtensionSerializer found " + + "to serialize a '" + elementType + + "' element in the context of a '" + + parentType.getName() + "'."); + } + + return es; + } + + /** + * Look up the deserializer for the extensibility element with the + * qname elementType, which was encountered as an immediate child + * of the element represented by the specified parentType. + * + * @param parentType a class object indicating where in the WSDL + * document this extensibility element was encountered. For + * example, javax.wsdls.Binding.class would be used to indicate + * this element was encountered as an immediate child of + * a <wsdl:binding> element. + * @param elementType the qname of the extensibility element + * + * @return the extension deserializer, if one was found. If none was + * found, the behavior depends on the value of the defaultDeserializer + * property. If the defaultDeserializer property is set to a non-null + * value, that value is returned; otherwise, a WSDLSException is thrown. + * + * @see #registerDeserializer(Class, QName, ExtensionDeserializer) + * @see #setDefaultDeserializer(ExtensionDeserializer) + */ + public ExtensionDeserializer queryDeserializer(Class parentType, + QName elementType) + throws WADLSException + { + + System.out.println("%%%% Inside Query Deserializer"); + Map innerDeserializerReg = (Map)deserializerReg.get(parentType); + System.out.println("%%%% inner DeserializerReg Size:"+innerDeserializerReg.size()); + ExtensionDeserializer ed = null; + + if (innerDeserializerReg != null) + { + System.out.println("%%%% Inner Deserializer not null"); + ed = (ExtensionDeserializer)innerDeserializerReg.get(elementType); + System.out.println("%%%% Ed string "+ed.toString()); + } + + if (ed == null) + { + ed = defaultDeser; + System.out.println("%%%% Default Deser String:"+defaultDeser.toString()); + } + + if (ed == null) + { + throw new WADLSException(WADLSException.CONFIGURATION_ERROR, + "No ExtensionDeserializer found " + + "to deserialize a '" + elementType + + "' element in the context of a '" + + parentType.getName() + "'."); + } + + return ed; + } + + /** + * Returns a set of QNames representing the extensibility elements + * that are allowed as children of the specified parent type. + * Basically, this method returns the keys associated with the set + * of extension deserializers registered for this parent type. + * Returns null if no extension deserializers are registered for + * this parent type. + */ + public Set getAllowableExtensions(Class parentType) + { + Map innerDeserializerReg = (Map)deserializerReg.get(parentType); + + return (innerDeserializerReg != null) + ? innerDeserializerReg.keySet() + : null; + } + + /** + * Declare that the specified extensionType is the concrete + * class which should be used to represent extensibility elements + * with qnames matching elementType, that are intended to exist as + * children of the specified parentType. + * + * @param parentType a class object indicating where in the WSDL + * definition this extension would exist. For example, + * javax.wsdls.Binding.class would be used to indicate + * this extensibility element would be added to the list of + * extensibility elements belonging to a javax.wsdls.Binding, + * after being instantiated. + * @param elementType the qname of the extensibility element + * @param extensionType the concrete class which should be instantiated + * + * @see #createExtension(Class, QName) + */ + public void mapExtensionTypes(Class parentType, + QName elementType, + Class extensionType) + { + Map innerExtensionTypeReg = (Map)extensionTypeReg.get(parentType); + + if (innerExtensionTypeReg == null) + { + innerExtensionTypeReg = new Hashtable(); + + extensionTypeReg.put(parentType, innerExtensionTypeReg); + } + + innerExtensionTypeReg.put(elementType, extensionType); + } + + /** + * Create an instance of the type which was declared to be used to + * represent extensibility elements with qnames matching elementType, + * when intended to exist as children of the specified parentType. + * This method allows a user to instantiate an extensibility element + * without having to know the implementing type. + * + * @param parentType a class object indicating where in the WSDL + * definition this extension will exist. For example, + * javax.wsdls.Binding.class would be used to indicate + * this extensibility element is going to be added to the list of + * extensibility elements belonging to a javax.wsdls.Binding, + * after being instantiated. + * @param elementType the qname of the extensibility element + * + * @return a new instance of the type used to represent the + * specified extension + * + * @see #mapExtensionTypes(Class, QName, Class) + */ + public ExtensibilityElement createExtension(Class parentType, + QName elementType) + throws WADLSException + { + Map innerExtensionTypeReg = (Map)extensionTypeReg.get(parentType); + Class extensionType = null; + + if (innerExtensionTypeReg != null) + { + extensionType = (Class)innerExtensionTypeReg.get(elementType); + } + + if (extensionType == null) + { + throw new WADLSException(WADLSException.CONFIGURATION_ERROR, + "No Java extensionType found " + + "to represent a '" + elementType + + "' element in the context of a '" + + parentType.getName() + "'."); + } + else if (!(ExtensibilityElement.class.isAssignableFrom(extensionType))) + { + throw new WADLSException(WADLSException.CONFIGURATION_ERROR, + "The Java extensionType '" + + extensionType.getName() + "' does " + + "not implement the ExtensibilityElement " + + "interface."); + } + + try + { + ExtensibilityElement ee = (ExtensibilityElement)extensionType.newInstance(); + + if (ee.getElementType() == null) + { + ee.setElementType(elementType); + } + + return ee; + } + catch (Exception e) + { + /* + Catches: + InstantiationException + IllegalAccessException + */ + throw new WADLSException(WADLSException.CONFIGURATION_ERROR, + "Problem instantiating Java " + + "extensionType '" + extensionType.getName() + + "'.", + e); + } + } + + /** + * Declare that the type of the specified extension attribute, when it occurs + * as an attribute of the specified parent type, should be assumed to be + * attrType. + * + * @param parentType a class object indicating where in the WSDL + * document this extensibility attribute was encountered. For + * example, javax.wsdls.Binding.class would be used to indicate + * this attribute was defined on a <wsdl:binding> element. + * @param attrName the qname of the extensibility attribute + * @param attrType one of the constants defined on the AttributeExtensible + * class + * + * @see #queryExtensionAttributeType(Class, QName) + * @see AttributeExtensible + */ + public void registerExtensionAttributeType(Class parentType, + QName attrName, + int attrType) + { + Map innerExtensionAttributeTypeReg = + (Map)extensionAttributeTypeReg.get(parentType); + + if (innerExtensionAttributeTypeReg == null) + { + innerExtensionAttributeTypeReg = new Hashtable(); + + extensionAttributeTypeReg.put(parentType, innerExtensionAttributeTypeReg); + } + + innerExtensionAttributeTypeReg.put(attrName, new Integer(attrType)); + } + + /** + * Look up the type of the extensibility attribute with the qname attrName, + * which was defined on an element represented by the specified parentType. + * + * @param parentType a class object indicating where in the WSDL + * document this extensibility attribute was encountered. For + * example, javax.wsdls.Binding.class would be used to indicate + * this attribute was defined on a <wsdl:binding> element. + * @param attrName the qname of the extensibility attribute + * + * @return one of the constants defined on the AttributeExtensible class + * + * @see #registerExtensionAttributeType(Class, QName, int) + * @see AttributeExtensible + */ + public int queryExtensionAttributeType(Class parentType, QName attrName) + { + Map innerExtensionAttributeTypeReg = + (Map)extensionAttributeTypeReg.get(parentType); + Integer attrType = null; + + if (innerExtensionAttributeTypeReg != null) + { + attrType = (Integer)innerExtensionAttributeTypeReg.get(attrName); + } + + if (attrType != null) + { + return attrType.intValue(); + } + else + { + return AttributeExtensible.NO_DECLARED_TYPE; + } + } +} \ No newline at end of file
Binary file WebServiceToolWorkflow/lib/SAWADLParser/src/javax/wadls/extensions/ExtensionSerializer.class has changed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/lib/SAWADLParser/src/javax/wadls/extensions/ExtensionSerializer.java Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,43 @@ +/* + * (c) Copyright IBM Corp 2001, 2005 + */ + +package javax.wadls.extensions; + +import java.io.*; + +import javax.wadls.*; +import javax.xml.namespace.*; + +/** + * This interface should be implemented by classes which serialize + * extension-specific instances of ExtensibilityElement into the + * PrintWriter. + * + * @author Matthew J. Duftler (duftler@us.ibm.com) + */ +public interface ExtensionSerializer +{ + /** + * This method serializes extension-specific instances of + * ExtensibilityElement into the PrintWriter. + * + * @param parentType a class object indicating where in the WSDL + * definition this extension was encountered. For + * example, javax.wsdls.Binding.class would be used to indicate + * this extensibility element was found in the list of + * extensibility elements belonging to a javax.wsdls.Binding. + * @param elementType the qname of the extensibility element + * @param extension the extensibility element to serialize + * @param def the definition this extensibility element was + * encountered in + * @param extReg the ExtensionRegistry to use (if needed again) + */ + public void marshall(Class parentType, + QName elementType, + ExtensibilityElement extension, + PrintWriter pw, + Application app, + ExtensionRegistry extReg) + throws WADLSException; +} \ No newline at end of file
Binary file WebServiceToolWorkflow/lib/SAWADLParser/src/javax/wadls/extensions/UnknownExtensibilityElement.class has changed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/lib/SAWADLParser/src/javax/wadls/extensions/UnknownExtensibilityElement.java Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,100 @@ +/* + * (c) Copyright IBM Corp 2001, 2005 + */ + +package javax.wadls.extensions; + +import org.w3c.dom.*; +import javax.xml.namespace.*; + +/** + * This class is used to wrap arbitrary elements. + * + * @see UnknownExtensionSerializer + * @see UnknownExtensionDeserializer + * + * @author Matthew J. Duftler (duftler@us.ibm.com) + */ +public class UnknownExtensibilityElement implements ExtensibilityElement, + java.io.Serializable +{ + protected QName elementType = null; + // Uses the wrapper type so we can tell if it was set or not. + protected Boolean required = null; + protected Element element = null; + + public static final long serialVersionUID = 1; + + /** + * Set the type of this extensibility element. + * + * @param elementType the type + */ + public void setElementType(QName elementType) + { + this.elementType = elementType; + } + + /** + * Get the type of this extensibility element. + * + * @return the extensibility element's type + */ + public QName getElementType() + { + return elementType; + } + + /** + * Set whether or not the semantics of this extension + * are required. Relates to the wsdl:required attribute. + */ + public void setRequired(Boolean required) + { + this.required = required; + } + + /** + * Get whether or not the semantics of this extension + * are required. Relates to the wsdl:required attribute. + */ + public Boolean getRequired() + { + return required; + } + + /** + * Set the Element for this extensibility element. + * + * @param element the unknown element that was encountered + */ + public void setElement(Element element) + { + this.element = element; + } + + /** + * Get the Element for this extensibility element. + * + * @return the unknown element that was encountered + */ + public Element getElement() + { + return element; + } + + public String toString() + { + StringBuffer strBuf = new StringBuffer(); + + strBuf.append("UnknownExtensibilityElement (" + elementType + "):"); + strBuf.append("\nrequired=" + required); + + if (element != null) + { + strBuf.append("\nelement=" + element); + } + + return strBuf.toString(); + } +} \ No newline at end of file
Binary file WebServiceToolWorkflow/lib/SAWADLParser/src/javax/wadls/extensions/UnknownExtensionDeserializer.class has changed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/lib/SAWADLParser/src/javax/wadls/extensions/UnknownExtensionDeserializer.java Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,55 @@ +/* + * (c) Copyright IBM Corp 2001, 2005 + */ + +package javax.wadls.extensions; + +import org.w3c.dom.*; + +import javax.wadls.*; +import javax.xml.namespace.*; + +import edu.uga.cs.lsdis.meteors.wadls.*; +import edu.uga.cs.lsdis.meteors.wadls.util.xml.*; + +/** + * This class is used to deserialize arbitrary elements into + * UnknownExtensibilityElement instances. + * + * @see UnknownExtensibilityElement + * @see UnknownExtensionSerializer + * + * @author Matthew J. Duftler (duftler@us.ibm.com) + */ +public class UnknownExtensionDeserializer implements ExtensionDeserializer, + java.io.Serializable +{ + public static final long serialVersionUID = 1; + + public ExtensibilityElement unmarshall(Class parentType, + QName elementType, + Element el, + Application app, + ExtensionRegistry extReg) + throws WADLSException + { + System.out.println("%%%% Inside UnMarshall for Element:"+el.getNodeName()); + UnknownExtensibilityElement unknownExt = new UnknownExtensibilityElement(); + String requiredStr = DOMUtils.getAttributeNS(el, + Constants.NS_URI_WADL, + Constants.ATTR_REQUIRED); + + System.out.println("%%%% Required Str:"+requiredStr); + System.out.println("%%%% Element Type To String:"+elementType.toString()); + unknownExt.setElementType(elementType); + + if (requiredStr != null) + { + unknownExt.setRequired(new Boolean(requiredStr)); + } + + unknownExt.setElement(el); + + return unknownExt; + } +} \ No newline at end of file
Binary file WebServiceToolWorkflow/lib/SAWADLParser/src/javax/wadls/extensions/UnknownExtensionSerializer.class has changed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/lib/SAWADLParser/src/javax/wadls/extensions/UnknownExtensionSerializer.java Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,45 @@ +/* + * (c) Copyright IBM Corp 2001, 2005 + */ + +package javax.wadls.extensions; + +import java.io.*; + +import javax.wadls.*; +import javax.xml.namespace.*; + +import edu.uga.cs.lsdis.meteors.wadls.util.xml.*; + +/** + * This class is used to serialize UnknownExtensibilityElement instances + * into the PrintWriter. + * + * @see UnknownExtensibilityElement + * @see UnknownExtensionDeserializer + * + * @author Matthew J. Duftler (duftler@us.ibm.com) + */ +public class UnknownExtensionSerializer implements ExtensionSerializer, + Serializable +{ + public static final long serialVersionUID = 1; + + public void marshall(Class parentType, + QName elementType, + ExtensibilityElement extension, + PrintWriter pw, + Application app, + ExtensionRegistry extReg) + throws WADLSException + { + UnknownExtensibilityElement unknownExt = + (UnknownExtensibilityElement)extension; + + pw.print(" "); + + DOM2Writer.serializeAsXML(unknownExt.getElement(), pw); + + pw.println(); + } +} \ No newline at end of file
Binary file WebServiceToolWorkflow/lib/SAWADLParser/src/javax/wadls/extensions/schema/Schema.class has changed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/lib/SAWADLParser/src/javax/wadls/extensions/schema/Schema.java Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,146 @@ +/* + * (c) Copyright IBM Corp 2004, 2005 + */ + +package javax.wadls.extensions.schema; + +import java.io.Serializable; +import java.util.List; +import java.util.Map; + +import javax.wadls.extensions.ExtensibilityElement; +import javax.xml.namespace.QName; + +import org.w3c.dom.Element; + +/** + * Represents a schema element. + * This is a lightweight schema wrapper that provides access to + * the schema DOM element, but does not parse the schema details. + * The implementor may provide alternative schema parsing if required. + * + * @author Jeremy Hughes + * + */ +public interface Schema extends Serializable +{ + /** + * Get a map of lists containing all the imports defined here. + * The map's keys are the namespaceURIs, and the map's values + * are lists. There is one list for each namespaceURI for which + * imports have been defined. + * + * @return a map of lists of schema imports + */ + + public void setElementType(QName elementType); + + /** + * Get the type of this extensibility element. + * + * @return the extensibility element's type + */ + public QName getElementType(); + + /** + * Set whether or not the semantics of this extension + * are required. Relates to the wsdl:required attribute. + */ + public void setRequired(Boolean required); + + /** + * Get whether or not the semantics of this extension + * are required. Relates to the wsdl:required attribute. + */ + public Boolean getRequired(); + public Map getImports(); + + /** + * Create a new schema import + * + * @return the newly created schema import + */ + public SchemaImport createImport(); + + /** + * Add an import to this LightWeightSchema + * + * @param importSchema the import to be added + */ + public void addImport(SchemaImport importSchema); + + /** + * Get a list containing all of the includes defined here. + * The list elements are schema references. + * + * @return a list of schema references. + */ + public List getIncludes(); + + /** + * Create a new schema reference to represent an include. + * + * @return the newly created SchemaReference + */ + public SchemaReference createInclude(); + + /** + * Add an include to this LightWeightSchema + * + * @param includeSchema The include to be added, represented as a SchemaReference + */ + public void addInclude(SchemaReference includeSchema); + + /** + * Get a list containing all of the redefines defined here. + * The list elements are schema references. + * + * @return a list of schema references. + */ + public List getRedefines(); + + /** + * Create a new schema reference to represent a redefine. + * + * @return the newly created SchemaReference + */ + public SchemaReference createRedefine(); + + /** + * Add a redefine to this LightWeightSchema + * + * @param redefineSchema The redefine to be added, represented as a SchemaReference + */ + public void addRedefine(SchemaReference redefineSchema); + + /** + * Set the DOM Element that represents this schema element. + * + * @param element the DOM element representing this schema + */ + public void setElement(Element element); + + /** + * Get the DOM Element that represents this schema element. + * + * @return the DOM element representing this schema + */ + public Element getElement(); + + /** + * Set the document base URI of this schema definition. Can be used to + * represent the origin of the schema, and can be exploited + * when resolving relative URIs (e.g. in <import>s). + * + * @param documentBaseURI the document base URI of this schema + */ + public void setDocumentBaseURI(String documentBaseURI); + + /** + * Get the document base URI of this schema + * + * @return the document base URI + */ + public String getDocumentBaseURI(); + +} \ No newline at end of file
Binary file WebServiceToolWorkflow/lib/SAWADLParser/src/javax/wadls/extensions/schema/SchemaImport.class has changed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/lib/SAWADLParser/src/javax/wadls/extensions/schema/SchemaImport.java Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,25 @@ +/* + * (c) Copyright IBM Corp 2004, 2005 + */ + +package javax.wadls.extensions.schema; + + +/** + * Represents an import element within a schema element. + * Similar to an include or redefine, but includes a namespace. + * + * @author Jeremy Hughes <hughesj@uk.ibm.com> + */ +public interface SchemaImport extends SchemaReference +{ + /** + * @return Returns the namespace. + */ + public abstract String getNamespaceURI(); + + /** + * @param namespace The namespace to set. + */ + public abstract void setNamespaceURI(String namespace); +} \ No newline at end of file
Binary file WebServiceToolWorkflow/lib/SAWADLParser/src/javax/wadls/extensions/schema/SchemaReference.class has changed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/lib/SAWADLParser/src/javax/wadls/extensions/schema/SchemaReference.java Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,60 @@ +/* + * (c) Copyright IBM Corp 2004, 2005 + */ + +package javax.wadls.extensions.schema; + + +import java.io.Serializable; + +import javax.wadls.extensions.schema.Schema; + +/** + * Represents an include or a redefine element within a schema element. + * + * @author Jeremy Hughes <hughesj@uk.ibm.com> + */ +public interface SchemaReference extends Serializable +{ + /** + * Gets the ID attribute of the referenced schema. + * + * @return the id string + */ + public abstract String getId(); + + /** + * Sets the ID attribute of the referenced schema. + * + * @param id The id string to set. + */ + public abstract void setId(String id); + + /** + * Gets the schemaLocation attribute of the referenced schema. + * + * @return the schemaLocation string. + */ + public abstract String getSchemaLocationURI(); + + /** + * Sets the schemaLocation attribute of the referenced schema. + * + * @param schemaLocation The schemaLocation string to set. + */ + public abstract void setSchemaLocationURI(String schemaLocation); + + /** + * Gets the referenced schema, represented as a LightWeightSchema. + * + * @return the referenced LightWeightSchema. + */ + public abstract Schema getReferencedSchema(); + + /** + * Sets the referenced schema to a LightWeightSchema. + * + * @param referencedSchema The LightWeightSchema to set. + */ + public abstract void setReferencedSchema(Schema referencedSchema); +} \ No newline at end of file
Binary file WebServiceToolWorkflow/lib/SAWADLParser/src/javax/wadls/factory/WADLFactory.class has changed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/lib/SAWADLParser/src/javax/wadls/factory/WADLFactory.java Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,183 @@ +/* + * (c) Copyright IBM Corp 2001, 2005 + */ + +package javax.wadls.factory; + +import java.io.*; +import java.util.*; + +import javax.wadls.*; +import javax.wadls.xml.*; + +/** + * This abstract class defines a factory API that enables applications + * to obtain a WSDLFactory capable of producing new Definitions, new + * WSDLReaders, and new WSDLWriters. + * + * Some ideas used here have been shamelessly copied from the + * wonderful JAXP and Xerces work. + * + * @author Matthew J. Duftler (duftler@us.ibm.com) + */ +public abstract class WADLFactory +{ + private static final String PROPERTY_NAME = + "javax.wadls.factory.WADLFactory"; + private static final String PROPERTY_FILE_NAME = + "wadl.properties"; + private static final String DEFAULT_FACTORY_IMPL_NAME = + "edu.uga.cs.lsdis.meteors.wadls.factory.WADLFactoryImpl"; + + private static String fullPropertyFileName = null; + + /** + * Get a new instance of a WSDLFactory. This method + * follows (almost) the same basic sequence of steps that JAXP + * follows to determine the fully-qualified class name of the + * class which implements WSDLFactory. The steps (in order) + * are: + *<pre> + * Check the javax.wsdls.factory.WSDLFactory system property. + * Check the lib/wsdl.properties file in the JRE directory. The key + * will have the same name as the above system property. + * Use the default value. + *</pre> + * Once an instance of a WSDLFactory is obtained, invoke + * newDefinition(), newWSDLReader(), or newWSDLWriter(), to create + * the desired instances. + */ + public static WADLFactory newInstance() throws WADLSException + { + String factoryImplName = findFactoryImplName(); + + return newInstance(factoryImplName); + } + + /** + * Get a new instance of a WSDLFactory. This method + * returns an instance of the class factoryImplName. + * Once an instance of a WSDLFactory is obtained, invoke + * newDefinition(), newWSDLReader(), or newWSDLWriter(), to create + * the desired instances. + * + * @param factoryImplName the fully-qualified class name of the + * class which provides a concrete implementation of the abstract + * class WSDLFactory. + */ + public static WADLFactory newInstance(String factoryImplName) + throws WADLSException + { + if (factoryImplName != null) + { + try + { + Class cl = Class.forName(factoryImplName); + + return (WADLFactory)cl.newInstance(); + } + catch (Exception e) + { + /* + Catches: + ClassNotFoundException + InstantiationException + IllegalAccessException + */ + throw new WADLSException(WADLSException.CONFIGURATION_ERROR, + "Problem instantiating factory " + + "implementation.", + e); + } + } + else + { + throw new WADLSException(WADLSException.CONFIGURATION_ERROR, + "Unable to find name of factory " + + "implementation."); + } + } + + /** + * Create a new instance of a Definition. + */ + public abstract Application newApplication(); + + /** + * Create a new instance of a WSDLReader. + */ + public abstract WADLReader newWADLReader(); + + /** + * Create a new instance of a WSDLWriter. + */ + public abstract WADLWriter newWADLWriter(); + + + private static String findFactoryImplName() + { + String factoryImplName = null; + + // First, check the system property. + try + { + factoryImplName = System.getProperty(PROPERTY_NAME); + + if (factoryImplName != null) + { + return factoryImplName; + } + } + catch (SecurityException e) + { + } + + // Second, check the properties file. + String propFileName = getFullPropertyFileName(); + + if (propFileName != null) + { + try + { + Properties properties = new Properties(); + File propFile = new File(propFileName); + FileInputStream fis = new FileInputStream(propFile); + + properties.load(fis); + fis.close(); + + factoryImplName = properties.getProperty(PROPERTY_NAME); + + if (factoryImplName != null) + { + return factoryImplName; + } + } + catch (IOException e) + { + } + } + + // Third, return the default. + return DEFAULT_FACTORY_IMPL_NAME; + } + + private static String getFullPropertyFileName() + { + if (fullPropertyFileName == null) + { + try + { + String javaHome = System.getProperty("java.home"); + + fullPropertyFileName = javaHome + File.separator + "lib" + + File.separator + PROPERTY_FILE_NAME; + } + catch (SecurityException e) + { + } + } + + return fullPropertyFileName; + } +} \ No newline at end of file
Binary file WebServiceToolWorkflow/lib/SAWADLParser/src/javax/wadls/xml/WADLLocator.class has changed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/lib/SAWADLParser/src/javax/wadls/xml/WADLLocator.java Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,56 @@ +/* + * (c) Copyright IBM Corp 2002, 2005 + */ + +package javax.wadls.xml; + +import org.xml.sax.*; + +/** + * This interface can act as an additional layer of indirection between + * a WSDLReader and the actual location of WSDL documents. One + * use could be to retrieve WSDL documents from JAR files, while still + * retaining the ability to resolve imported documents using relative + * URIs. + * + * @author Owen Burroughs (owenb@uk.ibm.com) + * + * @see WSDLReader#readWSDL(WSDLLocator) + */ +public interface WADLLocator +{ + /** + * Returns an InputSource "pointed at" the base document. + * + * @return the InputSource object or null if the base document could + * not be found + */ + public InputSource getBaseInputSource(); + + /** + * Returns an InputSource "pointed at" an imported wsdl document. + * + * @param parentLocation a URI specifying the location of the + * document doing the importing. This can be null if the import location + * is not relative to the parent location. + * @param importLocation a URI specifying the location of the + * document to import. This might be relative to the parent document's + * location. + * @return the InputSource object or null if the import cannot be found. + */ + public InputSource getImportInputSource(String parentLocation, + String importLocation); + + /** + * Returns a URI representing the location of the base document. + */ + public String getBaseURI(); + + /** + * Returns a URI representing the location of the last import document + * to be resolved. This is used in resolving nested imports where an + * import location is relative to the parent document. + */ + public String getLatestImportURI(); +} +
Binary file WebServiceToolWorkflow/lib/SAWADLParser/src/javax/wadls/xml/WADLReader.class has changed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/lib/SAWADLParser/src/javax/wadls/xml/WADLReader.java Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,178 @@ +/* + * (c) Copyright IBM Corp 2001, 2005 + */ + +package javax.wadls.xml; + +import java.io.InputStream; +import java.net.URISyntaxException; + +import org.w3c.dom.*; +import org.xml.sax.*; + +import javax.wadls.*; +import javax.wadls.extensions.*; +import javax.wadls.extensions.ExtensionRegistry; + +/** + * This interface describes a collection of methods + * that enable conversion of a WSDL document (in XML, + * following the WSDL schema described in the WSDL + * specification) into a WSDL model. + * + * @author Matthew J. Duftler + */ +public interface WADLReader +{ + /** + * Sets the specified feature to the specified value. + * <p> + * The minimum features that must be supported are: + * <p> + * <table border=1> + * <tr> + * <th>Name</th> + * <th>Description</th> + * <th>Default Value</th> + * </tr> + * <tr> + * <td><center>javax.wsdls.verbose</center></td> + * <td>If set to true, status messages will be displayed.</td> + * <td><center>true</center></td> + * </tr> + * <tr> + * <td><center>javax.wsdls.importDocuments</center></td> + * <td>If set to true, imported WSDL documents will be + * retrieved and processed.</td> + * <td><center>true</center></td> + * </tr> + * </table> + * <p> + * All feature names must be fully-qualified, Java package style. All + * names starting with javax.wsdls. are reserved for features defined + * by the JWSDL specification. It is recommended that implementation- + * specific features be fully-qualified to match the package name + * of that implementation. For example: com.abc.featureName + * + * @param name the name of the feature to be set. + * @param value the value to set the feature to. + * @throws IllegalArgumentException if the feature name is not recognized. + * @see #getFeature(String) + */ + + public void setFeature(String name, boolean value) + throws IllegalArgumentException; + + /** + * Gets the value of the specified feature. + * + * @param name the name of the feature to get the value of. + * @throws IllegalArgumentException if the feature name is not recognized. + * @see #setFeature(String, boolean) + */ + public boolean getFeature(String name) throws IllegalArgumentException; + + + + /** + * Set a different factory implementation to use for + * creating definitions when reading WSDL documents. + * As some WSDLReader implementations may only be + * capable of creating definitions using the same + * factory implementation from which the reader was + * obtained, this method is optional. Default is null. + * + * @param factoryImplName the fully-qualified class name of the + * class which provides a concrete implementation of the abstract + * class WSDLFactory. + * @throws UnsupportedOperationException if this method + * is invoked on an implementation which does not + * support it. + */ + public void setFactoryImplName(String factoryImplName) + throws UnsupportedOperationException; + + /** + * Get the factoryImplName, if one was set. Default is null. + */ + public String getFactoryImplName(); + + public Application readWADL(InputStream wadlIS) throws WADLSException; + + /** + * Read the WSDL document accessible via the specified + * URI into a WSDL definition. + * + * @param wsdlURI a URI (can be a filename or URL) pointing to a + * WSDL XML definition. + * @return the definition. + */ + public Application readWADL(String wadlURI) throws WADLSException; + + /** + * Read the WSDL document accessible via the specified + * URI into a WSDL definition. + * + * @param contextURI the context in which to resolve the + * wsdlURI, if the wsdlURI is relative. Can be null, in which + * case it will be ignored. + * @param wsdlURI a URI (can be a filename or URL) pointing to a + * WSDL XML definition. + * @return the definition. + */ + public Application readWADL(String contextURI, String wadlURI) + throws WADLSException; + + /** + * Read the specified <wsdl:definitions> element into a WSDL + * definition. + * + * @param documentBaseURI the document base URI of the WSDL definition + * described by the element. Will be set as the documentBaseURI + * of the returned Definition. Can be null, in which case it + * will be ignored. + * @param definitionsElement the <wsdl:definitions> element + * @return the definition described by the element. + */ + public Application readWADL(String documentBaseURI, + Element definitionsElement) + throws WADLSException, URISyntaxException; + + /** + * Read the specified WSDL document into a WSDL definition. + * + * @param documentBaseURI the document base URI of the WSDL definition + * described by the document. Will be set as the documentBaseURI + * of the returned Definition. Can be null, in which case it + * will be ignored. + * @param wsdlDocument the WSDL document, an XML + * document obeying the WSDL schema. + * @return the definition described in the document. + */ + public Application readWADL(String documentBaseURI, Document wadlDocument) + throws WADLSException, URISyntaxException; + + /** + * Read a WSDL document into a WSDL definition. + * + * @param documentBaseURI the document base URI of the WSDL definition + * described by the document. Will be set as the documentBaseURI + * of the returned Definition. Can be null, in which case it + * will be ignored. + * @param inputSource an InputSource pointing to the + * WSDL document, an XML document obeying the WSDL schema. + * @return the definition described in the document pointed to + * by the InputSource. + */ + public Application readWADL(String documentBaseURI, InputSource inputSource) + throws WADLSException, URISyntaxException; + + /** + * Read a WSDL document into a WSDL definition. + * + * @param locator A WSDLLocator object used to provide InputSources + * pointing to the wsdl file. + * @return the definition described in the document + */ + public Application readWADL(WADLLocator locator) throws WADLSException, URISyntaxException; +} \ No newline at end of file
Binary file WebServiceToolWorkflow/lib/SAWADLParser/src/javax/wadls/xml/WADLWriter.class has changed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/lib/SAWADLParser/src/javax/wadls/xml/WADLWriter.java Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,73 @@ +/* + * (c) Copyright IBM Corp 2001, 2005 + */ + +package javax.wadls.xml; + +import java.io.*; +import java.net.URISyntaxException; + +import org.w3c.dom.*; + +import javax.wadls.*; + +/** + * This interface describes a collection of methods + * that allow a WSDL model to be written to a writer + * in an XML format that follows the WSDL schema. + * + * @author Matthew J. Duftler + */ +public interface WADLWriter +{ + /** + * Sets the specified feature to the specified value. + * <p> + * There are no minimum features that must be supported. + * <p> + * All feature names must be fully-qualified, Java package style. All + * names starting with javax.wsdls. are reserved for features defined + * by the JWSDL specification. It is recommended that implementation- + * specific features be fully-qualified to match the package name + * of that implementation. For example: com.abc.featureName + * + * @param name the name of the feature to be set. + * @param value the value to set the feature to. + * @throws IllegalArgumentException if the feature name is not recognized. + * @see #getFeature(String) + */ + public void setFeature(String name, boolean value) + throws IllegalArgumentException; + + /** + * Gets the value of the specified feature. + * + * @param name the name of the feature to get the value of. + * @throws IllegalArgumentException if the feature name is not recognized. + * @see #setFeature(String, boolean) + */ + public boolean getFeature(String name) throws IllegalArgumentException; + + /** + * Return a document generated from the specified WSDL model. + */ + public Document getDocument(Application wadlApp) throws WADLSException, URISyntaxException; + + /** + * Write the specified WSDL definition to the specified Writer. + * + * @param wsdlDef the WSDL definition to be written. + * @param sink the Writer to write the xml to. + */ + public void writeWADL(Application wadlApp, Writer sink) + throws WADLSException, URISyntaxException; + + /** + * Write the specified WSDL definition to the specified OutputStream. + * + * @param wsdlDef the WSDL definition to be written. + * @param sink the OutputStream to write the xml to. + */ + public void writeWADL(Application wadlApp, OutputStream sink) + throws WADLSException, URISyntaxException; +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/lib/SAWADLParser/src/javax/xml/namespace/QName.java Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,415 @@ +//$Id: QName.java,v 1.10 2004/02/09 23:41:21 jsuttor Exp $ + +/* + * Copyright 2004 Sun Microsystems, Inc. All rights reserved. + * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. + */ + +package javax.xml.namespace; + +import java.io.Serializable; + +import javax.xml.XMLConstants; + +/** + * <p><code>QName</code> represents a <strong>qualified name</strong> + * as defined in the XML specifications: <a + * href="http://www.w3.org/TR/xmlschema-2/#QName">XML Schema Part2: + * Datatypes specification</a>, <a + * href="http://www.w3.org/TR/REC-xml-names/#ns-qualnames">Namespaces + * in XML</a>, <a + * href="http://www.w3.org/XML/xml-names-19990114-errata">Namespaces + * in XML Errata</a>.</p> + * + * <p>The value of a <code>QName</code> contains a <strong>Namespace + * URI</strong>, <strong>local part</strong> and + * <strong>prefix</strong>.</p> + * + * <p>The prefix is included in <code>QName</code> to retain lexical + * information <strong><em>when present</em></strong> in an {@link + * javax.xml.transform.Source XML input source}. The prefix is + * <strong><em>NOT</em></strong> used in {@link #equals(Object) + * QName.equals(Object)} or to compute the {@link #hashCode() + * QName.hashCode()}. Equality and the hash code are defined using + * <strong><em>only</em></strong> the Namespace URI and local part.</p> + * + * <p>If not specified, the Namespace URI is set to {@link + * javax.xml.XMLConstants#NULL_NS_URI XMLConstants.NULL_NS_URI}. + * If not specified, the prefix is set to {@link + * javax.xml.XMLConstants#DEFAULT_NS_PREFIX + * XMLConstants.DEFAULT_NS_PREFIX}.</p> + * + * <p><code>QName</code> is immutable.</p> + * + * @author <a href="mailto:Jeff.Suttor@Sun.com">Jeff Suttor</a> + * @version $Revision: 1.10 $, $Date: 2004/02/09 23:41:21 $ + * @see <a href="http://www.w3.org/TR/xmlschema-2/#QName">XML Schema Part2: Datatypes specification</a> + * @see <a href="http://www.w3.org/TR/REC-xml-names/#ns-qualnames">Namespaces in XML</a> + * @see <a href="http://www.w3.org/XML/xml-names-19990114-errata">Namespaces in XML Errata</a> + * @since 1.5 + */ + +public class QName implements Serializable { + + /** + * <p>Stream Unique Identifier.</p> + */ + private static final long serialVersionUID = 4418622981026545151L; + + /** + * <p>Namespace URI of this <code>QName</code>.</p> + */ + private final String namespaceURI; + + /** + * <p>local part of this <code>QName</code>.</p> + */ + private final String localPart; + + /** + * <p>prefix of this <code>QName</code>.</p> + */ + private final String prefix; + + /** + * <p><code>QName</code> constructor specifying the Namespace URI + * and local part.</p> + * + * <p>If the Namespace URI is <code>null</code>, it is set to + * {@link javax.xml.XMLConstants#NULL_NS_URI + * XMLConstants.NULL_NS_URI}. This value represents no + * explicitly defined Namespace as defined by the <a + * href="http://www.w3.org/TR/REC-xml-names/#ns-qualnames">Namespaces + * in XML</a> specification. This action preserves compatible + * behavior with QName 1.0. Explicitly providing the {@link + * javax.xml.XMLConstants#NULL_NS_URI + * XMLConstants.NULL_NS_URI} value is the preferred coding + * style.</p> + * + * <p>If the local part is <code>null</code> an + * <code>IllegalArgumentException</code> is thrown. + * A local part of "" is allowed to preserve + * compatible behavior with QName 1.0. </p> + * + * <p>When using this constructor, the prefix is set to {@link + * javax.xml.XMLConstants#DEFAULT_NS_PREFIX + * XMLConstants.DEFAULT_NS_PREFIX}.</p> + * + * <p>The Namespace URI is not validated as a + * <a href="http://www.ietf.org/rfc/rfc2396.txt">URI reference</a>. + * The local part is not validated as a + * <a href="http://www.w3.org/TR/REC-xml-names/#NT-NCName">NCName</a> + * as specified in <a href="http://www.w3.org/TR/REC-xml-names/">Namespaces + * in XML</a>.</p> + * + * @param namespaceURI Namespace URI of the <code>QName</code> + * @param localPart local part of the <code>QName</code> + * + * @see #QName(String namespaceURI, String localPart, String + * prefix) QName(String namespaceURI, String localPart, String + * prefix) + */ + public QName(final String namespaceURI, final String localPart) { + this(namespaceURI, localPart, XMLConstants.DEFAULT_NS_PREFIX); + } + + /** + * <p><code>QName</code> constructor specifying the Namespace URI, + * local part and prefix.</p> + * + * <p>If the Namespace URI is <code>null</code>, it is set to + * {@link javax.xml.XMLConstants#NULL_NS_URI + * XMLConstants.NULL_NS_URI}. This value represents no + * explicitly defined Namespace as defined by the <a + * href="http://www.w3.org/TR/REC-xml-names/#ns-qualnames">Namespaces + * in XML</a> specification. This action preserves compatible + * behavior with QName 1.0. Explicitly providing the {@link + * javax.xml.XMLConstants#NULL_NS_URI + * XMLConstants.NULL_NS_URI} value is the preferred coding + * style.</p> + * + * <p>If the local part is <code>null</code> an + * <code>IllegalArgumentException</code> is thrown. + * A local part of "" is allowed to preserve + * compatible behavior with QName 1.0. </p> + * + * <p>If the prefix is <code>null</code>, an + * <code>IllegalArgumentException</code> is thrown. Use {@link + * javax.xml.XMLConstants#DEFAULT_NS_PREFIX + * XMLConstants.DEFAULT_NS_PREFIX} to explicitly indicate that no + * prefix is present or the prefix is not relevant.</p> + * + * <p>The Namespace URI is not validated as a + * <a href="http://www.ietf.org/rfc/rfc2396.txt">URI reference</a>. + * The local part and prefix are not validated as a + * <a href="http://www.w3.org/TR/REC-xml-names/#NT-NCName">NCName</a> + * as specified in <a href="http://www.w3.org/TR/REC-xml-names/">Namespaces + * in XML</a>.</p> + * + * @param namespaceURI Namespace URI of the <code>QName<code> + * @param localPart local part of the <code>QName<code> + * @param prefix prefix of the <code>QName<code> + */ + public QName(String namespaceURI, String localPart, String prefix) { + + // map null Namespace URI to default to preserve compatibility with QName 1.0 + if (namespaceURI == null) { + this.namespaceURI = XMLConstants.NULL_NS_URI; + } else { + this.namespaceURI = namespaceURI; + } + + // local part is required. "" is allowed to preserve compatibility with QName 1.0 + if (localPart == null) { + throw new IllegalArgumentException("local part cannot be \"null\" when creating a QName"); + } + this.localPart = localPart; + + // prefix is required + if (prefix == null) { + throw new IllegalArgumentException("prefix cannot be \"null\" when creating a QName"); + } + this.prefix = prefix; + } + + /** + * <p><code>QName</code> constructor specifying the local part.</p> + * + * <p>If the local part is <code>null</code> an + * <code>IllegalArgumentException</code> is thrown. + * A local part of "" is allowed to preserve + * compatible behavior with QName 1.0. </p> + * + * <p>When using this constructor, the Namespace URI is set to + * {@link javax.xml.XMLConstants#NULL_NS_URI + * XMLConstants.NULL_NS_URI} and the prefix is set to {@link + * javax.xml.XMLConstants#DEFAULT_NS_PREFIX + * XMLConstants.DEFAULT_NS_PREFIX}.</p> + * + * <p><em>In an XML context, all Element and Attribute names exist + * in the context of a Namespace. Making this explicit during the + * construction of a <code>QName</code> helps prevent hard to + * diagnosis XML validity errors. The constructors {@link + * #QName(String namespaceURI, String localPart) QName(String + * namespaceURI, String localPart)} and + * {@link #QName(String namespaceURI, String localPart, String prefix)} + * are preferred.</em></p> + * + * <p>The local part is not validated as a + * <a href="http://www.w3.org/TR/REC-xml-names/#NT-NCName">NCName</a> + * as specified in <a href="http://www.w3.org/TR/REC-xml-names/">Namespaces + * in XML</a>.</p> + * + * @param localPart local part of the <code>QName</code> + * @see #QName(String namespaceURI, String localPart) QName(String + * namespaceURI, String localPart) + * @see #QName(String namespaceURI, String localPart, String + * prefix) QName(String namespaceURI, String localPart, String + * prefix) + */ + public QName(String localPart) { + this( + XMLConstants.NULL_NS_URI, + localPart, + XMLConstants.DEFAULT_NS_PREFIX); + } + + /** + * <p>Get the Namespace URI of this <code>QName</code>.</p> + * + * @return Namespace URI of this <code>QName</code> + */ + public String getNamespaceURI() { + return namespaceURI; + } + + /** + * <p>Get the local part of this <code>QName</code>.</p> + * + * @return local part of this <code>QName</code> + */ + public String getLocalPart() { + return localPart; + } + + /** + * <p>Get the prefix of this <code>QName</code>.</p> + * + * <p>The prefix assigned to a <code>QName</code> might + * <strong><em>NOT</em></strong> be valid in a different + * context. For example, a <code>QName</code> may be assigned a + * prefix in the context of parsing a document but that prefix may + * be invalid in the context of a different document.</p> + * + * @return prefix of this <code>QName</code> + */ + public String getPrefix() { + return prefix; + } + + /** + * <p>Test this <code>QName</code> for equality with another + * <code>Object</code>.</p> + * + * <p>If the <code>Object</code> to be tested is not a + * <code>QName</code> or is <code>null</code>, then this method + * returns <code>false</code>.</p> + * + * <p>Two <code>QName</code>s are considered equal if and only if + * both the Namespace URI and local part are equal. This method + * uses <code>String.equals()</code> to check equality of the + * Namespace URI and local part. The prefix is + * <strong><em>NOT</em></strong> used to determine equality.</p> + * + * <p>This method satisfies the general contract of {@link + * java.lang.Object#equals(Object) Object.equals(Object)}</p> + * + * @param objectToTest the <code>Object</code> to test for + * equality with this <code>QName</code> + * @return <code>true</code> if the given <code>Object</code> is + * equal to this <code>QName</code> else <code>false</code> + */ + public final boolean equals(Object objectToTest) { + if (objectToTest == null || !(objectToTest instanceof QName)) { + return false; + } + + QName qName = (QName) objectToTest; + + return namespaceURI.equals(qName.namespaceURI) + && localPart.equals(qName.localPart); + } + + /** + * <p>Generate the hash code for this <code>QName</code>.</p> + * + * <p>The hash code is calculated using both the Namespace URI and + * the local part of the <code>QName</code>. The prefix is + * <strong><em>NOT</em></strong> used to calculate the hash + * code.</p> + * + * <p>This method satisfies the general contract of {@link + * java.lang.Object#hashCode() Object.hashCode()}.</p> + * + * @return hash code for this <code>QName</code> <code>Object</code> + */ + public final int hashCode() { + return namespaceURI.hashCode() ^ localPart.hashCode(); + } + + /** + * <p><code>String</code> representation of this + * <code>QName</code>.</p> + * + * <p>The commonly accepted way of representing a <code>QName</code> + * as a <code>String</code> was <a href="http://jclark.com/xml/xmlns.htm">defined</a> + * by James Clark. Although this is not a <em>standard</em> + * specification, it is in common use, e.g. {@link javax.xml.transform.Transformer#setParameter(String name, Object value)}. + * This implementation represents a <code>QName</code> as: + * "{" + Namespace URI + "}" + local part. If the Namespace URI + * <code>.equals(XMLConstants.NULL_NS_URI)</code>, only the + * local part is returned. An appropriate use of this method is + * for debugging or logging for human consumption.</p> + * + * <p>Note the prefix value is <strong><em>NOT</em></strong> + * returned as part of the <code>String</code> representation.</p> + * + * <p>This method satisfies the general contract of {@link + * java.lang.Object#toString() Object.toString()}.</p> + * + * @return <code>String</code> representation of this <code>QName</code> + */ + public String toString() { + if (namespaceURI.equals(XMLConstants.NULL_NS_URI)) { + return localPart; + } else { + return "{" + namespaceURI + "}" + localPart; + } + } + + /** + * <p><code>QName</code> derived from parsing the formatted + * <code>String</code>.</p> + * + * <p>If the <code>String</code> is <code>null</code> or does not conform to + * {@link #toString() QName.toString()} formatting, an + * <code>IllegalArgumentException</code> is thrown.</p> + * + * <p><em>The <code>String</code> <strong>MUST</strong> be in the + * form returned by {@link #toString() QName.toString()}.</em></p> + + * <p>The commonly accepted way of representing a <code>QName</code> + * as a <code>String</code> was <a href="http://jclark.com/xml/xmlns.htm">defined</a> + * by James Clark. Although this is not a <em>standard</em> + * specification, it is in common use, e.g. {@link javax.xml.transform.Transformer#setParameter(String name, Object value)}. + * This implementation parses a <code>String</code> formatted + * as: "{" + Namespace URI + "}" + local part. If the Namespace + * URI <code>.equals(XMLConstants.NULL_NS_URI)</code>, only the + * local part should be provided.</p> + * + * <p>The prefix value <strong><em>CANNOT</em></strong> be + * represented in the <code>String</code> and will be set to + * {@link javax.xml.XMLConstants#DEFAULT_NS_PREFIX + * XMLConstants.DEFAULT_NS_PREFIX}.</p> + * + * <p>This method does not do full validation of the resulting + * <code>QName</code>. + * <p>The Namespace URI is not validated as a + * <a href="http://www.ietf.org/rfc/rfc2396.txt">URI reference</a>. + * The local part is not validated as a + * <a href="http://www.w3.org/TR/REC-xml-names/#NT-NCName">NCName</a> + * as specified in + * <a href="http://www.w3.org/TR/REC-xml-names/">Namespaces in XML</a>.</p> + * + * @param qNameAsString <code>String</code> representation + * of the <code>QName</code> + * @return <code>QName</code> corresponding to the given <code>String</code> + * @see #toString() QName.toString() + */ + public static QName valueOf(String qNameAsString) { + + // null is not valid + if (qNameAsString == null) { + throw new IllegalArgumentException("cannot create QName from \"null\" or \"\" String"); + } + + // "" local part is valid to preserve compatible behavior with QName 1.0 + if (qNameAsString.length() == 0) { + return new QName( + XMLConstants.NULL_NS_URI, + qNameAsString, + XMLConstants.DEFAULT_NS_PREFIX); + } + + // local part only? + if (qNameAsString.charAt(0) != '{') { + return new QName( + XMLConstants.NULL_NS_URI, + qNameAsString, + XMLConstants.DEFAULT_NS_PREFIX); + } + + // Namespace URI improperly specified? + if (qNameAsString.startsWith("{" + XMLConstants.NULL_NS_URI + "}")) { + throw new IllegalArgumentException( + "Namespace URI .equals(XMLConstants.NULL_NS_URI), " + + ".equals(\"" + XMLConstants.NULL_NS_URI + "\"), " + + "only the local part, " + + "\"" + qNameAsString.substring(2 + XMLConstants.NULL_NS_URI.length()) + "\", " + + "should be provided."); + } + + // Namespace URI and local part specified + int endOfNamespaceURI = qNameAsString.indexOf('}'); + if (endOfNamespaceURI == -1) { + throw new IllegalArgumentException( + "cannot create QName from \"" + + qNameAsString + + "\", missing closing \"}\""); + } + return new QName( + qNameAsString.substring(1, endOfNamespaceURI), + qNameAsString.substring(endOfNamespaceURI + 1), + XMLConstants.DEFAULT_NS_PREFIX); + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/refreshTool.py Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,12 @@ + +import os.path +import sys + +outputfile=open(sys.argv[2],'w') +outputfile.seek(0,0) +outputfile.write('\n Tool added...For independent use, find the tool under Web Service Tools on the left side window, \n and for use in workflows find the tool under Web Service Workflow Tools. \n If the tool is not visible click on "Galaxy" on the top left corner of this window to refresh the page.') + + + + +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/refreshTool.py~ Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,13 @@ + +import os.path +import sys + +outputfile=open(sys.argv[2],'w') +outputfile.seek(0,0) +outputfile.write('\n Tool added...For independent use, find the tool under Web Service Tools on the left side window, \n and for use in workflows find the tool under Web Service Workflow Tools. \n If the tool is not visible click on "Galaxy" on the + top left corner of this window to refresh the page.') + + + + +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/refreshTool.xml Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,34 @@ +<tool id="REFRESH_ID" name="Step 3: Add tool to Galaxy" version="1.0.0"> +<description> Adds tool to Galaxy and refreshes toolbox.</description> +<command interpreter="python"> + refreshTool.py + $input + $output +</command> + <inputs> + <param name="input" type="select" display="radio" size="250" label="Execute step 3 by clicking on Execute button"> + <option value="refresh">Refresh Galaxy</option> + </param> + + </inputs> + <outputs> + <data format="tabular" name="output" /> + </outputs> + <tests> + </tests> + <help> +**To use the newly added tool go to Tools on the left side of this screen.** + +**If you want to use the tool once use the tool under Web service tool.** + +**If you want to use the tool in a workflow use the tool under Web Service Workflow tool.** + +**If the tool is not visible click on "Galaxy" on the top left corner of this window to refresh the page.** + + +NOTE: Step 3 merely refreshes Galaxy to recognize the newly added tool. After this step, your tool will be registered at two places. Choose the tool depending on the usage. + + + </help> +</tool> +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/refreshTool.xml~ Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,34 @@ +<tool id="REFRESH_ID" name="Step 3: Add tool to Galaxy" version="1.0.0"> +<description> Adds tool to Galaxy and refreshes toolbox.</description> +<command interpreter="python"> + refreshTool.py + $input + $output +</command> + <inputs> + <param name="input" type="select" display="radio" size="250" label="Execute step 3 by clicking on Execute button"> + <option value="refresh">Refresh Galaxy</option> + </param> + + </inputs> + <outputs> + <data format="tabular" name="output" /> + </outputs> + <tests> + </tests> + <help> +**To use the newly added tool go to Tools on the left side of this screen.** + +**If you want to use the tool once use the tool under Web service tool.** + +**If you want to use the tool in a workflow use the tool under Web Service Workflow tool.** + +**If the tool is not visible click on "Galaxy" on the top left corner of this window to refresh the page.** + + +NOTE: Step 3 merely refreshes Galaxy to recognize the newly added tool. After this step, your tool will be registered at two places. Choose the tool depending on the usage. + + + </help> +</tool> +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/refreshTool1.xml~ Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,18 @@ +<tool id="REFRESH_ID1" name="Step 3" Version="1.0.0"> +<description> :Delete tool from Galaxy</description> +<command interpreter="python"> + +</command> + <inputs> + <param name="input" type="text" size="250" label="enter email"/> + </inputs> + <outputs> + <data format="tabular" name="output" /> + </outputs> + <tests> + </tests> + <help> +Go to step 3 + </help> +</tool> +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/refreshTool2.xml~ Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,18 @@ +<tool id="REFRESH_ID_DEL" name="Step 2" Version="1.0.0"> +<description> :Deletes tool from Galaxy</description> +<command interpreter="python"> + +</command> + <inputs> + <param name="input" type="text" size="250" label="enter email"/> + </inputs> + <outputs> + <data format="tabular" name="output" /> + </outputs> + <tests> + </tests> + <help> +Go to step 3 + </help> +</tool> +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/suite_config.xml Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,17 @@ +<suite id="WebService_toolsuite" name="Suite of Web service addition tools" version="1.0.0"> + <description>This suite contains all the tools required to register Web services to Galaxy + </description> + <tool id="WebServiceTool_input_url" name="Step 1: Enter information about tool" version="1.0.0"> + <description> This tool takes the URL of an external Web service. The URL should point to the description document of a Web service. + </description> + </tool> + <tool id="WebServiceTool_input_method" name="Step 2: Verify Settings" version="1.0.0"> + <description> This tool lets the user choose a method and a resource from the Web service description document, as each method has to be registered with Galaxy individually. + </description> + </tool> + <tool id="REFRESH_ID" name="Step 3: Add tool to Galaxy" version="1.0.0"> + <description> Adds tool to Galaxy and refreshes toolbox. + </description> + </tool> +</suite> +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/suite_config.xml~ Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,17 @@ +<suite id="WebService_toolsuite" name="Suite of Web service addition tools" version="1.0.0"> + <description>This suite contains all the tools required to register Web services to Galaxy + </description> + <tool id="WebServiceTool_input_url" name="Step 1: Enter information about tool" version="1.0.0"> + <description> This tool takes the URL of an external Web service. The URL should point to the description document of a Web service. + </description> + </tool> + <tool id="WebServiceTool_input_method" name="Step 2: Verify Settings" version="1.0.0"> + <description> This tool lets the user choose a method and a resource from the Web service description document, as each method has to be registered with Galaxy individually. + </description> + </tool> + <tool id="REFRESH_ID" name="Step 3: Add tool to Galaxy" version="1.0.0"> + <description> Adds tool to Galaxy and refreshes toolbox. + </description> + </tool> +</suite> +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/workflowclients/ClientCount.xml Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,2 @@ +<count> +0</count>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/workflowclients/ClientCount.xml~ Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,2 @@ +<count> +5</count>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/workflowclients/client_1.py Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,38 @@ +import os +import sys +import urllib +'''This script is the client for invoking RESTful Web services.''' + +outputFile = open(sys.argv[1],'w') +resUrl = sys.argv[2] + +if(resUrl.find('__tilda__')>-1): + ulist = resUrl.split('__tilda__') + resUrl = '~'.join(ulist) + +paramdict={} +length=(len(sys.argv)) + +i=3 +while( i>=3 and i<(length-1)): + key=sys.argv[i] + val=sys.argv[i+1] + if val=='fileInput': + print '##########fileInput found#############' + f=open(sys.argv[i+2]) + line = f.readline().strip('\n') + line = line.strip(' ') + val = line + i=i+1 + + while(val.find('**')>-1): + vlist = val.split('**') + val = ' '.join(vlist) + print key + '\t' + val + paramdict[key]=val + i=i+2 + +params = urllib.urlencode(paramdict) +data = urllib.urlopen(resUrl, params).read() +outputFile.write(data) +outputFile.close()
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/workflowclients/client_1.py~ Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,38 @@ +import os +import sys +import urllib +'''This script is the client for invoking RESTful Web services.''' + +outputFile = open(sys.argv[1],'w') +resUrl = sys.argv[2] + +if(resUrl.find('__tilda__')>-1): + ulist = resUrl.split('__tilda__') + resUrl = '~'.join(ulist) + +paramdict={} +length=(len(sys.argv)) + +i=3 +while( i>=3 and i<(length-1)): + key=sys.argv[i] + val=sys.argv[i+1] + if val=='fileInput': + print '##########fileInput found#############' + f=open(sys.argv[i+2]) + line = f.readline().strip('\n') + line = line.strip(' ') + val=line + i=i+1 + + while(val.find('**')>-1): + vlist = val.split('**') + val = ' '.join(vlist) + print key + '\t' + val + paramdict[key]=val + i=i+2 + +params = urllib.urlencode(paramdict) +data = urllib.urlopen(resUrl, params).read() +outputFile.write(data) +outputFile.close()
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/workflowclients/client_1.xml~ Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,60 @@ +<tool id="client_1" name="genesbymolecularweight"> + <description> Client for method: genesbymolecularweight , Web service: http://eupathdb.org/webservices/GeneQuestions/GenesByMolecularWeight.wadl </description> + <command interpreter="python"> + client_1.py + $output + http://eupathdb.org/webservices/GeneQuestions/GenesByMolecularWeight.xml + organism + $param0 + min_molecular_weight + $param1 + max_molecular_weight + $param2 +</command> + <inputs> +<param name="param0" type="select" label="organism" help="see tip below"> + <option value="Entamoeba**dispar" >Entamoeba dispar</option> + <option value="Entamoeba**histolytica" >Entamoeba histolytica</option> + <option value="Entamoeba**invadens" >Entamoeba invadens</option> + <option value="Cryptosporidium**parvum" >Cryptosporidium parvum</option> + <option value="Cryptosporidium**hominis" >Cryptosporidium hominis</option> + <option value="Cryptosporidium**muris" >Cryptosporidium muris</option> + <option value="Giardia**Assemblage**A**isolate**WB" >Giardia Assemblage A isolate WB</option> + <option value="Giardia**Assemblage**B**isolate**GS" >Giardia Assemblage B isolate GS</option> + <option value="Giardia**Assemblage**E**isolate**P15" >Giardia Assemblage E isolate P15</option> + <option value="Encephalitozoon**cuniculi" >Encephalitozoon cuniculi</option> + <option value="Encephalitozoon**intestinalis" >Encephalitozoon intestinalis</option> + <option value="Plasmodium**falciparum" >Plasmodium falciparum</option> + <option value="Plasmodium**vivax" >Plasmodium vivax</option> + <option value="Plasmodium**yoelii" >Plasmodium yoelii</option> + <option value="Plasmodium**berghei" >Plasmodium berghei</option> + <option value="Plasmodium**chabaudi" >Plasmodium chabaudi</option> + <option value="Plasmodium**knowlesi" >Plasmodium knowlesi</option> + <option value="Toxoplasma**gondii" >Toxoplasma gondii</option> + <option value="Neospora**caninum" >Neospora caninum</option> + <option value="Trichomonas**vaginalis" >Trichomonas vaginalis</option> + <option value="Trypanosoma**cruzi" >Trypanosoma cruzi</option> + <option value="Leishmania**braziliensis" >Leishmania braziliensis</option> + <option value="Leishmania**infantum" >Leishmania infantum</option> + <option value="Leishmania**major" >Leishmania major</option> + <option value="Leishmania**mexicana" >Leishmania mexicana</option> + <option value="Trypanosoma**brucei" >Trypanosoma brucei</option> + <option value="Trypanosoma**congolense" >Trypanosoma congolense</option> + <option value="Trypanosoma**vivax" >Trypanosoma vivax</option> + </param> +<param format="text" size = "150" name = "param1" type="text" label="min_molecular_weight" help="see tip below" /> +<param format="text" size = "150" name = "param2" type="text" label="max_molecular_weight" help="see tip below" /> +</inputs> + <outputs> + <data format="tabular" name="output" /> + </outputs> + <help> +.. class:: infomark + +**TIP:** organism type is xsd:string + +**TIP:** min_molecular_weight type is xsd:string + +**TIP:** max_molecular_weight type is xsd:string + </help> +</tool>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/workflowclients/client_10.xml~ Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,50 @@ +<tool id="client_10" name="poll "> + <description> Client for method: poll , Web service: http://om.cs.uga.edu/demo/clustalW2.wadl </description> + <command interpreter="python"> + #client_1.py + $output + http://www.ebi.ac.uk/Tools/services/restwublast/result + jobId +#if $source0.source0_source=="user" $source0.user_param0 #else $source0.cached_param0 #end if + resultType +#if $source1.source1_source=="user" $source1.user_param1 #else $source1.cached_param1 #end if +#if $cond_source.optional_param_source=="yes"#else +#end if +</command> + <inputs> +<conditional name="source0"> + <param name="source0_source" type="select" label="jobId Source"> + <option value="cached" selected="true">Param value will be taken from previous step</option> + <option value="user">User will enter the param value</option> + </param> + <when value="user"> + <param format="text" size = "150" name = "user_param0" type="text" label="Enter sequenceIDs" help="see tip below" /> + </when> + <when value="cached"> + <param name = "cached_param0" type="data" label="Choose the step from which to get the sequence IDs"/> + </when></conditional><conditional name="source1"> + <param name="source1_source" type="select" label="resultType Source"> + <option value="cached" selected="true">Param value will be taken from previous step</option> + <option value="user">User will enter the param value</option> + </param> + <when value="user"> + <param format="text" size = "150" name = "user_param1" type="text" label="Enter database name" help="see tip below" /> + </when> + <when value="cached"> + <param name = "cached_param1" type="data" label="Choose the step from which to get the database name"/> + </when></conditional> +</inputs> + <outputs> + <data format="tabular" name="output" /> + </outputs> + <help> + +.. class:: infomark + +**TIP:** jobId type is xsd:string + +.. class:: infomark + +**TIP:** resultType type is xsd:string + </help> +</tool>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/workflowclients/client_2.xml~ Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,239 @@ +<tool id="client_2" name="genesbymolecularweight "> + <description> Client for method: genesbymolecularweight , Web service: http://eupathdb.org/webservices/GeneQuestions/GenesByMolecularWeight.wadl </description> + <command interpreter="python"> + client_1.py + #if $cond_source.optional_param_source=="no": + $output + http://eupathdb.org/webservices/GeneQuestions/GenesByMolecularWeight.xml + organism + #if $source0.source0_source=="user": + $source0.user_param0 + #else: + $source0.cached_param0 + #end if + min_molecular_weight + #if $source1.source1_source=="user": + $source1.user_param1 + #else: + $source1.cached_param1 + #end if + max_molecular_weight + #if $source2.source2_source=="user": + $source2.user_param2 + #else: + $source2.cached_param2 + #end if + #else: + organism + #if $source0.source0_source=="user": + $source0.user_param0 + #else: + $source0.cached_param0 + #end if + min_molecular_weight + #if $source1.source1_source=="user": + $source1.user_param1 + #else: + $source1.cached_param1 + #end if + max_molecular_weight + #if $source2.source2_source=="user": + $source2.user_param2 + #else: + $source2.cached_param2 + #end if + o-fields + #if $cond_source.source3.source3_source=="user": + $cond_source.source3.user_param3 + #else: + $cond_source.source3.cached_param3 + #end if + o-tables + #if $cond_source.source4.source4_source=="user": + $cond_source.source4.user_param4 + #else: + $cond_source.source4.cached_param4 + #end if + #end if +</command> + <inputs> +<conditional name="source0"> + <param name="source0_source" type="select" label="Organism Source"> + <option value="cached" selected="true">Param value will be taken from previous step</option> + <option value="user">User will enter the param value</option> + </param> + <when value="user"> + <param name="user_param0" type="select" label="Select Organism" help="see tip below"> + <option value="Entamoeba**dispar" >Entamoeba dispar</option> + <option value="Entamoeba**histolytica" >Entamoeba histolytica</option> + <option value="Entamoeba**invadens" >Entamoeba invadens</option> + <option value="Cryptosporidium**parvum" >Cryptosporidium parvum</option> + <option value="Cryptosporidium**hominis" >Cryptosporidium hominis</option> + <option value="Cryptosporidium**muris" >Cryptosporidium muris</option> + <option value="Giardia**Assemblage**A**isolate**WB" >Giardia Assemblage A isolate WB</option> + <option value="Giardia**Assemblage**B**isolate**GS" >Giardia Assemblage B isolate GS</option> + <option value="Giardia**Assemblage**E**isolate**P15" >Giardia Assemblage E isolate P15</option> + <option value="Encephalitozoon**cuniculi" >Encephalitozoon cuniculi</option> + <option value="Encephalitozoon**intestinalis" >Encephalitozoon intestinalis</option> + <option value="Plasmodium**falciparum" >Plasmodium falciparum</option> + <option value="Plasmodium**vivax" >Plasmodium vivax</option> + <option value="Plasmodium**yoelii" >Plasmodium yoelii</option> + <option value="Plasmodium**berghei" >Plasmodium berghei</option> + <option value="Plasmodium**chabaudi" >Plasmodium chabaudi</option> + <option value="Plasmodium**knowlesi" >Plasmodium knowlesi</option> + <option value="Toxoplasma**gondii" >Toxoplasma gondii</option> + <option value="Neospora**caninum" >Neospora caninum</option> + <option value="Trichomonas**vaginalis" >Trichomonas vaginalis</option> + <option value="Trypanosoma**cruzi" >Trypanosoma cruzi</option> + <option value="Leishmania**braziliensis" >Leishmania braziliensis</option> + <option value="Leishmania**infantum" >Leishmania infantum</option> + <option value="Leishmania**major" >Leishmania major</option> + <option value="Leishmania**mexicana" >Leishmania mexicana</option> + <option value="Trypanosoma**brucei" >Trypanosoma brucei</option> + <option value="Trypanosoma**congolense" >Trypanosoma congolense</option> + <option value="Trypanosoma**vivax" >Trypanosoma vivax</option> + </param> + </when> + <when value="cached"> + <param name = "cached_param0" type="data" label="Choose the step from which to get the parameter Organism"/> + </when></conditional><conditional name="source1"> + <param name="source1_source" type="select" label="Min Molecular Weight (Daltons) Source"> + <option value="cached" selected="true">Param value will be taken from previous step</option> + <option value="user">User will enter the param value</option> + </param> + <when value="user"> + <param format="text" size = "150" name = "user_param1" type="text" label="Enter Min Molecular Weight (Daltons)" help="see tip below" /> + </when> + <when value="cached"> + <param name = "cached_param1" type="data" label="Choose the step from which to get the parameter Min Molecular Weight (Daltons)"/> + </when></conditional><conditional name="source2"> + <param name="source2_source" type="select" label="Max Molecular Weight (Daltons) Source"> + <option value="cached" selected="true">Param value will be taken from previous step</option> + <option value="user">User will enter the param value</option> + </param> + <when value="user"> + <param format="text" size = "150" name = "user_param2" type="text" label="Enter Max Molecular Weight (Daltons)" help="see tip below" /> + </when> + <when value="cached"> + <param name = "cached_param2" type="data" label="Choose the step from which to get the parameter Max Molecular Weight (Daltons)"/> + </when></conditional> <conditional name="cond_source"> + <param name="optional_param_source" type="select" label="Display Additional Parameters"> + <option value="no" selected="true">no</option> + <option value="yes">yes</option> + </param> + <when value="no"> + </when> + <when value="yes"> + +<conditional name="source3"> + <param name="source3_source" type="select" label="Output Fields Source"> + <option value="cached" selected="true">Param value will be taken from previous step</option> + <option value="user">User will enter the param value</option> +</param> + <when value="user"><param name="user_param3" type="select" label="Select Output Fields" help="see tip below"> + <option value="all" >all</option> + <option value="none" selected="true">none</option> + <option value="primary_key" >primary_key</option> + <option value="formatted_gene_id" >formatted_gene_id</option> + <option value="external_db_name" >external_db_name</option> + <option value="sequence_id" >sequence_id</option> + <option value="chromosome" >chromosome</option> + <option value="location_text" >location_text</option> + <option value="strand" >strand</option> + <option value="gene_type" >gene_type</option> + <option value="exon_count" >exon_count</option> + <option value="transcript_length" >transcript_length</option> + <option value="cds_length" >cds_length</option> + <option value="product" >product</option> + <option value="protein_length" >protein_length</option> + <option value="tm_count" >tm_count</option> + <option value="molecular_weight" >molecular_weight</option> + <option value="isoelectric_point" >isoelectric_point</option> + <option value="ec_numbers_string" >ec_numbers_string</option> + <option value="ortholog_number" >ortholog_number</option> + <option value="paralog_number" >paralog_number</option> + <option value="orthomcl_name" >orthomcl_name</option> + <option value="signalp_scores" >signalp_scores</option> + <option value="signalp_peptide" >signalp_peptide</option> + <option value="ann_go_function" >ann_go_function</option> + <option value="ann_go_process" >ann_go_process</option> + <option value="ann_go_component" >ann_go_component</option> + <option value="pred_go_function" >pred_go_function</option> + <option value="pred_go_process" >pred_go_process</option> + <option value="pred_go_component" >pred_go_component</option> + <option value="organism" >organism</option> + <option value="protein_sequence" >protein_sequence</option> + <option value="transcript_sequence" >transcript_sequence</option> + <option value="cds" >cds</option> + <option value="wdk_weight" >wdk_weight</option> + </param> + </when> +<when value="cached"> + <param name = "cached_param3" type="data" label="Choose the step from which to get the parameter Output Fields"/> + </when></conditional> + +<conditional name="source4"> + <param name="source4_source" type="select" label="Output Tables Source"> + <option value="cached" selected="true">Param value will be taken from previous step</option> + <option value="user">User will enter the param value</option> +</param> + <when value="user"><param name="user_param4" type="select" label="Select Output Tables" help="see tip below"> + <option value="all" >all</option> + <option value="none" selected="true">none</option> + <option value="SNPs" >SNPs</option> + <option value="GeneModelDump" >GeneModelDump</option> + <option value="InterPro" >InterPro</option> + <option value="TMHMM" >TMHMM</option> + <option value="LowComplexity" >LowComplexity</option> + <option value="SignalP" >SignalP</option> + <option value="BlastP" >BlastP</option> + <option value="Genbank" >Genbank</option> + <option value="SageTags" >SageTags</option> + <option value="Notes" >Notes</option> + <option value="UserComments" >UserComments</option> + <option value="CommunityExpComments" >CommunityExpComments</option> + <option value="EcNumber" >EcNumber</option> + <option value="MassSpec" >MassSpec</option> + <option value="GoTerms" >GoTerms</option> + <option value="Aliases" >Aliases</option> + <option value="Phenotype" >Phenotype</option> + <option value="Y2hInteractions" >Y2hInteractions</option> + <option value="Orthologs" >Orthologs</option> + <option value="MetabolicPathways" >MetabolicPathways</option> + <option value="TaskComments" >TaskComments</option> + <option value="ArrayElements" >ArrayElements</option> + <option value="TwoChannelDiffExpr" >TwoChannelDiffExpr</option> + <option value="ProteinExpression" >ProteinExpression</option> + <option value="Mr4Reagents" >Mr4Reagents</option> + <option value="ProteinDatabase" >ProteinDatabase</option> + <option value="GeneLinkouts" >GeneLinkouts</option> + <option value="3dPreds" >3dPreds</option> + <option value="PdbSimilarities" >PdbSimilarities</option> + <option value="Epitopes" >Epitopes</option> + <option value="IsolateOverlap" >IsolateOverlap</option> + </param> + </when> +<when value="cached"> + <param name = "cached_param4" type="data" label="Choose the step from which to get the parameter Output Tables"/> + </when></conditional> + </when> + </conditional> +</inputs> + <outputs> + <data format="tabular" name="output" /> + </outputs> + <help> + +.. class:: infomark + +**TIP:** Organism type is xsd:string + +.. class:: infomark + +**TIP:** Min Molecular Weight (Daltons) type is xsd:string + +.. class:: infomark + +**TIP:** Max Molecular Weight (Daltons) type is xsd:string + </help> +</tool>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/workflowclients/client_4.xml~ Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,250 @@ +<tool id="client_4" name="genesbymolecularweight "> + <description> Client for method: genesbymolecularweight , Web service: http://eupathdb.org/webservices/GeneQuestions/GenesByMolecularWeight.wadl </description> + <command interpreter="python"> + client_1.py + #if $cond_source.optional_param_source=="no": + $output + http://eupathdb.org/webservices/GeneQuestions/GenesByMolecularWeight.xml + organism + #if $source0.source0_source=="user": + $source0.user_param0 + #else: + fileInput + $source0.cached_param0 + #end if + min_molecular_weight + #if $source1.source1_source=="user": + $source1.user_param1 + #else: + fileInput + $source1.cached_param1 + #end if + max_molecular_weight + #if $source2.source2_source=="user": + $source2.user_param2 + #else: + fileInput + $source2.cached_param2 + #end if + #else: + $output + http://eupathdb.org/webservices/GeneQuestions/GenesByMolecularWeight.xml + organism + #if $source0.source0_source=="user": + $source0.user_param0 + #else: + fileInput + $source0.cached_param0 + #end if + min_molecular_weight + #if $source1.source1_source=="user": + $source1.user_param1 + #else: + fileInput + $source1.cached_param1 + #end if + max_molecular_weight + #if $source2.source2_source=="user": + $source2.user_param2 + #else: + fileInput + $source2.cached_param2 + #end if + o-fields + #if $source3.source3_source=="user": + $source3.user_param3 + #else: + fileInput + $source3.cached_param3 + #end if + o-tables + #if $source4.source4_source=="user": + $source4.user_param4 + #else: + fileInput + $source4.cached_param4 + #end if + #end if +</command> + <inputs> +<conditional name="source0"> + <param name="source0_source" type="select" label="Organism Source"> + <option value="cached" selected="true">Param value will be taken from previous step</option> + <option value="user">User will enter the param value</option> + </param> + <when value="user"> + <param name="user_param0" type="select" label="Select Organism" help="see tip below"> + <option value="Entamoeba**dispar" >Entamoeba dispar</option> + <option value="Entamoeba**histolytica" >Entamoeba histolytica</option> + <option value="Entamoeba**invadens" >Entamoeba invadens</option> + <option value="Cryptosporidium**parvum" >Cryptosporidium parvum</option> + <option value="Cryptosporidium**hominis" >Cryptosporidium hominis</option> + <option value="Cryptosporidium**muris" >Cryptosporidium muris</option> + <option value="Giardia**Assemblage**A**isolate**WB" >Giardia Assemblage A isolate WB</option> + <option value="Giardia**Assemblage**B**isolate**GS" >Giardia Assemblage B isolate GS</option> + <option value="Giardia**Assemblage**E**isolate**P15" >Giardia Assemblage E isolate P15</option> + <option value="Encephalitozoon**cuniculi" >Encephalitozoon cuniculi</option> + <option value="Encephalitozoon**intestinalis" >Encephalitozoon intestinalis</option> + <option value="Enterocytozoon**bieneusi" >Enterocytozoon bieneusi</option> + <option value="Plasmodium**falciparum" >Plasmodium falciparum</option> + <option value="Plasmodium**vivax" >Plasmodium vivax</option> + <option value="Plasmodium**yoelii" >Plasmodium yoelii</option> + <option value="Plasmodium**berghei" >Plasmodium berghei</option> + <option value="Plasmodium**chabaudi" >Plasmodium chabaudi</option> + <option value="Plasmodium**knowlesi" >Plasmodium knowlesi</option> + <option value="Toxoplasma**gondii" >Toxoplasma gondii</option> + <option value="Neospora**caninum" >Neospora caninum</option> + <option value="Trichomonas**vaginalis" >Trichomonas vaginalis</option> + <option value="Trypanosoma**cruzi" >Trypanosoma cruzi</option> + <option value="Leishmania**braziliensis" >Leishmania braziliensis</option> + <option value="Leishmania**infantum" >Leishmania infantum</option> + <option value="Leishmania**major" >Leishmania major</option> + <option value="Leishmania**mexicana" >Leishmania mexicana</option> + <option value="Trypanosoma**brucei" >Trypanosoma brucei</option> + <option value="Trypanosoma**congolense" >Trypanosoma congolense</option> + <option value="Trypanosoma**vivax" >Trypanosoma vivax</option> + </param> + </when> + <when value="cached"> + <param name = "cached_param0" type="data" label="Choose the step from which to get the parameter Organism"/> + </when></conditional><conditional name="source1"> + <param name="source1_source" type="select" label="Min Molecular Weight (Daltons) Source"> + <option value="cached" selected="true">Param value will be taken from previous step</option> + <option value="user">User will enter the param value</option> + </param> + <when value="user"> + <param format="text" size = "150" name = "user_param1" value="10000" type="text" label="Enter Min Molecular Weight (Daltons)" help="see tip below" /> + </when> + <when value="cached"> + <param name = "cached_param1" type="data" label="Choose the step from which to get the parameter Min Molecular Weight (Daltons)"/> + </when></conditional><conditional name="source2"> + <param name="source2_source" type="select" label="Max Molecular Weight (Daltons) Source"> + <option value="cached" selected="true">Param value will be taken from previous step</option> + <option value="user">User will enter the param value</option> + </param> + <when value="user"> + <param format="text" size = "150" name = "user_param2" value="50000" type="text" label="Enter Max Molecular Weight (Daltons)" help="see tip below" /> + </when> + <when value="cached"> + <param name = "cached_param2" type="data" label="Choose the step from which to get the parameter Max Molecular Weight (Daltons)"/> + </when></conditional> <conditional name="cond_source"> + <param name="optional_param_source" type="select" label="Display Additional Parameters"> + <option value="no" selected="true">no</option> + <option value="yes">yes</option> + </param> + <when value="no"> + </when> + <when value="yes"> + +<conditional name="source3"> + <param name="source3_source" type="select" label="Output Fields Source"> + <option value="cached" selected="true">Param value will be taken from previous step</option> + <option value="user">User will enter the param value</option> +</param> + <when value="user"><param name="user_param3" type="select" label="Select Output Fields" help="see tip below"> + <option value="all" >all</option> + <option value="none" selected="true">none</option> + <option value="primary_key" >primary_key</option> + <option value="formatted_gene_id" >formatted_gene_id</option> + <option value="external_db_name" >external_db_name</option> + <option value="sequence_id" >sequence_id</option> + <option value="chromosome" >chromosome</option> + <option value="location_text" >location_text</option> + <option value="strand" >strand</option> + <option value="gene_type" >gene_type</option> + <option value="exon_count" >exon_count</option> + <option value="transcript_length" >transcript_length</option> + <option value="cds_length" >cds_length</option> + <option value="product" >product</option> + <option value="protein_length" >protein_length</option> + <option value="tm_count" >tm_count</option> + <option value="molecular_weight" >molecular_weight</option> + <option value="isoelectric_point" >isoelectric_point</option> + <option value="ec_numbers_string" >ec_numbers_string</option> + <option value="ortholog_number" >ortholog_number</option> + <option value="paralog_number" >paralog_number</option> + <option value="orthomcl_name" >orthomcl_name</option> + <option value="signalp_scores" >signalp_scores</option> + <option value="signalp_peptide" >signalp_peptide</option> + <option value="ann_go_function" >ann_go_function</option> + <option value="ann_go_process" >ann_go_process</option> + <option value="ann_go_component" >ann_go_component</option> + <option value="pred_go_function" >pred_go_function</option> + <option value="pred_go_process" >pred_go_process</option> + <option value="pred_go_component" >pred_go_component</option> + <option value="organism" >organism</option> + <option value="protein_sequence" >protein_sequence</option> + <option value="transcript_sequence" >transcript_sequence</option> + <option value="cds" >cds</option> + <option value="wdk_weight" >wdk_weight</option> + </param> + </when> +<when value="cached"> + <param name = "cached_param3" type="data" label="Choose the step from which to get the parameter Output Fields"/> + </when></conditional> + +<conditional name="source4"> + <param name="source4_source" type="select" label="Output Tables Source"> + <option value="cached" selected="true">Param value will be taken from previous step</option> + <option value="user">User will enter the param value</option> +</param> + <when value="user"><param name="user_param4" type="select" label="Select Output Tables" help="see tip below"> + <option value="all" >all</option> + <option value="none" selected="true">none</option> + <option value="SNPs" >SNPs</option> + <option value="GeneModelDump" >GeneModelDump</option> + <option value="InterPro" >InterPro</option> + <option value="TMHMM" >TMHMM</option> + <option value="LowComplexity" >LowComplexity</option> + <option value="SignalP" >SignalP</option> + <option value="BlastP" >BlastP</option> + <option value="Genbank" >Genbank</option> + <option value="SageTags" >SageTags</option> + <option value="Notes" >Notes</option> + <option value="UserComments" >UserComments</option> + <option value="CommunityExpComments" >CommunityExpComments</option> + <option value="EcNumber" >EcNumber</option> + <option value="GoTerms" >GoTerms</option> + <option value="Aliases" >Aliases</option> + <option value="Phenotype" >Phenotype</option> + <option value="Y2hInteractions" >Y2hInteractions</option> + <option value="Orthologs" >Orthologs</option> + <option value="MetabolicPathways" >MetabolicPathways</option> + <option value="TaskComments" >TaskComments</option> + <option value="ArrayElements" >ArrayElements</option> + <option value="TwoChannelDiffExpr" >TwoChannelDiffExpr</option> + <option value="ProteinExpression" >ProteinExpression</option> + <option value="Mr4Reagents" >Mr4Reagents</option> + <option value="ProteinDatabase" >ProteinDatabase</option> + <option value="GeneLinkouts" >GeneLinkouts</option> + <option value="3dPreds" >3dPreds</option> + <option value="PdbSimilarities" >PdbSimilarities</option> + <option value="Epitopes" >Epitopes</option> + <option value="IsolateOverlap" >IsolateOverlap</option> + </param> + </when> +<when value="cached"> + <param name = "cached_param4" type="data" label="Choose the step from which to get the parameter Output Tables"/> + </when></conditional> + </when> + </conditional> +</inputs> + <outputs> + <data format="tabular" name="output" /> + </outputs> + <help> +Replace white space with ** in all parameter values + +.. class:: infomark + +**TIP:** Organism type is xsd:string + +.. class:: infomark + +**TIP:** Min Molecular Weight (Daltons) type is xsd:string + +.. class:: infomark + +**TIP:** Max Molecular Weight (Daltons) type is xsd:string + </help> +</tool> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/workflowclients/client_5.xml~ Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,115 @@ +<tool id="client_5" name="getDDBJEntry "> + <description> Client for method: getDDBJEntry , Web service: http://cs.uga.edu/~ganjoo/galaxy/DDBJGetEntry.wadl </description> + <command interpreter="python"> + client_1.py + #if $cond_source.optional_param_source=="no": + $output + http://www.xml.nig.ac.jp/rest/Invoke + service + #if $source0.source0_source=="user": + $source0.user_param0 + #else: + $source0.cached_param0 + #end if + method + #if $source1.source1_source=="user": + $source1.user_param1 + #else: + $source1.cached_param1 + #end if + accession + #if $source2.source2_source=="user": + $source2.user_param2 + #else: + $source2.cached_param2 + #end if + #else: + $output + http://www.xml.nig.ac.jp/rest/Invoke + service + #if $source0.source0_source=="user": + $source0.user_param0 + #else: + $source0.cached_param0 + #end if + method + #if $source1.source1_source=="user": + $source1.user_param1 + #else: + $source1.cached_param1 + #end if + accession + #if $source2.source2_source=="user": + $source2.user_param2 + #else: + fileInput + $source2.cached_param2 + #end if + #end if +</command> + <inputs> +<conditional name="source0"> + <param name="source0_source" type="select" label="Service to be invoked Source"> + <option value="cached" selected="true">Param value will be taken from previous step</option> + <option value="user">User will enter the param value</option> + </param> + <when value="user"> + <param name="user_param0" type="select" label="Select Service to be invoked " help="see tip below"> + <option value="GetEntry" >GetEntry</option> + </param> + </when> + <when value="cached"> + <param name = "cached_param0" type="data" label="Choose the step from which to get the parameter Service to be invoked "/> + </when></conditional><conditional name="source1"> + <param name="source1_source" type="select" label="Method to be used Source"> + <option value="cached" selected="true">Param value will be taken from previous step</option> + <option value="user">User will enter the param value</option> + </param> + <when value="user"> + <param name="user_param1" type="select" label="Select Method to be used" help="see tip below"> + <option value="getDDBJEntry" selected="true">getDDBJEntry</option> + </param> + </when> + <when value="cached"> + <param name = "cached_param1" type="data" label="Choose the step from which to get the parameter Method to be used"/> + </when></conditional><conditional name="source2"> + <param name="source2_source" type="select" label="DDBJ accession number Source"> + <option value="cached" selected="true">Param value will be taken from previous step</option> + <option value="user">User will enter the param value</option> + </param> + <when value="user"> + <param format="text" size = "150" name = "user_param2" type="text" label="Enter DDBJ accession number" help="see tip below" /> + </when> + <when value="cached"> + <param name = "cached_param2" type="data" format="tabular" label="Choose the step from which to get the parameter DDBJ accession number"/> + </when></conditional> + + <conditional name="cond_source"> + <param name="optional_param_source" type="select" label="Display Additional Parameters"> + <option value="no" selected="true">no</option> + <option value="yes">yes</option> + </param> + <when value="no"> + </when> + <when value="yes"> + </when> + </conditional> +</inputs> + <outputs> + <data format="tabular" name="output" /> + </outputs> + <help> + +.. class:: infomark + +**TIP:** Service to be invoked type is xsd:string + +.. class:: infomark + +**TIP:** Method to be used type is xsd:string + +.. class:: infomark + +**TIP:** DDBJ accession number type is xsd:string + </help> +</tool>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/workflowclients/client_7.xml~ Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,483 @@ +<tool id="client_7" name="runclustalW2 "> + <description> Client for method: runclustalW2 , Web service: http://om.cs.uga.edu/demo/clusatlW2.wadl </description> + <command interpreter="python"> + #client_1.py + $output + http://www.ebi.ac.uk/Tools/services/restclustalw2/run + email +#if $source0.source0_source=="user" $source0.user_param0 #else $source0.cached_param0 #end if +#if $cond_source.optional_param_source=="yes" type +#if $cond_source.source1.source1_source=="user" $cond_source.source1.user_param1 #else $cond_source.source1.cached_param1 #end if + title +#if $cond_source.source2.source2_source=="user" $cond_source.source2.user_param2 #else $cond_source.source2.cached_param2 #end if + output +#if $cond_source.source3.source3_source=="user" $cond_source.source3.user_param3 #else $cond_source.source3.cached_param3 #end if + alignments +#if $cond_source.source4.source4_source=="user" $cond_source.source4.user_param4 #else $cond_source.source4.cached_param4 #end if + outorder +#if $cond_source.source5.source5_source=="user" $cond_source.source5.user_param5 #else $cond_source.source5.cached_param5 #end if + sequence +#if $cond_source.source6.source6_source=="user" $cond_source.source6.user_param6 #else $cond_source.source6.cached_param6 #end if + ktup +#if $cond_source.source7.source7_source=="user" $cond_source.source7.user_param7 #else $cond_source.source7.cached_param7 #end if + window +#if $cond_source.source8.source8_source=="user" $cond_source.source8.user_param8 #else $cond_source.source8.cached_param8 #end if + score +#if $cond_source.source9.source9_source=="user" $cond_source.source9.user_param9 #else $cond_source.source9.cached_param9 #end if + topdiag +#if $cond_source.source10.source10_source=="user" $cond_source.source10.user_param10 #else $cond_source.source10.cached_param10 #end if + pairgap +#if $cond_source.source11.source11_source=="user" $cond_source.source11.user_param11 #else $cond_source.source11.cached_param11 #end if + pwmatrix +#if $cond_source.source12.source12_source=="user" $cond_source.source12.user_param12 #else $cond_source.source12.cached_param12 #end if + pwdnamatrix +#if $cond_source.source13.source13_source=="user" $cond_source.source13.user_param13 #else $cond_source.source13.cached_param13 #end if + pwgapopen +#if $cond_source.source14.source14_source=="user" $cond_source.source14.user_param14 #else $cond_source.source14.cached_param14 #end if + pwgapext +#if $cond_source.source15.source15_source=="user" $cond_source.source15.user_param15 #else $cond_source.source15.cached_param15 #end if + matrix +#if $cond_source.source16.source16_source=="user" $cond_source.source16.user_param16 #else $cond_source.source16.cached_param16 #end if + dnamatrix +#if $cond_source.source17.source17_source=="user" $cond_source.source17.user_param17 #else $cond_source.source17.cached_param17 #end if + gapopen +#if $cond_source.source18.source18_source=="user" $cond_source.source18.user_param18 #else $cond_source.source18.cached_param18 #end if + noendgaps +#if $cond_source.source19.source19_source=="user" $cond_source.source19.user_param19 #else $cond_source.source19.cached_param19 #end if + gapext +#if $cond_source.source20.source20_source=="user" $cond_source.source20.user_param20 #else $cond_source.source20.cached_param20 #end if + gapext +#if $cond_source.source21.source21_source=="user" $cond_source.source21.user_param21 #else $cond_source.source21.cached_param21 #end if + iteration +#if $cond_source.source22.source22_source=="user" $cond_source.source22.user_param22 #else $cond_source.source22.cached_param22 #end if + numiter +#if $cond_source.source23.source23_source=="user" $cond_source.source23.user_param23 #else $cond_source.source23.cached_param23 #end if +#else +#end if +</command> + <inputs> +<conditional name="source0"> + <param name="source0_source" type="select" label="id Source"> + <option value="cached" selected="true">Param value will be taken from previous step</option> + <option value="user">User will enter the param value</option> + </param> + <when value="user"> + <param format="text" size = "150" name = "user_param0" type="text" label="Enter email" help="see tip below" /> + </when> + <when value="cached"> + <param name = "cached_param0" type="data" label="Choose the step from which to get the parameter id"/> + </when></conditional> <conditional name="cond_source"> + <param name="optional_param_source" type="select" label="Display Additional Parameters"> + <option value="no" selected="true">no</option> + <option value="yes">yes</option> + </param> + <when value="no"> + </when> + <when value="yes"> + +<conditional name="source1"> + <param name="source1_source" type="select" label="type Source"> + <option value="cached" selected="true">Param value will be taken from previous step</option> + <option value="user">User will enter the param value</option> +</param> + <when value="user"><param name="user_param1" type="select" label="Select type" help="see tip below"> + <option value="protein" selected="true">protein</option> + <option value="dna" >dna</option> + </param> + </when> +<when value="cached"> + <param name = "cached_param1" type="data" label="Choose the step from which to get the parameter type"/> + </when></conditional> + +<conditional name="source2"> + <param name="source2_source" type="select" label="title Source"> + <option value="cached" selected="true">Param value will be taken from previous step</option> + <option value="user">User will enter the param value</option> +</param> + <when value="user"><param format="text" size = "150" name = "user_param2" type="text" label="Enter title" help="see tip below" /> + </when> +<when value="cached"> + <param name = "cached_param2" type="data" label="Choose the step from which to get the parameter title"/> + </when></conditional> + +<conditional name="source3"> + <param name="source3_source" type="select" label="output Source"> + <option value="cached" selected="true">Param value will be taken from previous step</option> + <option value="user">User will enter the param value</option> +</param> + <when value="user"><param name="user_param3" type="select" label="Select output" help="see tip below"> + <option value="aln1" selected="true">aln1</option> + <option value="aln2" >aln2</option> + <option value="gcg" >gcg</option> + <option value="phylip" >phylip</option> + <option value="nexus" >nexus</option> + <option value="pir" >pir</option> + <option value="gde" >gde</option> + <option value="fasta" >fasta</option> + </param> + </when> +<when value="cached"> + <param name = "cached_param3" type="data" label="Choose the step from which to get the parameter output"/> + </when></conditional> + +<conditional name="source4"> + <param name="source4_source" type="select" label="alignments Source"> + <option value="cached" selected="true">Param value will be taken from previous step</option> + <option value="user">User will enter the param value</option> +</param> + <when value="user"><param name="user_param4" type="select" label="Select alignments" help="see tip below"> + <option value="slow" selected="true">slow</option> + <option value="fast" >fast</option> + </param> + </when> +<when value="cached"> + <param name = "cached_param4" type="data" label="Choose the step from which to get the parameter alignments"/> + </when></conditional> + +<conditional name="source5"> + <param name="source5_source" type="select" label="outorder Source"> + <option value="cached" selected="true">Param value will be taken from previous step</option> + <option value="user">User will enter the param value</option> +</param> + <when value="user"><param name="user_param5" type="select" label="Select outorder" help="see tip below"> + <option value="aligned" selected="true">aligned</option> + <option value="input" >input</option> + </param> + </when> +<when value="cached"> + <param name = "cached_param5" type="data" label="Choose the step from which to get the parameter outorder"/> + </when></conditional> + +<conditional name="source6"> + <param name="source6_source" type="select" label="sequence Source"> + <option value="cached" selected="true">Param value will be taken from previous step</option> + <option value="user">User will enter the param value</option> +</param> + <when value="user"><param format="text" size = "150" name = "user_param6" type="text" label="Enter sequence" help="see tip below" /> + </when> +<when value="cached"> + <param name = "cached_param6" type="data" label="Choose the step from which to get the parameter sequence"/> + </when></conditional> + +<conditional name="source7"> + <param name="source7_source" type="select" label="ktup Source"> + <option value="cached" selected="true">Param value will be taken from previous step</option> + <option value="user">User will enter the param value</option> +</param> + <when value="user"><param name="user_param7" type="select" label="Select ktup" help="see tip below"> + <option value="1" selected="true">1</option> + <option value="2" >2</option> + <option value="3" >3</option> + <option value="4" >4</option> + <option value="5" >5</option> + </param> + </when> +<when value="cached"> + <param name = "cached_param7" type="data" label="Choose the step from which to get the parameter ktup"/> + </when></conditional> + +<conditional name="source8"> + <param name="source8_source" type="select" label="window Source"> + <option value="cached" selected="true">Param value will be taken from previous step</option> + <option value="user">User will enter the param value</option> +</param> + <when value="user"><param name="user_param8" type="select" label="Select window" help="see tip below"> + <option value="10" >10</option> + <option value="9" >9</option> + <option value="8" >8</option> + <option value="7" >7</option> + <option value="6" >6</option> + <option value="5" selected="true">5</option> + <option value="4" >4</option> + <option value="3" >3</option> + <option value="2" >2</option> + <option value="1" >1</option> + <option value="0" >0</option> + </param> + </when> +<when value="cached"> + <param name = "cached_param8" type="data" label="Choose the step from which to get the parameter window"/> + </when></conditional> + +<conditional name="source9"> + <param name="source9_source" type="select" label="score Source"> + <option value="cached" selected="true">Param value will be taken from previous step</option> + <option value="user">User will enter the param value</option> +</param> + <when value="user"><param name="user_param9" type="select" label="Select score" help="see tip below"> + <option value="percent" selected="true">percent</option> + <option value="absolute" >absolute</option> + </param> + </when> +<when value="cached"> + <param name = "cached_param9" type="data" label="Choose the step from which to get the parameter score"/> + </when></conditional> + +<conditional name="source10"> + <param name="source10_source" type="select" label="topdiag Source"> + <option value="cached" selected="true">Param value will be taken from previous step</option> + <option value="user">User will enter the param value</option> +</param> + <when value="user"><param name="user_param10" type="select" label="Select topdiag" help="see tip below"> + <option value="10" >10</option> + <option value="9" >9</option> + <option value="8" >8</option> + <option value="7" >7</option> + <option value="6" >6</option> + <option value="5" selected="true">5</option> + <option value="4" >4</option> + <option value="3" >3</option> + <option value="2" >2</option> + <option value="1" >1</option> + </param> + </when> +<when value="cached"> + <param name = "cached_param10" type="data" label="Choose the step from which to get the parameter topdiag"/> + </when></conditional> + +<conditional name="source11"> + <param name="source11_source" type="select" label="pairgap Source"> + <option value="cached" selected="true">Param value will be taken from previous step</option> + <option value="user">User will enter the param value</option> +</param> + <when value="user"><param name="user_param11" type="select" label="Select pairgap" help="see tip below"> + <option value="1" >1</option> + <option value="2" >2</option> + <option value="3" selected="true">3</option> + <option value="4" >4</option> + <option value="5" >5</option> + <option value="10" >10</option> + <option value="25" >25</option> + <option value="50" >50</option> + <option value="100" >100</option> + <option value="250" >250</option> + <option value="500" >500</option> + </param> + </when> +<when value="cached"> + <param name = "cached_param11" type="data" label="Choose the step from which to get the parameter pairgap"/> + </when></conditional> + +<conditional name="source12"> + <param name="source12_source" type="select" label="pwmatrix Source"> + <option value="cached" selected="true">Param value will be taken from previous step</option> + <option value="user">User will enter the param value</option> +</param> + <when value="user"><param name="user_param12" type="select" label="Select pwmatrix" help="see tip below"> + <option value="blosum" >blosum</option> + <option value="pam" >pam</option> + <option value="gonnet" selected="true">gonnet</option> + <option value="id" >id</option> + </param> + </when> +<when value="cached"> + <param name = "cached_param12" type="data" label="Choose the step from which to get the parameter pwmatrix"/> + </when></conditional> + +<conditional name="source13"> + <param name="source13_source" type="select" label="pwdnamatrix Source"> + <option value="cached" selected="true">Param value will be taken from previous step</option> + <option value="user">User will enter the param value</option> +</param> + <when value="user"><param name="user_param13" type="select" label="Select pwdnamatrix" help="see tip below"> + <option value="iub" selected="true">iub</option> + <option value="clustalw" >clustalw</option> + </param> + </when> +<when value="cached"> + <param name = "cached_param13" type="data" label="Choose the step from which to get the parameter pwdnamatrix"/> + </when></conditional> + +<conditional name="source14"> + <param name="source14_source" type="select" label="pwgapopen Source"> + <option value="cached" selected="true">Param value will be taken from previous step</option> + <option value="user">User will enter the param value</option> +</param> + <when value="user"><param name="user_param14" type="select" label="Select pwgapopen" help="see tip below"> + <option value="100" >100</option> + <option value="50" >50</option> + <option value="25" >25</option> + <option value="10" selected="true">10</option> + <option value="5" >5</option> + <option value="2" >2</option> + <option value="1" >1</option> + </param> + </when> +<when value="cached"> + <param name = "cached_param14" type="data" label="Choose the step from which to get the parameter pwgapopen"/> + </when></conditional> + +<conditional name="source15"> + <param name="source15_source" type="select" label="pwgapext Source"> + <option value="cached" selected="true">Param value will be taken from previous step</option> + <option value="user">User will enter the param value</option> +</param> + <when value="user"><param name="user_param15" type="select" label="Select pwgapext" help="see tip below"> + <option value="0.05" >0.05</option> + <option value="0.1" selected="true">0.1</option> + <option value="0.5" >0.5</option> + <option value="1.0" >1.0</option> + <option value="2.5" >2.5</option> + <option value="5.0" >5.0</option> + <option value="7.5" >7.5</option> + <option value="10.0" >10.0</option> + </param> + </when> +<when value="cached"> + <param name = "cached_param15" type="data" label="Choose the step from which to get the parameter pwgapext"/> + </when></conditional> + +<conditional name="source16"> + <param name="source16_source" type="select" label="matrix Source"> + <option value="cached" selected="true">Param value will be taken from previous step</option> + <option value="user">User will enter the param value</option> +</param> + <when value="user"><param name="user_param16" type="select" label="Select matrix" help="see tip below"> + <option value="blosum" >blosum</option> + <option value="pam" >pam</option> + <option value="gonnet" selected="true">gonnet</option> + <option value="id" >id</option> + </param> + </when> +<when value="cached"> + <param name = "cached_param16" type="data" label="Choose the step from which to get the parameter matrix"/> + </when></conditional> + +<conditional name="source17"> + <param name="source17_source" type="select" label="dnamatrix Source"> + <option value="cached" selected="true">Param value will be taken from previous step</option> + <option value="user">User will enter the param value</option> +</param> + <when value="user"><param name="user_param17" type="select" label="Select dnamatrix" help="see tip below"> + <option value="iub" selected="true">iub</option> + <option value="clustalw" >clustalw</option> + </param> + </when> +<when value="cached"> + <param name = "cached_param17" type="data" label="Choose the step from which to get the parameter dnamatrix"/> + </when></conditional> + +<conditional name="source18"> + <param name="source18_source" type="select" label="gapopen Source"> + <option value="cached" selected="true">Param value will be taken from previous step</option> + <option value="user">User will enter the param value</option> +</param> + <when value="user"><param name="user_param18" type="select" label="Select gapopen" help="see tip below"> + <option value="100" >100</option> + <option value="50" >50</option> + <option value="25" >25</option> + <option value="10" selected="true">10</option> + <option value="5" >5</option> + <option value="2" >2</option> + <option value="1" >1</option> + </param> + </when> +<when value="cached"> + <param name = "cached_param18" type="data" label="Choose the step from which to get the parameter gapopen"/> + </when></conditional> + +<conditional name="source19"> + <param name="source19_source" type="select" label="noendgaps Source"> + <option value="cached" selected="true">Param value will be taken from previous step</option> + <option value="user">User will enter the param value</option> +</param> + <when value="user"><param name="user_param19" type="select" label="Select noendgaps" help="see tip below"> + <option value="false" selected="true">false</option> + <option value="true" >true</option> + </param> + </when> +<when value="cached"> + <param name = "cached_param19" type="data" label="Choose the step from which to get the parameter noendgaps"/> + </when></conditional> + +<conditional name="source20"> + <param name="source20_source" type="select" label="gapext Source"> + <option value="cached" selected="true">Param value will be taken from previous step</option> + <option value="user">User will enter the param value</option> +</param> + <when value="user"><param name="user_param20" type="select" label="Select gapext" help="see tip below"> + <option value="0.05" >0.05</option> + <option value="0.20" selected="true">0.20</option> + <option value="0.5" >0.5</option> + <option value="1.0" >1.0</option> + <option value="2.5" >2.5</option> + <option value="5.0" >5.0</option> + <option value="7.5" >7.5</option> + <option value="10.0" >10.0</option> + </param> + </when> +<when value="cached"> + <param name = "cached_param20" type="data" label="Choose the step from which to get the parameter gapext"/> + </when></conditional> + +<conditional name="source21"> + <param name="source21_source" type="select" label="gapext Source"> + <option value="cached" selected="true">Param value will be taken from previous step</option> + <option value="user">User will enter the param value</option> +</param> + <when value="user"><param name="user_param21" type="select" label="Select gapext" help="see tip below"> + <option value="10" >10</option> + <option value="9" >9</option> + <option value="8" >8</option> + <option value="7" >7</option> + <option value="6" >6</option> + <option value="5" selected="true">5</option> + <option value="4" >4</option> + <option value="3" >3</option> + <option value="2" >2</option> + <option value="1" >1</option> + </param> + </when> +<when value="cached"> + <param name = "cached_param21" type="data" label="Choose the step from which to get the parameter gapext"/> + </when></conditional> + +<conditional name="source22"> + <param name="source22_source" type="select" label="iteration Source"> + <option value="cached" selected="true">Param value will be taken from previous step</option> + <option value="user">User will enter the param value</option> +</param> + <when value="user"><param name="user_param22" type="select" label="Select iteration" help="see tip below"> + <option value="none" >none</option> + <option value="tree" >tree</option> + <option value="alignment" >alignment</option> + </param> + </when> +<when value="cached"> + <param name = "cached_param22" type="data" label="Choose the step from which to get the parameter iteration"/> + </when></conditional> + +<conditional name="source23"> + <param name="source23_source" type="select" label="numiter Source"> + <option value="cached" selected="true">Param value will be taken from previous step</option> + <option value="user">User will enter the param value</option> +</param> + <when value="user"><param name="user_param23" type="select" label="Select numiter" help="see tip below"> + <option value="1" selected="true">1</option> + <option value="2" >2</option> + <option value="3" >3</option> + <option value="4" >4</option> + <option value="5" >5</option> + <option value="6" >6</option> + <option value="7" >7</option> + <option value="8" >8</option> + <option value="9" >9</option> + <option value="10" >10</option> + </param> + </when> +<when value="cached"> + <param name = "cached_param23" type="data" label="Choose the step from which to get the parameter numiter"/> + </when></conditional> + </when> + </conditional> +</inputs> + <outputs> + <data format="tabular" name="output" /> + </outputs> + <help> + +.. class:: infomark + +**TIP:** email type is xsd:string + </help> +</tool>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/workflowclients/client_8.xml~ Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,59 @@ +<tool id="client_8" name="getresult "> + <description> Client for method: getresult , Web service: http://om.cs.uga.edu/demo/WUBlast.wadl </description> + <command interpreter="python"> + #client_1.py + $output + http://www.ebi.ac.uk/Tools/services/restwublast/result + jobId +#if $source0.source0_source=="user" $source0.user_param0 #else $source0.cached_param0 #end if + resultType +#if $source1.source1_source=="user" $source1.user_param1 #else $source1.cached_param1 #end if +#if $cond_source.optional_param_source=="yes"#else +#end if +</command> + <inputs> +<conditional name="source0"> + <param name="source0_source" type="select" label="jobId Source"> + <option value="cached" selected="true">Param value will be taken from previous step</option> + <option value="user">User will enter the param value</option> + </param> + <when value="user"> + <param format="text" size = "150" name = "user_param0" type="text" label="Enter jobId" help="see tip below" /> + </when> + <when value="cached"> + <param name = "cached_param0" type="data" label="Choose the step from which to get the parameter jobId"/> + </when></conditional><conditional name="source1"> + <param name="source1_source" type="select" label="resultType Source"> + <option value="cached" selected="true">Param value will be taken from previous step</option> + <option value="user">User will enter the param value</option> + </param> + <when value="user"> + <param format="text" size = "150" name = "user_param1" type="text" label="Enter resultType" help="see tip below" /> + </when> + <when value="cached"> + <param name = "cached_param1" type="data" label="Choose the step from which to get the parameter resultType"/> + </when></conditional> <conditional name="cond_source"> + <param name="optional_param_source" type="select" label="Display Additional Parameters"> + <option value="no" selected="true">no</option> + <option value="yes">yes</option> + </param> + <when value="no"> + </when> + <when value="yes"> + </when> + </conditional> +</inputs> + <outputs> + <data format="tabular" name="output" /> + </outputs> + <help> + +.. class:: infomark + +**TIP:** jobId type is xsd:string + +.. class:: infomark + +**TIP:** resultType type is xsd:string + </help> +</tool> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebServiceToolWorkflow/workflowclients/client_9.xml~ Tue Jun 07 18:00:50 2011 -0400 @@ -0,0 +1,240 @@ +<tool id="client_9" name="genesbymolecularweight "> + <description> Client for method: genesbymolecularweight , Web service: http://eupathdb.org/webservices/GeneQuestions/GenesByMolecularWeight.wadl </description> + <command interpreter="python"> + #client_1.py + #if $cond_source.optional_param_source=="no": + $output + http://eupathdb.org/webservices/GeneQuestions/GenesByMolecularWeight.xml + organism + #if $source0.source0_source=="user" + $source0.user_param0 + #else: + $source0.cached_param0 + #end if + min_molecular_weight + #if $source1.source1_source=="user" + $source1.user_param1 + #else: + $source1.cached_param1 + #end if + max_molecular_weight + #if $source2.source2_source=="user" + $source2.user_param2 + #else: + $source2.cached_param2 + #end if + #else: $output + http://eupathdb.org/webservices/GeneQuestions/GenesByMolecularWeight.xml + organism + #if $source0.source0_source=="user" + $source0.user_param0 + #else: + $source0.cached_param0 + #end if + min_molecular_weight + #if $source1.source1_source=="user" + $source1.user_param1 + #else: + $source1.cached_param1 + #end if + max_molecular_weight + #if $source2.source2_source=="user" + $source2.user_param2 + #else: + $source2.cached_param2 + #end if + o-fields + #if $source3.source3_source=="user" + $source3.user_param3 + #else: + $source3.cached_param3 + #end if + o-tables + #if $source4.source4_source=="user" + $source4.user_param4 + #else: + $source4.cached_param4 + #end if + #end if +</command> + <inputs> +<conditional name="source0"> + <param name="source0_source" type="select" label="Organism Source"> + <option value="cached" selected="true">Param value will be taken from previous step</option> + <option value="user">User will enter the param value</option> + </param> + <when value="user"> + <param name="user_param0" type="select" label="Select Organism" help="see tip below"> + <option value="Entamoeba**dispar" >Entamoeba dispar</option> + <option value="Entamoeba**histolytica" >Entamoeba histolytica</option> + <option value="Entamoeba**invadens" >Entamoeba invadens</option> + <option value="Cryptosporidium**parvum" >Cryptosporidium parvum</option> + <option value="Cryptosporidium**hominis" >Cryptosporidium hominis</option> + <option value="Cryptosporidium**muris" >Cryptosporidium muris</option> + <option value="Giardia**Assemblage**A**isolate**WB" >Giardia Assemblage A isolate WB</option> + <option value="Giardia**Assemblage**B**isolate**GS" >Giardia Assemblage B isolate GS</option> + <option value="Giardia**Assemblage**E**isolate**P15" >Giardia Assemblage E isolate P15</option> + <option value="Encephalitozoon**cuniculi" >Encephalitozoon cuniculi</option> + <option value="Encephalitozoon**intestinalis" >Encephalitozoon intestinalis</option> + <option value="Plasmodium**falciparum" >Plasmodium falciparum</option> + <option value="Plasmodium**vivax" >Plasmodium vivax</option> + <option value="Plasmodium**yoelii" >Plasmodium yoelii</option> + <option value="Plasmodium**berghei" >Plasmodium berghei</option> + <option value="Plasmodium**chabaudi" >Plasmodium chabaudi</option> + <option value="Plasmodium**knowlesi" >Plasmodium knowlesi</option> + <option value="Toxoplasma**gondii" >Toxoplasma gondii</option> + <option value="Neospora**caninum" >Neospora caninum</option> + <option value="Trichomonas**vaginalis" >Trichomonas vaginalis</option> + <option value="Trypanosoma**cruzi" >Trypanosoma cruzi</option> + <option value="Leishmania**braziliensis" >Leishmania braziliensis</option> + <option value="Leishmania**infantum" >Leishmania infantum</option> + <option value="Leishmania**major" >Leishmania major</option> + <option value="Leishmania**mexicana" >Leishmania mexicana</option> + <option value="Trypanosoma**brucei" >Trypanosoma brucei</option> + <option value="Trypanosoma**congolense" >Trypanosoma congolense</option> + <option value="Trypanosoma**vivax" >Trypanosoma vivax</option> + </param> + </when> + <when value="cached"> + <param name = "cached_param0" type="data" label="Choose the step from which to get the parameter Organism"/> + </when></conditional><conditional name="source1"> + <param name="source1_source" type="select" label="Min Molecular Weight (Daltons) Source"> + <option value="cached" selected="true">Param value will be taken from previous step</option> + <option value="user">User will enter the param value</option> + </param> + <when value="user"> + <param format="text" size = "150" name = "user_param1" type="text" label="Enter Min Molecular Weight (Daltons)" help="see tip below" /> + </when> + <when value="cached"> + <param name = "cached_param1" type="data" label="Choose the step from which to get the parameter Min Molecular Weight (Daltons)"/> + </when></conditional><conditional name="source2"> + <param name="source2_source" type="select" label="Max Molecular Weight (Daltons) Source"> + <option value="cached" selected="true">Param value will be taken from previous step</option> + <option value="user">User will enter the param value</option> + </param> + <when value="user"> + <param format="text" size = "150" name = "user_param2" type="text" label="Enter Max Molecular Weight (Daltons)" help="see tip below" /> + </when> + <when value="cached"> + <param name = "cached_param2" type="data" label="Choose the step from which to get the parameter Max Molecular Weight (Daltons)"/> + </when></conditional> <conditional name="cond_source"> + <param name="optional_param_source" type="select" label="Display Additional Parameters"> + <option value="no" selected="true">no</option> + <option value="yes">yes</option> + </param> + <when value="no"> + </when> + <when value="yes"> + +<conditional name="source3"> + <param name="source3_source" type="select" label="Output Fields Source"> + <option value="cached" selected="true">Param value will be taken from previous step</option> + <option value="user">User will enter the param value</option> +</param> + <when value="user"><param name="user_param3" type="select" label="Select Output Fields" help="see tip below"> + <option value="all" >all</option> + <option value="none" selected="true">none</option> + <option value="primary_key" >primary_key</option> + <option value="formatted_gene_id" >formatted_gene_id</option> + <option value="external_db_name" >external_db_name</option> + <option value="sequence_id" >sequence_id</option> + <option value="chromosome" >chromosome</option> + <option value="location_text" >location_text</option> + <option value="strand" >strand</option> + <option value="gene_type" >gene_type</option> + <option value="exon_count" >exon_count</option> + <option value="transcript_length" >transcript_length</option> + <option value="cds_length" >cds_length</option> + <option value="product" >product</option> + <option value="protein_length" >protein_length</option> + <option value="tm_count" >tm_count</option> + <option value="molecular_weight" >molecular_weight</option> + <option value="isoelectric_point" >isoelectric_point</option> + <option value="ec_numbers_string" >ec_numbers_string</option> + <option value="ortholog_number" >ortholog_number</option> + <option value="paralog_number" >paralog_number</option> + <option value="orthomcl_name" >orthomcl_name</option> + <option value="signalp_scores" >signalp_scores</option> + <option value="signalp_peptide" >signalp_peptide</option> + <option value="ann_go_function" >ann_go_function</option> + <option value="ann_go_process" >ann_go_process</option> + <option value="ann_go_component" >ann_go_component</option> + <option value="pred_go_function" >pred_go_function</option> + <option value="pred_go_process" >pred_go_process</option> + <option value="pred_go_component" >pred_go_component</option> + <option value="organism" >organism</option> + <option value="protein_sequence" >protein_sequence</option> + <option value="transcript_sequence" >transcript_sequence</option> + <option value="cds" >cds</option> + <option value="wdk_weight" >wdk_weight</option> + </param> + </when> +<when value="cached"> + <param name = "cached_param3" type="data" label="Choose the step from which to get the parameter Output Fields"/> + </when></conditional> + +<conditional name="source4"> + <param name="source4_source" type="select" label="Output Tables Source"> + <option value="cached" selected="true">Param value will be taken from previous step</option> + <option value="user">User will enter the param value</option> +</param> + <when value="user"><param name="user_param4" type="select" label="Select Output Tables" help="see tip below"> + <option value="all" >all</option> + <option value="none" selected="true">none</option> + <option value="SNPs" >SNPs</option> + <option value="GeneModelDump" >GeneModelDump</option> + <option value="InterPro" >InterPro</option> + <option value="TMHMM" >TMHMM</option> + <option value="LowComplexity" >LowComplexity</option> + <option value="SignalP" >SignalP</option> + <option value="BlastP" >BlastP</option> + <option value="Genbank" >Genbank</option> + <option value="SageTags" >SageTags</option> + <option value="Notes" >Notes</option> + <option value="UserComments" >UserComments</option> + <option value="CommunityExpComments" >CommunityExpComments</option> + <option value="EcNumber" >EcNumber</option> + <option value="MassSpec" >MassSpec</option> + <option value="GoTerms" >GoTerms</option> + <option value="Aliases" >Aliases</option> + <option value="Phenotype" >Phenotype</option> + <option value="Y2hInteractions" >Y2hInteractions</option> + <option value="Orthologs" >Orthologs</option> + <option value="MetabolicPathways" >MetabolicPathways</option> + <option value="TaskComments" >TaskComments</option> + <option value="ArrayElements" >ArrayElements</option> + <option value="TwoChannelDiffExpr" >TwoChannelDiffExpr</option> + <option value="ProteinExpression" >ProteinExpression</option> + <option value="Mr4Reagents" >Mr4Reagents</option> + <option value="ProteinDatabase" >ProteinDatabase</option> + <option value="GeneLinkouts" >GeneLinkouts</option> + <option value="3dPreds" >3dPreds</option> + <option value="PdbSimilarities" >PdbSimilarities</option> + <option value="Epitopes" >Epitopes</option> + <option value="IsolateOverlap" >IsolateOverlap</option> + </param> + </when> +<when value="cached"> + <param name = "cached_param4" type="data" label="Choose the step from which to get the parameter Output Tables"/> + </when></conditional> + </when> + </conditional> +</inputs> + <outputs> + <data format="tabular" name="output" /> + </outputs> + <help> + +.. class:: infomark + +**TIP:** Organism type is xsd:string + +.. class:: infomark + +**TIP:** Min Molecular Weight (Daltons) type is xsd:string + +.. class:: infomark + +**TIP:** Max Molecular Weight (Daltons) type is xsd:string + </help> +</tool>