Repository: airavata
Updated Branches:
  refs/heads/master cb94631e3 -> 19f9ae7b8


jglobus version update

Project: http://git-wip-us.apache.org/repos/asf/airavata/repo
Commit: http://git-wip-us.apache.org/repos/asf/airavata/commit/fa529589
Tree: http://git-wip-us.apache.org/repos/asf/airavata/tree/fa529589
Diff: http://git-wip-us.apache.org/repos/asf/airavata/diff/fa529589

Branch: refs/heads/master
Commit: fa52958905e3c849083fb2f2f6824f99a4408678
Parents: 7a4f202
Author: msmemon <[email protected]>
Authored: Fri Sep 26 17:43:45 2014 +0200
Committer: msmemon <[email protected]>
Committed: Fri Sep 26 17:51:18 2014 +0200

----------------------------------------------------------------------
 .../main/resources/schemas/HostDescription.xsd  | 330 ++++++++-------
 .../gfac/bes/handlers/SMSByteIOInHandler.java   |  28 +-
 .../gfac/bes/handlers/SMSByteIOOutHandler.java  |  64 ++-
 .../gfac/bes/provider/impl/BESProvider.java     | 409 +++++--------------
 .../airavata/gfac/bes/utils/JSDLGenerator.java  | 105 ++++-
 .../airavata/gfac/bes/utils/JSDLUtils.java      |   8 +-
 .../gfac/gram/provider/impl/GramProvider.java   |  18 +-
 pom.xml                                         |   2 +-
 8 files changed, 481 insertions(+), 483 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/fa529589/modules/commons/gfac-schema/src/main/resources/schemas/HostDescription.xsd
----------------------------------------------------------------------
diff --git 
a/modules/commons/gfac-schema/src/main/resources/schemas/HostDescription.xsd 
b/modules/commons/gfac-schema/src/main/resources/schemas/HostDescription.xsd
index c4052d9..504636b 100644
--- a/modules/commons/gfac-schema/src/main/resources/schemas/HostDescription.xsd
+++ b/modules/commons/gfac-schema/src/main/resources/schemas/HostDescription.xsd
@@ -1,168 +1,196 @@
 <?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. -->
+<!--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. -->
 
 <schema targetNamespace="http://airavata.apache.org/schemas/gfac/2012/12";
-        xmlns:gfac="http://airavata.apache.org/schemas/gfac/2012/12"; 
xmlns="http://www.w3.org/2001/XMLSchema";
-        xmlns:xsd="http://www.w3.org/2001/XMLSchema"; 
elementFormDefault="qualified">
+       xmlns:gfac="http://airavata.apache.org/schemas/gfac/2012/12"; 
xmlns="http://www.w3.org/2001/XMLSchema";
+       xmlns:xsd="http://www.w3.org/2001/XMLSchema"; 
elementFormDefault="qualified">
 
-    <include schemaLocation="BasicTypes.xsd"/>
+       <include schemaLocation="BasicTypes.xsd" />
 
-    <element name="hostDescription" type="gfac:hostDescriptionType"/>
+       <element name="hostDescription" type="gfac:hostDescriptionType" />
 
-    <!-- Host Description -->
-    <complexType name="hostDescriptionType">
-        <sequence>
-            <element name="authorInfo" type="gfac:authorInfoType"
-                     minOccurs="0" maxOccurs="unbounded"/>
-            <element name="documentInfo" type="gfac:documentInfoType"
-                     minOccurs="0" maxOccurs="1"/>
-            <element name="hostName" type="xsd:string" minOccurs="1"
-                     maxOccurs="1"/>
-            <element name="hostAddress" type="xsd:string" minOccurs="1"
-                     maxOccurs="1"/>
-        </sequence>
-    </complexType>
+       <!-- Host Description -->
+       <complexType name="hostDescriptionType">
+               <sequence>
+                       <element name="authorInfo" type="gfac:authorInfoType"
+                               minOccurs="0" maxOccurs="unbounded" />
+                       <element name="documentInfo" 
type="gfac:documentInfoType"
+                               minOccurs="0" maxOccurs="1" />
+                       <element name="hostName" type="xsd:string" minOccurs="1"
+                               maxOccurs="1" />
+                       <element name="hostAddress" type="xsd:string" 
minOccurs="1"
+                               maxOccurs="1" />
+               </sequence>
+       </complexType>
 
 
-    <complexType name="preJobCommands">
-        <sequence>
-            <element name="command" type="xsd:string" minOccurs="0" 
maxOccurs="unbounded"/>
-        </sequence>
-    </complexType>
+       <complexType name="preJobCommands">
+               <sequence>
+                       <element name="command" type="xsd:string" minOccurs="0"
+                               maxOccurs="unbounded" />
+               </sequence>
+       </complexType>
 
-    <complexType name="postJobCommands">
-        <sequence>
-            <element name="command" type="xsd:string" minOccurs="0" 
maxOccurs="unbounded"/>
-        </sequence>
-    </complexType>
+       <complexType name="postJobCommands">
+               <sequence>
+                       <element name="command" type="xsd:string" minOccurs="0"
+                               maxOccurs="unbounded" />
+               </sequence>
+       </complexType>
 
-    <complexType name="exportProperties">
-        <sequence>
-            <element name="name" minOccurs="1" maxOccurs="unbounded">
-                <complexType>
-                    <simpleContent>
-                        <extension base="xsd:string">
-                            <attribute name="value" type="xsd:string" 
use="required"/>
-                        </extension>
-                    </simpleContent>
-                </complexType>
-            </element>
-        </sequence>
-    </complexType>
+       <complexType name="exportProperties">
+               <sequence>
+                       <element name="name" minOccurs="1" 
maxOccurs="unbounded">
+                               <complexType>
+                                       <simpleContent>
+                                               <extension base="xsd:string">
+                                                       <attribute name="value" 
type="xsd:string" use="required" />
+                                               </extension>
+                                       </simpleContent>
+                               </complexType>
+                       </element>
+               </sequence>
+       </complexType>
 
-    <!-- Globus Host Description -->
-    <complexType name="globusHostType">
-        <complexContent>
-            <extension base="gfac:hostDescriptionType">
-                <sequence>
-                    <element name="gridFTPEndPoint" type="xsd:string"
-                             minOccurs="1" maxOccurs="unbounded"/>
-                    <element name="globusGateKeeperEndPoint" type="xsd:string"
-                             minOccurs="1" maxOccurs="unbounded"/>
-                </sequence>
-            </extension>
-        </complexContent>
-    </complexType>
+       <!-- Globus Host Description -->
+       <complexType name="globusHostType">
+               <complexContent>
+                       <extension base="gfac:hostDescriptionType">
+                               <sequence>
+                                       <element name="gridFTPEndPoint" 
type="xsd:string"
+                                               minOccurs="1" 
maxOccurs="unbounded" />
+                                       <element 
name="globusGateKeeperEndPoint" type="xsd:string"
+                                               minOccurs="1" 
maxOccurs="unbounded" />
+                               </sequence>
+                       </extension>
+               </complexContent>
+       </complexType>
 
