Resolve compilation issues in gfac module after module refactoring
Project: http://git-wip-us.apache.org/repos/asf/airavata/repo Commit: http://git-wip-us.apache.org/repos/asf/airavata/commit/19afc7e0 Tree: http://git-wip-us.apache.org/repos/asf/airavata/tree/19afc7e0 Diff: http://git-wip-us.apache.org/repos/asf/airavata/diff/19afc7e0 Branch: refs/heads/moduleRefactor Commit: 19afc7e0d90502f592f1c73aafbf17ae3f4648a1 Parents: 7b80974 Author: Shameera Rathanyaka <[email protected]> Authored: Wed Jun 3 17:24:47 2015 -0400 Committer: Shameera Rathanyaka <[email protected]> Committed: Wed Jun 3 17:24:47 2015 -0400 ---------------------------------------------------------------------- modules/distribution/gfac-server/pom.xml | 33 +- modules/distribution/server/pom.xml | 55 +- .../gfac-application-specific-handlers/pom.xml | 4 +- modules/gfac/gfac-bes/pom.xml | 4 +- modules/gfac/gfac-client/pom.xml | 2 +- modules/gfac/gfac-core/pom.xml | 30 +- .../apache/airavata/gfac/core/GFacUtils.java | 39 + .../airavata/gfac/core/JobDescriptor.java | 475 ++ .../gfac/core/JobManagerConfiguration.java | 52 + .../airavata/gfac/core/SSHApiException.java | 36 + .../airavata/gfac/core/cluster/Cluster.java | 161 + .../airavata/gfac/core/cluster/CommandInfo.java | 34 + .../gfac/core/cluster/CommandOutput.java | 49 + .../airavata/gfac/core/cluster/JobStatus.java | 110 + .../gfac/core/cluster/OutputParser.java | 67 + .../gfac/core/cluster/RawCommandInfo.java | 53 + .../airavata/gfac/core/cluster/ServerInfo.java | 65 + .../gfac/core/handler/AbstractHandler.java | 1 - .../gfac/core/x2012/x12/AfterAnyList.java | 166 + .../gfac/core/x2012/x12/AfterOKList.java | 166 + .../gfac/core/x2012/x12/ExportProperties.java | 183 + .../airavata/gfac/core/x2012/x12/InputList.java | 166 + .../core/x2012/x12/JobDescriptorDocument.java | 112 + .../gfac/core/x2012/x12/ModuleLoadCommands.java | 166 + .../airavata/gfac/core/x2012/x12/PbsParams.java | 1421 ++++++ .../gfac/core/x2012/x12/PostJobCommands.java | 166 + .../gfac/core/x2012/x12/PreJobCommands.java | 166 + .../core/x2012/x12/impl/AfterAnyListImpl.java | 235 + .../core/x2012/x12/impl/AfterOKListImpl.java | 235 + .../x2012/x12/impl/ExportPropertiesImpl.java | 233 + .../gfac/core/x2012/x12/impl/InputListImpl.java | 235 + .../x12/impl/JobDescriptorDocumentImpl.java | 77 + .../x2012/x12/impl/ModuleLoadCommandsImpl.java | 235 + .../gfac/core/x2012/x12/impl/PbsParamsImpl.java | 4174 ++++++++++++++++++ .../x2012/x12/impl/PostJobCommandsImpl.java | 235 + .../core/x2012/x12/impl/PreJobCommandsImpl.java | 235 + .../src/main/resources/PBSJobDescriptor.xsd | 114 + .../src/main/resources/gsissh-schemas.xsdconfig | 14 + modules/gfac/gfac-impl/pom.xml | 32 +- .../java/com/jcraft/jsch/ExtendedSession.java | 42 + .../com/jcraft/jsch/GSISSHIdentityFile.java | 126 + .../jcraft/jsch/GSISSHIdentityRepository.java | 29 + .../UserAuthGSSAPIWithMICGSSCredentials.java | 308 ++ .../airavata/gfac/gsi/ssh/GSSContextX509.java | 2 +- .../airavata/gfac/gsi/ssh/api/Cluster.java | 162 - .../gfac/gsi/ssh/api/CommandExecutor.java | 33 +- .../airavata/gfac/gsi/ssh/api/CommandInfo.java | 34 - .../gfac/gsi/ssh/api/CommandOutput.java | 49 - .../apache/airavata/gfac/gsi/ssh/api/Core.java | 4 +- .../apache/airavata/gfac/gsi/ssh/api/Node.java | 2 +- .../gfac/gsi/ssh/api/SSHApiException.java | 36 - .../airavata/gfac/gsi/ssh/api/ServerInfo.java | 65 - .../gfac/gsi/ssh/api/job/JobDescriptor.java | 473 -- .../ssh/api/job/JobManagerConfiguration.java | 51 - .../airavata/gfac/gsi/ssh/api/job/JobType.java | 32 - .../gsi/ssh/api/job/LSFJobConfiguration.java | 6 +- .../gfac/gsi/ssh/api/job/LSFOutputParser.java | 8 +- .../gfac/gsi/ssh/api/job/OutputParser.java | 67 - .../gsi/ssh/api/job/PBSJobConfiguration.java | 6 +- .../gfac/gsi/ssh/api/job/PBSOutputParser.java | 8 +- .../gsi/ssh/api/job/SlurmJobConfiguration.java | 8 +- .../gfac/gsi/ssh/api/job/SlurmOutputParser.java | 8 +- .../gsi/ssh/api/job/UGEJobConfiguration.java | 6 +- .../gfac/gsi/ssh/api/job/UGEOutputParser.java | 10 +- .../gfac/gsi/ssh/config/ConfigReader.java | 2 +- .../ssh/impl/DefaultJobSubmissionListener.java | 9 +- .../gsi/ssh/impl/GSISSHAbstractCluster.java | 80 +- .../airavata/gfac/gsi/ssh/impl/JobStatus.java | 110 - .../airavata/gfac/gsi/ssh/impl/PBSCluster.java | 9 +- .../gfac/gsi/ssh/impl/RawCommandInfo.java | 55 - .../airavata/gfac/gsi/ssh/impl/SSHUserInfo.java | 2 +- .../gfac/gsi/ssh/impl/StandardOutReader.java | 4 +- .../gfac/gsi/ssh/impl/SystemCommandOutput.java | 4 +- .../DefaultPasswordAuthenticationInfo.java | 2 +- .../DefaultPublicKeyAuthentication.java | 2 +- .../DefaultPublicKeyFileAuthentication.java | 2 +- .../MyProxyAuthenticationInfo.java | 2 +- .../gfac/gsi/ssh/jsch/ExtendedJSch.java | 2 +- .../gsi/ssh/listener/JobSubmissionListener.java | 8 +- .../airavata/gfac/gsi/ssh/util/CommonUtils.java | 8 +- .../ssh/util/SSHAPIUIKeyboardInteractive.java | 2 +- .../gsi/ssh/util/SSHKeyPasswordHandler.java | 2 +- .../airavata/gfac/gsi/ssh/util/SSHUtils.java | 61 +- .../handler/GSISSHDirectorySetupHandler.java | 2 +- .../gfac/gsissh/handler/GSISSHInputHandler.java | 2 +- .../gsissh/handler/GSISSHOutputHandler.java | 2 +- .../gsissh/handler/NewGSISSHOutputHandler.java | 2 +- .../gsissh/provider/impl/GSISSHProvider.java | 8 +- .../gsissh/security/GSISecurityContext.java | 9 +- .../gfac/gsissh/util/GFACGSISSHUtils.java | 14 +- .../gfac/local/provider/impl/LocalProvider.java | 2 - .../airavata/gfac/monitor/HPCMonitorID.java | 6 +- .../handlers/GridPullMonitorHandler.java | 4 +- .../handlers/GridPushMonitorHandler.java | 4 +- .../monitor/impl/pull/qstat/HPCPullMonitor.java | 6 +- .../impl/pull/qstat/ResourceConnection.java | 8 +- .../impl/push/amqp/ComputingActivity.java | 19 + .../impl/push/amqp/JSONMessageParser.java | 1 - .../gfac/ssh/context/SSHAuthWrapper.java | 2 +- .../ssh/handler/AdvancedSCPInputHandler.java | 8 +- .../ssh/handler/AdvancedSCPOutputHandler.java | 8 +- .../gfac/ssh/handler/NewSSHOutputHandler.java | 2 +- .../ssh/handler/SSHDirectorySetupHandler.java | 2 +- .../gfac/ssh/handler/SSHInputHandler.java | 2 +- .../gfac/ssh/handler/SSHOutputHandler.java | 2 +- .../gfac/ssh/provider/impl/SSHProvider.java | 16 +- .../gfac/ssh/security/SSHSecurityContext.java | 2 +- .../airavata/gfac/ssh/util/GFACSSHUtils.java | 15 +- .../airavata/gfac/ssh/util/HandleOutputs.java | 2 +- .../impl/DefaultSSHApiTestWithMyProxyAuth.java | 1 + modules/gfac/gfac-service/pom.xml | 11 +- .../airavata/gfac/server/GfacServerHandler.java | 4 +- modules/orchestrator/orchestrator-core/pom.xml | 22 +- modules/workflow-model/workflow-engine/pom.xml | 4 +- modules/xbaya-gui/pom.xml | 7 +- 115 files changed, 10720 insertions(+), 1456 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/airavata/blob/19afc7e0/modules/distribution/gfac-server/pom.xml ---------------------------------------------------------------------- diff --git a/modules/distribution/gfac-server/pom.xml b/modules/distribution/gfac-server/pom.xml index 2496ae7..6e80212 100644 --- a/modules/distribution/gfac-server/pom.xml +++ b/modules/distribution/gfac-server/pom.xml @@ -133,49 +133,24 @@ <artifactId>airavata-standalone-server</artifactId> <version>${project.version}</version> </dependency> - <!--<dependency>--> - <!--<groupId>org.apache.airavata</groupId>--> - <!--<artifactId>airavata-gfac-gram</artifactId>--> - <!--<version>${project.version}</version>--> - <!--</dependency>--> - <!--<dependency>--> - <!--<groupId>org.apache.airavata</groupId>--> - <!--<artifactId>airavata-gfac-bes</artifactId>--> - <!--<version>${project.version}</version>--> - <!--</dependency>--> <dependency> <groupId>org.apache.airavata</groupId> - <artifactId>airavata-gfac-gsissh</artifactId> + <artifactId>gfac-impl</artifactId> <version>${project.version}</version> </dependency> <dependency> <groupId>org.apache.airavata</groupId> - <artifactId>airavata-gfac-hpc-monitor</artifactId> + <artifactId>gfac-core</artifactId> <version>${project.version}</version> </dependency> <dependency> <groupId>org.apache.airavata</groupId> - <artifactId>airavata-gfac-local</artifactId> + <artifactId>gfac-service</artifactId> <version>${project.version}</version> </dependency> - <!--<dependency>--> - <!--<groupId>org.apache.airavata</groupId>--> - <!--<artifactId>airavata-gfac-hadoop</artifactId>--> - <!--<version>${project.version}</version>--> - <!--</dependency>--> <dependency> <groupId>org.apache.airavata</groupId> - <artifactId>airavata-gfac-core</artifactId> - <version>${project.version}</version> - </dependency> - <dependency> - <groupId>org.apache.airavata</groupId> - <artifactId>airavata-gfac-service</artifactId> - <version>${project.version}</version> - </dependency> - <dependency> - <groupId>org.apache.airavata</groupId> - <artifactId>airavata-gfac-application-specific-handlers</artifactId> + <artifactId>gfac-application-specific-handlers</artifactId> <version>${project.version}</version> </dependency> </dependencies> http://git-wip-us.apache.org/repos/asf/airavata/blob/19afc7e0/modules/distribution/server/pom.xml ---------------------------------------------------------------------- diff --git a/modules/distribution/server/pom.xml b/modules/distribution/server/pom.xml index fc2df04..cf8a73c 100644 --- a/modules/distribution/server/pom.xml +++ b/modules/distribution/server/pom.xml @@ -268,7 +268,7 @@ </dependency> <dependency> <groupId>org.apache.airavata</groupId> - <artifactId>airavata-gfac-stubs</artifactId> + <artifactId>gfac-client</artifactId> <version>${project.version}</version> </dependency> <dependency> @@ -298,47 +298,22 @@ </dependency> <dependency> <groupId>org.apache.airavata</groupId> - <artifactId>airavata-gfac-ssh</artifactId> - <version>${project.version}</version> - </dependency> - <!--<dependency> --> - <!--<groupId>org.apache.airavata</groupId> --> - <!--<artifactId>airavata-gfac-gram</artifactId> --> - <!--<version>${project.version}</version> --> - <!--</dependency> --> - <dependency> - <groupId>org.apache.airavata</groupId> - <artifactId>airavata-gfac-bes</artifactId> - <version>${project.version}</version> - </dependency> - <dependency> - <groupId>org.apache.airavata</groupId> - <artifactId>airavata-gfac-gsissh</artifactId> + <artifactId>gfac-impl</artifactId> <version>${project.version}</version> </dependency> <dependency> <groupId>org.apache.airavata</groupId> - <artifactId>airavata-gfac-hpc-monitor</artifactId> + <artifactId>gfac-bes</artifactId> <version>${project.version}</version> </dependency> <dependency> <groupId>org.apache.airavata</groupId> - <artifactId>airavata-gfac-local</artifactId> - <version>${project.version}</version> - </dependency> - <!--<dependency> --> - <!--<groupId>org.apache.airavata</groupId> --> - <!--<artifactId>airavata-gfac-hadoop</artifactId> --> - <!--<version>${project.version}</version> --> - <!--</dependency> --> - <dependency> - <groupId>org.apache.airavata</groupId> - <artifactId>airavata-gfac-core</artifactId> + <artifactId>gfac-core</artifactId> <version>${project.version}</version> </dependency> <dependency> <groupId>org.apache.airavata</groupId> - <artifactId>airavata-gfac-service</artifactId> + <artifactId>gfac-service</artifactId> <version>${project.version}</version> </dependency> <!--<dependency> --> @@ -351,26 +326,6 @@ <artifactId>airavata-workflow-model-core</artifactId> <version>${project.version}</version> </dependency> - <!--<dependency> --> - <!--<groupId>org.apache.airavata</groupId> --> - <!--<artifactId>airavata-messenger-commons</artifactId> --> - <!--<version>${project.version}</version> --> - <!--</dependency> --> - <!--<dependency> --> - <!--<groupId>org.apache.airavata</groupId> --> - <!--<artifactId>airavata-messenger-client</artifactId> --> - <!--<version>${project.version}</version> --> - <!--</dependency> --> - <!--<dependency> --> - <!--<groupId>org.apache.airavata</groupId> --> - <!--<artifactId>airavata-workflow-tracking</artifactId> --> - <!--<version>${project.version}</version> --> - <!--</dependency> --> - <dependency> - <groupId>org.apache.airavata</groupId> - <artifactId>gsissh</artifactId> - <version>${project.version}</version> - </dependency> <dependency> <groupId>org.apache.airavata</groupId> <artifactId>airavata-model-utils</artifactId> http://git-wip-us.apache.org/repos/asf/airavata/blob/19afc7e0/modules/gfac/gfac-application-specific-handlers/pom.xml ---------------------------------------------------------------------- diff --git a/modules/gfac/gfac-application-specific-handlers/pom.xml b/modules/gfac/gfac-application-specific-handlers/pom.xml index 801313d..638c81f 100644 --- a/modules/gfac/gfac-application-specific-handlers/pom.xml +++ b/modules/gfac/gfac-application-specific-handlers/pom.xml @@ -7,11 +7,11 @@ </parent> <modelVersion>4.0.0</modelVersion> - <artifactId>airavata-gfac-application-specific-handlers</artifactId> + <artifactId>gfac-application-specific-handlers</artifactId> <dependencies> <dependency> <groupId>org.apache.airavata</groupId> - <artifactId>airavata-gfac-core</artifactId> + <artifactId>gfac-core</artifactId> <version>${project.version}</version> </dependency> </dependencies> http://git-wip-us.apache.org/repos/asf/airavata/blob/19afc7e0/modules/gfac/gfac-bes/pom.xml ---------------------------------------------------------------------- diff --git a/modules/gfac/gfac-bes/pom.xml b/modules/gfac/gfac-bes/pom.xml index 7335d53..4e61ae0 100644 --- a/modules/gfac/gfac-bes/pom.xml +++ b/modules/gfac/gfac-bes/pom.xml @@ -20,7 +20,7 @@ </parent> <modelVersion>4.0.0</modelVersion> - <artifactId>airavata-gfac-bes</artifactId> + <artifactId>gfac-bes</artifactId> <name>Airavata GFac BES implementation</name> <description>This is the extension of GFAC to use GRAM </description> <url>http://airavata.apache.org/</url> @@ -36,7 +36,7 @@ <!-- GFAC schemas --> <dependency> <groupId>org.apache.airavata</groupId> - <artifactId>airavata-gfac-core</artifactId> + <artifactId>gfac-core</artifactId> <version>${project.version}</version> </dependency> <!-- Credential Store --> http://git-wip-us.apache.org/repos/asf/airavata/blob/19afc7e0/modules/gfac/gfac-client/pom.xml ---------------------------------------------------------------------- diff --git a/modules/gfac/gfac-client/pom.xml b/modules/gfac/gfac-client/pom.xml index f94d85b..20423e0 100644 --- a/modules/gfac/gfac-client/pom.xml +++ b/modules/gfac/gfac-client/pom.xml @@ -20,7 +20,7 @@ </parent> <name>Airavata Gfac Client SDK</name> - <artifactId>airavata-gfac-stubs</artifactId> + <artifactId>gfac-client</artifactId> <packaging>jar</packaging> <url>http://airavata.apache.org/</url> http://git-wip-us.apache.org/repos/asf/airavata/blob/19afc7e0/modules/gfac/gfac-core/pom.xml ---------------------------------------------------------------------- diff --git a/modules/gfac/gfac-core/pom.xml b/modules/gfac/gfac-core/pom.xml index 2169734..0203865 100644 --- a/modules/gfac/gfac-core/pom.xml +++ b/modules/gfac/gfac-core/pom.xml @@ -17,7 +17,7 @@ </parent> <modelVersion>4.0.0</modelVersion> - <artifactId>airavata-gfac-core</artifactId> + <artifactId>gfac-core</artifactId> <name>Airavata GFac Core</name> <description>The core GFAC functionality independent from any webservice implementation.</description> <url>http://airavata.apache.org/</url> @@ -50,6 +50,11 @@ <artifactId>airavata-jpa-registry</artifactId> <version>${project.version}</version> </dependency> + <dependency> + <groupId>org.apache.xmlbeans</groupId> + <artifactId>xmlbeans</artifactId> + <version>${xmlbeans.version}</version> + </dependency> <!-- Credential Store --> <dependency> <groupId>org.apache.airavata</groupId> @@ -112,6 +117,7 @@ <groupId>org.apache.xmlbeans</groupId> <artifactId>xmlbeans</artifactId> <version>${xmlbeans.version}</version> + <scope>compile</scope> </dependency> <!-- this is the dependency for amqp implementation --> <!-- zookeeper dependencies --> @@ -125,6 +131,28 @@ <build> <plugins> <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>xmlbeans-maven-plugin</artifactId> + <version>2.3.3</version> + <executions> + <execution> + <phase>generate-sources</phase> + <goals> + <goal>xmlbeans</goal> + </goals> + </execution> + </executions> + <inherited>true</inherited> + <configuration> + <schemaDirectory>src/main/resources</schemaDirectory> + <xmlConfigs> + <xmlConfig implementation="java.io.File">src/main/resources/gsissh-schemas.xsdconfig </xmlConfig> + </xmlConfigs> + <sourceGenerationDirectory>src/main/java</sourceGenerationDirectory> + <outputJar>target/generated/${project.artifactId}-${project.version}.jar</outputJar> + </configuration> + </plugin> + <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <configuration> http://git-wip-us.apache.org/repos/asf/airavata/blob/19afc7e0/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/GFacUtils.java ---------------------------------------------------------------------- diff --git a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/GFacUtils.java b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/GFacUtils.java index 407db94..b716099 100644 --- a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/GFacUtils.java +++ b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/GFacUtils.java @@ -139,6 +139,45 @@ public class GFacUtils { } /** + * This returns true if the give job is finished + * otherwise false + * + * @param job + * @return + */ + public static boolean isJobFinished(JobDescriptor job) { + if (org.apache.airavata.gfac.core.cluster.JobStatus.C.toString().equals(job.getStatus())) { + return true; + } else { + return false; + } + } + + /** + * This will read + * + * @param maxWalltime + * @return + */ + public static String maxWallTimeCalculator(int maxWalltime) { + if (maxWalltime < 60) { + return "00:" + maxWalltime + ":00"; + } else { + int minutes = maxWalltime % 60; + int hours = maxWalltime / 60; + return hours + ":" + minutes + ":00"; + } + } + public static String maxWallTimeCalculatorForLSF(int maxWalltime) { + if (maxWalltime < 60) { + return "00:" + maxWalltime; + } else { + int minutes = maxWalltime % 60; + int hours = maxWalltime / 60; + return hours + ":" + minutes; + } + } + /** * this can be used to do framework opertaions specific to different modes * * @param jobExecutionContext http://git-wip-us.apache.org/repos/asf/airavata/blob/19afc7e0/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/JobDescriptor.java ---------------------------------------------------------------------- diff --git a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/JobDescriptor.java b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/JobDescriptor.java new file mode 100644 index 0000000..678f41f --- /dev/null +++ b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/JobDescriptor.java @@ -0,0 +1,475 @@ +/* + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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. + * +*/ +package org.apache.airavata.gfac.core; + +import org.apache.airavata.gfac.core.cluster.CommandOutput; +import org.apache.airavata.gfac.core.x2012.x12.AfterAnyList; +import org.apache.airavata.gfac.core.x2012.x12.AfterOKList; +import org.apache.airavata.gfac.core.x2012.x12.InputList; +import org.apache.airavata.gfac.core.x2012.x12.JobDescriptorDocument; +import org.apache.xmlbeans.XmlException; + +import java.util.List; + +/** + * This class define a job with required parameters, based on this configuration API is generating a Pbs script and + * submit the job to the computing resource + */ +public class JobDescriptor { + + private JobDescriptorDocument jobDescriptionDocument; + + + public JobDescriptor() { + jobDescriptionDocument = JobDescriptorDocument.Factory.newInstance(); + jobDescriptionDocument.addNewJobDescriptor(); + } + + public JobDescriptor(JobDescriptorDocument jobDescriptorDocument) { + this.jobDescriptionDocument = jobDescriptorDocument; + } + + + public JobDescriptor(CommandOutput commandOutput) { + jobDescriptionDocument = JobDescriptorDocument.Factory.newInstance(); + jobDescriptionDocument.addNewJobDescriptor(); + } + + + public String toXML() { + return jobDescriptionDocument.xmlText(); + } + + public JobDescriptorDocument getJobDescriptorDocument() { + return this.jobDescriptionDocument; + } + + /** + * With new app catalog thrift object integration, we don't use this + * @param xml + * @return + * @throws XmlException + */ + @Deprecated + public static JobDescriptor fromXML(String xml) + throws XmlException { + JobDescriptorDocument parse = JobDescriptorDocument.Factory + .parse(xml); + JobDescriptor jobDescriptor = new JobDescriptor(parse); + return jobDescriptor; + } + + + //todo write bunch of setter getters to set and get jobdescription parameters + public void setWorkingDirectory(String workingDirectory) { + this.getJobDescriptorDocument().getJobDescriptor().setWorkingDirectory(workingDirectory); + } + + public String getWorkingDirectory() { + return this.getJobDescriptorDocument().getJobDescriptor().getWorkingDirectory(); + } + + public void setShellName(String shellName) { + this.getJobDescriptorDocument().getJobDescriptor().setShellName(shellName); + } + + public void setJobName(String name) { + this.getJobDescriptorDocument().getJobDescriptor().setJobName(name); + } + + public void setExecutablePath(String name) { + this.getJobDescriptorDocument().getJobDescriptor().setExecutablePath(name); + } + + public void setAllEnvExport(boolean name) { + this.getJobDescriptorDocument().getJobDescriptor().setAllEnvExport(name); + } + + public void setMailOptions(String name) { + this.getJobDescriptorDocument().getJobDescriptor().setMailOptions(name); + } + + public void setStandardOutFile(String name) { + this.getJobDescriptorDocument().getJobDescriptor().setStandardOutFile(name); + } + + public void setStandardErrorFile(String name) { + this.getJobDescriptorDocument().getJobDescriptor().setStandardErrorFile(name); + } + + public void setNodes(int name) { + this.getJobDescriptorDocument().getJobDescriptor().setNodes(name); + } + + public void setProcessesPerNode(int name) { + this.getJobDescriptorDocument().getJobDescriptor().setProcessesPerNode(name); + } + + public String getOutputDirectory() { + return this.getJobDescriptorDocument().getJobDescriptor().getOutputDirectory(); + } + + public String getInputDirectory() { + return this.getJobDescriptorDocument().getJobDescriptor().getInputDirectory(); + } + public void setOutputDirectory(String name) { + this.getJobDescriptorDocument().getJobDescriptor().setOutputDirectory(name); + } + + public void setInputDirectory(String name) { + this.getJobDescriptorDocument().getJobDescriptor().setInputDirectory(name); + } + + /** + * Users can pass the minute count for maxwalltime + * @param minutes + */ + public void setMaxWallTime(String minutes) { + this.getJobDescriptorDocument().getJobDescriptor().setMaxWallTime( + GFacUtils.maxWallTimeCalculator(Integer.parseInt(minutes))); + + } + + + public void setMaxWallTimeForLSF(String minutes) { + this.getJobDescriptorDocument().getJobDescriptor().setMaxWallTime( + GFacUtils.maxWallTimeCalculatorForLSF(Integer.parseInt(minutes))); + + } + public void setAcountString(String name) { + this.getJobDescriptorDocument().getJobDescriptor().setAcountString(name); + } + + public void setInputValues(List<String> inputValue) { + InputList inputList = this.getJobDescriptorDocument().getJobDescriptor().addNewInputs(); + inputList.setInputArray(inputValue.toArray(new String[inputValue.size()])); + } + + public void setJobID(String jobID) { + this.getJobDescriptorDocument().getJobDescriptor().setJobID(jobID); + } + + public void setQueueName(String queueName) { + this.getJobDescriptorDocument().getJobDescriptor().setQueueName(queueName); + } + + public void setStatus(String queueName) { + this.getJobDescriptorDocument().getJobDescriptor().setStatus(queueName); + } + + public void setAfterAnyList(String[] afterAnyList) { + AfterAnyList afterAny = this.getJobDescriptorDocument().getJobDescriptor().addNewAfterAny(); + afterAny.setAfterAnyArray(afterAnyList); + } + + public void setAfterOKList(String[] afterOKList) { + AfterOKList afterAnyList = this.getJobDescriptorDocument().getJobDescriptor().addNewAfterOKList(); + afterAnyList.setAfterOKListArray(afterOKList); + } + public void setCTime(String cTime) { + this.getJobDescriptorDocument().getJobDescriptor().setCTime(cTime); + } + public void setQTime(String qTime) { + this.getJobDescriptorDocument().getJobDescriptor().setQTime(qTime); + } + public void setMTime(String mTime) { + this.getJobDescriptorDocument().getJobDescriptor().setMTime(mTime); + } + public void setSTime(String sTime) { + this.getJobDescriptorDocument().getJobDescriptor().setSTime(sTime); + } + public void setCompTime(String compTime) { + this.getJobDescriptorDocument().getJobDescriptor().setCompTime(compTime); + } + public void setOwner(String owner) { + this.getJobDescriptorDocument().getJobDescriptor().setOwner(owner); + } + public void setExecuteNode(String executeNode) { + this.getJobDescriptorDocument().getJobDescriptor().setExecuteNode(executeNode); + } + public void setEllapsedTime(String ellapsedTime) { + this.getJobDescriptorDocument().getJobDescriptor().setEllapsedTime(ellapsedTime); + } + + public void setUsedCPUTime(String usedCPUTime) { + this.getJobDescriptorDocument().getJobDescriptor().setUsedCPUTime(usedCPUTime); + } + public void setCPUCount(int usedCPUTime) { + this.getJobDescriptorDocument().getJobDescriptor().setCpuCount(usedCPUTime); + } + public void setUsedMemory(String usedMemory) { + this.getJobDescriptorDocument().getJobDescriptor().setUsedMem(usedMemory); + } + public void setVariableList(String variableList) { + this.getJobDescriptorDocument().getJobDescriptor().setVariableList(variableList); + } + public void setSubmitArgs(String submitArgs) { + this.getJobDescriptorDocument().getJobDescriptor().setSubmitArgs(submitArgs); + } + + public void setPreJobCommands(String[] commands){ + if(this.getJobDescriptorDocument().getJobDescriptor().getPreJobCommands() == null){ + this.getJobDescriptorDocument().getJobDescriptor().addNewPreJobCommands(); + } + this.getJobDescriptorDocument().getJobDescriptor().getPreJobCommands().setCommandArray(commands); + } + + public void setPostJobCommands(String[] commands){ + if(this.getJobDescriptorDocument().getJobDescriptor().getPostJobCommands() == null){ + this.getJobDescriptorDocument().getJobDescriptor().addNewPostJobCommands(); + } + this.getJobDescriptorDocument().getJobDescriptor().getPostJobCommands().setCommandArray(commands); + } + + public void setModuleLoadCommands(String[] commands) { + if (this.getJobDescriptorDocument().getJobDescriptor().getModuleLoadCommands() == null) { + this.getJobDescriptorDocument().getJobDescriptor().addNewModuleLoadCommands(); + } + this.getJobDescriptorDocument().getJobDescriptor().getModuleLoadCommands().setCommandArray(commands); + } + + public void addModuleLoadCommands(String command) { + if (this.getJobDescriptorDocument().getJobDescriptor().getModuleLoadCommands() == null) { + this.getJobDescriptorDocument().getJobDescriptor().addNewModuleLoadCommands(); + } + this.getJobDescriptorDocument().getJobDescriptor().getModuleLoadCommands().addCommand(command); + } + + public void addPreJobCommand(String command){ + if(this.getJobDescriptorDocument().getJobDescriptor().getPreJobCommands() == null){ + this.getJobDescriptorDocument().getJobDescriptor().addNewPreJobCommands(); + } + this.getJobDescriptorDocument().getJobDescriptor().getPreJobCommands().addCommand(command); + } + + public void addPostJobCommand(String command){ + if(this.getJobDescriptorDocument().getJobDescriptor().getPostJobCommands() == null){ + this.getJobDescriptorDocument().getJobDescriptor().addNewPostJobCommands(); + } + this.getJobDescriptorDocument().getJobDescriptor().getPostJobCommands().addCommand(command); + } + + public void setPartition(String partition){ + this.getJobDescriptorDocument().getJobDescriptor().setPartition(partition); + } + + public void setUserName(String userName){ + this.getJobDescriptorDocument().getJobDescriptor().setUserName(userName); + } + public void setNodeList(String nodeList){ + this.getJobDescriptorDocument().getJobDescriptor().setNodeList(nodeList); + } + public void setJobSubmitter(String jobSubmitter){ + this.getJobDescriptorDocument().getJobDescriptor().setJobSubmitterCommand(jobSubmitter); + } + public String getNodeList(){ + return this.getJobDescriptorDocument().getJobDescriptor().getNodeList(); + } + public String getExecutablePath() { + return this.getJobDescriptorDocument().getJobDescriptor().getExecutablePath(); + } + + public boolean getAllEnvExport() { + return this.getJobDescriptorDocument().getJobDescriptor().getAllEnvExport(); + } + + public String getMailOptions() { + return this.getJobDescriptorDocument().getJobDescriptor().getMailOptions(); + } + + public String getStandardOutFile() { + return this.getJobDescriptorDocument().getJobDescriptor().getStandardOutFile(); + } + + public String getStandardErrorFile() { + return this.getJobDescriptorDocument().getJobDescriptor().getStandardErrorFile(); + } + + public int getNodes(int name) { + return this.getJobDescriptorDocument().getJobDescriptor().getNodes(); + } + + public int getCPUCount(int name) { + return this.getJobDescriptorDocument().getJobDescriptor().getCpuCount(); + } + + public int getProcessesPerNode() { + return this.getJobDescriptorDocument().getJobDescriptor().getProcessesPerNode(); + } + + public String getMaxWallTime() { + return this.getJobDescriptorDocument().getJobDescriptor().getMaxWallTime(); + } + + public String getAcountString() { + return this.getJobDescriptorDocument().getJobDescriptor().getAcountString(); + } + + public String[] getInputValues() { + return this.getJobDescriptorDocument().getJobDescriptor().getInputs().getInputArray(); + } + + public String getJobID() { + return this.getJobDescriptorDocument().getJobDescriptor().getJobID(); + } + + public String getQueueName() { + return this.getJobDescriptorDocument().getJobDescriptor().getQueueName(); + } + + public String getStatus() { + return this.getJobDescriptorDocument().getJobDescriptor().getStatus(); + } + + public String[] getAfterAnyList() { + return this.getJobDescriptorDocument().getJobDescriptor().getAfterAny().getAfterAnyArray(); + } + + public String[] getAfterOKList() { + return this.getJobDescriptorDocument().getJobDescriptor().getAfterOKList().getAfterOKListArray(); + } + public String getCTime() { + return this.getJobDescriptorDocument().getJobDescriptor().getCTime(); + } + public String getQTime() { + return this.getJobDescriptorDocument().getJobDescriptor().getQTime(); + } + public String getMTime() { + return this.getJobDescriptorDocument().getJobDescriptor().getMTime(); + } + public String getSTime() { + return this.getJobDescriptorDocument().getJobDescriptor().getSTime(); + } + public String getCompTime() { + return this.getJobDescriptorDocument().getJobDescriptor().getCompTime(); + } + public String getOwner() { + return this.getJobDescriptorDocument().getJobDescriptor().getOwner(); + } + public String getExecuteNode() { + return this.getJobDescriptorDocument().getJobDescriptor().getExecuteNode(); + } + public String getEllapsedTime() { + return this.getJobDescriptorDocument().getJobDescriptor().getEllapsedTime(); + } + + public String getUsedCPUTime() { + return this.getJobDescriptorDocument().getJobDescriptor().getUsedCPUTime(); + } + + public String getUsedMemory() { + return this.getJobDescriptorDocument().getJobDescriptor().getUsedMem(); + } + public void getShellName() { + this.getJobDescriptorDocument().getJobDescriptor().getShellName(); + } + + public String getJobName() { + return this.getJobDescriptorDocument().getJobDescriptor().getJobName(); + } + + public String getJobId() { + return this.getJobDescriptorDocument().getJobDescriptor().getJobID(); + } + + + public String getVariableList() { + return this.getJobDescriptorDocument().getJobDescriptor().getJobID(); + } + public String getSubmitArgs() { + return this.getJobDescriptorDocument().getJobDescriptor().getJobID(); + } + + public String[] getPostJobCommands(){ + if(this.getJobDescriptorDocument().getJobDescriptor().getPostJobCommands() != null) { + return this.getJobDescriptorDocument().getJobDescriptor().getPostJobCommands().getCommandArray(); + } + return null; + } + + public String[] getModuleCommands() { + if (this.getJobDescriptorDocument().getJobDescriptor().getModuleLoadCommands() != null) { + return this.getJobDescriptorDocument().getJobDescriptor().getModuleLoadCommands().getCommandArray(); + } + return null; + } + + public String[] getPreJobCommands(){ + if(this.getJobDescriptorDocument().getJobDescriptor().getPreJobCommands() != null) { + return this.getJobDescriptorDocument().getJobDescriptor().getPreJobCommands().getCommandArray(); + } + return null; + } + + public String getJobSubmitterCommand(){ + return this.getJobDescriptorDocument().getJobDescriptor().getJobSubmitterCommand(); + } + + public String getPartition(){ + return this.getJobDescriptorDocument().getJobDescriptor().getPartition(); + } + + public String getUserName(){ + return this.getJobDescriptorDocument().getJobDescriptor().getUserName(); + } + + public void setCallBackIp(String ip){ + this.jobDescriptionDocument.getJobDescriptor().setCallBackIp(ip); + } + + public void setCallBackPort(String ip){ + this.jobDescriptionDocument.getJobDescriptor().setCallBackPort(ip); + } + + + public String getCallBackIp(){ + return this.jobDescriptionDocument.getJobDescriptor().getCallBackIp(); + } + public String getCallBackPort(){ + return this.jobDescriptionDocument.getJobDescriptor().getCallBackPort(); + } + + public void setMailType(String emailType) { + this.getJobDescriptorDocument().getJobDescriptor().setMailType(emailType); + } + + public String getMailType() { + return this.getJobDescriptorDocument().getJobDescriptor().getMailType(); + } + public void setMailAddress(String emailAddress) { + this.getJobDescriptorDocument().getJobDescriptor().setMailAddress(emailAddress); + } + + public String getMailAddress() { + return this.getJobDescriptorDocument().getJobDescriptor().getMailAddress(); + } + + public String getChassisName() { + return this.getJobDescriptorDocument().getJobDescriptor().getChassisName(); + } + + public void setChassisName(String chassisName){ + this.getJobDescriptorDocument().getJobDescriptor().setChassisName(chassisName); + } + + +} + http://git-wip-us.apache.org/repos/asf/airavata/blob/19afc7e0/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/JobManagerConfiguration.java ---------------------------------------------------------------------- diff --git a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/JobManagerConfiguration.java b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/JobManagerConfiguration.java new file mode 100644 index 0000000..661aba0 --- /dev/null +++ b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/JobManagerConfiguration.java @@ -0,0 +1,52 @@ +/* + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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. + * + */ +package org.apache.airavata.gfac.core; + +import org.apache.airavata.gfac.core.cluster.OutputParser; +import org.apache.airavata.gfac.core.cluster.RawCommandInfo; + +public interface JobManagerConfiguration { + + public RawCommandInfo getCancelCommand(String jobID); + + public String getJobDescriptionTemplateName(); + + public RawCommandInfo getMonitorCommand(String jobID); + + public RawCommandInfo getUserBasedMonitorCommand(String userName); + + public RawCommandInfo getJobIdMonitorCommand(String jobName , String userName); + + public String getScriptExtension(); + + public RawCommandInfo getSubmitCommand(String workingDirectory, String pbsFilePath); + + public OutputParser getParser(); + + public String getInstalledPath(); + + public String getBaseCancelCommand(); + + public String getBaseMonitorCommand(); + + public String getBaseSubmitCommand(); + +} http://git-wip-us.apache.org/repos/asf/airavata/blob/19afc7e0/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/SSHApiException.java ---------------------------------------------------------------------- diff --git a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/SSHApiException.java b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/SSHApiException.java new file mode 100644 index 0000000..a2db122 --- /dev/null +++ b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/SSHApiException.java @@ -0,0 +1,36 @@ +/* + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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. + * + */ + +package org.apache.airavata.gfac.core; + +/** + * An exception class to wrap SSH command execution related errors. + */ +public class SSHApiException extends Exception { + + public SSHApiException(String message) { + super(message); + } + + public SSHApiException(String message, Exception e) { + super(message, e); + } +} http://git-wip-us.apache.org/repos/asf/airavata/blob/19afc7e0/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/cluster/Cluster.java ---------------------------------------------------------------------- diff --git a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/cluster/Cluster.java b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/cluster/Cluster.java new file mode 100644 index 0000000..b116bdc --- /dev/null +++ b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/cluster/Cluster.java @@ -0,0 +1,161 @@ +/* + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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. + * +*/ +package org.apache.airavata.gfac.core.cluster; + +import com.jcraft.jsch.Session; +import org.apache.airavata.gfac.core.JobDescriptor; +import org.apache.airavata.gfac.core.SSHApiException; + +import java.util.List; +import java.util.Map; + +/** + * This interface represents a Cluster machine + * End users of the API can implement this and come up with their own + * implementations, but mostly this interface is for internal usage. + */ +public interface Cluster { + + /** + * This will submit a job to the cluster with a given pbs file and some parameters + * + * @param pbsFilePath path of the pbs file + * @param workingDirectory working directory where pbs should has to copy + * @return jobId after successful job submission + * @throws SSHApiException throws exception during error + */ + public String submitBatchJobWithScript(String pbsFilePath, String workingDirectory) throws SSHApiException; + + /** + * This will submit the given job and not performing any monitoring + * + * @param jobDescriptor job descriptor to submit to cluster, this contains all the parameter + * @return jobID after successful job submission. + * @throws SSHApiException throws exception during error + */ + public String submitBatchJob(JobDescriptor jobDescriptor) throws SSHApiException; + + /** + * This will copy the localFile to remoteFile location in configured cluster + * + * @param remoteFile remote file location, this can be a directory too + * @param localFile local file path of the file which needs to copy to remote location + * @throws SSHApiException throws exception during error + */ + public void scpTo(String remoteFile, String localFile) throws SSHApiException; + + /** + * This will copy a remote file in path rFile to local file lFile + * @param remoteFile remote file path, this has to be a full qualified path + * @param localFile This is the local file to copy, this can be a directory too + * @throws SSHApiException + */ + public void scpFrom(String remoteFile, String localFile) throws SSHApiException; + + /** + * This will copy a remote file in path rFile to local file lFile + * @param remoteFile remote file path, this has to be a full qualified path + * @param localFile This is the local file to copy, this can be a directory too + * @throws SSHApiException + */ + public void scpThirdParty(String remoteFileSorce, String remoteFileTarget) throws SSHApiException; + + /** + * This will create directories in computing resources + * @param directoryPath the full qualified path for the directory user wants to create + * @throws SSHApiException throws during error + */ + public void makeDirectory(String directoryPath) throws SSHApiException; + + + /** + * This will get the job description of a job which is there in the cluster + * if jbo is not available with the given ID it returns + * @param jobID jobId has to pass + * @return Returns full job description of the job which submitted successfully + * @throws SSHApiException throws exception during error + */ + public JobDescriptor getJobDescriptorById(String jobID) throws SSHApiException; + + /** + * This will delete the given job from the queue + * + * @param jobID jobId of the job which user wants to delete + * @return return the description of the deleted job + * @throws SSHApiException throws exception during error + */ + public JobDescriptor cancelJob(String jobID) throws SSHApiException; + + /** + * This will get the job status of the the job associated with this jobId + * + * @param jobID jobId of the job user want to get the status + * @return job status of the given jobID + * @throws SSHApiException throws exception during error + */ + public JobStatus getJobStatus(String jobID) throws SSHApiException; + /** + * This will get the job status of the the job associated with this jobId + * + * @param jobName jobName of the job user want to get the status + * @return jobId of the given jobName + * @throws SSHApiException throws exception during error + */ + public String getJobIdByJobName(String jobName, String userName) throws SSHApiException; + + /** + * This method can be used to poll the jobstatuses based on the given + * user but we should pass the jobID list otherwise we will get unwanted + * job statuses which submitted by different middleware outside apache + * airavata with the same uername which we are not considering + * @param userName userName of the jobs which required to get the status + * @param jobIDs precises set of jobIDs + * @return + */ + public void getJobStatuses(String userName,Map<String,JobStatus> jobIDs)throws SSHApiException; + /** + * This will list directories in computing resources + * @param directoryPath the full qualified path for the directory user wants to create + * @throws SSHApiException throws during error + */ + public List<String> listDirectory(String directoryPath) throws SSHApiException; + + /** + * This method can be used to get created ssh session + * to reuse the created session. + * @throws SSHApiException + */ + public Session getSession() throws SSHApiException; + + /** + * This method can be used to close the connections initialized + * to handle graceful shutdown of the system + * @throws SSHApiException + */ + public void disconnect() throws SSHApiException; + + /** + * This gives the server Info + * @return + */ + public ServerInfo getServerInfo(); + +} http://git-wip-us.apache.org/repos/asf/airavata/blob/19afc7e0/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/cluster/CommandInfo.java ---------------------------------------------------------------------- diff --git a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/cluster/CommandInfo.java b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/cluster/CommandInfo.java new file mode 100644 index 0000000..18e3e4e --- /dev/null +++ b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/cluster/CommandInfo.java @@ -0,0 +1,34 @@ +package org.apache.airavata.gfac.core.cluster;/* + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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. + * + */ + +/** + * Encapsulates information about + */ +public interface CommandInfo { + + /** + * Gets the executable command as a string. + * @return String encoded command. Should be able to execute + * directly on remote shell. Should includes appropriate parameters. + */ + String getCommand(); + +} http://git-wip-us.apache.org/repos/asf/airavata/blob/19afc7e0/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/cluster/CommandOutput.java ---------------------------------------------------------------------- diff --git a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/cluster/CommandOutput.java b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/cluster/CommandOutput.java new file mode 100644 index 0000000..e50d25a --- /dev/null +++ b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/cluster/CommandOutput.java @@ -0,0 +1,49 @@ +package org.apache.airavata.gfac.core.cluster;/* + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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. + * + */ + + +import com.jcraft.jsch.Channel; + +import java.io.OutputStream; + +/** + * Output of a certain command. TODO rethink + */ +public interface CommandOutput { + + /** + * Gets the output of the command as a stream. + * @param channel Command output as a stream. + */ + void onOutput(Channel channel); + + /** + * Gets standard error as a output stream. + * @return Command error as a stream. + */ + OutputStream getStandardError(); + + /** + * The command exit code. + * @param code The program exit code + */ + void exitCode(int code); +} http://git-wip-us.apache.org/repos/asf/airavata/blob/19afc7e0/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/cluster/JobStatus.java ---------------------------------------------------------------------- diff --git a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/cluster/JobStatus.java b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/cluster/JobStatus.java new file mode 100644 index 0000000..6e8e144 --- /dev/null +++ b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/cluster/JobStatus.java @@ -0,0 +1,110 @@ + /* + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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. + * +*/ + package org.apache.airavata.gfac.core.cluster; + + /** + * This will contains all the PBS specific job statuses. + * C - Job is completed after having run/ + * E - Job is exiting after having run. + * H - Job is held. + * Q - job is queued, eligible to run or routed. + * R - job is running. + * T - job is being moved to new location. + * W - job is waiting for its execution time + * (-a option) to be reached. + * S - (Unicos only) job is suspend. + */ + public enum JobStatus { + C, E, H, Q, R, T, W, S,U,F,CA,CD,CF,CG,NF,PD,PR,TO,qw,t,r,h,Er,Eqw,PEND,RUN,PSUSP,USUSP,SSUSP,DONE,EXIT,UNKWN,ZOMBI; + + public static JobStatus fromString(String status){ + if(status != null){ + if("C".equals(status)){ + return JobStatus.C; + }else if("E".equals(status)){ + return JobStatus.E; + }else if("H".equals(status)){ + return JobStatus.H; + }else if("Q".equals(status)){ + return JobStatus.Q; + }else if("R".equals(status)){ + return JobStatus.R; + }else if("T".equals(status)){ + return JobStatus.T; + }else if("W".equals(status)){ + return JobStatus.W; + }else if("S".equals(status)){ + return JobStatus.S; + }else if("F".equals(status)){ + return JobStatus.F; + }else if("S".equals(status)){ + return JobStatus.S; + }else if("CA".equals(status)){ + return JobStatus.CA; + }else if("CF".equals(status)){ + return JobStatus.CF; + }else if("CD".equals(status)){ + return JobStatus.CD; + }else if("CG".equals(status)){ + return JobStatus.CG; + }else if("NF".equals(status)){ + return JobStatus.NF; + }else if("PD".equals(status)){ + return JobStatus.PD; + }else if("PR".equals(status)){ + return JobStatus.PR; + }else if("TO".equals(status)){ + return JobStatus.TO; + }else if("U".equals(status)){ + return JobStatus.U; + }else if("qw".equals(status)){ + return JobStatus.qw; + }else if("t".equals(status)){ + return JobStatus.t; + }else if("r".equals(status)){ + return JobStatus.r; + }else if("h".equals(status)){ + return JobStatus.h; + }else if("Er".equals(status)){ + return JobStatus.Er; + }else if("Eqw".equals(status)){ + return JobStatus.Er; + }else if("RUN".equals(status)){ // LSF starts here + return JobStatus.RUN; + }else if("PEND".equals(status)){ + return JobStatus.PEND; + }else if("DONE".equals(status)){ + return JobStatus.DONE; + }else if("PSUSP".equals(status)){ + return JobStatus.PSUSP; + }else if("USUSP".equals(status)){ + return JobStatus.USUSP; + }else if("SSUSP".equals(status)){ + return JobStatus.SSUSP; + }else if("EXIT".equals(status)){ + return JobStatus.EXIT; + }else if("ZOMBI".equals(status)){ + return JobStatus.ZOMBI; + } + } + return JobStatus.U; + } + } http://git-wip-us.apache.org/repos/asf/airavata/blob/19afc7e0/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/cluster/OutputParser.java ---------------------------------------------------------------------- diff --git a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/cluster/OutputParser.java b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/cluster/OutputParser.java new file mode 100644 index 0000000..658a5bc --- /dev/null +++ b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/cluster/OutputParser.java @@ -0,0 +1,67 @@ +/* + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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. + * +*/ +package org.apache.airavata.gfac.core.cluster; + +import org.apache.airavata.gfac.core.JobDescriptor; +import org.apache.airavata.gfac.core.SSHApiException; + +import java.util.Map; + +public interface OutputParser { + + /** + * Tihs can be used to fill a jobdescriptor based on the output + * @param descriptor + * @return + */ + public void parseSingleJob(JobDescriptor descriptor, String rawOutput)throws SSHApiException; + + /** + * This can be used to parseSingleJob the result of a job submission to get the JobID + * @param rawOutput + * @return + */ + public String parseJobSubmission(String rawOutput)throws SSHApiException; + + + /** + * This can be used to get the job status from the output + * @param jobID + * @param rawOutput + */ + public JobStatus parseJobStatus(String jobID, String rawOutput)throws SSHApiException; + + /** + * This can be used to parseSingleJob a big output and get multipleJob statuses + * @param statusMap list of status map will return and key will be the job ID + * @param rawOutput + */ + public void parseJobStatuses(String userName, Map<String, JobStatus> statusMap, String rawOutput)throws SSHApiException; + + /** + * filter the jobId value of given JobName from rawOutput + * @param jobName + * @param rawOutput + * @return + * @throws SSHApiException + */ + public String parseJobId(String jobName, String rawOutput) throws SSHApiException; +} http://git-wip-us.apache.org/repos/asf/airavata/blob/19afc7e0/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/cluster/RawCommandInfo.java ---------------------------------------------------------------------- diff --git a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/cluster/RawCommandInfo.java b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/cluster/RawCommandInfo.java new file mode 100644 index 0000000..80f5d0a --- /dev/null +++ b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/cluster/RawCommandInfo.java @@ -0,0 +1,53 @@ +/* + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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. + * + */ + +package org.apache.airavata.gfac.core.cluster; + +/** + * User: AmilaJ ([email protected]) + * Date: 8/14/13 + * Time: 5:18 PM + */ + +/** + * The raw command information. String returned by getCommand is directly executed in SSH + * shell. E.g :- getCommand return string set for rawCommand - "/opt/torque/bin/qsub /home/ogce/test.pbs". + */ +public class RawCommandInfo implements CommandInfo { + + private String rawCommand; + + public RawCommandInfo(String cmd) { + this.rawCommand = cmd; + } + + public String getCommand() { + return this.rawCommand; + } + + public String getRawCommand() { + return rawCommand; + } + + public void setRawCommand(String rawCommand) { + this.rawCommand = rawCommand; + } +} http://git-wip-us.apache.org/repos/asf/airavata/blob/19afc7e0/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/cluster/ServerInfo.java ---------------------------------------------------------------------- diff --git a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/cluster/ServerInfo.java b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/cluster/ServerInfo.java new file mode 100644 index 0000000..183f60b --- /dev/null +++ b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/cluster/ServerInfo.java @@ -0,0 +1,65 @@ +package org.apache.airavata.gfac.core.cluster;/* + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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. + * + */ + +/** + * Encapsulate server information. + */ +public class ServerInfo { + + private String host; + private String userName; + private int port = 22; + + public ServerInfo(String userName, String host) { + this.userName = userName; + this.host = host; + } + + public ServerInfo(String userName,String host, int port) { + this.host = host; + this.userName = userName; + this.port = port; + } + + public String getHost() { + return host; + } + + public void setHost(String host) { + this.host = host; + } + + public String getUserName() { + return userName; + } + + public void setUserName(String userName) { + this.userName = userName; + } + + public int getPort() { + return port; + } + + public void setPort(int port) { + this.port = port; + } +} http://git-wip-us.apache.org/repos/asf/airavata/blob/19afc7e0/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/handler/AbstractHandler.java ---------------------------------------------------------------------- diff --git a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/handler/AbstractHandler.java b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/handler/AbstractHandler.java index aa98ef6..8d2609a 100644 --- a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/handler/AbstractHandler.java +++ b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/handler/AbstractHandler.java @@ -22,7 +22,6 @@ package org.apache.airavata.gfac.core.handler; import org.apache.airavata.common.utils.MonitorPublisher; import org.apache.airavata.gfac.core.context.JobExecutionContext; -import org.apache.airavata.gfac.core.cpi.BetterGfacImpl; import org.apache.airavata.gfac.core.states.GfacHandlerState; import org.apache.airavata.gfac.core.GFacUtils; import org.apache.airavata.model.appcatalog.appinterface.OutputDataObjectType; http://git-wip-us.apache.org/repos/asf/airavata/blob/19afc7e0/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/x2012/x12/AfterAnyList.java ---------------------------------------------------------------------- diff --git a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/x2012/x12/AfterAnyList.java b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/x2012/x12/AfterAnyList.java new file mode 100644 index 0000000..e552eb7 --- /dev/null +++ b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/x2012/x12/AfterAnyList.java @@ -0,0 +1,166 @@ +/* + * XML Type: afterAnyList + * Namespace: http://airavata.apache.org/gfac/core/2012/12 + * Java type: org.apache.airavata.gfac.core.x2012.x12.AfterAnyList + * + * Automatically generated - do not modify. + */ +package org.apache.airavata.gfac.core.x2012.x12; + + +/** + * An XML afterAnyList(@http://airavata.apache.org/gfac/core/2012/12). + * + * This is a complex type. + */ +public interface AfterAnyList extends org.apache.xmlbeans.XmlObject +{ + public static final org.apache.xmlbeans.SchemaType type = (org.apache.xmlbeans.SchemaType) + org.apache.xmlbeans.XmlBeans.typeSystemForClassLoader(AfterAnyList.class.getClassLoader(), "schemaorg_apache_xmlbeans.system.sCF8C40CE6FDA0A41BEE004F5930560FF").resolveHandle("afteranylisteefatype"); + + /** + * Gets array of all "afterAny" elements + */ + java.lang.String[] getAfterAnyArray(); + + /** + * Gets ith "afterAny" element + */ + java.lang.String getAfterAnyArray(int i); + + /** + * Gets (as xml) array of all "afterAny" elements + */ + org.apache.xmlbeans.XmlString[] xgetAfterAnyArray(); + + /** + * Gets (as xml) ith "afterAny" element + */ + org.apache.xmlbeans.XmlString xgetAfterAnyArray(int i); + + /** + * Returns number of "afterAny" element + */ + int sizeOfAfterAnyArray(); + + /** + * Sets array of all "afterAny" element + */ + void setAfterAnyArray(java.lang.String[] afterAnyArray); + + /** + * Sets ith "afterAny" element + */ + void setAfterAnyArray(int i, java.lang.String afterAny); + + /** + * Sets (as xml) array of all "afterAny" element + */ + void xsetAfterAnyArray(org.apache.xmlbeans.XmlString[] afterAnyArray); + + /** + * Sets (as xml) ith "afterAny" element + */ + void xsetAfterAnyArray(int i, org.apache.xmlbeans.XmlString afterAny); + + /** + * Inserts the value as the ith "afterAny" element + */ + void insertAfterAny(int i, java.lang.String afterAny); + + /** + * Appends the value as the last "afterAny" element + */ + void addAfterAny(java.lang.String afterAny); + + /** + * Inserts and returns a new empty value (as xml) as the ith "afterAny" element + */ + org.apache.xmlbeans.XmlString insertNewAfterAny(int i); + + /** + * Appends and returns a new empty value (as xml) as the last "afterAny" element + */ + org.apache.xmlbeans.XmlString addNewAfterAny(); + + /** + * Removes the ith "afterAny" element + */ + void removeAfterAny(int i); + + /** + * A factory class with static methods for creating instances + * of this type. + */ + + public static final class Factory + { + public static org.apache.airavata.gfac.core.x2012.x12.AfterAnyList newInstance() { + return (org.apache.airavata.gfac.core.x2012.x12.AfterAnyList) org.apache.xmlbeans.XmlBeans.getContextTypeLoader().newInstance( type, null ); } + + public static org.apache.airavata.gfac.core.x2012.x12.AfterAnyList newInstance(org.apache.xmlbeans.XmlOptions options) { + return (org.apache.airavata.gfac.core.x2012.x12.AfterAnyList) org.apache.xmlbeans.XmlBeans.getContextTypeLoader().newInstance( type, options ); } + + /** @param xmlAsString the string value to parse */ + public static org.apache.airavata.gfac.core.x2012.x12.AfterAnyList parse(java.lang.String xmlAsString) throws org.apache.xmlbeans.XmlException { + return (org.apache.airavata.gfac.core.x2012.x12.AfterAnyList) org.apache.xmlbeans.XmlBeans.getContextTypeLoader().parse( xmlAsString, type, null ); } + + public static org.apache.airavata.gfac.core.x2012.x12.AfterAnyList parse(java.lang.String xmlAsString, org.apache.xmlbeans.XmlOptions options) throws org.apache.xmlbeans.XmlException { + return (org.apache.airavata.gfac.core.x2012.x12.AfterAnyList) org.apache.xmlbeans.XmlBeans.getContextTypeLoader().parse( xmlAsString, type, options ); } + + /** @param file the file from which to load an xml document */ + public static org.apache.airavata.gfac.core.x2012.x12.AfterAnyList parse(java.io.File file) throws org.apache.xmlbeans.XmlException, java.io.IOException { + return (org.apache.airavata.gfac.core.x2012.x12.AfterAnyList) org.apache.xmlbeans.XmlBeans.getContextTypeLoader().parse( file, type, null ); } + + public static org.apache.airavata.gfac.core.x2012.x12.AfterAnyList parse(java.io.File file, org.apache.xmlbeans.XmlOptions options) throws org.apache.xmlbeans.XmlException, java.io.IOException { + return (org.apache.airavata.gfac.core.x2012.x12.AfterAnyList) org.apache.xmlbeans.XmlBeans.getContextTypeLoader().parse( file, type, options ); } + + public static org.apache.airavata.gfac.core.x2012.x12.AfterAnyList parse(java.net.URL u) throws org.apache.xmlbeans.XmlException, java.io.IOException { + return (org.apache.airavata.gfac.core.x2012.x12.AfterAnyList) org.apache.xmlbeans.XmlBeans.getContextTypeLoader().parse( u, type, null ); } + + public static org.apache.airavata.gfac.core.x2012.x12.AfterAnyList parse(java.net.URL u, org.apache.xmlbeans.XmlOptions options) throws org.apache.xmlbeans.XmlException, java.io.IOException { + return (org.apache.airavata.gfac.core.x2012.x12.AfterAnyList) org.apache.xmlbeans.XmlBeans.getContextTypeLoader().parse( u, type, options ); } + + public static org.apache.airavata.gfac.core.x2012.x12.AfterAnyList parse(java.io.InputStream is) throws org.apache.xmlbeans.XmlException, java.io.IOException { + return (org.apache.airavata.gfac.core.x2012.x12.AfterAnyList) org.apache.xmlbeans.XmlBeans.getContextTypeLoader().parse( is, type, null ); } + + public static org.apache.airavata.gfac.core.x2012.x12.AfterAnyList parse(java.io.InputStream is, org.apache.xmlbeans.XmlOptions options) throws org.apache.xmlbeans.XmlException, java.io.IOException { + return (org.apache.airavata.gfac.core.x2012.x12.AfterAnyList) org.apache.xmlbeans.XmlBeans.getContextTypeLoader().parse( is, type, options ); } + + public static org.apache.airavata.gfac.core.x2012.x12.AfterAnyList parse(java.io.Reader r) throws org.apache.xmlbeans.XmlException, java.io.IOException { + return (org.apache.airavata.gfac.core.x2012.x12.AfterAnyList) org.apache.xmlbeans.XmlBeans.getContextTypeLoader().parse( r, type, null ); } + + public static org.apache.airavata.gfac.core.x2012.x12.AfterAnyList parse(java.io.Reader r, org.apache.xmlbeans.XmlOptions options) throws org.apache.xmlbeans.XmlException, java.io.IOException { + return (org.apache.airavata.gfac.core.x2012.x12.AfterAnyList) org.apache.xmlbeans.XmlBeans.getContextTypeLoader().parse( r, type, options ); } + + public static org.apache.airavata.gfac.core.x2012.x12.AfterAnyList parse(javax.xml.stream.XMLStreamReader sr) throws org.apache.xmlbeans.XmlException { + return (org.apache.airavata.gfac.core.x2012.x12.AfterAnyList) org.apache.xmlbeans.XmlBeans.getContextTypeLoader().parse( sr, type, null ); } + + public static org.apache.airavata.gfac.core.x2012.x12.AfterAnyList parse(javax.xml.stream.XMLStreamReader sr, org.apache.xmlbeans.XmlOptions options) throws org.apache.xmlbeans.XmlException { + return (org.apache.airavata.gfac.core.x2012.x12.AfterAnyList) org.apache.xmlbeans.XmlBeans.getContextTypeLoader().parse( sr, type, options ); } + + public static org.apache.airavata.gfac.core.x2012.x12.AfterAnyList parse(org.w3c.dom.Node node) throws org.apache.xmlbeans.XmlException { + return (org.apache.airavata.gfac.core.x2012.x12.AfterAnyList) org.apache.xmlbeans.XmlBeans.getContextTypeLoader().parse( node, type, null ); } + + public static org.apache.airavata.gfac.core.x2012.x12.AfterAnyList parse(org.w3c.dom.Node node, org.apache.xmlbeans.XmlOptions options) throws org.apache.xmlbeans.XmlException { + return (org.apache.airavata.gfac.core.x2012.x12.AfterAnyList) org.apache.xmlbeans.XmlBeans.getContextTypeLoader().parse( node, type, options ); } + + /** @deprecated {@link org.apache.xmlbeans.xml.stream.XMLInputStream} */ + public static org.apache.airavata.gfac.core.x2012.x12.AfterAnyList parse(org.apache.xmlbeans.xml.stream.XMLInputStream xis) throws org.apache.xmlbeans.XmlException, org.apache.xmlbeans.xml.stream.XMLStreamException { + return (org.apache.airavata.gfac.core.x2012.x12.AfterAnyList) org.apache.xmlbeans.XmlBeans.getContextTypeLoader().parse( xis, type, null ); } + + /** @deprecated {@link org.apache.xmlbeans.xml.stream.XMLInputStream} */ + public static org.apache.airavata.gfac.core.x2012.x12.AfterAnyList parse(org.apache.xmlbeans.xml.stream.XMLInputStream xis, org.apache.xmlbeans.XmlOptions options) throws org.apache.xmlbeans.XmlException, org.apache.xmlbeans.xml.stream.XMLStreamException { + return (org.apache.airavata.gfac.core.x2012.x12.AfterAnyList) org.apache.xmlbeans.XmlBeans.getContextTypeLoader().parse( xis, type, options ); } + + /** @deprecated {@link org.apache.xmlbeans.xml.stream.XMLInputStream} */ + public static org.apache.xmlbeans.xml.stream.XMLInputStream newValidatingXMLInputStream(org.apache.xmlbeans.xml.stream.XMLInputStream xis) throws org.apache.xmlbeans.XmlException, org.apache.xmlbeans.xml.stream.XMLStreamException { + return org.apache.xmlbeans.XmlBeans.getContextTypeLoader().newValidatingXMLInputStream( xis, type, null ); } + + /** @deprecated {@link org.apache.xmlbeans.xml.stream.XMLInputStream} */ + public static org.apache.xmlbeans.xml.stream.XMLInputStream newValidatingXMLInputStream(org.apache.xmlbeans.xml.stream.XMLInputStream xis, org.apache.xmlbeans.XmlOptions options) throws org.apache.xmlbeans.XmlException, org.apache.xmlbeans.xml.stream.XMLStreamException { + return org.apache.xmlbeans.XmlBeans.getContextTypeLoader().newValidatingXMLInputStream( xis, type, options ); } + + private Factory() { } // No instance of this class allowed + } +}
