You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by sm...@apache.org on 2014/02/10 15:43:39 UTC
[18/27] Mock airavata api server and client for AIRAVATA-991
http://git-wip-us.apache.org/repos/asf/airavata/blob/fc927c6c/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/MockAiravataServerHandler.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/MockAiravataServerHandler.java b/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/MockAiravataServerHandler.java
new file mode 100644
index 0000000..b229dbc
--- /dev/null
+++ b/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/MockAiravataServerHandler.java
@@ -0,0 +1,282 @@
+/*
+ *
+ * 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.api.server.handler;
+
+import org.apache.airavata.api.Airavata;
+import org.apache.airavata.api.airavataAPIConstants;
+import org.apache.airavata.api.error.AiravataClientException;
+import org.apache.airavata.api.error.AiravataSystemException;
+import org.apache.airavata.api.error.ExperimentNotFoundException;
+import org.apache.airavata.api.error.InvalidRequestException;
+import org.apache.airavata.model.experiment.BasicMetadata;
+import org.apache.airavata.model.experiment.ConfigurationData;
+import org.apache.thrift.TException;
+
+public class MockAiravataServerHandler implements Airavata.Iface{
+ /**
+ * Query Airavata to fetch the API version
+ */
+ @Override
+ public String GetAPIVersion() throws TException {
+ return airavataAPIConstants.AIRAVATA_API_VERSION;
+ }
+
+ /**
+ * Create an experiment for the specified user belonging to the gateway. The gateway identity is not explicitly passed
+ * but inferred from the authentication header. This experiment is just a persistent place holder. The client
+ * has to subsequently configure and launch the created experiment. No action is taken on Airavata Server except
+ * registering the experiment in a persistent store.
+ *
+ * @param basicExperimentMetadata The create experiment will require the basic experiment metadata like the name and description, intended user,
+ * the gateway identifer and if the experiment should be shared public by defualt. During the creation of an experiment
+ * the ExperimentMetadata is a required field.
+ * @return The server-side generated airavata experiment globally unique identifier.
+ * @throws org.apache.airavata.api.error.InvalidRequestException For any incorrect forming of the request itself.
+ * @throws org.apache.airavata.api.error.AiravataClientException The following list of exceptions are thrown which Airavata Client can take corrective actions to resolve:
+ * <p/>
+ * UNKNOWN_GATEWAY_ID - If a Gateway is not registered with Airavata as a one time administrative
+ * step, then Airavata Registry will not have a provenance area setup. The client has to follow
+ * gateway registration steps and retry this request.
+ * <p/>
+ * AUTHENTICATION_FAILURE - How Authentication will be implemented is yet to be determined.
+ * For now this is a place holder.
+ * <p/>
+ * INVALID_AUTHORIZATION - This will throw an authorization exception. When a more robust security hand-shake
+ * is implemented, the authorization will be more substantial.
+ * @throws org.apache.airavata.api.error.AiravataSystemException This exception will be thrown for any Airavata Server side issues and if the problem cannot be corrected by the client
+ * rather an Airavata Administrator will be notified to take corrective action.
+ */
+ @Override
+ public String createExperiment(BasicMetadata basicExperimentMetadata) throws InvalidRequestException, AiravataClientException, AiravataSystemException, TException {
+ return null;
+ }
+
+ /**
+ * Fetch previously created experiment metadata.
+ *
+ * @param airavataExperimentId The identifier for the requested experiment. This is returned during the create experiment step.
+ * @return experimentMetada
+ * This method will return the previously stored experiment metadata.
+ * @throws org.apache.airavata.api.error.InvalidRequestException For any incorrect forming of the request itself.
+ * @throws org.apache.airavata.api.error.ExperimentNotFoundException If the specified experiment is not previously created, then an Experiment Not Found Exception is thrown.
+ * @throws org.apache.airavata.api.error.AiravataClientException The following list of exceptions are thrown which Airavata Client can take corrective actions to resolve:
+ * <p/>
+ * UNKNOWN_GATEWAY_ID - If a Gateway is not registered with Airavata as a one time administrative
+ * step, then Airavata Registry will not have a provenance area setup. The client has to follow
+ * gateway registration steps and retry this request.
+ * <p/>
+ * AUTHENTICATION_FAILURE - How Authentication will be implemented is yet to be determined.
+ * For now this is a place holder.
+ * <p/>
+ * INVALID_AUTHORIZATION - This will throw an authorization exception. When a more robust security hand-shake
+ * is implemented, the authorization will be more substantial.
+ * @throws org.apache.airavata.api.error.AiravataSystemException This exception will be thrown for any Airavata Server side issues and if the problem cannot be corrected by the client
+ * rather an Airavata Administrator will be notified to take corrective action.
+ */
+ @Override
+ public BasicMetadata getBasicExperimentMetadata(String airavataExperimentId) throws InvalidRequestException, ExperimentNotFoundException, AiravataClientException, AiravataSystemException, TException {
+ return null;
+ }
+
+ /**
+ * Configure a previously created experiment with required inputs, scheduling and other quality of service
+ * parameters. This method only updates the experiment object within the registry. The experiment has to be launched
+ * to make it actionable by the server.
+ *
+ * @param airavataExperimentId The identifier for the requested experiment. This is returned during the create experiment step.
+ * @param experimentConfigurationData The configuration information of the experiment with application input parameters, computational resource scheduling
+ * information, special input output handling and additional quality of service parameters.
+ * @return This method call does not have a return value.
+ * @throws org.apache.airavata.api.error.InvalidRequestException For any incorrect forming of the request itself.
+ * @throws org.apache.airavata.api.error.ExperimentNotFoundException If the specified experiment is not previously created, then an Experiment Not Found Exception is thrown.
+ * @throws org.apache.airavata.api.error.AiravataClientException The following list of exceptions are thrown which Airavata Client can take corrective actions to resolve:
+ * <p/>
+ * UNKNOWN_GATEWAY_ID - If a Gateway is not registered with Airavata as a one time administrative
+ * step, then Airavata Registry will not have a provenance area setup. The client has to follow
+ * gateway registration steps and retry this request.
+ * <p/>
+ * AUTHENTICATION_FAILURE - How Authentication will be implemented is yet to be determined.
+ * For now this is a place holder.
+ * <p/>
+ * INVALID_AUTHORIZATION - This will throw an authorization exception. When a more robust security hand-shake
+ * is implemented, the authorization will be more substantial.
+ * @throws org.apache.airavata.api.error.AiravataSystemException This exception will be thrown for any Airavata Server side issues and if the problem cannot be corrected by the client
+ * rather an Airavata Administrator will be notified to take corrective action.
+ */
+ @Override
+ public void configureExperiment(String airavataExperimentId, ConfigurationData experimentConfigurationData) throws InvalidRequestException, ExperimentNotFoundException, AiravataClientException, AiravataSystemException, TException {
+
+ }
+
+ /**
+ * Fetch the previously configured experiment configuration information.
+ *
+ * @param airavataExperimentId The identifier for the requested experiment. This is returned during the create experiment step.
+ * @return This method returns the previously configured experiment configuration data.
+ * @throws org.apache.airavata.api.error.InvalidRequestException For any incorrect forming of the request itself.
+ * @throws org.apache.airavata.api.error.ExperimentNotFoundException If the specified experiment is not previously created, then an Experiment Not Found Exception is thrown.
+ * @throws org.apache.airavata.api.error.AiravataClientException The following list of exceptions are thrown which Airavata Client can take corrective actions to resolve:
+ * <p/>
+ * UNKNOWN_GATEWAY_ID - If a Gateway is not registered with Airavata as a one time administrative
+ * step, then Airavata Registry will not have a provenance area setup. The client has to follow
+ * gateway registration steps and retry this request.
+ * <p/>
+ * AUTHENTICATION_FAILURE - How Authentication will be implemented is yet to be determined.
+ * For now this is a place holder.
+ * <p/>
+ * INVALID_AUTHORIZATION - This will throw an authorization exception. When a more robust security hand-shake
+ * is implemented, the authorization will be more substantial.
+ * @throws org.apache.airavata.api.error.AiravataSystemException This exception will be thrown for any Airavata Server side issues and if the problem cannot be corrected by the client
+ * rather an Airavata Administrator will be notified to take corrective action.
+ */
+ @Override
+ public ConfigurationData getExperimentConfiguration(String airavataExperimentId) throws InvalidRequestException, ExperimentNotFoundException, AiravataClientException, AiravataSystemException, TException {
+ return null;
+ }
+
+ /**
+ * Launch a previously created and configured experiment. Airavata Server will then start processing the request and appropriate
+ * notifications and intermediate and output data will be subsequently available for this experiment.
+ *
+ * @param airavataExperimentId The identifier for the requested experiment. This is returned during the create experiment step.
+ * @param airavataCredStoreToken :
+ * A requirement to execute experiments within Airavata is to first register the targeted remote computational account
+ * credentials with Airavata Credential Store. The administrative API (related to credential store) will return a
+ * generated token associated with the registered credentials. The client has to security posses this token id and is
+ * required to pass it to Airavata Server for all execution requests.
+ * Note: At this point only the credential store token is required so the string is directly passed here. In future if
+ * if more security credentials are enables, then the structure ExecutionSecurityParameters should be used.
+ * Note: This parameter is not persisted within Airavata Registry for security reasons.
+ * @return This method call does not have a return value.
+ * @throws org.apache.airavata.api.error.InvalidRequestException For any incorrect forming of the request itself.
+ * @throws org.apache.airavata.api.error.ExperimentNotFoundException If the specified experiment is not previously created, then an Experiment Not Found Exception is thrown.
+ * @throws org.apache.airavata.api.error.AiravataClientException The following list of exceptions are thrown which Airavata Client can take corrective actions to resolve:
+ * <p/>
+ * UNKNOWN_GATEWAY_ID - If a Gateway is not registered with Airavata as a one time administrative
+ * step, then Airavata Registry will not have a provenance area setup. The client has to follow
+ * gateway registration steps and retry this request.
+ * <p/>
+ * AUTHENTICATION_FAILURE - How Authentication will be implemented is yet to be determined.
+ * For now this is a place holder.
+ * <p/>
+ * INVALID_AUTHORIZATION - This will throw an authorization exception. When a more robust security hand-shake
+ * is implemented, the authorization will be more substantial.
+ * @throws org.apache.airavata.api.error.AiravataSystemException This exception will be thrown for any Airavata Server side issues and if the problem cannot be corrected by the client
+ * rather an Airavata Administrator will be notified to take corrective action.
+ */
+ @Override
+ public void launchConfiguredExperiment(String airavataExperimentId, String airavataCredStoreToken) throws InvalidRequestException, ExperimentNotFoundException, AiravataClientException, AiravataSystemException, TException {
+
+ }
+
+ /**
+ * Configure and Launch a previously created experiment with required inputs, scheduling, security and other quality of service
+ * parameters. This method also launches the experiment after it is configured. If you would like to configure only
+ * and launch at a later time or partially configure then ConfigureExperiment should be used.
+ *
+ * @param airavataExperimentId The identifier for the requested experiment. This is returned during the create experiment step.
+ * @param experimentConfigurationData The configuration information of the experiment with application input parameters, computational resource scheduling
+ * information, special input output handling and additional quality of service parameters.
+ * @param airavataCredStoreToken :
+ * A requirement to execute experiments within Airavata is to first register the targeted remote computational account
+ * credentials with Airavata Credential Store. The administrative API (related to credential store) will return a
+ * generated token associated with the registered credentials. The client has to security posses this token id and is
+ * required to pass it to Airavata Server for all execution requests.
+ * Note: At this point only the credential store token is required so the string is directly passed here. In future if
+ * if more security credentials are enables, then the structure ExecutionSecurityParameters should be used.
+ * @return The server-side generated experiment GUID.
+ * @throws org.apache.airavata.api.error.InvalidRequestException For any incorrect forming of the request itself.
+ * @throws org.apache.airavata.api.error.AiravataClientException The following list of exceptions are thrown which Airavata Client can take corrective actions to resolve:
+ * <p/>
+ * UNKNOWN_GATEWAY_ID - If a Gateway is not registered with Airavata as a one time administrative
+ * step, then Airavata Registry will not have a provenance area setup. The client has to follow
+ * gateway registration steps and retry this request.
+ * <p/>
+ * AUTHENTICATION_FAILURE - How Authentication will be implemented is yet to be determined.
+ * For now this is a place holder.
+ * <p/>
+ * INVALID_AUTHORIZATION - This will throw an authorization exception. When a more robust security hand-shake
+ * is implemented, the authorization will be more substantial.
+ * @throws org.apache.airavata.api.error.AiravataSystemException This exception will be thrown for any Airavata Server side issues and if the problem cannot be corrected by the client
+ * rather an Airavata Administrator will be notified to take corrective action.
+ */
+ @Override
+ public String configureAndLaunchExperiment(String airavataExperimentId, ConfigurationData experimentConfigurationData, String airavataCredStoreToken) throws InvalidRequestException, ExperimentNotFoundException, AiravataClientException, AiravataSystemException, TException {
+ return null;
+ }
+
+ /**
+ * Clone an specified experiment with a new name. A copy of the experiment configuration is made and is persisted with new metadata.
+ * The client has to subsequently update this configuration if needed and launch the cloned experiment.
+ *
+ * @param airavataExperimentIdToBeCloned This is the experiment identifier that is to be cloned.
+ * @param basicExperimentMetadata Once an experiment is cloned, to disambiguate, the users are suggested to provide new metadata. This will again require
+ * the basic experiment metadata like the name and description, intended user, the gateway identifier and if the experiment
+ * should be shared public by default.
+ * @return The server-side generated airavata experiment globally unique identifier for the newly cloned experiment.
+ * @throws org.apache.airavata.api.error.InvalidRequestException For any incorrect forming of the request itself.
+ * @throws org.apache.airavata.api.error.ExperimentNotFoundException If the specified experiment is not previously created, then an Experiment Not Found Exception is thrown.
+ * @throws org.apache.airavata.api.error.AiravataClientException The following list of exceptions are thrown which Airavata Client can take corrective actions to resolve:
+ * <p/>
+ * UNKNOWN_GATEWAY_ID - If a Gateway is not registered with Airavata as a one time administrative
+ * step, then Airavata Registry will not have a provenance area setup. The client has to follow
+ * gateway registration steps and retry this request.
+ * <p/>
+ * AUTHENTICATION_FAILURE - How Authentication will be implemented is yet to be determined.
+ * For now this is a place holder.
+ * <p/>
+ * INVALID_AUTHORIZATION - This will throw an authorization exception. When a more robust security hand-shake
+ * is implemented, the authorization will be more substantial.
+ * @throws org.apache.airavata.api.error.AiravataSystemException This exception will be thrown for any Airavata Server side issues and if the problem cannot be corrected by the client
+ * rather an Airavata Administrator will be notified to take corrective action.
+ */
+ @Override
+ public String cloneExperimentConfiguration(String airavataExperimentIdToBeCloned, BasicMetadata basicExperimentMetadata) throws InvalidRequestException, ExperimentNotFoundException, AiravataClientException, AiravataSystemException, TException {
+ return null;
+ }
+
+ /**
+ * Terminate a running experiment.
+ *
+ * @param airavataExperimentId The identifier for the requested experiment. This is returned during the create experiment step.
+ * @return This method call does not have a return value.
+ * @throws org.apache.airavata.api.error.InvalidRequestException For any incorrect forming of the request itself.
+ * @throws org.apache.airavata.api.error.ExperimentNotFoundException If the specified experiment is not previously created, then an Experiment Not Found Exception is thrown.
+ * @throws org.apache.airavata.api.error.AiravataClientException The following list of exceptions are thrown which Airavata Client can take corrective actions to resolve:
+ * <p/>
+ * UNKNOWN_GATEWAY_ID - If a Gateway is not registered with Airavata as a one time administrative
+ * step, then Airavata Registry will not have a provenance area setup. The client has to follow
+ * gateway registration steps and retry this request.
+ * <p/>
+ * AUTHENTICATION_FAILURE - How Authentication will be implemented is yet to be determined.
+ * For now this is a place holder.
+ * <p/>
+ * INVALID_AUTHORIZATION - This will throw an authorization exception. When a more robust security hand-shake
+ * is implemented, the authorization will be more substantial.
+ * @throws org.apache.airavata.api.error.AiravataSystemException This exception will be thrown for any Airavata Server side issues and if the problem cannot be corrected by the client
+ * rather an Airavata Administrator will be notified to take corrective action.
+ */
+ @Override
+ public void terminateExperiment(String airavataExperimentId) throws InvalidRequestException, ExperimentNotFoundException, AiravataClientException, AiravataSystemException, TException {
+
+ }
+}
http://git-wip-us.apache.org/repos/asf/airavata/blob/fc927c6c/airavata-api/airavata-api-server/src/main/resources/airavata-server.properties
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-api-server/src/main/resources/airavata-server.properties b/airavata-api/airavata-api-server/src/main/resources/airavata-server.properties
new file mode 100644
index 0000000..08cc006
--- /dev/null
+++ b/airavata-api/airavata-api-server/src/main/resources/airavata-server.properties
@@ -0,0 +1,28 @@
+#
+#
+# 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.
+#
+
+###########################################################################
+#
+# Temporarily adding the API configuration to this property file. These
+# needs to be merged with rest of airavata-server.properties
+#
+###########################################################################
+
+api.server.port = 8930
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/airavata/blob/fc927c6c/airavata-api/airavata-client-sdks/java-client-samples/pom.xml
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/java-client-samples/pom.xml b/airavata-api/airavata-client-sdks/java-client-samples/pom.xml
new file mode 100644
index 0000000..41f1a12
--- /dev/null
+++ b/airavata-api/airavata-client-sdks/java-client-samples/pom.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--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. -->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <artifactId>airavata-api</artifactId>
+ <groupId>org.apache.airavata</groupId>
+ <version>0.12-SNAPSHOT</version>
+ <relativePath>../pom.xml</relativePath>
+ </parent>
+
+ <name>Airavata Client Samples</name>
+ <artifactId>airavata-client-samples</artifactId>
+ <packaging>jar</packaging>
+ <url>http://airavata.apache.org/</url>
+
+ <dependencies>
+
+ <dependency>
+ <groupId>org.apache.airavata</groupId>
+ <artifactId>airavata-api-sdk</artifactId>
+ <version>0.12-SNAPSHOT</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.thrift</groupId>
+ <artifactId>libthrift</artifactId>
+ <version>0.9.1</version>
+ </dependency>
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-log4j12</artifactId>
+ <version>1.7.5</version>
+ </dependency>
+
+ </dependencies>
+
+</project>
http://git-wip-us.apache.org/repos/asf/airavata/blob/fc927c6c/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/samples/CreateLaunchExperiment.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/samples/CreateLaunchExperiment.java b/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/samples/CreateLaunchExperiment.java
new file mode 100644
index 0000000..300326f
--- /dev/null
+++ b/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/samples/CreateLaunchExperiment.java
@@ -0,0 +1,44 @@
+/*
+ *
+ * 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.client.samples;
+
+import org.apache.airavata.api.Airavata;
+import org.apache.airavata.api.client.AiravataClientFactory;
+import org.apache.thrift.TException;
+
+public class CreateLaunchExperiment {
+
+ //FIXME: Read from a config file
+ public static final String THRIFT_SERVER_HOST = "localhost";
+ public static final int THRIFT_SERVER_PORT = 8930;
+
+ public static void main(String[] args) {
+ AiravataClientFactory airavataClientFactory = new AiravataClientFactory();
+ Airavata.Client airavata = airavataClientFactory.createAiravataClient(THRIFT_SERVER_HOST, THRIFT_SERVER_PORT);
+ try {
+ System.out.println("API version is " + airavata.GetAPIVersion());
+ } catch (TException e) {
+ e.printStackTrace();
+ }
+
+ }
+}
http://git-wip-us.apache.org/repos/asf/airavata/blob/fc927c6c/airavata-api/airavata-client-sdks/pom.xml
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/pom.xml b/airavata-api/airavata-client-sdks/pom.xml
new file mode 100644
index 0000000..3998692
--- /dev/null
+++ b/airavata-api/airavata-client-sdks/pom.xml
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--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. -->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <artifactId>airavata-api</artifactId>
+ <groupId>org.apache.airavata</groupId>
+ <version>0.12-SNAPSHOT</version>
+ <relativePath>../pom.xml</relativePath>
+ </parent>
+
+ <name>Airavata Client SDKS</name>
+ <artifactId>airavata-client-sdks</artifactId>
+ <packaging>pom</packaging>
+ <url>http://airavata.apache.org/</url>
+
+ <profiles>
+ <profile>
+ <id>default</id>
+ <activation>
+ <activeByDefault>true</activeByDefault>
+ </activation>
+ <modules>
+ <module>java-client-samples</module>
+ </modules>
+ </profile>
+ </profiles>
+
+ <properties>
+ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+ <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
+ </properties>
+
+</project>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/airavata/blob/fc927c6c/airavata-api/airavata-data-models/pom.xml
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/pom.xml b/airavata-api/airavata-data-models/pom.xml
new file mode 100644
index 0000000..23f06d2
--- /dev/null
+++ b/airavata-api/airavata-data-models/pom.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--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. -->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <artifactId>airavata-api</artifactId>
+ <groupId>org.apache.airavata</groupId>
+ <version>0.12-SNAPSHOT</version>
+ <relativePath>../pom.xml</relativePath>
+ </parent>
+
+ <name>Airavata Data Models</name>
+ <artifactId>airavata-data-models</artifactId>
+ <packaging>jar</packaging>
+ <url>http://airavata.apache.org/</url>
+
+ <dependencies>
+
+ <dependency>
+ <groupId>org.apache.thrift</groupId>
+ <artifactId>libthrift</artifactId>
+ <version>0.9.1</version>
+ </dependency>
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-log4j12</artifactId>
+ <version>1.7.5</version>
+ </dependency>
+
+ </dependencies>
+
+</project>
http://git-wip-us.apache.org/repos/asf/airavata/blob/fc927c6c/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/experiment/AdvancedInputDataHandling.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/experiment/AdvancedInputDataHandling.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/experiment/AdvancedInputDataHandling.java
new file mode 100644
index 0000000..ac1ba59
--- /dev/null
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/experiment/AdvancedInputDataHandling.java
@@ -0,0 +1,700 @@
+ /*
+ * 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.
+ */
+/**
+ * Autogenerated by Thrift Compiler (0.9.1)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ * @generated
+ */
+package org.apache.airavata.model.experiment;
+
+import org.apache.thrift.scheme.IScheme;
+import org.apache.thrift.scheme.SchemeFactory;
+import org.apache.thrift.scheme.StandardScheme;
+
+import org.apache.thrift.scheme.TupleScheme;
+import org.apache.thrift.protocol.TTupleProtocol;
+import org.apache.thrift.protocol.TProtocolException;
+import org.apache.thrift.EncodingUtils;
+import org.apache.thrift.TException;
+import org.apache.thrift.async.AsyncMethodCallback;
+import org.apache.thrift.server.AbstractNonblockingServer.*;
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Map;
+import java.util.HashMap;
+import java.util.EnumMap;
+import java.util.Set;
+import java.util.HashSet;
+import java.util.EnumSet;
+import java.util.Collections;
+import java.util.BitSet;
+import java.nio.ByteBuffer;
+import java.util.Arrays;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * A structure holding specified input data handling.
+ *
+ */
+@SuppressWarnings("all") public class AdvancedInputDataHandling implements org.apache.thrift.TBase<AdvancedInputDataHandling, AdvancedInputDataHandling._Fields>, java.io.Serializable, Cloneable, Comparable<AdvancedInputDataHandling> {
+ private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("AdvancedInputDataHandling");
+
+ private static final org.apache.thrift.protocol.TField STAGE_INPUT_FILES_TO_WORKING_DIR_FIELD_DESC = new org.apache.thrift.protocol.TField("stageInputFilesToWorkingDir", org.apache.thrift.protocol.TType.BOOL, (short)1);
+ private static final org.apache.thrift.protocol.TField WORKING_DIRECTORY_PARENT_FIELD_DESC = new org.apache.thrift.protocol.TField("workingDirectoryParent", org.apache.thrift.protocol.TType.STRING, (short)2);
+ private static final org.apache.thrift.protocol.TField UNIQUE_WORKING_DIRECTORY_FIELD_DESC = new org.apache.thrift.protocol.TField("uniqueWorkingDirectory", org.apache.thrift.protocol.TType.STRING, (short)3);
+ private static final org.apache.thrift.protocol.TField CLEAN_UP_WORKING_DIR_AFTER_JOB_FIELD_DESC = new org.apache.thrift.protocol.TField("cleanUpWorkingDirAfterJob", org.apache.thrift.protocol.TType.BOOL, (short)4);
+
+ private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
+ static {
+ schemes.put(StandardScheme.class, new AdvancedInputDataHandlingStandardSchemeFactory());
+ schemes.put(TupleScheme.class, new AdvancedInputDataHandlingTupleSchemeFactory());
+ }
+
+ private boolean stageInputFilesToWorkingDir; // optional
+ private String workingDirectoryParent; // optional
+ private String uniqueWorkingDirectory; // optional
+ private boolean cleanUpWorkingDirAfterJob; // optional
+
+ /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
+ @SuppressWarnings("all") public enum _Fields implements org.apache.thrift.TFieldIdEnum {
+ STAGE_INPUT_FILES_TO_WORKING_DIR((short)1, "stageInputFilesToWorkingDir"),
+ WORKING_DIRECTORY_PARENT((short)2, "workingDirectoryParent"),
+ UNIQUE_WORKING_DIRECTORY((short)3, "uniqueWorkingDirectory"),
+ CLEAN_UP_WORKING_DIR_AFTER_JOB((short)4, "cleanUpWorkingDirAfterJob");
+
+ private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
+
+ static {
+ for (_Fields field : EnumSet.allOf(_Fields.class)) {
+ byName.put(field.getFieldName(), field);
+ }
+ }
+
+ /**
+ * Find the _Fields constant that matches fieldId, or null if its not found.
+ */
+ public static _Fields findByThriftId(int fieldId) {
+ switch(fieldId) {
+ case 1: // STAGE_INPUT_FILES_TO_WORKING_DIR
+ return STAGE_INPUT_FILES_TO_WORKING_DIR;
+ case 2: // WORKING_DIRECTORY_PARENT
+ return WORKING_DIRECTORY_PARENT;
+ case 3: // UNIQUE_WORKING_DIRECTORY
+ return UNIQUE_WORKING_DIRECTORY;
+ case 4: // CLEAN_UP_WORKING_DIR_AFTER_JOB
+ return CLEAN_UP_WORKING_DIR_AFTER_JOB;
+ default:
+ return null;
+ }
+ }
+
+ /**
+ * Find the _Fields constant that matches fieldId, throwing an exception
+ * if it is not found.
+ */
+ public static _Fields findByThriftIdOrThrow(int fieldId) {
+ _Fields fields = findByThriftId(fieldId);
+ if (fields == null) throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!");
+ return fields;
+ }
+
+ /**
+ * Find the _Fields constant that matches name, or null if its not found.
+ */
+ public static _Fields findByName(String name) {
+ return byName.get(name);
+ }
+
+ private final short _thriftId;
+ private final String _fieldName;
+
+ _Fields(short thriftId, String fieldName) {
+ _thriftId = thriftId;
+ _fieldName = fieldName;
+ }
+
+ public short getThriftFieldId() {
+ return _thriftId;
+ }
+
+ public String getFieldName() {
+ return _fieldName;
+ }
+ }
+
+ // isset id assignments
+ private static final int __STAGEINPUTFILESTOWORKINGDIR_ISSET_ID = 0;
+ private static final int __CLEANUPWORKINGDIRAFTERJOB_ISSET_ID = 1;
+ private byte __isset_bitfield = 0;
+ private _Fields optionals[] = {_Fields.STAGE_INPUT_FILES_TO_WORKING_DIR,_Fields.WORKING_DIRECTORY_PARENT,_Fields.UNIQUE_WORKING_DIRECTORY,_Fields.CLEAN_UP_WORKING_DIR_AFTER_JOB};
+ public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
+ static {
+ Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
+ tmpMap.put(_Fields.STAGE_INPUT_FILES_TO_WORKING_DIR, new org.apache.thrift.meta_data.FieldMetaData("stageInputFilesToWorkingDir", org.apache.thrift.TFieldRequirementType.OPTIONAL,
+ new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.BOOL)));
+ tmpMap.put(_Fields.WORKING_DIRECTORY_PARENT, new org.apache.thrift.meta_data.FieldMetaData("workingDirectoryParent", org.apache.thrift.TFieldRequirementType.OPTIONAL,
+ new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+ tmpMap.put(_Fields.UNIQUE_WORKING_DIRECTORY, new org.apache.thrift.meta_data.FieldMetaData("uniqueWorkingDirectory", org.apache.thrift.TFieldRequirementType.OPTIONAL,
+ new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+ tmpMap.put(_Fields.CLEAN_UP_WORKING_DIR_AFTER_JOB, new org.apache.thrift.meta_data.FieldMetaData("cleanUpWorkingDirAfterJob", org.apache.thrift.TFieldRequirementType.OPTIONAL,
+ new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.BOOL)));
+ metaDataMap = Collections.unmodifiableMap(tmpMap);
+ org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(AdvancedInputDataHandling.class, metaDataMap);
+ }
+
+ public AdvancedInputDataHandling() {
+ this.stageInputFilesToWorkingDir = false;
+
+ this.cleanUpWorkingDirAfterJob = false;
+
+ }
+
+ /**
+ * Performs a deep copy on <i>other</i>.
+ */
+ public AdvancedInputDataHandling(AdvancedInputDataHandling other) {
+ __isset_bitfield = other.__isset_bitfield;
+ this.stageInputFilesToWorkingDir = other.stageInputFilesToWorkingDir;
+ if (other.isSetWorkingDirectoryParent()) {
+ this.workingDirectoryParent = other.workingDirectoryParent;
+ }
+ if (other.isSetUniqueWorkingDirectory()) {
+ this.uniqueWorkingDirectory = other.uniqueWorkingDirectory;
+ }
+ this.cleanUpWorkingDirAfterJob = other.cleanUpWorkingDirAfterJob;
+ }
+
+ public AdvancedInputDataHandling deepCopy() {
+ return new AdvancedInputDataHandling(this);
+ }
+
+ @Override
+ public void clear() {
+ this.stageInputFilesToWorkingDir = false;
+
+ this.workingDirectoryParent = null;
+ this.uniqueWorkingDirectory = null;
+ this.cleanUpWorkingDirAfterJob = false;
+
+ }
+
+ public boolean isStageInputFilesToWorkingDir() {
+ return this.stageInputFilesToWorkingDir;
+ }
+
+ public void setStageInputFilesToWorkingDir(boolean stageInputFilesToWorkingDir) {
+ this.stageInputFilesToWorkingDir = stageInputFilesToWorkingDir;
+ setStageInputFilesToWorkingDirIsSet(true);
+ }
+
+ public void unsetStageInputFilesToWorkingDir() {
+ __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __STAGEINPUTFILESTOWORKINGDIR_ISSET_ID);
+ }
+
+ /** Returns true if field stageInputFilesToWorkingDir is set (has been assigned a value) and false otherwise */
+ public boolean isSetStageInputFilesToWorkingDir() {
+ return EncodingUtils.testBit(__isset_bitfield, __STAGEINPUTFILESTOWORKINGDIR_ISSET_ID);
+ }
+
+ public void setStageInputFilesToWorkingDirIsSet(boolean value) {
+ __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __STAGEINPUTFILESTOWORKINGDIR_ISSET_ID, value);
+ }
+
+ public String getWorkingDirectoryParent() {
+ return this.workingDirectoryParent;
+ }
+
+ public void setWorkingDirectoryParent(String workingDirectoryParent) {
+ this.workingDirectoryParent = workingDirectoryParent;
+ }
+
+ public void unsetWorkingDirectoryParent() {
+ this.workingDirectoryParent = null;
+ }
+
+ /** Returns true if field workingDirectoryParent is set (has been assigned a value) and false otherwise */
+ public boolean isSetWorkingDirectoryParent() {
+ return this.workingDirectoryParent != null;
+ }
+
+ public void setWorkingDirectoryParentIsSet(boolean value) {
+ if (!value) {
+ this.workingDirectoryParent = null;
+ }
+ }
+
+ public String getUniqueWorkingDirectory() {
+ return this.uniqueWorkingDirectory;
+ }
+
+ public void setUniqueWorkingDirectory(String uniqueWorkingDirectory) {
+ this.uniqueWorkingDirectory = uniqueWorkingDirectory;
+ }
+
+ public void unsetUniqueWorkingDirectory() {
+ this.uniqueWorkingDirectory = null;
+ }
+
+ /** Returns true if field uniqueWorkingDirectory is set (has been assigned a value) and false otherwise */
+ public boolean isSetUniqueWorkingDirectory() {
+ return this.uniqueWorkingDirectory != null;
+ }
+
+ public void setUniqueWorkingDirectoryIsSet(boolean value) {
+ if (!value) {
+ this.uniqueWorkingDirectory = null;
+ }
+ }
+
+ public boolean isCleanUpWorkingDirAfterJob() {
+ return this.cleanUpWorkingDirAfterJob;
+ }
+
+ public void setCleanUpWorkingDirAfterJob(boolean cleanUpWorkingDirAfterJob) {
+ this.cleanUpWorkingDirAfterJob = cleanUpWorkingDirAfterJob;
+ setCleanUpWorkingDirAfterJobIsSet(true);
+ }
+
+ public void unsetCleanUpWorkingDirAfterJob() {
+ __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __CLEANUPWORKINGDIRAFTERJOB_ISSET_ID);
+ }
+
+ /** Returns true if field cleanUpWorkingDirAfterJob is set (has been assigned a value) and false otherwise */
+ public boolean isSetCleanUpWorkingDirAfterJob() {
+ return EncodingUtils.testBit(__isset_bitfield, __CLEANUPWORKINGDIRAFTERJOB_ISSET_ID);
+ }
+
+ public void setCleanUpWorkingDirAfterJobIsSet(boolean value) {
+ __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __CLEANUPWORKINGDIRAFTERJOB_ISSET_ID, value);
+ }
+
+ public void setFieldValue(_Fields field, Object value) {
+ switch (field) {
+ case STAGE_INPUT_FILES_TO_WORKING_DIR:
+ if (value == null) {
+ unsetStageInputFilesToWorkingDir();
+ } else {
+ setStageInputFilesToWorkingDir((Boolean)value);
+ }
+ break;
+
+ case WORKING_DIRECTORY_PARENT:
+ if (value == null) {
+ unsetWorkingDirectoryParent();
+ } else {
+ setWorkingDirectoryParent((String)value);
+ }
+ break;
+
+ case UNIQUE_WORKING_DIRECTORY:
+ if (value == null) {
+ unsetUniqueWorkingDirectory();
+ } else {
+ setUniqueWorkingDirectory((String)value);
+ }
+ break;
+
+ case CLEAN_UP_WORKING_DIR_AFTER_JOB:
+ if (value == null) {
+ unsetCleanUpWorkingDirAfterJob();
+ } else {
+ setCleanUpWorkingDirAfterJob((Boolean)value);
+ }
+ break;
+
+ }
+ }
+
+ public Object getFieldValue(_Fields field) {
+ switch (field) {
+ case STAGE_INPUT_FILES_TO_WORKING_DIR:
+ return Boolean.valueOf(isStageInputFilesToWorkingDir());
+
+ case WORKING_DIRECTORY_PARENT:
+ return getWorkingDirectoryParent();
+
+ case UNIQUE_WORKING_DIRECTORY:
+ return getUniqueWorkingDirectory();
+
+ case CLEAN_UP_WORKING_DIR_AFTER_JOB:
+ return Boolean.valueOf(isCleanUpWorkingDirAfterJob());
+
+ }
+ throw new IllegalStateException();
+ }
+
+ /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
+ public boolean isSet(_Fields field) {
+ if (field == null) {
+ throw new IllegalArgumentException();
+ }
+
+ switch (field) {
+ case STAGE_INPUT_FILES_TO_WORKING_DIR:
+ return isSetStageInputFilesToWorkingDir();
+ case WORKING_DIRECTORY_PARENT:
+ return isSetWorkingDirectoryParent();
+ case UNIQUE_WORKING_DIRECTORY:
+ return isSetUniqueWorkingDirectory();
+ case CLEAN_UP_WORKING_DIR_AFTER_JOB:
+ return isSetCleanUpWorkingDirAfterJob();
+ }
+ throw new IllegalStateException();
+ }
+
+ @Override
+ public boolean equals(Object that) {
+ if (that == null)
+ return false;
+ if (that instanceof AdvancedInputDataHandling)
+ return this.equals((AdvancedInputDataHandling)that);
+ return false;
+ }
+
+ public boolean equals(AdvancedInputDataHandling that) {
+ if (that == null)
+ return false;
+
+ boolean this_present_stageInputFilesToWorkingDir = true && this.isSetStageInputFilesToWorkingDir();
+ boolean that_present_stageInputFilesToWorkingDir = true && that.isSetStageInputFilesToWorkingDir();
+ if (this_present_stageInputFilesToWorkingDir || that_present_stageInputFilesToWorkingDir) {
+ if (!(this_present_stageInputFilesToWorkingDir && that_present_stageInputFilesToWorkingDir))
+ return false;
+ if (this.stageInputFilesToWorkingDir != that.stageInputFilesToWorkingDir)
+ return false;
+ }
+
+ boolean this_present_workingDirectoryParent = true && this.isSetWorkingDirectoryParent();
+ boolean that_present_workingDirectoryParent = true && that.isSetWorkingDirectoryParent();
+ if (this_present_workingDirectoryParent || that_present_workingDirectoryParent) {
+ if (!(this_present_workingDirectoryParent && that_present_workingDirectoryParent))
+ return false;
+ if (!this.workingDirectoryParent.equals(that.workingDirectoryParent))
+ return false;
+ }
+
+ boolean this_present_uniqueWorkingDirectory = true && this.isSetUniqueWorkingDirectory();
+ boolean that_present_uniqueWorkingDirectory = true && that.isSetUniqueWorkingDirectory();
+ if (this_present_uniqueWorkingDirectory || that_present_uniqueWorkingDirectory) {
+ if (!(this_present_uniqueWorkingDirectory && that_present_uniqueWorkingDirectory))
+ return false;
+ if (!this.uniqueWorkingDirectory.equals(that.uniqueWorkingDirectory))
+ return false;
+ }
+
+ boolean this_present_cleanUpWorkingDirAfterJob = true && this.isSetCleanUpWorkingDirAfterJob();
+ boolean that_present_cleanUpWorkingDirAfterJob = true && that.isSetCleanUpWorkingDirAfterJob();
+ if (this_present_cleanUpWorkingDirAfterJob || that_present_cleanUpWorkingDirAfterJob) {
+ if (!(this_present_cleanUpWorkingDirAfterJob && that_present_cleanUpWorkingDirAfterJob))
+ return false;
+ if (this.cleanUpWorkingDirAfterJob != that.cleanUpWorkingDirAfterJob)
+ return false;
+ }
+
+ return true;
+ }
+
+ @Override
+ public int hashCode() {
+ return 0;
+ }
+
+ @Override
+ public int compareTo(AdvancedInputDataHandling other) {
+ if (!getClass().equals(other.getClass())) {
+ return getClass().getName().compareTo(other.getClass().getName());
+ }
+
+ int lastComparison = 0;
+
+ lastComparison = Boolean.valueOf(isSetStageInputFilesToWorkingDir()).compareTo(other.isSetStageInputFilesToWorkingDir());
+ if (lastComparison != 0) {
+ return lastComparison;
+ }
+ if (isSetStageInputFilesToWorkingDir()) {
+ lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.stageInputFilesToWorkingDir, other.stageInputFilesToWorkingDir);
+ if (lastComparison != 0) {
+ return lastComparison;
+ }
+ }
+ lastComparison = Boolean.valueOf(isSetWorkingDirectoryParent()).compareTo(other.isSetWorkingDirectoryParent());
+ if (lastComparison != 0) {
+ return lastComparison;
+ }
+ if (isSetWorkingDirectoryParent()) {
+ lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.workingDirectoryParent, other.workingDirectoryParent);
+ if (lastComparison != 0) {
+ return lastComparison;
+ }
+ }
+ lastComparison = Boolean.valueOf(isSetUniqueWorkingDirectory()).compareTo(other.isSetUniqueWorkingDirectory());
+ if (lastComparison != 0) {
+ return lastComparison;
+ }
+ if (isSetUniqueWorkingDirectory()) {
+ lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.uniqueWorkingDirectory, other.uniqueWorkingDirectory);
+ if (lastComparison != 0) {
+ return lastComparison;
+ }
+ }
+ lastComparison = Boolean.valueOf(isSetCleanUpWorkingDirAfterJob()).compareTo(other.isSetCleanUpWorkingDirAfterJob());
+ if (lastComparison != 0) {
+ return lastComparison;
+ }
+ if (isSetCleanUpWorkingDirAfterJob()) {
+ lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.cleanUpWorkingDirAfterJob, other.cleanUpWorkingDirAfterJob);
+ if (lastComparison != 0) {
+ return lastComparison;
+ }
+ }
+ return 0;
+ }
+
+ public _Fields fieldForId(int fieldId) {
+ return _Fields.findByThriftId(fieldId);
+ }
+
+ public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
+ schemes.get(iprot.getScheme()).getScheme().read(iprot, this);
+ }
+
+ public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
+ schemes.get(oprot.getScheme()).getScheme().write(oprot, this);
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder("AdvancedInputDataHandling(");
+ boolean first = true;
+
+ if (isSetStageInputFilesToWorkingDir()) {
+ sb.append("stageInputFilesToWorkingDir:");
+ sb.append(this.stageInputFilesToWorkingDir);
+ first = false;
+ }
+ if (isSetWorkingDirectoryParent()) {
+ if (!first) sb.append(", ");
+ sb.append("workingDirectoryParent:");
+ if (this.workingDirectoryParent == null) {
+ sb.append("null");
+ } else {
+ sb.append(this.workingDirectoryParent);
+ }
+ first = false;
+ }
+ if (isSetUniqueWorkingDirectory()) {
+ if (!first) sb.append(", ");
+ sb.append("uniqueWorkingDirectory:");
+ if (this.uniqueWorkingDirectory == null) {
+ sb.append("null");
+ } else {
+ sb.append(this.uniqueWorkingDirectory);
+ }
+ first = false;
+ }
+ if (isSetCleanUpWorkingDirAfterJob()) {
+ if (!first) sb.append(", ");
+ sb.append("cleanUpWorkingDirAfterJob:");
+ sb.append(this.cleanUpWorkingDirAfterJob);
+ first = false;
+ }
+ sb.append(")");
+ return sb.toString();
+ }
+
+ public void validate() throws org.apache.thrift.TException {
+ // check for required fields
+ // check for sub-struct validity
+ }
+
+ private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
+ try {
+ write(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(out)));
+ } catch (org.apache.thrift.TException te) {
+ throw new java.io.IOException(te);
+ }
+ }
+
+ private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, ClassNotFoundException {
+ try {
+ // it doesn't seem like you should have to do this, but java serialization is wacky, and doesn't call the default constructor.
+ __isset_bitfield = 0;
+ read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in)));
+ } catch (org.apache.thrift.TException te) {
+ throw new java.io.IOException(te);
+ }
+ }
+
+ private static class AdvancedInputDataHandlingStandardSchemeFactory implements SchemeFactory {
+ public AdvancedInputDataHandlingStandardScheme getScheme() {
+ return new AdvancedInputDataHandlingStandardScheme();
+ }
+ }
+
+ private static class AdvancedInputDataHandlingStandardScheme extends StandardScheme<AdvancedInputDataHandling> {
+
+ public void read(org.apache.thrift.protocol.TProtocol iprot, AdvancedInputDataHandling struct) throws org.apache.thrift.TException {
+ org.apache.thrift.protocol.TField schemeField;
+ iprot.readStructBegin();
+ while (true)
+ {
+ schemeField = iprot.readFieldBegin();
+ if (schemeField.type == org.apache.thrift.protocol.TType.STOP) {
+ break;
+ }
+ switch (schemeField.id) {
+ case 1: // STAGE_INPUT_FILES_TO_WORKING_DIR
+ if (schemeField.type == org.apache.thrift.protocol.TType.BOOL) {
+ struct.stageInputFilesToWorkingDir = iprot.readBool();
+ struct.setStageInputFilesToWorkingDirIsSet(true);
+ } else {
+ org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+ }
+ break;
+ case 2: // WORKING_DIRECTORY_PARENT
+ if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+ struct.workingDirectoryParent = iprot.readString();
+ struct.setWorkingDirectoryParentIsSet(true);
+ } else {
+ org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+ }
+ break;
+ case 3: // UNIQUE_WORKING_DIRECTORY
+ if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+ struct.uniqueWorkingDirectory = iprot.readString();
+ struct.setUniqueWorkingDirectoryIsSet(true);
+ } else {
+ org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+ }
+ break;
+ case 4: // CLEAN_UP_WORKING_DIR_AFTER_JOB
+ if (schemeField.type == org.apache.thrift.protocol.TType.BOOL) {
+ struct.cleanUpWorkingDirAfterJob = iprot.readBool();
+ struct.setCleanUpWorkingDirAfterJobIsSet(true);
+ } else {
+ org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+ }
+ break;
+ default:
+ org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+ }
+ iprot.readFieldEnd();
+ }
+ iprot.readStructEnd();
+ struct.validate();
+ }
+
+ public void write(org.apache.thrift.protocol.TProtocol oprot, AdvancedInputDataHandling struct) throws org.apache.thrift.TException {
+ struct.validate();
+
+ oprot.writeStructBegin(STRUCT_DESC);
+ if (struct.isSetStageInputFilesToWorkingDir()) {
+ oprot.writeFieldBegin(STAGE_INPUT_FILES_TO_WORKING_DIR_FIELD_DESC);
+ oprot.writeBool(struct.stageInputFilesToWorkingDir);
+ oprot.writeFieldEnd();
+ }
+ if (struct.workingDirectoryParent != null) {
+ if (struct.isSetWorkingDirectoryParent()) {
+ oprot.writeFieldBegin(WORKING_DIRECTORY_PARENT_FIELD_DESC);
+ oprot.writeString(struct.workingDirectoryParent);
+ oprot.writeFieldEnd();
+ }
+ }
+ if (struct.uniqueWorkingDirectory != null) {
+ if (struct.isSetUniqueWorkingDirectory()) {
+ oprot.writeFieldBegin(UNIQUE_WORKING_DIRECTORY_FIELD_DESC);
+ oprot.writeString(struct.uniqueWorkingDirectory);
+ oprot.writeFieldEnd();
+ }
+ }
+ if (struct.isSetCleanUpWorkingDirAfterJob()) {
+ oprot.writeFieldBegin(CLEAN_UP_WORKING_DIR_AFTER_JOB_FIELD_DESC);
+ oprot.writeBool(struct.cleanUpWorkingDirAfterJob);
+ oprot.writeFieldEnd();
+ }
+ oprot.writeFieldStop();
+ oprot.writeStructEnd();
+ }
+
+ }
+
+ private static class AdvancedInputDataHandlingTupleSchemeFactory implements SchemeFactory {
+ public AdvancedInputDataHandlingTupleScheme getScheme() {
+ return new AdvancedInputDataHandlingTupleScheme();
+ }
+ }
+
+ private static class AdvancedInputDataHandlingTupleScheme extends TupleScheme<AdvancedInputDataHandling> {
+
+ @Override
+ public void write(org.apache.thrift.protocol.TProtocol prot, AdvancedInputDataHandling struct) throws org.apache.thrift.TException {
+ TTupleProtocol oprot = (TTupleProtocol) prot;
+ BitSet optionals = new BitSet();
+ if (struct.isSetStageInputFilesToWorkingDir()) {
+ optionals.set(0);
+ }
+ if (struct.isSetWorkingDirectoryParent()) {
+ optionals.set(1);
+ }
+ if (struct.isSetUniqueWorkingDirectory()) {
+ optionals.set(2);
+ }
+ if (struct.isSetCleanUpWorkingDirAfterJob()) {
+ optionals.set(3);
+ }
+ oprot.writeBitSet(optionals, 4);
+ if (struct.isSetStageInputFilesToWorkingDir()) {
+ oprot.writeBool(struct.stageInputFilesToWorkingDir);
+ }
+ if (struct.isSetWorkingDirectoryParent()) {
+ oprot.writeString(struct.workingDirectoryParent);
+ }
+ if (struct.isSetUniqueWorkingDirectory()) {
+ oprot.writeString(struct.uniqueWorkingDirectory);
+ }
+ if (struct.isSetCleanUpWorkingDirAfterJob()) {
+ oprot.writeBool(struct.cleanUpWorkingDirAfterJob);
+ }
+ }
+
+ @Override
+ public void read(org.apache.thrift.protocol.TProtocol prot, AdvancedInputDataHandling struct) throws org.apache.thrift.TException {
+ TTupleProtocol iprot = (TTupleProtocol) prot;
+ BitSet incoming = iprot.readBitSet(4);
+ if (incoming.get(0)) {
+ struct.stageInputFilesToWorkingDir = iprot.readBool();
+ struct.setStageInputFilesToWorkingDirIsSet(true);
+ }
+ if (incoming.get(1)) {
+ struct.workingDirectoryParent = iprot.readString();
+ struct.setWorkingDirectoryParentIsSet(true);
+ }
+ if (incoming.get(2)) {
+ struct.uniqueWorkingDirectory = iprot.readString();
+ struct.setUniqueWorkingDirectoryIsSet(true);
+ }
+ if (incoming.get(3)) {
+ struct.cleanUpWorkingDirAfterJob = iprot.readBool();
+ struct.setCleanUpWorkingDirAfterJobIsSet(true);
+ }
+ }
+ }
+
+}
+