-    <!-- EC2 Host Description -->
-    <complexType name="ec2HostType">
-        <complexContent>
-            <extension base="gfac:hostDescriptionType">
-                <sequence>
-                    <element name="imageID" type="xsd:string"
-                             minOccurs="1" maxOccurs="unbounded"/>
-                    <element name="instanceID" type="xsd:string"
-                             minOccurs="1" maxOccurs="unbounded"/>
-                </sequence>
-            </extension>
-        </complexContent>
-    </complexType>
+       <!-- EC2 Host Description -->
+       <complexType name="ec2HostType">
+               <complexContent>
+                       <extension base="gfac:hostDescriptionType">
+                               <sequence>
+                                       <element name="imageID" 
type="xsd:string" minOccurs="1"
+                                               maxOccurs="unbounded" />
+                                       <element name="instanceID" 
type="xsd:string" minOccurs="1"
+                                               maxOccurs="unbounded" />
+                               </sequence>
+                       </extension>
+               </complexContent>
+       </complexType>
 
-    <complexType name="UnicoreHostType">
-        <complexContent>
-            <extension base="gfac:hostDescriptionType">
-                <sequence>
-                    <sequence>
-                        <element name="gridFTPEndPoint" type="xsd:string"
-                                 minOccurs="0" maxOccurs="unbounded"/>
-                        <element name="unicoreBESEndPoint" type="xsd:string"
-                                 minOccurs="1" maxOccurs="unbounded"/>
-                    </sequence>
-                </sequence>
-            </extension>
-        </complexContent>
-    </complexType>
+       <complexType name="UnicoreHostType">
+               <complexContent>
+                       <extension base="gfac:hostDescriptionType">
+                               <sequence>
+                                       <sequence>
+                                               <element 
name="unicoreBESEndPoint" type="xsd:string" minOccurs="1" maxOccurs="unbounded" 
/>
+                                               <!-- jobDirectoryMode allows 
gateway to specify how data will be accessed 
+                                                       to an GFAC instance. It 
includes the directory interface and a file transfer 
+                                                       protocol. The allowable 
protocols are, "SMS-ByteIO" / "GridFTP" / "RNS-ByteIO" -->
+                                               <element 
ref="gfac:jobDirectoryMode" minOccurs="1" />
+                                               <!-- gridFTPEndpoint only needs 
to be provided when using GridFTP as 
+                                                       jobDirectoryMode -->
+                                               <element name="gridFTPEndPoint" 
type="xsd:string" minOccurs="0" maxOccurs="unbounded" />
+                                       </sequence>
+                               </sequence>
+                       </extension>
+               </complexContent>
+       </complexType>
+       
+       <!-- some more comments -->
+       <element name="jobDirectoryMode">
+               <simpleType>
+                       <restriction base="string">
+                               <enumeration value="GridFTP" />
+                               <enumeration value="SMSByteIO" />
+                               <enumeration value="RNSByteIO" />
+                       </restriction>
+               </simpleType>
+       </element>
 
-    <complexType name="gsisshHostType">
-        <complexContent>
-            <extension base="gfac:hostDescriptionType">
-                <sequence>
-                    <element name="port" type="xsd:int" minOccurs="0" 
maxOccurs="1"/>
-                    <element name="exports" type="gfac:exportProperties" 
minOccurs="0" maxOccurs="1"/>
-                    <element name="preJobCommands" type="xsd:string" 
minOccurs="0" maxOccurs="unbounded"/>
-                    <element name="postJobCommands" type="xsd:string" 
minOccurs="0" maxOccurs="unbounded"/>
-                    <element name="installedPath" type="xsd:string" 
minOccurs="0" maxOccurs="1" default="/opt/torque/bin"/>
-                    <element name="jobManager" type="xsd:string" minOccurs="0" 
maxOccurs="1"/>
-                    <element name="monitorMode" type="xsd:string" 
minOccurs="0" maxOccurs="1"/>
-                </sequence>
-            </extension>
-        </complexContent>
-    </complexType>
-    <!-- SSH Host Description -->
-    <complexType name="SSHHostType">
-        <complexContent>
-            <extension base="gfac:hostDescriptionType">
-                <sequence>
-                    <element name="fileEndPointPrefix" type="xsd:string" 
minOccurs="0" maxOccurs="unbounded"/>
-                    <element name="hpcResource" type="xsd:boolean" 
minOccurs="1" maxOccurs="1"/>
-                </sequence>
-            </extension>
-        </complexContent>
-    </complexType>
+       <complexType name="gsisshHostType">
+               <complexContent>
+                       <extension base="gfac:hostDescriptionType">
+                               <sequence>
+                                       <element name="port" type="xsd:int" 
minOccurs="0"
+                                               maxOccurs="1" />
+                                       <element name="exports" 
type="gfac:exportProperties"
+                                               minOccurs="0" maxOccurs="1" />
+                                       <element name="preJobCommands" 
type="xsd:string" minOccurs="0"
+                                               maxOccurs="unbounded" />
+                                       <element name="postJobCommands" 
type="xsd:string"
+                                               minOccurs="0" 
maxOccurs="unbounded" />
+                                       <element name="installedPath" 
type="xsd:string" minOccurs="0"
+                                               maxOccurs="1" 
default="/opt/torque/bin" />
+                                       <element name="jobManager" 
type="xsd:string" minOccurs="0"
+                                               maxOccurs="1" />
+                                       <element name="monitorMode" 
type="xsd:string" minOccurs="0"
+                                               maxOccurs="1" />
+                               </sequence>
+                       </extension>
+               </complexContent>
+       </complexType>
+       <!-- SSH Host Description -->
+       <complexType name="SSHHostType">
+               <complexContent>
+                       <extension base="gfac:hostDescriptionType">
+                               <sequence>
+                                       <element name="fileEndPointPrefix" 
type="xsd:string"
+                                               minOccurs="0" 
maxOccurs="unbounded" />
+                                       <element name="hpcResource" 
type="xsd:boolean" minOccurs="1"
+                                               maxOccurs="1" />
+                               </sequence>
+                       </extension>
+               </complexContent>
+       </complexType>
 
-    <!-- Hadoop Host Description -->
-    <complexType name="hadoopHostType">
-        <complexContent>
-            <extension base="gfac:hostDescriptionType">
-                <sequence>
-                    <element name="hadoopConfigurationDirectory" 
type="xsd:string" minOccurs="0" maxOccurs="1"/>
-                    <element name="whirrConfiguration" maxOccurs="1" 
minOccurs="0">
-                        <complexType>
-                            <sequence>
-                                <element name="configurationFile" 
type="xsd:string" minOccurs="0" maxOccurs="1"/>
-                                <element name="byonClusterConfigurationFile" 
type="xsd:string" minOccurs="0"
-                                         maxOccurs="1"/>
-                                <element name="configuration" minOccurs="0" 
maxOccurs="1">
-                                    <complexType>
-                                        <sequence>
-                                            <element name="property" 
maxOccurs="unbounded">
-                                                <complexType>
-                                                    <sequence>
-                                                        <element name="name" 
type="xsd:string" maxOccurs="1"
-                                                                 
minOccurs="1"/>
-                                                        <element name="value" 
type="xsd:string" maxOccurs="1"
-                                                                 
minOccurs="1"/>
-                                                    </sequence>
-                                                </complexType>
-                                            </element>
-                                        </sequence>
-                                    </complexType>
-                                </element>
-                            </sequence>
-                        </complexType>
-                    </element>
-                </sequence>
-            </extension>
-        </complexContent>
-    </complexType>
+       <!-- Hadoop Host Description -->
+       <complexType name="hadoopHostType">
+               <complexContent>
+                       <extension base="gfac:hostDescriptionType">
+                               <sequence>
+                                       <element 
name="hadoopConfigurationDirectory" type="xsd:string"
+                                               minOccurs="0" maxOccurs="1" />
+                                       <element name="whirrConfiguration" 
maxOccurs="1" minOccurs="0">
+                                               <complexType>
+                                                       <sequence>
+                                                               <element 
name="configurationFile" type="xsd:string"
+                                                                       
minOccurs="0" maxOccurs="1" />
+                                                               <element 
name="byonClusterConfigurationFile" type="xsd:string"
+                                                                       
minOccurs="0" maxOccurs="1" />
+                                                               <element 
name="configuration" minOccurs="0" maxOccurs="1">
+                                                                       
<complexType>
+                                                                               
<sequence>
+                                                                               
        <element name="property" maxOccurs="unbounded">
