You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by sh...@apache.org on 2015/06/05 18:31:04 UTC
[2/2] airavata git commit: Refactored gfac core module classes
Refactored gfac core module classes
Project: http://git-wip-us.apache.org/repos/asf/airavata/repo
Commit: http://git-wip-us.apache.org/repos/asf/airavata/commit/2f3da010
Tree: http://git-wip-us.apache.org/repos/asf/airavata/tree/2f3da010
Diff: http://git-wip-us.apache.org/repos/asf/airavata/diff/2f3da010
Branch: refs/heads/master
Commit: 2f3da0104f4c3d468b4a251a43249c39bce18c29
Parents: 4045c09
Author: Shameera Rathanyaka <sh...@gmail.com>
Authored: Fri Jun 5 12:30:59 2015 -0400
Committer: Shameera Rathanyaka <sh...@gmail.com>
Committed: Fri Jun 5 12:30:59 2015 -0400
----------------------------------------------------------------------
.../gfac/bes/handlers/AbstractSMSHandler.java | 2 +-
.../gfac/bes/provider/impl/BESProvider.java | 2 +-
.../bes/security/UNICORESecurityContext.java | 4 +-
.../gfac/bes/security/X509SecurityContext.java | 12 +-
.../gfac/bes/utils/DataTransferrer.java | 4 +-
.../airavata/gfac/bes/utils/SecurityUtils.java | 4 +-
.../airavata/gfac/AbstractSecurityContext.java | 58 ----
.../org/apache/airavata/gfac/Constants.java | 82 ------
.../org/apache/airavata/gfac/ExecutionMode.java | 39 ---
.../apache/airavata/gfac/GFacConfiguration.java | 289 -------------------
.../org/apache/airavata/gfac/GFacException.java | 48 ---
.../airavata/gfac/JobSubmissionFault.java | 98 -------
.../org/apache/airavata/gfac/RequestData.java | 150 ----------
.../org/apache/airavata/gfac/Scheduler.java | 231 ---------------
.../apache/airavata/gfac/SecurityContext.java | 26 --
.../apache/airavata/gfac/ToolsException.java | 35 ---
.../gfac/core/AbstractSecurityContext.java | 57 ++++
.../apache/airavata/gfac/core/Constants.java | 82 ++++++
.../airavata/gfac/core/ExecutionMode.java | 39 +++
.../org/apache/airavata/gfac/core/GFac.java | 3 +-
.../airavata/gfac/core/GFacConfiguration.java | 289 +++++++++++++++++++
.../airavata/gfac/core/GFacException.java | 48 +++
.../apache/airavata/gfac/core/GFacUtils.java | 4 -
.../airavata/gfac/core/JobSubmissionFault.java | 98 +++++++
.../apache/airavata/gfac/core/RequestData.java | 151 ++++++++++
.../apache/airavata/gfac/core/Scheduler.java | 230 +++++++++++++++
.../airavata/gfac/core/SecurityContext.java | 26 ++
.../airavata/gfac/core/ToolsException.java | 35 +++
.../gfac/core/context/JobExecutionContext.java | 6 +-
.../gfac/core/handler/GFacHandlerException.java | 2 +-
.../gfac/core/provider/AbstractProvider.java | 2 +-
.../gfac/core/provider/GFacProvider.java | 2 +-
.../apache/airavata/job/GFacConfigXmlTest.java | 2 +-
.../org/apache/airavata/job/TestProvider.java | 2 +-
.../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 | 2 +-
.../gsissh/security/GSISecurityContext.java | 4 +-
.../security/TokenizedMyProxyAuthInfo.java | 14 +-
.../gfac/gsissh/util/GFACGSISSHUtils.java | 4 +-
.../airavata/gfac/impl/BetterGfacImpl.java | 8 +-
.../airavata/gfac/impl/OutHandlerWorker.java | 2 +-
.../gfac/local/provider/impl/LocalProvider.java | 4 +-
.../airavata/gfac/monitor/HPCMonitorID.java | 4 +-
.../impl/pull/qstat/ResourceConnection.java | 4 +-
.../airavata/gfac/monitor/util/CommonUtils.java | 2 +-
.../ssh/handler/AdvancedSCPInputHandler.java | 2 +-
.../ssh/handler/AdvancedSCPOutputHandler.java | 2 +-
.../gfac/ssh/handler/NewSSHOutputHandler.java | 2 +-
.../ssh/handler/SSHDirectorySetupHandler.java | 2 +-
.../gfac/ssh/handler/SSHInputHandler.java | 2 +-
.../gfac/ssh/handler/SSHOutputHandler.java | 4 +-
.../gfac/ssh/provider/impl/SSHProvider.java | 4 +-
.../gfac/ssh/security/SSHSecurityContext.java | 2 +-
.../gfac/ssh/security/TokenizedSSHAuthInfo.java | 8 +-
.../airavata/gfac/ssh/util/GFACSSHUtils.java | 6 +-
.../services/impl/BigRed2TestWithSSHAuth.java | 6 +-
.../gfac/services/impl/CredentialStoreTest.java | 4 +-
.../impl/GSISSHProviderTestWithMyProxyAuth.java | 6 +-
.../gfac/services/impl/LocalProviderTest.java | 4 +-
.../impl/SSHProviderTestWithSSHAuth.java | 4 +-
.../GSISecurityContextTestWithMyProxyAuth.java | 4 +-
.../airavata/gfac/server/GfacServerHandler.java | 4 +-
65 files changed, 1137 insertions(+), 1147 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/airavata/blob/2f3da010/modules/gfac/gfac-bes/src/main/java/org/apache/airavata/gfac/bes/handlers/AbstractSMSHandler.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-bes/src/main/java/org/apache/airavata/gfac/bes/handlers/AbstractSMSHandler.java b/modules/gfac/gfac-bes/src/main/java/org/apache/airavata/gfac/bes/handlers/AbstractSMSHandler.java
index 34a00e3..2aec909 100644
--- a/modules/gfac/gfac-bes/src/main/java/org/apache/airavata/gfac/bes/handlers/AbstractSMSHandler.java
+++ b/modules/gfac/gfac-bes/src/main/java/org/apache/airavata/gfac/bes/handlers/AbstractSMSHandler.java
@@ -26,7 +26,7 @@ import java.io.StringWriter;
import java.util.Properties;
import org.apache.airavata.registry.cpi.AppCatalogException;
-import org.apache.airavata.gfac.GFacException;
+import org.apache.airavata.gfac.core.GFacException;
import org.apache.airavata.gfac.bes.security.UNICORESecurityContext;
import org.apache.airavata.gfac.bes.security.X509SecurityContext;
import org.apache.airavata.gfac.bes.utils.BESConstants;
http://git-wip-us.apache.org/repos/asf/airavata/blob/2f3da010/modules/gfac/gfac-bes/src/main/java/org/apache/airavata/gfac/bes/provider/impl/BESProvider.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-bes/src/main/java/org/apache/airavata/gfac/bes/provider/impl/BESProvider.java b/modules/gfac/gfac-bes/src/main/java/org/apache/airavata/gfac/bes/provider/impl/BESProvider.java
index 19f4e3b..b166593 100644
--- a/modules/gfac/gfac-bes/src/main/java/org/apache/airavata/gfac/bes/provider/impl/BESProvider.java
+++ b/modules/gfac/gfac-bes/src/main/java/org/apache/airavata/gfac/bes/provider/impl/BESProvider.java
@@ -25,7 +25,7 @@ import java.util.Map;
import org.apache.airavata.registry.cpi.AppCatalogException;
import org.apache.airavata.common.exception.ApplicationSettingsException;
-import org.apache.airavata.gfac.GFacException;
+import org.apache.airavata.gfac.core.GFacException;
import org.apache.airavata.gfac.bes.security.UNICORESecurityContext;
import org.apache.airavata.gfac.bes.security.X509SecurityContext;
import org.apache.airavata.gfac.bes.utils.BESConstants;
http://git-wip-us.apache.org/repos/asf/airavata/blob/2f3da010/modules/gfac/gfac-bes/src/main/java/org/apache/airavata/gfac/bes/security/UNICORESecurityContext.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-bes/src/main/java/org/apache/airavata/gfac/bes/security/UNICORESecurityContext.java b/modules/gfac/gfac-bes/src/main/java/org/apache/airavata/gfac/bes/security/UNICORESecurityContext.java
index f2ec94e..1593e41 100644
--- a/modules/gfac/gfac-bes/src/main/java/org/apache/airavata/gfac/bes/security/UNICORESecurityContext.java
+++ b/modules/gfac/gfac-bes/src/main/java/org/apache/airavata/gfac/bes/security/UNICORESecurityContext.java
@@ -29,8 +29,8 @@ import java.util.Set;
import org.apache.airavata.common.exception.ApplicationSettingsException;
import org.apache.airavata.common.utils.ServerSettings;
import org.apache.airavata.credential.store.store.CredentialReader;
-import org.apache.airavata.gfac.GFacException;
-import org.apache.airavata.gfac.RequestData;
+import org.apache.airavata.gfac.core.GFacException;
+import org.apache.airavata.gfac.core.RequestData;
import org.apache.airavata.gfac.bes.utils.BESConstants;
import org.apache.airavata.gfac.bes.utils.SecurityUtils;
import org.apache.airavata.gfac.core.provider.GFacProviderException;
http://git-wip-us.apache.org/repos/asf/airavata/blob/2f3da010/modules/gfac/gfac-bes/src/main/java/org/apache/airavata/gfac/bes/security/X509SecurityContext.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-bes/src/main/java/org/apache/airavata/gfac/bes/security/X509SecurityContext.java b/modules/gfac/gfac-bes/src/main/java/org/apache/airavata/gfac/bes/security/X509SecurityContext.java
index 3707ff1..7d9c754 100644
--- a/modules/gfac/gfac-bes/src/main/java/org/apache/airavata/gfac/bes/security/X509SecurityContext.java
+++ b/modules/gfac/gfac-bes/src/main/java/org/apache/airavata/gfac/bes/security/X509SecurityContext.java
@@ -26,10 +26,10 @@ import org.apache.airavata.common.utils.ServerSettings;
import org.apache.airavata.credential.store.credential.Credential;
import org.apache.airavata.credential.store.credential.impl.certificate.CertificateCredential;
import org.apache.airavata.credential.store.store.CredentialReader;
-import org.apache.airavata.gfac.AbstractSecurityContext;
-import org.apache.airavata.gfac.Constants;
-import org.apache.airavata.gfac.GFacException;
-import org.apache.airavata.gfac.RequestData;
+import org.apache.airavata.gfac.core.AbstractSecurityContext;
+import org.apache.airavata.gfac.core.Constants;
+import org.apache.airavata.gfac.core.GFacException;
+import org.apache.airavata.gfac.core.RequestData;
import org.apache.airavata.gfac.bes.utils.MyProxyLogon;
import org.bouncycastle.asn1.ASN1InputStream;
import org.bouncycastle.asn1.x500.X500Name;
@@ -137,7 +137,7 @@ public class X509SecurityContext extends AbstractSecurityContext {
* 1. Try creating credentials using certificates stored in the credential store
* 2. If 1 fails use user name and password to create credentials
* @return x509credentials (from CANL security API)
- * @throws org.apache.airavata.gfac.GFacException If an error occurred while creating credentials.
+ * @throws GFacException If an error occurred while creating credentials.
* @throws org.apache.airavata.common.exception.ApplicationSettingsException
*/
public X509Credential getX509Credentials() throws GFacException, ApplicationSettingsException {
@@ -234,7 +234,7 @@ public class X509SecurityContext extends AbstractSecurityContext {
/**
* Gets the default proxy certificate.
* @return Default my proxy credentials.
- * @throws org.apache.airavata.gfac.GFacException If an error occurred while retrieving credentials.
+ * @throws GFacException If an error occurred while retrieving credentials.
* @throws org.apache.airavata.common.exception.ApplicationSettingsException
*/
public X509Credential getDefaultCredentials() throws GFacException, ApplicationSettingsException{
http://git-wip-us.apache.org/repos/asf/airavata/blob/2f3da010/modules/gfac/gfac-bes/src/main/java/org/apache/airavata/gfac/bes/utils/DataTransferrer.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-bes/src/main/java/org/apache/airavata/gfac/bes/utils/DataTransferrer.java b/modules/gfac/gfac-bes/src/main/java/org/apache/airavata/gfac/bes/utils/DataTransferrer.java
index d70e4b1..623a0b6 100644
--- a/modules/gfac/gfac-bes/src/main/java/org/apache/airavata/gfac/bes/utils/DataTransferrer.java
+++ b/modules/gfac/gfac-bes/src/main/java/org/apache/airavata/gfac/bes/utils/DataTransferrer.java
@@ -31,7 +31,7 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
-import org.apache.airavata.gfac.Constants;
+import org.apache.airavata.gfac.core.Constants;
import org.apache.airavata.gfac.core.context.JobExecutionContext;
import org.apache.airavata.gfac.core.provider.GFacProviderException;
import org.apache.airavata.model.appcatalog.appdeployment.ApplicationDeploymentDescription;
@@ -39,8 +39,6 @@ import org.apache.airavata.model.appcatalog.appinterface.DataType;
import org.apache.airavata.model.appcatalog.appinterface.InputDataObjectType;
import org.apache.airavata.model.appcatalog.appinterface.OutputDataObjectType;
import org.apache.airavata.model.workspace.experiment.TaskDetails;
-import org.apache.commons.io.FileUtils;
-import org.apache.commons.io.FilenameUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
http://git-wip-us.apache.org/repos/asf/airavata/blob/2f3da010/modules/gfac/gfac-bes/src/main/java/org/apache/airavata/gfac/bes/utils/SecurityUtils.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-bes/src/main/java/org/apache/airavata/gfac/bes/utils/SecurityUtils.java b/modules/gfac/gfac-bes/src/main/java/org/apache/airavata/gfac/bes/utils/SecurityUtils.java
index ede44d4..aba485c 100644
--- a/modules/gfac/gfac-bes/src/main/java/org/apache/airavata/gfac/bes/utils/SecurityUtils.java
+++ b/modules/gfac/gfac-bes/src/main/java/org/apache/airavata/gfac/bes/utils/SecurityUtils.java
@@ -38,8 +38,8 @@ import javax.security.auth.x500.X500Principal;
import org.apache.airavata.common.exception.ApplicationSettingsException;
import org.apache.airavata.common.utils.ServerSettings;
import org.apache.airavata.credential.store.store.CredentialReader;
-import org.apache.airavata.gfac.GFacException;
-import org.apache.airavata.gfac.RequestData;
+import org.apache.airavata.gfac.core.GFacException;
+import org.apache.airavata.gfac.core.RequestData;
import org.apache.airavata.gfac.bes.security.UNICORESecurityContext;
import org.apache.airavata.gfac.bes.security.X509SecurityContext;
import org.apache.airavata.gfac.core.context.JobExecutionContext;
http://git-wip-us.apache.org/repos/asf/airavata/blob/2f3da010/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/AbstractSecurityContext.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/AbstractSecurityContext.java b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/AbstractSecurityContext.java
deleted file mode 100644
index 36d7296..0000000
--- a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/AbstractSecurityContext.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- *
- * 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;
-
-/**
- * User: AmilaJ (amilaj@apache.org)
- * Date: 6/26/13
- * Time: 4:33 PM
- */
-
-import java.io.Serializable;
-
-import org.apache.airavata.credential.store.store.CredentialReader;
-import org.apache.airavata.gfac.SecurityContext;
-
-/**
- * Abstract implementation of the security context.
- */
-public abstract class AbstractSecurityContext implements SecurityContext, Serializable {
-
- private CredentialReader credentialReader;
- private RequestData requestData;
-
- public AbstractSecurityContext(CredentialReader credentialReader, RequestData requestData) {
- this.credentialReader = credentialReader;
- this.requestData = requestData;
- }
- public AbstractSecurityContext() {
-
- }
-
- public CredentialReader getCredentialReader() {
- return credentialReader;
- }
-
- public RequestData getRequestData() {
- return requestData;
- }
-}
http://git-wip-us.apache.org/repos/asf/airavata/blob/2f3da010/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/Constants.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/Constants.java b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/Constants.java
deleted file mode 100644
index 73ff677..0000000
--- a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/Constants.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- *
- * 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;
-
-public class Constants {
- public static final String XPATH_EXPR_GLOBAL_INFLOW_HANDLERS = "/GFac/GlobalHandlers/InHandlers/Handler";
- public static final String XPATH_EXPR_GLOBAL_OUTFLOW_HANDLERS = "/GFac/GlobalHandlers/OutHandlers/Handler";
- public static final String XPATH_EXPR_DAEMON_HANDLERS = "/GFac/DaemonHandlers/Handler";
-
- public static final String XPATH_EXPR_APPLICATION_HANDLERS_START = "/GFac/Application[@name='";
- public static final String XPATH_EXPR_APPLICATION_INFLOW_HANDLERS_END = "']/InHandlers/Handler";
- public static final String XPATH_EXPR_APPLICATION_OUTFLOW_HANDLERS_END = "']/OutHandlers/Handler";
- public static final String XPATH_EXPR_APPLICATION_PROVIDER = "']/OutHandlers/Handler";
-
-
- public static final String XPATH_EXPR_PROVIDER_HANDLERS_START = "/GFac/Provider[@class='";
- public static final String XPATH_EXPR_PROVIDER_ON_HOST = "/GFac/Provider[@host='";
- public static final String XPATH_EXPR_PROVIDER_ON_SUBMISSION = "/GFac/Provider[@submission='";
- public static final String XPATH_EXPR_PROVIDER_INFLOW_HANDLERS_END = "']/InHandlers/Handler";
- public static final String XPATH_EXPR_PROVIDER_OUTFLOW_HANDLERS_END = "']/OutHandlers/Handler";
-
- public static final String GFAC_CONFIG_CLASS_ATTRIBUTE = "class";
- public static final String GFAC_CONFIG_SECURITY_ATTRIBUTE = "security";
- public static final String GFAC_CONFIG_SUBMISSION_ATTRIBUTE = "submission";
- public static final String GFAC_CONFIG_EXECUTION_MODE_ATTRIBUTE = "executionMode";
- public static final String GFAC_CONFIG_APPLICATION_NAME_ATTRIBUTE = "class";
- public static final String NEWLINE = System.getProperty("line.separator");
- public static final String INPUT_DATA_DIR_VAR_NAME = "input";
- public static final String OUTPUT_DATA_DIR_VAR_NAME = "output";
- public static final int DEFAULT_GSI_FTP_PORT = 2811;
- public static final String _127_0_0_1 = "127.0.0.1";
- public static final String LOCALHOST = "localhost";
-
- public static final String PROP_WORKFLOW_INSTANCE_ID = "workflow.instance.id";
- public static final String PROP_WORKFLOW_NODE_ID = "workflow.node.id";
- public static final String PROP_BROKER_URL = "broker.url";
- public static final String PROP_TOPIC = "topic";
- public static final String SPACE = " ";
- public static final int COMMAND_EXECUTION_TIMEOUT = 5;
- public static final String EXECUTABLE_NAME = "run.sh";
-
- public static final String TRUSTED_CERT_LOCATION = "trusted.cert.location";
- public static final String TRUSTED_CERTIFICATE_SYSTEM_PROPERTY = "X509_CERT_DIR";
- public static final String MYPROXY_SERVER = "myproxy.server";
- public static final String MYPROXY_SERVER_PORT = "myproxy.port";
- public static final String MYPROXY_USER = "myproxy.username";
- public static final String MYPROXY_PASS = "myproxy.password";
- public static final String MYPROXY_LIFE = "myproxy.life";
- /*
- * SSH properties
- */
- public static final String SSH_PRIVATE_KEY = "private.ssh.key";
- public static final String SSH_PUBLIC_KEY = "public.ssh.key";
- public static final String SSH_PRIVATE_KEY_PASS = "ssh.keypass";
- public static final String SSH_USER_NAME = "ssh.username";
- public static final String SSH_PASSWORD = "ssh.password";
- public static final String PROPERTY = "property";
- public static final String NAME = "name";
- public static final String VALUE = "value";
- public static final String OUTPUT_DATA_DIR = "output.location";
-
-
-}
http://git-wip-us.apache.org/repos/asf/airavata/blob/2f3da010/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/ExecutionMode.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/ExecutionMode.java b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/ExecutionMode.java
deleted file mode 100644
index 63f2523..0000000
--- a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/ExecutionMode.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- *
- * 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;
-
-
-/**
- * These are the different modes of execution chains in gfac
- * if the mode is SYNCHRONOUS then gfac will waits until the provider invoke mthod returns and then
- * invoke the out handlers explicitly, otherwise gfac will not invoke out hanlders, implementation
- * has to handler when to invoke out handlers, and default execution mode is synchronous.
- */
-public enum ExecutionMode {
- SYNCHRONOUS,ASYNCHRONOUS;
-
- public static ExecutionMode fromString(String mode){
- if("async".equals(mode) || "asynchronous".equals(mode)){
- return ExecutionMode.ASYNCHRONOUS;
- }
- return ExecutionMode.SYNCHRONOUS;
- }
-}
http://git-wip-us.apache.org/repos/asf/airavata/blob/2f3da010/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/GFacConfiguration.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/GFacConfiguration.java b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/GFacConfiguration.java
deleted file mode 100644
index 60e9c71..0000000
--- a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/GFacConfiguration.java
+++ /dev/null
@@ -1,289 +0,0 @@
-/*
- *
- * 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;
-
-import java.io.File;
-import java.io.IOException;
-import java.net.URL;
-import java.util.*;
-
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-import javax.xml.xpath.XPath;
-import javax.xml.xpath.XPathConstants;
-import javax.xml.xpath.XPathExpression;
-import javax.xml.xpath.XPathExpressionException;
-import javax.xml.xpath.XPathFactory;
-
-import org.apache.airavata.gfac.core.handler.GFacHandlerConfig;
-import org.apache.airavata.gfac.core.provider.GFacProviderConfig;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.w3c.dom.*;
-import org.xml.sax.SAXException;
-
-public class GFacConfiguration {
- public static final Logger log = LoggerFactory.getLogger(GFacConfiguration.class);
-
-
-// private AiravataAPI airavataAPI;
-
- private static Document handlerDoc;
- // Keep list of full qualified class names of GFac handlers which should invoked before
- // the provider
- private List<GFacHandlerConfig> inHandlers = new ArrayList<GFacHandlerConfig>();
-
- // Keep list of full qualified class names of GFac handlers which should invoked after
- // the provider
- private List<GFacHandlerConfig> outHandlers = new ArrayList<GFacHandlerConfig>();
-
- public ExecutionMode executionMode = ExecutionMode.SYNCHRONOUS; // default execution mode is SYNCHRONOUS
-
- public GFacConfiguration() {
- }
-
-// public AiravataAPI getAiravataAPI() {
-// return airavataAPI;
-// }
-
-
- public static File getConfigFile() {
- URL resource = GFacConfiguration.class.getClassLoader().getResource(org.apache.airavata.common.utils.Constants.GFAC_CONFIG_XML);
- File gfacConfigFile = null;
- if (resource != null) {
- gfacConfigFile = new File(resource.getPath());
- }
- return gfacConfigFile;
- }
- public List<GFacHandlerConfig> getInHandlers() {
- //This will avoid the misconfiguration done by user in gfac-config.xml
- return removeDuplicateWithOrder(inHandlers);
- }
-
- public List<GFacHandlerConfig> getOutHandlers() {
- //This will avoid the misconfiguration done by user in gfac-config.xml
- return removeDuplicateWithOrder(outHandlers);
- }
- public void setInHandlers(List<GFacHandlerConfig> inHandlers) {
- this.inHandlers = inHandlers;
- }
-
- public void setOutHandlers(List<GFacHandlerConfig> outHandlers) {
- this.outHandlers = outHandlers;
- }
-
- public void setInHandlers(String providerName, String applicationName) {
- try {
- this.inHandlers = getHandlerConfig(handlerDoc, Constants.XPATH_EXPR_GLOBAL_INFLOW_HANDLERS, Constants.GFAC_CONFIG_CLASS_ATTRIBUTE);
- if (applicationName != null) {
- String xPath = Constants.XPATH_EXPR_APPLICATION_HANDLERS_START + applicationName + Constants.XPATH_EXPR_APPLICATION_INFLOW_HANDLERS_END;
- List<GFacHandlerConfig> handlers = getHandlerConfig(handlerDoc, xPath, Constants.GFAC_CONFIG_CLASS_ATTRIBUTE);
- this.inHandlers.addAll(handlers);
- }
- if (providerName != null) {
- String xPath = Constants.XPATH_EXPR_PROVIDER_HANDLERS_START + providerName + Constants.XPATH_EXPR_PROVIDER_INFLOW_HANDLERS_END;
- List<GFacHandlerConfig> handlers = getHandlerConfig(handlerDoc, xPath, Constants.GFAC_CONFIG_APPLICATION_NAME_ATTRIBUTE);
- this.inHandlers.addAll(handlers);
- }
- } catch (XPathExpressionException e) {
- new GFacException("Error parsing Handler Configuration", e);
- }
- }
-
- public void setOutHandlers(String providerName, String applicationName) {
- try {
- this.outHandlers = getHandlerConfig(handlerDoc, Constants.XPATH_EXPR_GLOBAL_OUTFLOW_HANDLERS, Constants.GFAC_CONFIG_CLASS_ATTRIBUTE);
- if (applicationName != null) {
- String xPath = Constants.XPATH_EXPR_APPLICATION_HANDLERS_START + applicationName + Constants.XPATH_EXPR_APPLICATION_OUTFLOW_HANDLERS_END;
- List<GFacHandlerConfig> handlers = getHandlerConfig(handlerDoc, xPath, Constants.GFAC_CONFIG_CLASS_ATTRIBUTE);
- this.outHandlers.addAll(handlers);
- }
- if(providerName != null) {
- String xPath = Constants.XPATH_EXPR_PROVIDER_HANDLERS_START + providerName + Constants.XPATH_EXPR_PROVIDER_OUTFLOW_HANDLERS_END;
- List<GFacHandlerConfig> handlers = getHandlerConfig(handlerDoc, xPath, Constants.GFAC_CONFIG_CLASS_ATTRIBUTE);
- this.outHandlers.addAll(handlers);
- }
- } catch (XPathExpressionException e) {
- new GFacException("Error parsing Handler Configuration", e);
- }
- }
-
- /**
- * Parse GFac configuration file and populate GFacConfiguration object. XML configuration
- * file for GFac will look like below.
- * <p/>
- * <GFac>
- * <GlobalHandlers>
- * <InHandlers>
- * <Handler class="org.apache.airavata.gfac.GlobalHandler1">
- * </InHandler>
- * <OutHandlers>
- * <Handler class="org.apache.airavata.gfac.GlabalHandler2">
- * </OutHandlers>
- * </GlobalHandlers>
- * <Provider class="org.apache.airavata.gfac.providers.LocalProvider" host="LocalHost">
- * <InHandlers>
- * <Handler class="org.apache.airavata.gfac.handlers.LocalEvenSetupHandler">
- * </InHandlers>
- * <OutHandlers>
- * <Handler>org.apache.airavata.LocalOutHandler1</Handler>
- * </OutHandlers>
- * </Provider>
- * <Application name="UltraScan">
- * <InHandlers>
- * <Handler class="org.apache.airavata.gfac.handlers.LocalEvenSetupHandler">
- * </InHandlers>
- * <OutHandlers>
- * <Handler class="org.apache.airavata.gfac.LocalOutHandler1">
- * </OutHandlers>
- * </Application>
- * </GFac>
- *
- * @param configFile configuration file
- * @return GFacConfiguration object.
- */
- //FIXME
- public static GFacConfiguration create(File configFile, Properties configurationProperties) throws ParserConfigurationException, IOException, SAXException, XPathExpressionException {
- DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();
- DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder();
- handlerDoc = docBuilder.parse(configFile);
- return new GFacConfiguration();
- }
-
- private static String xpathGetText(Document doc, String expression) throws XPathExpressionException {
- XPathFactory xPathFactory = XPathFactory.newInstance();
- XPath xPath = xPathFactory.newXPath();
- XPathExpression expr = xPath.compile(expression);
-
- return (String) expr.evaluate(doc, XPathConstants.STRING);
- }
-
- /**
- * Select matching node set and extract specified attribute value.
- *
- * @param doc XML document
- * @param expression expression to match node set
- * @param attribute name of the attribute to extract
- * @return list of attribute values.
- * @throws XPathExpressionException
- */
- public static List<GFacHandlerConfig> getHandlerConfig(Document doc, String expression, String attribute) throws XPathExpressionException {
- XPathFactory xPathFactory = XPathFactory.newInstance();
- XPath xPath = xPathFactory.newXPath();
- XPathExpression expr = xPath.compile(expression);
-
- NodeList nl = (NodeList) expr.evaluate(doc, XPathConstants.NODESET);
- List<GFacHandlerConfig> gFacHandlerConfigs = new ArrayList<GFacHandlerConfig>();
- Properties properties = new Properties();
- String className = "";
- for (int i = 0; i < nl.getLength(); i++) {
- className = ((Element) nl.item(i)).getAttribute(attribute);
- NodeList childNodes = (nl.item(i)).getChildNodes();
- for(int j = 0;j < childNodes.getLength();j++){
- if(Constants.PROPERTY.equals(childNodes.item(j).getNodeName())) {
- String name = ((Element) childNodes.item(j)).getAttribute(Constants.NAME);
- String value = ((Element) childNodes.item(j)).getAttribute(Constants.VALUE);
- properties.put(name, value);
- }
- }
- GFacHandlerConfig gFacHandlerConfig = new GFacHandlerConfig(properties,className);
- gFacHandlerConfigs.add(gFacHandlerConfig);
- }
- return gFacHandlerConfigs;
- }
-
- public static List<GFacProviderConfig> getProviderConfig(Document doc, String expression, String attribute) throws XPathExpressionException {
- XPathFactory xPathFactory = XPathFactory.newInstance();
- XPath xPath = xPathFactory.newXPath();
- XPathExpression expr = xPath.compile(expression);
-
- NodeList nl = (NodeList) expr.evaluate(doc, XPathConstants.NODESET);
- List<GFacProviderConfig> gFacProviderConfigs = new ArrayList<GFacProviderConfig>();
- Map<String, String> properties = new HashMap<String, String>();
- String className = "";
- for (int i = 0; i < nl.getLength(); i++) {
- className = ((Element) nl.item(i)).getAttribute(attribute);
- if (className != null && !className.equals("")) {
- NodeList childNodes = (nl.item(i)).getChildNodes();
- for (int j = 0; j < childNodes.getLength(); j++) {
- if (Constants.PROPERTY.equals(childNodes.item(j).getNodeName())) {
- String name = ((Element) childNodes.item(j)).getAttribute(Constants.NAME);
- String value = ((Element) childNodes.item(j)).getAttribute(Constants.VALUE);
- properties.put(name, value);
- }
- }
- GFacProviderConfig gFacProviderConfig = new GFacProviderConfig(properties,className);
- gFacProviderConfigs.add(gFacProviderConfig);
- }
- }
- return gFacProviderConfigs;
- }
-
- public static String getAttributeValue(Document doc, String expression, String attribute) throws XPathExpressionException {
- XPathFactory xPathFactory = XPathFactory.newInstance();
- XPath xPath = xPathFactory.newXPath();
- XPathExpression expr = xPath.compile(expression);
-
- NodeList nl = (NodeList) expr.evaluate(doc, XPathConstants.NODESET);
- String className = null;
- for (int i = 0; i < nl.getLength(); i++) {
- className = ((Element) nl.item(i)).getAttribute(attribute);
- break;
- }
- return className;
- }
-
- public static GFacConfiguration create(Properties configProps) {
- return null;
- }
-
- private static List removeDuplicateWithOrder(List arlList) {
- Set set = new HashSet();
- List newList = new ArrayList();
- for (Iterator iter = arlList.iterator(); iter.hasNext(); ) {
- Object element = iter.next();
- if (set.add(element))
- newList.add(element);
- }
- arlList.clear();
- arlList.addAll(newList);
- return arlList;
- }
- public static List<GFacHandlerConfig> getDaemonHandlers(File configFile)throws ParserConfigurationException, IOException, SAXException, XPathExpressionException{
- DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();
- DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder();
- handlerDoc = docBuilder.parse(configFile);
- return getHandlerConfig(handlerDoc, Constants.XPATH_EXPR_DAEMON_HANDLERS, Constants.GFAC_CONFIG_CLASS_ATTRIBUTE);
- }
- public static Document getHandlerDoc() {
- return handlerDoc;
- }
-
- public ExecutionMode getExecutionMode() {
- return executionMode;
- }
-
- public void setExecutionMode(ExecutionMode executionMode) {
- this.executionMode = executionMode;
- }
-}
http://git-wip-us.apache.org/repos/asf/airavata/blob/2f3da010/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/GFacException.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/GFacException.java b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/GFacException.java
deleted file mode 100644
index ce11e8d..0000000
--- a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/GFacException.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- *
- * 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;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class GFacException extends Exception {
- private static final Logger log = LoggerFactory.getLogger(GFacException.class);
-
- /**
- *
- */
- private static final long serialVersionUID = 1L;
-
- public GFacException(String s) {
- super(s);
- }
-
- public GFacException(Exception e) {
- super(e);
- log.error(e.getMessage(),e);
- }
-
- public GFacException(String s, Throwable throwable) {
- super(s, throwable);
- log.error(s,throwable);
- }
-}
http://git-wip-us.apache.org/repos/asf/airavata/blob/2f3da010/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/JobSubmissionFault.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/JobSubmissionFault.java b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/JobSubmissionFault.java
deleted file mode 100644
index b211e2f..0000000
--- a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/JobSubmissionFault.java
+++ /dev/null
@@ -1,98 +0,0 @@
-/*
- *
- * 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;
-
-import org.apache.airavata.gfac.core.context.JobExecutionContext;
-import org.apache.airavata.gfac.core.provider.GFacProviderException;
-
-// TODO review this class - Not sure some of the attributes are actually
-// needed
-public class JobSubmissionFault extends GFacProviderException {
-
- // TODO why we need following ?
- //public static final String JOB_CANCEL = "JOB_CANCEL";
-
- //public static final String JOB_FAILED = "JOB_FAILED";
-
- private String reason;
- private String contact;
- private int gramErrorCode;
- private String rsl;
- private String host;
-
- public JobSubmissionFault(Throwable cause, String submitHost, String contact, String rsl,
- JobExecutionContext jobExecutionContext, String reason, int errorCode) {
- super(cause.getMessage(), cause);
-
- this.host = submitHost;
- this.contact = contact;
- this.rsl = rsl;
- this.reason = reason;
- this.gramErrorCode = errorCode;
- }
-
- public void setReason(String reason) {
- this.reason = reason;
- }
-
- // TODO why we need this ?
- public void sendFaultNotification(String message,
- JobExecutionContext jobExecutionContext, Exception e,
- String... additionalExceptiondata) {
-
- }
-
- public String getReason() {
- return reason;
- }
-
- public String getContact() {
- return contact;
- }
-
- public void setContact(String contact) {
- this.contact = contact;
- }
-
- public int getGramErrorCode() {
- return gramErrorCode;
- }
-
- public void setGramErrorCode(int gramErrorCode) {
- this.gramErrorCode = gramErrorCode;
- }
-
- public String getRsl() {
- return rsl;
- }
-
- public void setRsl(String rsl) {
- this.rsl = rsl;
- }
-
- public String getHost() {
- return host;
- }
-
- public void setHost(String host) {
- this.host = host;
- }
-}
http://git-wip-us.apache.org/repos/asf/airavata/blob/2f3da010/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/RequestData.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/RequestData.java b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/RequestData.java
deleted file mode 100644
index 000ea7d..0000000
--- a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/RequestData.java
+++ /dev/null
@@ -1,150 +0,0 @@
-/*
- *
- * 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;
-
-/**
- * User: AmilaJ (amilaj@apache.org)
- * Date: 6/28/13
- * Time: 3:28 PM
- */
-
-import org.apache.airavata.common.exception.ApplicationSettingsException;
-import org.apache.airavata.common.utils.ServerSettings;
-
-/**
- * Encapsulates GFac specific data that are coming in the request.
- */
-public class RequestData {
-
- private static final int DEFAULT_LIFE_TIME = 3600;
- private static final int DEFAULT_MY_PROXY_PORT = 7512;
-
- private String tokenId;
- private String requestUser;
- private String gatewayId;
-
- private String myProxyServerUrl = null;
- private int myProxyPort = 0;
- private String myProxyUserName = null;
- private String myProxyPassword = null;
- private int myProxyLifeTime = DEFAULT_LIFE_TIME;
-
-
-
-
- public RequestData() {
- }
-
- public RequestData(String gatewayId) {
- this.gatewayId = gatewayId;
- }
-
- public RequestData(String tokenId, String requestUser, String gatewayId) {
- this.tokenId = tokenId;
- this.requestUser = requestUser;
- this.gatewayId = gatewayId;
- }
-
- public String getTokenId() {
- return tokenId;
- }
-
- public void setTokenId(String tokenId) {
- this.tokenId = tokenId;
- }
-
- public String getRequestUser() {
- return requestUser;
- }
-
- public void setRequestUser(String requestUser) {
- this.requestUser = requestUser;
- }
-
- public String getGatewayId() {
- return gatewayId;
- }
-
- public void setGatewayId(String gatewayId) {
- this.gatewayId = gatewayId;
- }
-
- public String getMyProxyServerUrl() throws ApplicationSettingsException {
- if (myProxyServerUrl == null) {
- myProxyServerUrl = ServerSettings.getSetting(Constants.MYPROXY_SERVER);
- }
- return myProxyServerUrl;
- }
-
- public void setMyProxyServerUrl(String myProxyServerUrl) {
- this.myProxyServerUrl = myProxyServerUrl;
- }
-
- public int getMyProxyPort() {
-
- if (myProxyPort == 0) {
- String sPort = ServerSettings.getSetting(Constants.MYPROXY_SERVER_PORT, Integer.toString(DEFAULT_MY_PROXY_PORT));
- myProxyPort = Integer.parseInt(sPort);
- }
-
- return myProxyPort;
- }
-
- public void setMyProxyPort(int myProxyPort) {
- this.myProxyPort = myProxyPort;
- }
-
- public String getMyProxyUserName() throws ApplicationSettingsException {
- if (myProxyUserName == null) {
- myProxyUserName = ServerSettings.getSetting(Constants.MYPROXY_USER);
- }
-
- return myProxyUserName;
- }
-
- public void setMyProxyUserName(String myProxyUserName) {
- this.myProxyUserName = myProxyUserName;
- }
-
- public String getMyProxyPassword() throws ApplicationSettingsException {
-
- if (myProxyPassword == null) {
- myProxyPassword = ServerSettings.getSetting(Constants.MYPROXY_PASS);
- }
-
- return myProxyPassword;
- }
-
- public int getMyProxyLifeTime() {
- String life = ServerSettings.getSetting(Constants.MYPROXY_LIFE,Integer.toString(myProxyLifeTime));
- myProxyLifeTime = Integer.parseInt(life);
- return myProxyLifeTime;
- }
-
- public void setMyProxyLifeTime(int myProxyLifeTime) {
- this.myProxyLifeTime = myProxyLifeTime;
- }
-
- public void setMyProxyPassword(String myProxyPassword) {
- this.myProxyPassword = myProxyPassword;
- }
-}
http://git-wip-us.apache.org/repos/asf/airavata/blob/2f3da010/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/Scheduler.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/Scheduler.java b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/Scheduler.java
deleted file mode 100644
index c9a1ce0..0000000
--- a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/Scheduler.java
+++ /dev/null
@@ -1,231 +0,0 @@
-/*
- *
- * 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;
-
-import org.apache.airavata.registry.cpi.AppCatalog;
-import org.apache.airavata.registry.cpi.AppCatalogException;
-import org.apache.airavata.gfac.core.context.JobExecutionContext;
-import org.apache.airavata.gfac.core.provider.GFacProvider;
-import org.apache.airavata.gfac.core.provider.GFacProviderConfig;
-import org.apache.airavata.gfac.core.provider.GFacProviderException;
-import org.apache.airavata.gfac.core.GFacUtils;
-import org.apache.airavata.model.appcatalog.computeresource.JobSubmissionInterface;
-import org.apache.airavata.model.appcatalog.computeresource.JobSubmissionProtocol;
-import org.apache.airavata.model.appcatalog.computeresource.LOCALSubmission;
-import org.apache.airavata.model.appcatalog.computeresource.SSHJobSubmission;
-import org.apache.airavata.model.appcatalog.computeresource.UnicoreJobSubmission;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.xml.sax.SAXException;
-
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-import javax.xml.xpath.XPathExpressionException;
-
-import java.io.File;
-import java.io.IOException;
-import java.net.URL;
-import java.util.List;
-
-
-/**
- * Scheduler decides the execution order of handlers based on application description. In addition
- * to that scheduler decides which provider to invoke at the end. Scheduler will set
- * provider instance and in/out handler chains in JobExecutionContext.
- */
-public class Scheduler {
- private static Logger log = LoggerFactory.getLogger(Scheduler.class);
-
- /**
- * Decide which provider to use and execution sequence of handlers based on job request and
- * job configuration.
- * @param jobExecutionContext containing job request as well as all the configurations.
- */
- public static void schedule(JobExecutionContext jobExecutionContext) throws GFacException{
- // Current implementation only support static handler sequence.
- jobExecutionContext.setProvider(getProvider(jobExecutionContext));
- // TODO: Selecting the provider based on application description.
- jobExecutionContext.getGFacConfiguration().setInHandlers(jobExecutionContext.getProvider().getClass().getName(),
- jobExecutionContext.getApplicationName());
- jobExecutionContext.getGFacConfiguration().setOutHandlers(jobExecutionContext.getProvider().getClass().getName(),
- jobExecutionContext.getApplicationName());
- jobExecutionContext.getGFacConfiguration().setExecutionMode(getExecutionMode(jobExecutionContext));
- }
-
- /**
- * Figure out which provider to use based on application configuration.
- * @param jobExecutionContext containing all the required configurations.
- * @return GFacProvider instance.
- */
- private static GFacProvider getProvider(JobExecutionContext jobExecutionContext) throws GFacException {
- String applicationName = jobExecutionContext.getApplicationName();
-
- URL resource = Scheduler.class.getClassLoader().getResource(org.apache.airavata.common.utils.Constants.GFAC_CONFIG_XML);
- DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();
- DocumentBuilder docBuilder = null;
- Document handlerDoc = null;
- try {
- docBuilder = docBuilderFactory.newDocumentBuilder();
- handlerDoc = docBuilder.parse(new File(resource.getPath()));
- } catch (ParserConfigurationException e) {
- throw new GFacException(e);
- } catch (SAXException e) {
- throw new GFacException(e);
- } catch (IOException e) {
- throw new GFacException(e);
- }
- GFacProviderConfig s = null;
- GFacProvider provider = null;
- List<GFacProviderConfig> aClass = null;
- String providerClassName = null;
- try {
- aClass = GFacConfiguration.getProviderConfig(handlerDoc,
- Constants.XPATH_EXPR_APPLICATION_HANDLERS_START + applicationName + "']", Constants.GFAC_CONFIG_APPLICATION_NAME_ATTRIBUTE);
- // This should be have a single element only.
- if (aClass != null && !aClass.isEmpty()) {
- s = aClass.get(0);
- Class<? extends GFacProvider> aClass1 = Class.forName(s.getClassName()).asSubclass(GFacProvider.class);
- provider = aClass1.newInstance();
- //loading the provider properties
- if(!aClass.isEmpty()){
- provider.initProperties(aClass.get(0).getProperties());
- }
- }
- // We give higher preference to applications specific provider if configured
- if (provider == null) {
-
- List<JobSubmissionInterface> jobSubmissionInterfaces = jobExecutionContext.getApplicationContext().getComputeResourceDescription().getJobSubmissionInterfaces();
- JobSubmissionProtocol jobSubmissionProtocol = jobExecutionContext.getPreferredJobSubmissionProtocol();
- SSHJobSubmission sshJobSubmission;
- LOCALSubmission localSubmission;
- UnicoreJobSubmission unicoreSubmission;
- String securityProtocol = null;
- try {
- AppCatalog appCatalog = jobExecutionContext.getAppCatalog();
- if (jobSubmissionProtocol == JobSubmissionProtocol.SSH) {
- sshJobSubmission = appCatalog.getComputeResource().getSSHJobSubmission(
- jobExecutionContext.getPreferredJobSubmissionInterface().getJobSubmissionInterfaceId());
- if (sshJobSubmission != null) {
- securityProtocol = sshJobSubmission.getSecurityProtocol().toString();
- }
- }else if (jobSubmissionProtocol == JobSubmissionProtocol.LOCAL) {
- localSubmission = appCatalog.getComputeResource().getLocalJobSubmission(jobExecutionContext.getPreferredJobSubmissionInterface().getJobSubmissionInterfaceId());
- }
- else if (jobSubmissionProtocol == JobSubmissionProtocol.UNICORE) {
- unicoreSubmission = appCatalog.getComputeResource().getUNICOREJobSubmission(jobExecutionContext.getPreferredJobSubmissionInterface().getJobSubmissionInterfaceId());
- securityProtocol = unicoreSubmission.getSecurityProtocol().toString();
- }
- List<Element> elements = GFacUtils.getElementList(GFacConfiguration.getHandlerDoc(), Constants.XPATH_EXPR_PROVIDER_ON_SUBMISSION + jobSubmissionProtocol + "']");
- for (Element element : elements) {
- String security = element.getAttribute(Constants.GFAC_CONFIG_SECURITY_ATTRIBUTE);
- if (security.equals("")) {
- providerClassName = element.getAttribute(Constants.GFAC_CONFIG_CLASS_ATTRIBUTE);
- }else if (securityProtocol != null && securityProtocol.equals(security)) {
- providerClassName = element.getAttribute(Constants.GFAC_CONFIG_CLASS_ATTRIBUTE);
- }
- }
- if (providerClassName == null) {
- throw new GFacException("Couldn't find provider class");
- }
-
- Class<? extends GFacProvider> aClass1 = Class.forName(providerClassName).asSubclass(GFacProvider.class);
- provider = aClass1.newInstance();
- //loading the provider properties
- aClass = GFacConfiguration.getProviderConfig(GFacConfiguration.getHandlerDoc(), Constants.XPATH_EXPR_PROVIDER_HANDLERS_START +
- providerClassName + "']", Constants.GFAC_CONFIG_APPLICATION_NAME_ATTRIBUTE);
- if (!aClass.isEmpty()) {
- provider.initProperties(aClass.get(0).getProperties());
- }
- } catch (AppCatalogException e) {
- throw new GFacException("Couldn't retrieve job submission protocol from app catalog ");
- }
- }
- } catch (XPathExpressionException e) {
- log.error("Error evaluating XPath expression"); //To change body of catch statement use File | Settings | File Templates.
- throw new GFacException("Error evaluating XPath expression", e);
- } catch (GFacProviderException e) {
- log.error("Error During scheduling"); //To change body of catch statement use File | Settings | File Templates.
- throw new GFacException("Error During scheduling", e);
- }catch (ClassNotFoundException e) {
- log.error("Application Provider class: " + s + "couldn't find");
- throw new GFacException("Error initializing application specific Handler: " +providerClassName , e);
- } catch (InstantiationException e) {
- log.error("Error initializing application specific Handler: " + providerClassName);
- throw new GFacException("Error initializing Handler", e);
- } catch (IllegalAccessException e) {
- log.error("Error initializing application specific Handler: " + providerClassName);
- throw new GFacException("Error initializing Handler", e);
- }
- return provider;
- }
- public static ExecutionMode getExecutionMode(JobExecutionContext jobExecutionContext)throws GFacException{
- String applicationName = jobExecutionContext.getApplicationContext().getApplicationInterfaceDescription().getApplicationName();
- URL resource = Scheduler.class.getClassLoader().getResource(org.apache.airavata.common.utils.Constants.GFAC_CONFIG_XML);
- DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();
- DocumentBuilder docBuilder = null;
- Document handlerDoc = null;
- String jobSubmissionProtocol = jobExecutionContext.getPreferredJobSubmissionProtocol().toString();
- try {
- docBuilder = docBuilderFactory.newDocumentBuilder();
- handlerDoc = docBuilder.parse(new File(resource.getPath()));
- } catch (ParserConfigurationException e) {
- throw new GFacException(e);
- } catch (SAXException e) {
- throw new GFacException(e);
- } catch (IOException e) {
- throw new GFacException(e);
- }
- GFacProviderConfig s = null;
- String executionMode = "sync";
- try {
- executionMode = GFacConfiguration.getAttributeValue(handlerDoc,
- Constants.XPATH_EXPR_APPLICATION_HANDLERS_START + applicationName + "']", Constants.GFAC_CONFIG_EXECUTION_MODE_ATTRIBUTE);
- // This should be have a single element only.
-
- if (executionMode == null || "".equals(executionMode)) {
- String hostClass = jobExecutionContext.getPreferredJobSubmissionProtocol().toString();
- executionMode = GFacConfiguration.getAttributeValue(GFacConfiguration.getHandlerDoc(), Constants.XPATH_EXPR_PROVIDER_ON_HOST + hostClass + "']", Constants.GFAC_CONFIG_EXECUTION_MODE_ATTRIBUTE);
- }
-
- if (executionMode == null || "".equals(executionMode)) {
- List<Element> elements = GFacUtils.getElementList(GFacConfiguration.getHandlerDoc(), Constants.XPATH_EXPR_PROVIDER_ON_SUBMISSION + jobSubmissionProtocol + "']");
- for (Element element : elements) {
- executionMode = element.getAttribute(Constants.GFAC_CONFIG_EXECUTION_MODE_ATTRIBUTE);
- }
- }
-
- } catch (XPathExpressionException e) {
- log.error("Error evaluating XPath expression"); //To change body of catch statement use File | Settings | File Templates.
- throw new GFacException("Error evaluating XPath expression", e);
- }
-
- return ExecutionMode.fromString(executionMode);
- }
-
-// private static HostDescription scheduleHost(List<HostDescription> registeredHosts) {
-// //todo implement an algorithm to pick a host among different hosts, ideally this could be configurable in an xml
-// return registeredHosts.get(0);
-// }
-}
http://git-wip-us.apache.org/repos/asf/airavata/blob/2f3da010/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/SecurityContext.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/SecurityContext.java b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/SecurityContext.java
deleted file mode 100644
index 71db1ad..0000000
--- a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/SecurityContext.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- *
- * 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;
-
-public interface SecurityContext {
-
-}
http://git-wip-us.apache.org/repos/asf/airavata/blob/2f3da010/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/ToolsException.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/ToolsException.java b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/ToolsException.java
deleted file mode 100644
index 8a20fcc..0000000
--- a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/ToolsException.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- *
- * 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;
-
-
-/**
- * Exception for all utilities
- */
-public class ToolsException extends GFacException {
-
- public ToolsException(String message){
- super(message,new Throwable(message));
- }
- public ToolsException(String message, Throwable cause) {
- super(message, cause);
- }
-}
http://git-wip-us.apache.org/repos/asf/airavata/blob/2f3da010/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/AbstractSecurityContext.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/AbstractSecurityContext.java b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/AbstractSecurityContext.java
new file mode 100644
index 0000000..bc9c21a
--- /dev/null
+++ b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/AbstractSecurityContext.java
@@ -0,0 +1,57 @@
+/*
+ *
+ * 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;
+
+/**
+ * User: AmilaJ (amilaj@apache.org)
+ * Date: 6/26/13
+ * Time: 4:33 PM
+ */
+
+import java.io.Serializable;
+
+import org.apache.airavata.credential.store.store.CredentialReader;
+
+/**
+ * Abstract implementation of the security context.
+ */
+public abstract class AbstractSecurityContext implements SecurityContext, Serializable {
+
+ private CredentialReader credentialReader;
+ private RequestData requestData;
+
+ public AbstractSecurityContext(CredentialReader credentialReader, RequestData requestData) {
+ this.credentialReader = credentialReader;
+ this.requestData = requestData;
+ }
+ public AbstractSecurityContext() {
+
+ }
+
+ public CredentialReader getCredentialReader() {
+ return credentialReader;
+ }
+
+ public RequestData getRequestData() {
+ return requestData;
+ }
+}
http://git-wip-us.apache.org/repos/asf/airavata/blob/2f3da010/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/Constants.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/Constants.java b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/Constants.java
new file mode 100644
index 0000000..9f89256
--- /dev/null
+++ b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/Constants.java
@@ -0,0 +1,82 @@
+/*
+ *
+ * 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;
+
+public class Constants {
+ public static final String XPATH_EXPR_GLOBAL_INFLOW_HANDLERS = "/GFac/GlobalHandlers/InHandlers/Handler";
+ public static final String XPATH_EXPR_GLOBAL_OUTFLOW_HANDLERS = "/GFac/GlobalHandlers/OutHandlers/Handler";
+ public static final String XPATH_EXPR_DAEMON_HANDLERS = "/GFac/DaemonHandlers/Handler";
+
+ public static final String XPATH_EXPR_APPLICATION_HANDLERS_START = "/GFac/Application[@name='";
+ public static final String XPATH_EXPR_APPLICATION_INFLOW_HANDLERS_END = "']/InHandlers/Handler";
+ public static final String XPATH_EXPR_APPLICATION_OUTFLOW_HANDLERS_END = "']/OutHandlers/Handler";
+ public static final String XPATH_EXPR_APPLICATION_PROVIDER = "']/OutHandlers/Handler";
+
+
+ public static final String XPATH_EXPR_PROVIDER_HANDLERS_START = "/GFac/Provider[@class='";
+ public static final String XPATH_EXPR_PROVIDER_ON_HOST = "/GFac/Provider[@host='";
+ public static final String XPATH_EXPR_PROVIDER_ON_SUBMISSION = "/GFac/Provider[@submission='";
+ public static final String XPATH_EXPR_PROVIDER_INFLOW_HANDLERS_END = "']/InHandlers/Handler";
+ public static final String XPATH_EXPR_PROVIDER_OUTFLOW_HANDLERS_END = "']/OutHandlers/Handler";
+
+ public static final String GFAC_CONFIG_CLASS_ATTRIBUTE = "class";
+ public static final String GFAC_CONFIG_SECURITY_ATTRIBUTE = "security";
+ public static final String GFAC_CONFIG_SUBMISSION_ATTRIBUTE = "submission";
+ public static final String GFAC_CONFIG_EXECUTION_MODE_ATTRIBUTE = "executionMode";
+ public static final String GFAC_CONFIG_APPLICATION_NAME_ATTRIBUTE = "class";
+ public static final String NEWLINE = System.getProperty("line.separator");
+ public static final String INPUT_DATA_DIR_VAR_NAME = "input";
+ public static final String OUTPUT_DATA_DIR_VAR_NAME = "output";
+ public static final int DEFAULT_GSI_FTP_PORT = 2811;
+ public static final String _127_0_0_1 = "127.0.0.1";
+ public static final String LOCALHOST = "localhost";
+
+ public static final String PROP_WORKFLOW_INSTANCE_ID = "workflow.instance.id";
+ public static final String PROP_WORKFLOW_NODE_ID = "workflow.node.id";
+ public static final String PROP_BROKER_URL = "broker.url";
+ public static final String PROP_TOPIC = "topic";
+ public static final String SPACE = " ";
+ public static final int COMMAND_EXECUTION_TIMEOUT = 5;
+ public static final String EXECUTABLE_NAME = "run.sh";
+
+ public static final String TRUSTED_CERT_LOCATION = "trusted.cert.location";
+ public static final String TRUSTED_CERTIFICATE_SYSTEM_PROPERTY = "X509_CERT_DIR";
+ public static final String MYPROXY_SERVER = "myproxy.server";
+ public static final String MYPROXY_SERVER_PORT = "myproxy.port";
+ public static final String MYPROXY_USER = "myproxy.username";
+ public static final String MYPROXY_PASS = "myproxy.password";
+ public static final String MYPROXY_LIFE = "myproxy.life";
+ /*
+ * SSH properties
+ */
+ public static final String SSH_PRIVATE_KEY = "private.ssh.key";
+ public static final String SSH_PUBLIC_KEY = "public.ssh.key";
+ public static final String SSH_PRIVATE_KEY_PASS = "ssh.keypass";
+ public static final String SSH_USER_NAME = "ssh.username";
+ public static final String SSH_PASSWORD = "ssh.password";
+ public static final String PROPERTY = "property";
+ public static final String NAME = "name";
+ public static final String VALUE = "value";
+ public static final String OUTPUT_DATA_DIR = "output.location";
+
+
+}
http://git-wip-us.apache.org/repos/asf/airavata/blob/2f3da010/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/ExecutionMode.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/ExecutionMode.java b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/ExecutionMode.java
new file mode 100644
index 0000000..ebaf6fc
--- /dev/null
+++ b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/ExecutionMode.java
@@ -0,0 +1,39 @@
+/*
+ *
+ * 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;
+
+
+/**
+ * These are the different modes of execution chains in gfac
+ * if the mode is SYNCHRONOUS then gfac will waits until the provider invoke mthod returns and then
+ * invoke the out handlers explicitly, otherwise gfac will not invoke out hanlders, implementation
+ * has to handler when to invoke out handlers, and default execution mode is synchronous.
+ */
+public enum ExecutionMode {
+ SYNCHRONOUS,ASYNCHRONOUS;
+
+ public static ExecutionMode fromString(String mode){
+ if("async".equals(mode) || "asynchronous".equals(mode)){
+ return ExecutionMode.ASYNCHRONOUS;
+ }
+ return ExecutionMode.SYNCHRONOUS;
+ }
+}
http://git-wip-us.apache.org/repos/asf/airavata/blob/2f3da010/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/GFac.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/GFac.java b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/GFac.java
index 584a581..a8c0d58 100644
--- a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/GFac.java
+++ b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/GFac.java
@@ -22,7 +22,6 @@ package org.apache.airavata.gfac.core;
import org.apache.airavata.registry.cpi.AppCatalog;
import org.apache.airavata.common.utils.MonitorPublisher;
-import org.apache.airavata.gfac.GFacException;
import org.apache.airavata.gfac.core.context.JobExecutionContext;
import org.apache.airavata.registry.cpi.ExperimentCatalog;
import org.apache.curator.framework.CuratorFramework;
@@ -49,7 +48,7 @@ public interface GFac {
*
* @param experimentID
* @return boolean Successful acceptence of the jobExecution returns a true value
- * @throws org.apache.airavata.gfac.GFacException
+ * @throws GFacException
*/
public boolean submitJob(String experimentID,String taskID, String gatewayID, String tokenId) throws GFacException;
http://git-wip-us.apache.org/repos/asf/airavata/blob/2f3da010/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/GFacConfiguration.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/GFacConfiguration.java b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/GFacConfiguration.java
new file mode 100644
index 0000000..ae82a72
--- /dev/null
+++ b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/GFacConfiguration.java
@@ -0,0 +1,289 @@
+/*
+ *
+ * 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 java.io.File;
+import java.io.IOException;
+import java.net.URL;
+import java.util.*;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.xpath.XPath;
+import javax.xml.xpath.XPathConstants;
+import javax.xml.xpath.XPathExpression;
+import javax.xml.xpath.XPathExpressionException;
+import javax.xml.xpath.XPathFactory;
+
+import org.apache.airavata.gfac.core.handler.GFacHandlerConfig;
+import org.apache.airavata.gfac.core.provider.GFacProviderConfig;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.w3c.dom.*;
+import org.xml.sax.SAXException;
+
+public class GFacConfiguration {
+ public static final Logger log = LoggerFactory.getLogger(GFacConfiguration.class);
+
+
+// private AiravataAPI airavataAPI;
+
+ private static Document handlerDoc;
+ // Keep list of full qualified class names of GFac handlers which should invoked before
+ // the provider
+ private List<GFacHandlerConfig> inHandlers = new ArrayList<GFacHandlerConfig>();
+
+ // Keep list of full qualified class names of GFac handlers which should invoked after
+ // the provider
+ private List<GFacHandlerConfig> outHandlers = new ArrayList<GFacHandlerConfig>();
+
+ public ExecutionMode executionMode = ExecutionMode.SYNCHRONOUS; // default execution mode is SYNCHRONOUS
+
+ public GFacConfiguration() {
+ }
+
+// public AiravataAPI getAiravataAPI() {
+// return airavataAPI;
+// }
+
+
+ public static File getConfigFile() {
+ URL resource = GFacConfiguration.class.getClassLoader().getResource(org.apache.airavata.common.utils.Constants.GFAC_CONFIG_XML);
+ File gfacConfigFile = null;
+ if (resource != null) {
+ gfacConfigFile = new File(resource.getPath());
+ }
+ return gfacConfigFile;
+ }
+ public List<GFacHandlerConfig> getInHandlers() {
+ //This will avoid the misconfiguration done by user in gfac-config.xml
+ return removeDuplicateWithOrder(inHandlers);
+ }
+
+ public List<GFacHandlerConfig> getOutHandlers() {
+ //This will avoid the misconfiguration done by user in gfac-config.xml
+ return removeDuplicateWithOrder(outHandlers);
+ }
+ public void setInHandlers(List<GFacHandlerConfig> inHandlers) {
+ this.inHandlers = inHandlers;
+ }
+
+ public void setOutHandlers(List<GFacHandlerConfig> outHandlers) {
+ this.outHandlers = outHandlers;
+ }
+
+ public void setInHandlers(String providerName, String applicationName) {
+ try {
+ this.inHandlers = getHandlerConfig(handlerDoc, Constants.XPATH_EXPR_GLOBAL_INFLOW_HANDLERS, Constants.GFAC_CONFIG_CLASS_ATTRIBUTE);
+ if (applicationName != null) {
+ String xPath = Constants.XPATH_EXPR_APPLICATION_HANDLERS_START + applicationName + Constants.XPATH_EXPR_APPLICATION_INFLOW_HANDLERS_END;
+ List<GFacHandlerConfig> handlers = getHandlerConfig(handlerDoc, xPath, Constants.GFAC_CONFIG_CLASS_ATTRIBUTE);
+ this.inHandlers.addAll(handlers);
+ }
+ if (providerName != null) {
+ String xPath = Constants.XPATH_EXPR_PROVIDER_HANDLERS_START + providerName + Constants.XPATH_EXPR_PROVIDER_INFLOW_HANDLERS_END;
+ List<GFacHandlerConfig> handlers = getHandlerConfig(handlerDoc, xPath, Constants.GFAC_CONFIG_APPLICATION_NAME_ATTRIBUTE);
+ this.inHandlers.addAll(handlers);
+ }
+ } catch (XPathExpressionException e) {
+ new GFacException("Error parsing Handler Configuration", e);
+ }
+ }
+
+ public void setOutHandlers(String providerName, String applicationName) {
+ try {
+ this.outHandlers = getHandlerConfig(handlerDoc, Constants.XPATH_EXPR_GLOBAL_OUTFLOW_HANDLERS, Constants.GFAC_CONFIG_CLASS_ATTRIBUTE);
+ if (applicationName != null) {
+ String xPath = Constants.XPATH_EXPR_APPLICATION_HANDLERS_START + applicationName + Constants.XPATH_EXPR_APPLICATION_OUTFLOW_HANDLERS_END;
+ List<GFacHandlerConfig> handlers = getHandlerConfig(handlerDoc, xPath, Constants.GFAC_CONFIG_CLASS_ATTRIBUTE);
+ this.outHandlers.addAll(handlers);
+ }
+ if(providerName != null) {
+ String xPath = Constants.XPATH_EXPR_PROVIDER_HANDLERS_START + providerName + Constants.XPATH_EXPR_PROVIDER_OUTFLOW_HANDLERS_END;
+ List<GFacHandlerConfig> handlers = getHandlerConfig(handlerDoc, xPath, Constants.GFAC_CONFIG_CLASS_ATTRIBUTE);
+ this.outHandlers.addAll(handlers);
+ }
+ } catch (XPathExpressionException e) {
+ new GFacException("Error parsing Handler Configuration", e);
+ }
+ }
+
+ /**
+ * Parse GFac configuration file and populate GFacConfiguration object. XML configuration
+ * file for GFac will look like below.
+ * <p/>
+ * <GFac>
+ * <GlobalHandlers>
+ * <InHandlers>
+ * <Handler class="org.apache.airavata.gfac.GlobalHandler1">
+ * </InHandler>
+ * <OutHandlers>
+ * <Handler class="org.apache.airavata.gfac.GlabalHandler2">
+ * </OutHandlers>
+ * </GlobalHandlers>
+ * <Provider class="org.apache.airavata.gfac.providers.LocalProvider" host="LocalHost">
+ * <InHandlers>
+ * <Handler class="org.apache.airavata.gfac.handlers.LocalEvenSetupHandler">
+ * </InHandlers>
+ * <OutHandlers>
+ * <Handler>org.apache.airavata.LocalOutHandler1</Handler>
+ * </OutHandlers>
+ * </Provider>
+ * <Application name="UltraScan">
+ * <InHandlers>
+ * <Handler class="org.apache.airavata.gfac.handlers.LocalEvenSetupHandler">
+ * </InHandlers>
+ * <OutHandlers>
+ * <Handler class="org.apache.airavata.gfac.LocalOutHandler1">
+ * </OutHandlers>
+ * </Application>
+ * </GFac>
+ *
+ * @param configFile configuration file
+ * @return GFacConfiguration object.
+ */
+ //FIXME
+ public static GFacConfiguration create(File configFile, Properties configurationProperties) throws ParserConfigurationException, IOException, SAXException, XPathExpressionException {
+ DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();
+ DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder();
+ handlerDoc = docBuilder.parse(configFile);
+ return new GFacConfiguration();
+ }
+
+ private static String xpathGetText(Document doc, String expression) throws XPathExpressionException {
+ XPathFactory xPathFactory = XPathFactory.newInstance();
+ XPath xPath = xPathFactory.newXPath();
+ XPathExpression expr = xPath.compile(expression);
+
+ return (String) expr.evaluate(doc, XPathConstants.STRING);
+ }
+
+ /**
+ * Select matching node set and extract specified attribute value.
+ *
+ * @param doc XML document
+ * @param expression expression to match node set
+ * @param attribute name of the attribute to extract
+ * @return list of attribute values.
+ * @throws XPathExpressionException
+ */
+ public static List<GFacHandlerConfig> getHandlerConfig(Document doc, String expression, String attribute) throws XPathExpressionException {
+ XPathFactory xPathFactory = XPathFactory.newInstance();
+ XPath xPath = xPathFactory.newXPath();
+ XPathExpression expr = xPath.compile(expression);
+
+ NodeList nl = (NodeList) expr.evaluate(doc, XPathConstants.NODESET);
+ List<GFacHandlerConfig> gFacHandlerConfigs = new ArrayList<GFacHandlerConfig>();
+ Properties properties = new Properties();
+ String className = "";
+ for (int i = 0; i < nl.getLength(); i++) {
+ className = ((Element) nl.item(i)).getAttribute(attribute);
+ NodeList childNodes = (nl.item(i)).getChildNodes();
+ for(int j = 0;j < childNodes.getLength();j++){
+ if(Constants.PROPERTY.equals(childNodes.item(j).getNodeName())) {
+ String name = ((Element) childNodes.item(j)).getAttribute(Constants.NAME);
+ String value = ((Element) childNodes.item(j)).getAttribute(Constants.VALUE);
+ properties.put(name, value);
+ }
+ }
+ GFacHandlerConfig gFacHandlerConfig = new GFacHandlerConfig(properties,className);
+ gFacHandlerConfigs.add(gFacHandlerConfig);
+ }
+ return gFacHandlerConfigs;
+ }
+
+ public static List<GFacProviderConfig> getProviderConfig(Document doc, String expression, String attribute) throws XPathExpressionException {
+ XPathFactory xPathFactory = XPathFactory.newInstance();
+ XPath xPath = xPathFactory.newXPath();
+ XPathExpression expr = xPath.compile(expression);
+
+ NodeList nl = (NodeList) expr.evaluate(doc, XPathConstants.NODESET);
+ List<GFacProviderConfig> gFacProviderConfigs = new ArrayList<GFacProviderConfig>();
+ Map<String, String> properties = new HashMap<String, String>();
+ String className = "";
+ for (int i = 0; i < nl.getLength(); i++) {
+ className = ((Element) nl.item(i)).getAttribute(attribute);
+ if (className != null && !className.equals("")) {
+ NodeList childNodes = (nl.item(i)).getChildNodes();
+ for (int j = 0; j < childNodes.getLength(); j++) {
+ if (Constants.PROPERTY.equals(childNodes.item(j).getNodeName())) {
+ String name = ((Element) childNodes.item(j)).getAttribute(Constants.NAME);
+ String value = ((Element) childNodes.item(j)).getAttribute(Constants.VALUE);
+ properties.put(name, value);
+ }
+ }
+ GFacProviderConfig gFacProviderConfig = new GFacProviderConfig(properties,className);
+ gFacProviderConfigs.add(gFacProviderConfig);
+ }
+ }
+ return gFacProviderConfigs;
+ }
+
+ public static String getAttributeValue(Document doc, String expression, String attribute) throws XPathExpressionException {
+ XPathFactory xPathFactory = XPathFactory.newInstance();
+ XPath xPath = xPathFactory.newXPath();
+ XPathExpression expr = xPath.compile(expression);
+
+ NodeList nl = (NodeList) expr.evaluate(doc, XPathConstants.NODESET);
+ String className = null;
+ for (int i = 0; i < nl.getLength(); i++) {
+ className = ((Element) nl.item(i)).getAttribute(attribute);
+ break;
+ }
+ return className;
+ }
+
+ public static GFacConfiguration create(Properties configProps) {
+ return null;
+ }
+
+ private static List removeDuplicateWithOrder(List arlList) {
+ Set set = new HashSet();
+ List newList = new ArrayList();
+ for (Iterator iter = arlList.iterator(); iter.hasNext(); ) {
+ Object element = iter.next();
+ if (set.add(element))
+ newList.add(element);
+ }
+ arlList.clear();
+ arlList.addAll(newList);
+ return arlList;
+ }
+ public static List<GFacHandlerConfig> getDaemonHandlers(File configFile)throws ParserConfigurationException, IOException, SAXException, XPathExpressionException{
+ DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();
+ DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder();
+ handlerDoc = docBuilder.parse(configFile);
+ return getHandlerConfig(handlerDoc, Constants.XPATH_EXPR_DAEMON_HANDLERS, Constants.GFAC_CONFIG_CLASS_ATTRIBUTE);
+ }
+ public static Document getHandlerDoc() {
+ return handlerDoc;
+ }
+
+ public ExecutionMode getExecutionMode() {
+ return executionMode;
+ }
+
+ public void setExecutionMode(ExecutionMode executionMode) {
+ this.executionMode = executionMode;
+ }
+}