+                                                                               
                <complexType>
+                                                                               
                        <sequence>
+                                                                               
                                <element name="name" type="xsd:string" 
maxOccurs="1"
+                                                                               
                                        minOccurs="1" />
+                                                                               
                                <element name="value" type="xsd:string" 
maxOccurs="1"
+                                                                               
                                        minOccurs="1" />
+                                                                               
                        </sequence>
+                                                                               
                </complexType>
+                                                                               
        </element>
+                                                                               
</sequence>
+                                                                       
</complexType>
+                                                               </element>
+                                                       </sequence>
+                                               </complexType>
+                                       </element>
+                               </sequence>
+                       </extension>
+               </complexContent>
+       </complexType>
 
 </schema>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/fa529589/modules/gfac/gfac-bes/src/main/java/org/apache/airavata/gfac/bes/handlers/SMSByteIOInHandler.java
----------------------------------------------------------------------
diff --git 
a/modules/gfac/gfac-bes/src/main/java/org/apache/airavata/gfac/bes/handlers/SMSByteIOInHandler.java
 
b/modules/gfac/gfac-bes/src/main/java/org/apache/airavata/gfac/bes/handlers/SMSByteIOInHandler.java
index 286637a..9b697aa 100644
--- 
a/modules/gfac/gfac-bes/src/main/java/org/apache/airavata/gfac/bes/handlers/SMSByteIOInHandler.java
+++ 
b/modules/gfac/gfac-bes/src/main/java/org/apache/airavata/gfac/bes/handlers/SMSByteIOInHandler.java
@@ -1,5 +1,29 @@
 package org.apache.airavata.gfac.bes.handlers;
 
-public class SMSByteIOInHandler {
 
-}
+import org.apache.airavata.gfac.core.context.JobExecutionContext;
+import org.apache.airavata.gfac.core.handler.GFacHandler;
+import org.apache.airavata.gfac.core.handler.GFacHandlerException;
+import org.apache.airavata.gfac.core.provider.GFacProviderException;
+
+/**
+ * Download upload job's input files to the temporary SMS directory.
+ * 
+ * */
+public class SMSByteIOInHandler extends AbstractSMSHandler implements 
GFacHandler {
+
+
+       @Override
+       public void invoke(JobExecutionContext jobExecutionContext) throws 
GFacHandlerException {
+               super.invoke(jobExecutionContext);
+    try{    
+               
if(jobExecutionContext.getInMessageContext().getParameters().size() < 1) return;
+               dataTransferrer.uploadLocalFiles();
+       } catch (GFacProviderException e) {
+               throw new GFacHandlerException("Cannot upload local data",e);
+       }
+
+       }
+       
+       
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/fa529589/modules/gfac/gfac-bes/src/main/java/org/apache/airavata/gfac/bes/handlers/SMSByteIOOutHandler.java
----------------------------------------------------------------------
diff --git 
a/modules/gfac/gfac-bes/src/main/java/org/apache/airavata/gfac/bes/handlers/SMSByteIOOutHandler.java
 
b/modules/gfac/gfac-bes/src/main/java/org/apache/airavata/gfac/bes/handlers/SMSByteIOOutHandler.java
index 63787bc..1a0d2ef 100644
--- 
a/modules/gfac/gfac-bes/src/main/java/org/apache/airavata/gfac/bes/handlers/SMSByteIOOutHandler.java
+++ 
b/modules/gfac/gfac-bes/src/main/java/org/apache/airavata/gfac/bes/handlers/SMSByteIOOutHandler.java
@@ -1,5 +1,67 @@
 package org.apache.airavata.gfac.bes.handlers;
 
-public class SMSByteIOOutHandler {
 
+
+import org.apache.airavata.gfac.bes.utils.ActivityInfo;
+import org.apache.airavata.gfac.core.context.JobExecutionContext;
+import org.apache.airavata.gfac.core.handler.GFacHandler;
+import org.apache.airavata.gfac.core.handler.GFacHandlerException;
+import org.apache.airavata.gfac.core.provider.GFacProviderException;
+import org.ggf.schemas.bes.x2006.x08.besFactory.ActivityStateEnumeration;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class SMSByteIOOutHandler extends AbstractSMSHandler implements 
GFacHandler{
+
+       // TODO: later use AbstractHandler, which cannot be used due to error 
in RegistryFactory
+               private final Logger log = 
LoggerFactory.getLogger(this.getClass());
+               
+               @Override
+               public void invoke(JobExecutionContext jobExecutionContext)
+                               throws GFacHandlerException {
+                       super.invoke(jobExecutionContext);
+                       
+                       ActivityInfo activityInfo = 
(ActivityInfo)jobExecutionContext.getProperty(PROP_ACTIVITY_INFO);
+                       try {
+                       if(activityInfo == null) {
+                               log.error("No ActivityInfo instance found. The 
activity execution is ended due to an exception, see provider logs");
+                               return;
+                       }
+                       
+                       if ((activityInfo.getActivityStatus().getState() == 
ActivityStateEnumeration.FAILED)) {
+                   try {Thread.sleep(5000);}catch (InterruptedException e){}
+                   
+                   try {
+                                       dataTransferrer.downloadStdOuts();
+                               } catch (GFacProviderException e) {
+                                       throw new GFacHandlerException("Cannot 
download stdout data",e);
+                               }
+                       }
+               else if (activityInfo.getActivityStatus().getState() == 
ActivityStateEnumeration.FINISHED) {
+                       try {Thread.sleep(5000);}catch (InterruptedException 
e){}
+                       
+                       try {
+                                               if 
(activityInfo.getActivityStatus().getExitCode() == 0) {
+                                                       
dataTransferrer.downloadRemoteFiles();
+                                               } else {
+                                                       
dataTransferrer.downloadStdOuts();
+                                               }
+                                       } catch (GFacProviderException e) {
+                                               throw new GFacHandlerException(
+                                                               "Cannot 
download stdout data", e);
+                                       }
+                               }
+                       } finally {
+                               try {
+                                       if (storageClient != null) {
+                                               storageClient.destroy();
+                                       }
+                               } catch (Exception e) {
+                                       log.warn("Cannot destroy temporary SMS 
instance", e);
+                               }
+
+                       }               
+
+               }
 }
+

http://git-wip-us.apache.org/repos/asf/airavata/blob/fa529589/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 207e076..9578dd5 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
@@ -20,80 +20,82 @@
 */
 package org.apache.airavata.gfac.bes.provider.impl;
 
-import de.fzj.unicore.bes.client.FactoryClient;
-import de.fzj.unicore.bes.faults.UnknownActivityIdentifierFault;
-import de.fzj.unicore.uas.client.StorageClient;
-import de.fzj.unicore.wsrflite.xmlbeans.WSUtilities;
-import eu.emi.security.authn.x509.helpers.CertificateHelpers;
-import eu.emi.security.authn.x509.helpers.proxy.X509v3CertificateBuilder;
-import eu.emi.security.authn.x509.impl.CertificateUtils;
-import eu.emi.security.authn.x509.impl.CertificateUtils.Encoding;
-import eu.emi.security.authn.x509.impl.DirectoryCertChainValidator;
-import eu.emi.security.authn.x509.impl.KeyAndCertCredential;
-import eu.emi.security.authn.x509.impl.X500NameUtils;
-import eu.unicore.util.httpclient.DefaultClientConfiguration;
+import java.util.Calendar;
+import java.util.Map;
+
+import org.apache.airavata.common.exception.ApplicationSettingsException;
 import org.apache.airavata.gfac.Constants;
 import org.apache.airavata.gfac.GFacException;
-import org.apache.airavata.gfac.bes.security.GSISecurityContext;
-import org.apache.airavata.gfac.bes.utils.DataTransferrer;
+import org.apache.airavata.gfac.bes.security.UNICORESecurityContext;
+import org.apache.airavata.gfac.bes.utils.ActivityInfo;
+import org.apache.airavata.gfac.bes.utils.BESConstants;
+import org.apache.airavata.gfac.bes.utils.DataServiceInfo;
 import org.apache.airavata.gfac.bes.utils.JSDLGenerator;
-import org.apache.airavata.gfac.bes.utils.StorageCreator;
 import org.apache.airavata.gfac.core.context.JobExecutionContext;
-import org.apache.airavata.gfac.core.notification.events.StatusChangeEvent;
-import org.apache.airavata.gfac.core.notification.events.UnicoreJobIDEvent;
 import org.apache.airavata.gfac.core.provider.AbstractProvider;
+import org.apache.airavata.gfac.core.provider.GFacProvider;
 import org.apache.airavata.gfac.core.provider.GFacProviderException;
 import org.apache.airavata.gfac.core.utils.GFacUtils;
+import org.apache.airavata.model.workspace.experiment.JobDetails;
 import org.apache.airavata.model.workspace.experiment.JobState;
 import org.apache.airavata.schemas.gfac.UnicoreHostType;
 import org.apache.xmlbeans.XmlCursor;
-import org.bouncycastle.asn1.ASN1InputStream;
-import org.bouncycastle.asn1.x500.X500Name;
 import org.bouncycastle.asn1.x500.style.BCStyle;
-import org.bouncycastle.asn1.x509.AlgorithmIdentifier;
-import org.bouncycastle.asn1.x509.SubjectPublicKeyInfo;
-import org.ggf.schemas.bes.x2006.x08.besFactory.*;
+import org.ggf.schemas.bes.x2006.x08.besFactory.ActivityStateEnumeration;
 import org.ggf.schemas.bes.x2006.x08.besFactory.ActivityStateEnumeration.Enum;
+import org.ggf.schemas.bes.x2006.x08.besFactory.ActivityStatusType;
+import org.ggf.schemas.bes.x2006.x08.besFactory.CreateActivityDocument;
+import org.ggf.schemas.bes.x2006.x08.besFactory.CreateActivityResponseDocument;
+import org.ggf.schemas.bes.x2006.x08.besFactory.GetActivityStatusesDocument;
+import 
org.ggf.schemas.bes.x2006.x08.besFactory.GetActivityStatusesResponseDocument;
 import org.ggf.schemas.jsdl.x2005.x11.jsdl.JobDefinitionDocument;
 import org.ggf.schemas.jsdl.x2005.x11.jsdl.JobDefinitionType;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.w3.x2005.x08.addressing.EndpointReferenceType;
 
-import javax.security.auth.x500.X500Principal;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.math.BigInteger;
-import java.security.InvalidKeyException;
-import java.security.KeyPair;
-import java.security.KeyPairGenerator;
-import java.security.PrivateKey;
-import java.security.cert.X509Certificate;
-import java.util.*;
+import de.fzj.unicore.bes.client.FactoryClient;
+import de.fzj.unicore.bes.faults.UnknownActivityIdentifierFault;
+import de.fzj.unicore.wsrflite.xmlbeans.WSUtilities;
+import eu.emi.security.authn.x509.impl.X500NameUtils;
+import eu.unicore.util.httpclient.DefaultClientConfiguration;
 
 
 
-public class BESProvider extends AbstractProvider {
+public class BESProvider extends AbstractProvider implements GFacProvider, 
BESConstants{
     protected final Logger log = LoggerFactory.getLogger(this.getClass());
 
     private DefaultClientConfiguration secProperties;
 
     private String jobId;
     
-    
-        
        public void initialize(JobExecutionContext jobExecutionContext)
                        throws GFacProviderException, GFacException {
-               log.info("Initializing UNICORE Provider");
+               log.info("Initializing UNICORE Provider..");
                super.initialize(jobExecutionContext);
-       initSecurityProperties(jobExecutionContext);
-       log.debug("initialized security properties");
+               secProperties = 
(DefaultClientConfiguration)jobExecutionContext.getProperty(PROP_CLIENT_CONF);
+        if (secProperties != null) {
+               secProperties = secProperties.clone();
+               return;
+        }
+            
+        UNICORESecurityContext unicoreContext = (UNICORESecurityContext) 
jobExecutionContext.getSecurityContext(UNICORESecurityContext.UNICORE_SECURITY_CONTEXT);
+        if(log.isDebugEnabled()) {
+               log.debug("Generating default configuration.");
+        }
+        //TODO: check what credential mode should be used
+        try {
+                       secProperties = 
unicoreContext.getDefaultConfiguration();
+               } catch (ApplicationSettingsException e) {
+                       throw new GFacProviderException(e.getMessage(), e);
+               }
+        if(log.isDebugEnabled()) {
+               log.debug("Security properties initialized.");
+        }
     }
 
 
-       public void execute(JobExecutionContext jobExecutionContext)
-                       throws GFacProviderException {
+       public void execute(JobExecutionContext jobExecutionContext) throws 
GFacProviderException, GFacException {
         UnicoreHostType host = (UnicoreHostType) 
jobExecutionContext.getApplicationContext().getHostDescription()
                 .getType();
 
@@ -101,59 +103,52 @@ public class BESProvider extends AbstractProvider {
 
         EndpointReferenceType eprt = 
EndpointReferenceType.Factory.newInstance();
         eprt.addNewAddress().setStringValue(factoryUrl);
+        
+//             WSUtilities.addServerIdentity(eprt, serverDN);
 
-        String userDN = getUserName(jobExecutionContext);
 
+        String userDN = getUserName(jobExecutionContext);
+        
+        //TODO: to be removed
         if (userDN == null || userDN.equalsIgnoreCase("admin")) {
             userDN = "CN=zdv575, O=Ultrascan Gateway, C=DE";
         }
-
-        String xlogin = getCNFromUserDN(userDN);
-        // create storage
-        StorageCreator storageCreator = new StorageCreator(secProperties, 
factoryUrl, 5, xlogin);
-
-        StorageClient sc = null;
+        
         try {
-            try {
-                sc = storageCreator.createStorage();
-            } catch (Exception e2) {
-                log.error("Cannot create storage..");
-                throw new GFacProviderException("Cannot create storage..", e2);
-            }
-
+            
+            DataServiceInfo dsInfo = new DataServiceInfo(jobExecutionContext);
+            
             CreateActivityDocument cad = 
CreateActivityDocument.Factory.newInstance();
             JobDefinitionDocument jobDefDoc = 
JobDefinitionDocument.Factory.newInstance();
 
             JobDefinitionType jobDefinition = jobDefDoc.addNewJobDefinition();
             try {
-                jobDefinition = 
JSDLGenerator.buildJSDLInstance(jobExecutionContext, 
sc.getUrl()).getJobDefinition();
+                jobDefinition = 
JSDLGenerator.buildJSDLInstance(jobExecutionContext, dsInfo).getJobDefinition();
                 
cad.addNewCreateActivity().addNewActivityDocument().setJobDefinition(jobDefinition);
-
                 log.info("JSDL" + jobDefDoc.toString());
             } catch (Exception e1) {
                 throw new GFacProviderException("Cannot generate JSDL instance 
from the JobExecutionContext.", e1);
             }
 
-            // upload files if any
-            DataTransferrer dt = new DataTransferrer(jobExecutionContext, sc);
-            dt.uploadLocalFiles();
-
-            FactoryClient factory = null;
-            try {
+           FactoryClient factory = null;
+           JobDetails jobDetails = new JobDetails();
+           
+           try {
                 factory = new FactoryClient(eprt, secProperties);
             } catch (Exception e) {
                 throw new GFacProviderException(e.getLocalizedMessage(), e);
             }
-
             CreateActivityResponseDocument response = null;
             try {
                 log.info(String.format("Activity Submitting to %s ... \n", 
factoryUrl));
                 response = factory.createActivity(cad);
+                
                 log.info(String.format("Activity Submitted to %s \n", 
factoryUrl));
             } catch (Exception e) {
                 throw new GFacProviderException("Cannot create activity.", e);
             }
             EndpointReferenceType activityEpr = 
response.getCreateActivityResponse().getActivityIdentifier();
+               
 
             log.info("Activity : " + activityEpr.getAddress().getStringValue() 
+ " Submitted.");
 
@@ -163,98 +158,30 @@ public class BESProvider extends AbstractProvider {
                 jobId = new 
Long(Calendar.getInstance().getTimeInMillis()).toString();
             }
             log.info("JobID: " + jobId);
-            jobExecutionContext.getNotifier().publish(new 
UnicoreJobIDEvent(jobId));
-            saveApplicationJob(jobExecutionContext, jobDefinition, 
activityEpr.toString());
-
-            factory.getActivityStatus(activityEpr);
+//            jobExecutionContext.getNotifier().publish(new 
UnicoreJobIDEvent(jobId));
+            //TODO: not working
+//            saveApplicationJob(jobExecutionContext, jobDefinition, 
activityEpr.toString());
+            jobDetails.setJobID(activityEpr.toString());
+            jobDetails.setJobDescription(activityEpr.toString());
+            
+            jobExecutionContext.setJobDetails(jobDetails);
+            
             
log.info(formatStatusMessage(activityEpr.getAddress().getStringValue(),
                     factory.getActivityStatus(activityEpr).toString()));
 
             // TODO publish the status messages to the message bus
-            while ((factory.getActivityStatus(activityEpr) != 
ActivityStateEnumeration.FINISHED)
-                    && (factory.getActivityStatus(activityEpr) != 
ActivityStateEnumeration.FAILED)
-                    && (factory.getActivityStatus(activityEpr) != 
ActivityStateEnumeration.CANCELLED)) {
-
-                ActivityStatusType activityStatus = null;
-                try {
-                    activityStatus = getStatus(factory, activityEpr);
-                    JobState jobStatus = 
getApplicationJobStatus(activityStatus);
-                    String jobStatusMessage = "Status of job " + jobId + "is " 
+ jobStatus;
-                    jobExecutionContext.getNotifier().publish(new 
StatusChangeEvent(jobStatusMessage));
-                    details.setJobID(jobId);
-                    GFacUtils.updateJobStatus(jobExecutionContext, details, 
jobStatus);
-                } catch (UnknownActivityIdentifierFault e) {
-                    throw new GFacProviderException(e.getMessage(), 
e.getCause());
-                }catch (GFacException e) {
-                    throw new GFacProviderException(e.getMessage(), 
e.getCause());
-                }
-
-                try {
-                    Thread.sleep(5000);
-                } catch (InterruptedException e) {
-                }
-                continue;
-            }
-
             ActivityStatusType activityStatus = null;
-            try {
-                activityStatus = getStatus(factory, activityEpr);
-            } catch (UnknownActivityIdentifierFault e) {
-                throw new GFacProviderException(e.getMessage(), e.getCause());
-            }
-
-            
log.info(formatStatusMessage(activityEpr.getAddress().getStringValue(), 
activityStatus.getState()
-                    .toString()));
-
-            if ((activityStatus.getState() == 
ActivityStateEnumeration.FAILED)) {
-                String error = 
activityStatus.getFault().getFaultcode().getLocalPart() + "\n"
-                        + activityStatus.getFault().getFaultstring() + "\n 
EXITCODE: " + activityStatus.getExitCode();
-                log.info(error);
-                try {
-                    Thread.sleep(5000);
-                } catch (InterruptedException e) {
-                }
-                dt.downloadStdOuts();
-            } else if (activityStatus.getState() == 
ActivityStateEnumeration.CANCELLED) {
-                String experimentID = (String) 
jobExecutionContext.getProperty(Constants.PROP_TOPIC);
-                JobState jobStatus = JobState.CANCELED;
-                String jobStatusMessage = "Status of job " + jobId + "is " + 
jobStatus;
-                jobExecutionContext.getNotifier().publish(new 
StatusChangeEvent(jobStatusMessage));
-                details.setJobID(jobId);
-                try {
-                                       
GFacUtils.saveJobStatus(jobExecutionContext,details, jobStatus);
-                               } catch (GFacException e) {
-                                        throw new 
GFacProviderException(e.getLocalizedMessage(),e);
-                               }
-                throw new GFacProviderException(experimentID + "Job Canceled");
-            }
-
-            else if (activityStatus.getState() == 
ActivityStateEnumeration.FINISHED) {
-                try {
-                    Thread.sleep(5000);
-                } catch (InterruptedException e) {
-                }
-                if (activityStatus.getExitCode() == 0) {
-                    dt.downloadRemoteFiles();
-                } else {
-                    dt.downloadStdOuts();
-                }
-            }
-
+            ActivityInfo activityInfo;
+            activityInfo = new ActivityInfo();
+            activityInfo.setActivityEPR(activityEpr);
+            activityInfo.setActivityStatusDoc(activityStatus);
+            jobExecutionContext.setProperty(PROP_ACTIVITY_INFO, activityInfo);
         } catch (UnknownActivityIdentifierFault e1) {
             throw new GFacProviderException(e1.getLocalizedMessage(), e1);
-        } finally {
-            // destroy sms instance
-            try {
-                if (sc != null) {
-                    sc.destroy();
-                }
-            } catch (Exception e) {
-                log.warn("Cannot destroy temporary SMS instance:" + 
sc.getUrl(), e);
-            }
         }
     }
-
+       
+       
        private JobState getApplicationJobStatus(ActivityStatusType 
activityStatus){
         if (activityStatus == null) {
             return JobState.UNKNOWN;
@@ -302,8 +229,10 @@ public class BESProvider extends AbstractProvider {
     }
 
     private void saveApplicationJob(JobExecutionContext jobExecutionContext, 
JobDefinitionType jobDefinition,
-                                    String metadata) {
-//        ApplicationJob appJob = 
GFacUtils.createApplicationJob(jobExecutionContext);
+                                    String metadata) throws GFacException {
+
+       
+//     ApplicationJob appJob = 
GFacUtils.createApplicationJob(jobExecutionContext);
 //        appJob.setJobId(jobId);
 //        appJob.setJobData(jobDefinition.toString());
 //        appJob.setSubmittedTime(Calendar.getInstance().getTime());
@@ -311,22 +240,23 @@ public class BESProvider extends AbstractProvider {
 //        appJob.setStatusUpdateTime(appJob.getSubmittedTime());
 //        appJob.setMetadata(metadata);
 //        GFacUtils.recordApplicationJob(jobExecutionContext, appJob);
-    }
-
-    public void dispose(JobExecutionContext jobExecutionContext) throws 
GFacProviderException {
-        secProperties = null;
+        
+        details.setJobID(jobId);
+        GFacUtils.saveJobStatus(jobExecutionContext, details, 
JobState.SUBMITTED);
+        
     }
 
     /**
      * EndpointReference need to be saved to make cancel work.
      *
+     * @param activityEpr
      * @param jobExecutionContext
      * @throws GFacProviderException
      */
-    public void cancelJob(JobExecutionContext jobExecutionContext) throws 
GFacProviderException {
+    public void cancelJob(String activityEpr, JobExecutionContext 
jobExecutionContext) throws GFacProviderException {
         try {
-            initSecurityProperties(jobExecutionContext);
-            EndpointReferenceType eprt = 
EndpointReferenceType.Factory.parse(jobExecutionContext.getJobDetails().getJobID());
+//            initSecurityProperties(jobExecutionContext);
+            EndpointReferenceType eprt = 
EndpointReferenceType.Factory.parse(activityEpr);
             UnicoreHostType host = (UnicoreHostType) 
jobExecutionContext.getApplicationContext().getHostDescription()
                     .getType();
 
@@ -342,87 +272,6 @@ public class BESProvider extends AbstractProvider {
 
     }
 
-    protected void downloadOffline(String smsEpr, JobExecutionContext 
jobExecutionContext) throws GFacProviderException {
-        try {
-            initSecurityProperties(jobExecutionContext);
-            EndpointReferenceType eprt = 
EndpointReferenceType.Factory.parse(smsEpr);
-            StorageClient sms = new StorageClient(eprt, secProperties);
-            DataTransferrer dt = new DataTransferrer(jobExecutionContext, sms);
-            // there must be output files there
-            // this is also possible if client is re-connected, the jobs are
-            // still
-            // running and no output is produced
-            dt.downloadRemoteFiles();
-
-            // may be use the below method before downloading for checking
-            // the number of entries
-            // sms.listDirectory(".");
-
-        } catch (Exception e) {
-            throw new GFacProviderException(e.getLocalizedMessage(), e);
-        }
-    }
-
-    protected void initSecurityProperties(JobExecutionContext 
jobExecutionContext) throws GFacProviderException,
-            GFacException {
-
-        if (secProperties != null)
-            return;
-
-        GSISecurityContext gssContext = (GSISecurityContext) 
jobExecutionContext
-                .getSecurityContext(GSISecurityContext.GSI_SECURITY_CONTEXT);
-
-        try {
-            String certLocation = gssContext.getTrustedCertificatePath();
-            List<String> trustedCert = new ArrayList<String>();
-            trustedCert.add(certLocation + "/*.0");
-            trustedCert.add(certLocation + "/*.pem");
-
-            DirectoryCertChainValidator dcValidator = new 
DirectoryCertChainValidator(trustedCert, Encoding.PEM, -1,
-                    60000, null);
-
-            String userID = getUserName(jobExecutionContext);
-
-            if ( userID == null || "".equals(userID) || 
userID.equalsIgnoreCase("admin") ) {
-                userID = "CN=zdv575, O=Ultrascan Gateway, C=DE";
-            }
-
-            String userDN = userID.replaceAll("^\"|\"$", "");
-
-            // TODO: should be changed to default airavata server locations
-            KeyAndCertCredential cred = generateShortLivedCertificate(userDN, 
certLocation
-                    + "/cacert.pem", certLocation
-                    + "/cakey.pem", "ultrascan3");
-            secProperties = new DefaultClientConfiguration(dcValidator, cred);
-
-            // secProperties.doSSLAuthn();
-            secProperties.getETDSettings().setExtendTrustDelegation(true);
-
-            secProperties.setDoSignMessage(true);
-
-            String[] outHandlers = secProperties.getOutHandlerClassNames();
-
-            Set<String> outHandlerLst = null;
-
-            // timeout in milliseconds
-            Properties p = secProperties.getExtraSettings();
-            p.setProperty("http.connection.timeout", "300000");
-            p.setProperty("http.socket.timeout", "300000");
-
-            if (outHandlers == null) {
-                outHandlerLst = new HashSet<String>();
-            } else {
-                outHandlerLst = new 
HashSet<String>(Arrays.asList(outHandlers));
-            }
-
-            
outHandlerLst.add("de.fzj.unicore.uas.security.ProxyCertOutHandler");
-
-            secProperties.setOutHandlerClassNames(outHandlerLst.toArray(new 
String[outHandlerLst.size()]));
-
-        } catch (Exception e) {
-            throw new GFacProviderException(e.getMessage(), e);
-        }
-    }
 
     //FIXME: Get user details
     private String getUserName(JobExecutionContext context) {
@@ -474,76 +323,36 @@ public class BESProvider extends AbstractProvider {
 
     }
 
-    public void initProperties(Map<String, String> properties) throws 
GFacProviderException, GFacException {
-
-    }
-
-    protected KeyAndCertCredential generateShortLivedCertificate(String 
userDN, String caCertPath, String caKeyPath,
-                                                                 String caPwd) 
throws Exception {
-        final long CredentialGoodFromOffset = 1000L * 60L * 15L; // 15 minutes
-        // ago
-
-        final long startTime = System.currentTimeMillis() - 
CredentialGoodFromOffset;
-        final long endTime = startTime + 30 * 3600 * 1000;
-
-        String keyLengthProp = "1024";
-        int keyLength = Integer.parseInt(keyLengthProp);
-        String signatureAlgorithm = "SHA1withRSA";
-
-        KeyAndCertCredential caCred = getCACredential(caCertPath, caKeyPath, 
caPwd);
-
-        KeyPairGenerator kpg = 
KeyPairGenerator.getInstance(caCred.getKey().getAlgorithm());
-        kpg.initialize(keyLength);
-        KeyPair pair = kpg.generateKeyPair();
-
-        X500Principal subjectDN = new X500Principal(userDN);
-        Random rand = new Random();
-
-        SubjectPublicKeyInfo publicKeyInfo;
-        try {
-            publicKeyInfo = SubjectPublicKeyInfo.getInstance(new 
ASN1InputStream(pair.getPublic().getEncoded())
-                    .readObject());
-        } catch (IOException e) {
-            throw new InvalidKeyException("Can not parse the public key"
-                    + "being included in the short lived certificate", e);
-        }
-
-        X500Name issuerX500Name = 
CertificateHelpers.toX500Name(caCred.getCertificate().getSubjectX500Principal());
-
-        X500Name subjectX500Name = CertificateHelpers.toX500Name(subjectDN);
 
-        X509v3CertificateBuilder certBuilder = new 
X509v3CertificateBuilder(issuerX500Name, new BigInteger(20, rand),
-                new Date(startTime), new Date(endTime), subjectX500Name, 
publicKeyInfo);
-
-        AlgorithmIdentifier sigAlgId = 
X509v3CertificateBuilder.extractAlgorithmId(caCred.getCertificate());
+    private String getCNFromUserDN(String userDN) {
+        return X500NameUtils.getAttributeValues(userDN, BCStyle.CN)[0];
 
-        X509Certificate certificate = certBuilder.build(caCred.getKey(), 
sigAlgId, signatureAlgorithm, null, null);
+    }
 
-        certificate.checkValidity(new Date());
-        certificate.verify(caCred.getCertificate().getPublicKey());
-        KeyAndCertCredential result = new 
KeyAndCertCredential(pair.getPrivate(), new X509Certificate[] { certificate,
-                caCred.getCertificate() });
 
-        return result;
-    }
+       @Override
+       public void initProperties(Map<String, String> properties)
+                       throws GFacProviderException, GFacException {
+               // TODO Auto-generated method stub
+               
+       }
 
-    private KeyAndCertCredential getCACredential(String caCertPath, String 
caKeyPath, String password) throws Exception {
-        InputStream isKey = new FileInputStream(caKeyPath);
-        PrivateKey pk = CertificateUtils.loadPrivateKey(isKey, Encoding.PEM, 
password.toCharArray());
 
-        InputStream isCert = new FileInputStream(caCertPath);
-        X509Certificate caCert = CertificateUtils.loadCertificate(isCert, 
Encoding.PEM);
+       
 
-        if (isKey != null)
-            isKey.close();
-        if (isCert != null)
-            isCert.close();
 
-        return new KeyAndCertCredential(pk, new X509Certificate[] { caCert });
-    }
+       @Override
+       public void dispose(JobExecutionContext jobExecutionContext)
+                       throws GFacProviderException, GFacException {
+               secProperties = null;
+               
+       }
 
-    private String getCNFromUserDN(String userDN) {
-        return X500NameUtils.getAttributeValues(userDN, BCStyle.CN)[0];
 
-    }
-}
+       @Override
+       public void cancelJob(JobExecutionContext jobExecutionContext)
+                       throws GFacProviderException, GFacException {
+               // TODO Auto-generated method stub
+               
+       }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/fa529589/modules/gfac/gfac-bes/src/main/java/org/apache/airavata/gfac/bes/utils/JSDLGenerator.java
----------------------------------------------------------------------
diff --git 
a/modules/gfac/gfac-bes/src/main/java/org/apache/airavata/gfac/bes/utils/JSDLGenerator.java
 
b/modules/gfac/gfac-bes/src/main/java/org/apache/airavata/gfac/bes/utils/JSDLGenerator.java
index 185c958..d46aef9 100644
--- 
a/modules/gfac/gfac-bes/src/main/java/org/apache/airavata/gfac/bes/utils/JSDLGenerator.java
+++ 
b/modules/gfac/gfac-bes/src/main/java/org/apache/airavata/gfac/bes/utils/JSDLGenerator.java
@@ -28,19 +28,21 @@ import 
org.ggf.schemas.jsdl.x2005.x11.jsdl.JobDefinitionType;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+
 /**
  * 
  * Utility class generates a JSDL instance from JobExecutionContext instance
+ * 
  * @author shahbaz memon
  * 
  * */
 
-public class JSDLGenerator {
-       
+public class JSDLGenerator implements BESConstants {
+
        protected final Logger log = LoggerFactory.getLogger(this.getClass());
-       
-       
-       public synchronized static JobDefinitionDocument 
buildJSDLInstance(JobExecutionContext context) throws Exception {
+
+       public synchronized static JobDefinitionDocument buildJSDLInstance(
+                       JobExecutionContext context) throws Exception {
 
                JobDefinitionDocument jobDefDoc = JobDefinitionDocument.Factory
                                .newInstance();
@@ -52,19 +54,78 @@ public class JSDLGenerator {
 
                // build Identification
                createJobIdentification(value, appDepType);
-               
+
                ResourceProcessor.generateResourceElements(value, context);
-               
+
                ApplicationProcessor.generateJobSpecificAppElements(value, 
context);
-               
+
                DataStagingProcessor.generateDataStagingElements(value, 
context);
-               
-               
+
                return jobDefDoc;
        }
 
+       public synchronized static JobDefinitionDocument buildJSDLInstance(
+                       JobExecutionContext context, String smsUrl) throws 
Exception {
+
+               JobDefinitionDocument jobDefDoc = JobDefinitionDocument.Factory
+                               .newInstance();
+               JobDefinitionType value = jobDefDoc.addNewJobDefinition();
+
+               HpcApplicationDeploymentType appDepType = 
(HpcApplicationDeploymentType) context
+                               
.getApplicationContext().getApplicationDeploymentDescription()
+                               .getType();
+
+               // build Identification
+               createJobIdentification(value, appDepType);
+
+               ResourceProcessor.generateResourceElements(value, context);
+
+               ApplicationProcessor.generateJobSpecificAppElements(value, 
context);
+
+               UASDataStagingProcessor.generateDataStagingElements(value, 
context,
+                               smsUrl);
+
+               return jobDefDoc;
+       }
 
-       public synchronized static JobDefinitionDocument 
buildJSDLInstance(JobExecutionContext context, String smsUrl) throws Exception {
+       public synchronized static JobDefinitionDocument buildJSDLInstance(
+                       JobExecutionContext context, DataServiceInfo dataInfo)
+                       throws Exception {
+
+               JobDefinitionDocument jobDefDoc = JobDefinitionDocument.Factory
+                               .newInstance();
+               JobDefinitionType value = jobDefDoc.addNewJobDefinition();
+
+               HpcApplicationDeploymentType appDepType = 
(HpcApplicationDeploymentType) context
+                               
.getApplicationContext().getApplicationDeploymentDescription()
+                               .getType();
+
+               createJobIdentification(value, appDepType);
+
+               ResourceProcessor.generateResourceElements(value, context);
+
+               ApplicationProcessor.generateJobSpecificAppElements(value, 
context);
+
+               switch (dataInfo.getDirectoryAccesMode()) {
+               case SMSBYTEIO:
+                       if(null == dataInfo.getDataServiceUrl() || 
"".equals(dataInfo.getDataServiceUrl()))
+                               throw new Exception("No SMS address found");
+                       
UASDataStagingProcessor.generateDataStagingElements(value, context,
+                                       dataInfo.getDataServiceUrl());
+                       break;
+               case RNSBYTEIO:
+               case GridFTP:
+               default:
+                       DataStagingProcessor.generateDataStagingElements(value, 
context);
+                       break;
+
+               }
+               return jobDefDoc;
+       }
+
+       public synchronized static JobDefinitionDocument buildJSDLInstance(
+                       JobExecutionContext context, String smsUrl, Object 
jobDirectoryMode)
+                       throws Exception {
 
                JobDefinitionDocument jobDefDoc = JobDefinitionDocument.Factory
                                .newInstance();
@@ -76,19 +137,21 @@ public class JSDLGenerator {
 
                // build Identification
                createJobIdentification(value, appDepType);
-               
+
                ResourceProcessor.generateResourceElements(value, context);
-               
+
                ApplicationProcessor.generateJobSpecificAppElements(value, 
context);
-               
-               UASDataStagingProcessor.generateDataStagingElements(value, 
context, smsUrl);
-               
+
+               UASDataStagingProcessor.generateDataStagingElements(value, 
context,
+                               smsUrl);
+
                return jobDefDoc;
        }
 
-       private static void createJobIdentification(JobDefinitionType value, 
HpcApplicationDeploymentType appDepType){
-               if( appDepType.getProjectAccount() != null ){
-                       
+       private static void createJobIdentification(JobDefinitionType value,
+                       HpcApplicationDeploymentType appDepType) {
+               if (appDepType.getProjectAccount() != null) {
+
                        if 
(appDepType.getProjectAccount().getProjectAccountNumber() != null)
                                JSDLUtils.addProjectName(value, 
appDepType.getProjectAccount()
                                                .getProjectAccountNumber());
@@ -99,5 +162,5 @@ public class JSDLGenerator {
                                                                
.getProjectAccountDescription());
                }
        }
-       
-}
+
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/fa529589/modules/gfac/gfac-bes/src/main/java/org/apache/airavata/gfac/bes/utils/JSDLUtils.java
----------------------------------------------------------------------
diff --git 
a/modules/gfac/gfac-bes/src/main/java/org/apache/airavata/gfac/bes/utils/JSDLUtils.java
 
b/modules/gfac/gfac-bes/src/main/java/org/apache/airavata/gfac/bes/utils/JSDLUtils.java
index a5cd2a2..d2474f0 100644
--- 
a/modules/gfac/gfac-bes/src/main/java/org/apache/airavata/gfac/bes/utils/JSDLUtils.java
+++ 
b/modules/gfac/gfac-bes/src/main/java/org/apache/airavata/gfac/bes/utils/JSDLUtils.java
@@ -74,7 +74,7 @@ public class JSDLUtils
        public static final String NUMBEROFPROCESSES = "NumberOfProcesses";
        public static final String THREADSPERHOST = "ThreadsPerHost";
 
-       
+
        
        public static EnvironmentType addEnvVariable(JobDefinitionType 
def,String name, String value) {
                POSIXApplicationType posixApp = 
getOrCreatePOSIXApplication(def);
@@ -107,7 +107,7 @@ public class JSDLUtils
 
        }
        public static void addDataStagingTargetElement(JobDefinitionType value, 
String fileSystem, String file, String uri) {
-               addDataStagingTargetElement(value,fileSystem, file, uri, 0);
+               addDataStagingTargetElement(value,fileSystem, file, uri, 1);
        }
 
        public static void addDataStagingTargetElement(JobDefinitionType value, 
String fileSystem, String file, String uri, int flags) {
@@ -133,7 +133,7 @@ public class JSDLUtils
        }
 
        public static void addDataStagingSourceElement(JobDefinitionType value, 
String uri, String fileSystem, String file) {
-               addDataStagingSourceElement(value, uri, fileSystem, file, 0);
+               addDataStagingSourceElement(value, uri, fileSystem, file, 1);
        }
 
        public static void addDataStagingSourceElement(JobDefinitionType value, 
String uri, String fileSystem, String file, int flags) {
@@ -537,4 +537,4 @@ public class JSDLUtils
                org.ggf.schemas.jsdl.x2005.x11.jsdl.RangeValueType totalCount = 
getOrCreateTotalResourceCount(value);   
                setRangeValue(resourceCount, totalCount);
        }
-}
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/fa529589/modules/gfac/gfac-gram/src/main/java/org/apache/airavata/gfac/gram/provider/impl/GramProvider.java
----------------------------------------------------------------------
diff --git 
a/modules/gfac/gfac-gram/src/main/java/org/apache/airavata/gfac/gram/provider/impl/GramProvider.java
 
b/modules/gfac/gfac-gram/src/main/java/org/apache/airavata/gfac/gram/provider/impl/GramProvider.java
index 142e492..2f22e0d 100644
--- 
a/modules/gfac/gfac-gram/src/main/java/org/apache/airavata/gfac/gram/provider/impl/GramProvider.java
+++ 
b/modules/gfac/gfac-gram/src/main/java/org/apache/airavata/gfac/gram/provider/impl/GramProvider.java
@@ -186,8 +186,14 @@ public class GramProvider extends AbstractProvider {
                  * batch.
                 * The third boolean is to specify to use the full proxy and 
not delegate a limited proxy.
                 */
-                job.request(true, gateKeeper, false, false);
-
+//                job.request(true, gateKeeper, false, false);
+                
+               
+               // first boolean -> to run job as batch
+               // second boolean -> to use limited proxy
+               //TODO: need review?
+                job.request(gateKeeper, false, false);
+                
                 // Single boolean to track all authentication failures, 
therefore we need to re-initialize
                 // this here
                 renewCredentialsAttempt = false;
@@ -259,8 +265,14 @@ public class GramProvider extends AbstractProvider {
             * The third boolean is to specify to use the full proxy and not 
delegate a limited proxy.
             */
             try {
+                  
+//                job.request(true, gateKeeper, false, false);
+                
+               // first boolean -> to run job as batch
+               // second boolean -> to use limited proxy
+               //TODO: need review?
+                job.request(gateKeeper, false, false);
 
-                job.request(true, gateKeeper, false, false);
                 renewCredentialsAttempt = false;
 
             } catch (GramException e) {

http://git-wip-us.apache.org/repos/asf/airavata/blob/fa529589/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 69cd5c4..bbc714b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -88,7 +88,7 @@
         <oa4mp.version>1.0.6</oa4mp.version>
         <antrun.version>1.7</antrun.version>
         <bouncy.castle.version>1.45</bouncy.castle.version>
-        <jglobus.version>2.0.6</jglobus.version>
+        <jglobus.version>2.1.0</jglobus.version>
         <ebay.cors.filter>1.0.0</ebay.cors.filter>
         <thrift.version>0.9.1</thrift.version>
         <mysql.connector.version>5.1.31</mysql.connector.version>

Reply via email to