You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by ra...@apache.org on 2013/12/13 17:19:36 UTC

svn commit: r1550760 [2/3] - in /airavata/trunk: ./ modules/airavata-client/ modules/commons/ modules/commons/json/ modules/credential-store/ modules/distribution/airavata-server/ modules/distribution/airavata-server/src/main/assembly/ modules/distribu...

Modified: airavata/trunk/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/provider/utils/JSDLUtils.java
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/provider/utils/JSDLUtils.java?rev=1550760&r1=1550759&r2=1550760&view=diff
==============================================================================
--- airavata/trunk/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/provider/utils/JSDLUtils.java (original)
+++ airavata/trunk/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/provider/utils/JSDLUtils.java Fri Dec 13 16:19:35 2013
@@ -1,513 +1,519 @@
-/*
- *
- * 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.provider.utils;
 
+
 import javax.xml.namespace.QName;
 
 import org.apache.commons.httpclient.URIException;
 import org.apache.xmlbeans.XmlCursor;
 import org.apache.xmlbeans.XmlObject;
-import org.ogf.schemas.jsdl.ApplicationType;
-import org.ogf.schemas.jsdl.BoundaryType;
-import org.ogf.schemas.jsdl.CPUArchitectureType;
-import org.ogf.schemas.jsdl.CandidateHostsType;
-import org.ogf.schemas.jsdl.CreationFlagEnumeration;
-import org.ogf.schemas.jsdl.DataStagingType;
-import org.ogf.schemas.jsdl.ExactType;
-import org.ogf.schemas.jsdl.JobDefinitionType;
-import org.ogf.schemas.jsdl.JobDescriptionType;
-import org.ogf.schemas.jsdl.JobIdentificationType;
-import org.ogf.schemas.jsdl.OperatingSystemType;
-import org.ogf.schemas.jsdl.OperatingSystemTypeEnumeration;
-import org.ogf.schemas.jsdl.OperatingSystemTypeType;
-import org.ogf.schemas.jsdl.ProcessorArchitectureEnumeration;
-import org.ogf.schemas.jsdl.ResourcesType;
-import org.ogf.schemas.jsdl.SourceTargetType;
-import org.ogf.schemas.jsdl.hpcpa.HPCProfileApplicationDocument;
-import org.ogf.schemas.jsdl.hpcpa.HPCProfileApplicationType;
-import org.ogf.schemas.jsdl.posix.EnvironmentType;
-import org.ogf.schemas.jsdl.posix.POSIXApplicationDocument;
-import org.ogf.schemas.jsdl.posix.POSIXApplicationType;
-import org.ogf.schemas.jsdl.spmd.SPMDApplicationDocument;
-import org.ogf.schemas.jsdl.spmd.SPMDApplicationType;
-
-public class JSDLUtils {
-
-    public static final int FLAG_OVERWRITE = 1;
-    public static final int FLAG_APPEND = 2;
-    public static final int FLAG_DELETE_ON_TERMINATE = 32;
-
-    public static final QName POSIX_APPLICATION = POSIXApplicationDocument.type.getDocumentElementName();
-
-    public static final QName HPC_PROFILE_APPLICATION = HPCProfileApplicationDocument.type.getDocumentElementName();
-
-    public static final QName SPMD_APPLICATION = SPMDApplicationDocument.type.getDocumentElementName();
-
-    public static final String PROCESSESPERHOST = "ProcessesPerHost";
-    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);
-        EnvironmentType newEnv = posixApp.addNewEnvironment();
-        newEnv.setName(name);
-        newEnv.setStringValue(value);
-        return newEnv;
-    }
-
-    public static void setApplicationName(JobDefinitionType value, String applicationName) {
-        getOrCreateApplication(value).setApplicationName(applicationName);
-    }
-
-    public static void setApplicationVersion(JobDefinitionType value, String applicationVersion) {
-        getOrCreateApplication(value).setApplicationVersion(applicationVersion);
-    }
-
-    public static void addProjectName(JobDefinitionType value, String projectName) {
-        getOrCreateJobIdentification(value).addNewJobProject().setStringValue(projectName);
-    }
-
-    public static void addMultipleProjectNames(JobDefinitionType value, String[] projectNames) {
-        for (String name : projectNames) {
-            getOrCreateJobIdentification(value).addNewJobProject().setStringValue(name);
-        }
-    }
-
-    public static void addCandidateHost(JobDefinitionType value, String host) {
-        getOrCreateCandidateHosts(value).addHostName(host);
-
-    }
-
-    public static void addDataStagingTargetElement(JobDefinitionType value, String fileSystem, String file, String uri) {
-        addDataStagingTargetElement(value, fileSystem, file, uri, 0);
-    }
-
-    public static void addDataStagingTargetElement(JobDefinitionType value, String fileSystem, String file, String uri,
-            int flags) {
-        JobDescriptionType jobDescr = getOrCreateJobDescription(value);
-        DataStagingType newDS = jobDescr.addNewDataStaging();
-        CreationFlagEnumeration.Enum creationFlag = CreationFlagEnumeration.DONT_OVERWRITE;
-        if ((flags & FLAG_OVERWRITE) != 0)
-            creationFlag = CreationFlagEnumeration.OVERWRITE;
-        if ((flags & FLAG_APPEND) != 0)
-            creationFlag = CreationFlagEnumeration.APPEND;
-        boolean deleteOnTerminate = (flags & FLAG_DELETE_ON_TERMINATE) != 0;
-        newDS.setCreationFlag(creationFlag);
-        newDS.setDeleteOnTermination(deleteOnTerminate);
-        SourceTargetType target = newDS.addNewTarget();
-
-        try {
-            uri = (uri == null) ? null : URIUtils.encodeAll(uri);
-        } catch (URIException e) {
-        }
-        target.setURI(uri);
-        newDS.setFileName(file);
-        if (fileSystem != null && !fileSystem.equals("Work")) { //$NON-NLS-1$
-            newDS.setFilesystemName(fileSystem);
-        }
-    }
-
-    public static void addDataStagingSourceElement(JobDefinitionType value, String uri, String fileSystem, String file) {
-        addDataStagingSourceElement(value, uri, fileSystem, file, 0);
-    }
-
-    public static void addDataStagingSourceElement(JobDefinitionType value, String uri, String fileSystem, String file,
-            int flags) {
-        JobDescriptionType jobDescr = getOrCreateJobDescription(value);
-
-        try {
-            uri = (uri == null) ? null : URIUtils.encodeAll(uri);
-        } catch (URIException e) {
-        }
-        DataStagingType newDS = jobDescr.addNewDataStaging();
-        CreationFlagEnumeration.Enum creationFlag = CreationFlagEnumeration.DONT_OVERWRITE;
-        if ((flags & FLAG_OVERWRITE) != 0)
-            creationFlag = CreationFlagEnumeration.OVERWRITE;
-        if ((flags & FLAG_APPEND) != 0)
-            creationFlag = CreationFlagEnumeration.APPEND;
-        boolean deleteOnTerminate = (flags & FLAG_DELETE_ON_TERMINATE) != 0;
-        newDS.setCreationFlag(creationFlag);
-        newDS.setDeleteOnTermination(deleteOnTerminate);
-        SourceTargetType source = newDS.addNewSource();
-        source.setURI(uri);
-        newDS.setFileName(file);
-        if (fileSystem != null && !fileSystem.equals("Work")) { //$NON-NLS-1$
-            newDS.setFilesystemName(fileSystem);
-        }
-    }
-
-    public static ApplicationType getOrCreateApplication(JobDefinitionType value) {
-        JobDescriptionType jobDescr = getOrCreateJobDescription(value);
-        if (!jobDescr.isSetApplication()) {
-            jobDescr.addNewApplication();
-        }
-        return jobDescr.getApplication();
-    }
-
-    public static CandidateHostsType getOrCreateCandidateHosts(JobDefinitionType value) {
-        ResourcesType resources = getOrCreateResources(value);
-        if (!resources.isSetCandidateHosts()) {
-            resources.addNewCandidateHosts();
-        }
-        return resources.getCandidateHosts();
-    }
-
-    public static CPUArchitectureType getOrCreateCPUArchitecture(JobDefinitionType value) {
-
-        ResourcesType jobResources = getOrCreateResources(value);
-        if (!jobResources.isSetCPUArchitecture()) {
-            jobResources.addNewCPUArchitecture();
-        }
-        return jobResources.getCPUArchitecture();
-    }
-
-    public static org.ogf.schemas.jsdl.RangeValueType getOrCreateIndividualCPUCount(
-            JobDefinitionType value) {
-        ResourcesType jobResources = getOrCreateResources(value);
-        if (!jobResources.isSetIndividualCPUCount()) {
-            jobResources.addNewIndividualCPUCount();
-        }
-        return jobResources.getIndividualCPUCount();
-    }
-
-    public static org.ogf.schemas.jsdl.RangeValueType getOrCreateIndividualCPUSpeed(
-            JobDefinitionType value) {
-
-        ResourcesType jobResources = getOrCreateResources(value);
-        if (!jobResources.isSetIndividualCPUSpeed()) {
-            jobResources.addNewIndividualCPUSpeed();
-        }
-        return jobResources.getIndividualCPUSpeed();
-    }
-
-    public static org.ogf.schemas.jsdl.RangeValueType getOrCreateIndividualCPUTime(
-            JobDefinitionType value) {
-
-        ResourcesType jobResources = getOrCreateResources(value);
-        if (!jobResources.isSetIndividualCPUTime()) {
-            jobResources.addNewIndividualCPUTime();
-        }
-        return jobResources.getIndividualCPUTime();
-    }
-
-    public static org.ogf.schemas.jsdl.RangeValueType getOrCreateIndividualDiskSpace(
-            JobDefinitionType value) {
-
-        ResourcesType jobResources = getOrCreateResources(value);
-        if (!jobResources.isSetIndividualDiskSpace()) {
-            jobResources.addNewIndividualDiskSpace();
-        }
-        return jobResources.getIndividualDiskSpace();
-    }
-
-    public static org.ogf.schemas.jsdl.RangeValueType getOrCreateIndividualPhysicalMemory(
-            JobDefinitionType value) {
-
-        ResourcesType jobResources = getOrCreateResources(value);
-        if (!jobResources.isSetIndividualPhysicalMemory()) {
-            jobResources.addNewIndividualPhysicalMemory();
-        }
-        return jobResources.getIndividualPhysicalMemory();
-    }
-
-    public static JobDescriptionType getOrCreateJobDescription(JobDefinitionType value) {
-        if (value.getJobDescription() == null) {
-            return value.addNewJobDescription();
-        }
-        return value.getJobDescription();
-    }
-
-    public static JobIdentificationType getOrCreateJobIdentification(JobDefinitionType value) {
-        JobDescriptionType descr = getOrCreateJobDescription(value);
-        if (descr.getJobIdentification() == null) {
-            return descr.addNewJobIdentification();
-        }
-        return descr.getJobIdentification();
-    }
-
-    public static OperatingSystemType getOrCreateOperatingSystem(JobDefinitionType value) {
-        ResourcesType jobResources = getOrCreateResources(value);
-        if (!jobResources.isSetOperatingSystem()) {
-            jobResources.addNewOperatingSystem();
-        }
-        return jobResources.getOperatingSystem();
-    }
-
-    public static ResourcesType getOrCreateResources(JobDefinitionType value) {
-        JobDescriptionType jobDescr = getOrCreateJobDescription(value);
-        if (!jobDescr.isSetResources()) {
-            jobDescr.addNewResources();
-        }
-        return jobDescr.getResources();
-    }
-
-    public static org.ogf.schemas.jsdl.RangeValueType getOrCreateTotalCPUCount(JobDefinitionType value) {
-
-        ResourcesType jobResources = getOrCreateResources(value);
-        if (!jobResources.isSetTotalCPUCount()) {
-            jobResources.addNewTotalCPUCount();
-        }
-        return jobResources.getTotalCPUCount();
-    }
-
-    public static org.ogf.schemas.jsdl.RangeValueType getOrCreateTotalResourceCount(
-            JobDefinitionType value) {
-
-        ResourcesType jobResources = getOrCreateResources(value);
-        if (!jobResources.isSetTotalResourceCount()) {
-            jobResources.addNewTotalResourceCount();
-        }
-        return jobResources.getTotalResourceCount();
-    }
-
-    public static POSIXApplicationType getOrCreatePOSIXApplication(JobDefinitionType value) {
-
-        ApplicationType application = getOrCreateApplication(value);
-
-        if (getHPCProfileApplication(value) != null) {
-            // TODO handle: not creating POSIX element if HPCProfile already exists
-            return getPOSIXApplication(value);
-        }
-
-        if (getPOSIXApplication(value) == null) {
-            XmlCursor acursor = application.newCursor();
-            acursor.toEndToken();
-            acursor.insertElement(POSIX_APPLICATION);
-            acursor.dispose();
-        }
-        return getPOSIXApplication(value);
-    }
-
-    public static SPMDApplicationType getOrCreateSPMDApplication(JobDefinitionType value) {
-
-        ApplicationType application = getOrCreateApplication(value);
-
-        if (getSPMDApplication(value) == null) {
-            XmlCursor acursor = application.newCursor();
-            acursor.toEndToken();
-            acursor.insertElement(SPMD_APPLICATION);
-            acursor.dispose();
-        }
-        return getSPMDApplication(value);
-    }
-
-    public static SPMDApplicationType getSPMDApplication(JobDefinitionType value) {
-        if (value != null && value.getJobDescription() != null && value.getJobDescription().isSetApplication()) {
-            XmlCursor acursor = value.getJobDescription().getApplication().newCursor();
-            if (acursor.toFirstChild()) {
-                do {
-                    if (acursor.getName().equals(SPMD_APPLICATION)) {
-                        XmlObject result = acursor.getObject();
-                        acursor.dispose();
-                        return (SPMDApplicationType) result;
-                    }
-                } while (acursor.toNextSibling());
-                acursor.dispose();
-                return null;
-            } else {
-                acursor.dispose();
-                return null;
-            }
-        } else {
-            return null;
-        }
-    }
-
-    public static POSIXApplicationType getPOSIXApplication(JobDefinitionType value) {
-        if (value != null && value.getJobDescription() != null && value.getJobDescription().isSetApplication()) {
-            XmlCursor acursor = value.getJobDescription().getApplication().newCursor();
-            if (acursor.toFirstChild()) {
-                do {
-                    if (acursor.getName().equals(POSIX_APPLICATION)) {
-                        XmlObject result = acursor.getObject();
-                        acursor.dispose();
-                        return (POSIXApplicationType) result;
-                    }
-                } while (acursor.toNextSibling());
-                acursor.dispose();
-                return null;
-            } else {
-                acursor.dispose();
-                return null;
-            }
-        } else {
-            return null;
-        }
-    }
-
-    public static HPCProfileApplicationType getOrCreateHPCProfileApplication(JobDefinitionType value) {
-
-        ApplicationType application = getOrCreateApplication(value);
-
-        if (getPOSIXApplication(value) != null) {
-            // TODO handle: creating HPC element if POSIX already exists
-            return getHPCProfileApplication(value);
-        }
-
-        if (getHPCProfileApplication(value) == null) {
-            XmlCursor acursor = application.newCursor();
-            acursor.toEndToken();
-            acursor.insertElement(HPC_PROFILE_APPLICATION);
-            acursor.dispose();
-        }
-        return getHPCProfileApplication(value);
-    }
-
-    public static HPCProfileApplicationType getHPCProfileApplication(JobDefinitionType value) {
-        if (value != null && value.getJobDescription() != null && value.getJobDescription().isSetApplication()) {
-            XmlCursor acursor = value.getJobDescription().getApplication().newCursor();
-            if (acursor.toFirstChild()) {
-                do {
-                    if (acursor.getName().equals(HPC_PROFILE_APPLICATION)) {
-                        XmlObject result = acursor.getObject();
-                        acursor.dispose();
-                        return (HPCProfileApplicationType) result;
-                    }
-                } while (acursor.toNextSibling());
-                acursor.dispose();
-                return null;
-            } else {
-                acursor.dispose();
-                return null;
-            }
-        } else {
-            return null;
-        }
-    }
-
-    public static RangeValueType getTotalCPUCountRequirements(JobDefinitionType value) {
-        if (value != null && value.getJobDescription() != null && value.getJobDescription().isSetResources()
-                && value.getJobDescription().getResources().isSetTotalCPUCount()) {
-            return toU6RangeValue(value.getJobDescription().getResources().getTotalCPUCount());
-        } else
-            return null;
-    }
-
-    public static RangeValueType getTotalResourceCountRequirements(JobDefinitionType value) {
-        if (value != null && value.getJobDescription() != null && value.getJobDescription().isSetResources()
-                && value.getJobDescription().getResources().isSetTotalResourceCount()) {
-            return toU6RangeValue(value.getJobDescription().getResources().getTotalResourceCount());
-        } else
-            return null;
-    }
-
-    public static RangeValueType toU6RangeValue(org.ogf.schemas.jsdl.RangeValueType jsdlType) {
-        RangeValueType result = new RangeValueType();
-        if (jsdlType.getExactArray().length > 0) {
-            result.setExact(jsdlType.getExactArray(0).getDoubleValue());
-        }
-        if (jsdlType.isSetLowerBoundedRange()) {
-            result.setLowerBound(jsdlType.getLowerBoundedRange().getDoubleValue());
-        }
-        if (jsdlType.isSetUpperBoundedRange()) {
-            result.setUpperBound(jsdlType.getUpperBoundedRange().getDoubleValue());
-        }
-        return result;
-    }
-
-    public static void setCPUArchitectureRequirements(JobDefinitionType value, ProcessorRequirement cpuArchitecture) {
-        if (cpuArchitecture == null || cpuArchitecture.getValue() == null)
-            return;
-        CPUArchitectureType cpuArch = getOrCreateCPUArchitecture(value);
-        cpuArch.setCPUArchitectureName(ProcessorArchitectureEnumeration.Enum.forString(cpuArchitecture.getValue()));
-    }
-
-    public static void setIndividualCPUCountRequirements(JobDefinitionType value, RangeValueType cpuCount) {
-        org.ogf.schemas.jsdl.RangeValueType individualCPUCount = getOrCreateIndividualCPUCount(value);
-        setRangeValue(cpuCount, individualCPUCount);
-    }
-
-    public static void setIndividualCPUSpeedRequirements(JobDefinitionType value, RangeValueType cpuSpeed) {
-        org.ogf.schemas.jsdl.RangeValueType individualCPUSpeed = getOrCreateIndividualCPUSpeed(value);
-        setRangeValue(cpuSpeed, individualCPUSpeed);
-    }
-
-    public static void setIndividualCPUTimeRequirements(JobDefinitionType value, RangeValueType cpuTime) {
-        org.ogf.schemas.jsdl.RangeValueType cpuIndividualTime = getOrCreateIndividualCPUTime(value);
-        setRangeValue(cpuTime, cpuIndividualTime);
-    }
-
-    public static void setIndividualDiskSpaceRequirements(JobDefinitionType value, RangeValueType diskSpace) {
-        org.ogf.schemas.jsdl.RangeValueType individualDiskSpace = getOrCreateIndividualDiskSpace(value);
-        setRangeValue(diskSpace, individualDiskSpace);
-    }
-
-    public static void setIndividualPhysicalMemoryRequirements(JobDefinitionType value, RangeValueType physicalMemory) {
-        org.ogf.schemas.jsdl.RangeValueType individualPhysicalMemory = getOrCreateIndividualPhysicalMemory(value);
-        setRangeValue(physicalMemory, individualPhysicalMemory);
-    }
-
-    public static void setName(JobDefinitionType value, String name) {
-        getOrCreateJobIdentification(value).setJobName(name);
-    }
-
-    public static void setOperatingSystemRequirements(JobDefinitionType value, OSRequirement osType) {
-        if (osType == null || osType.getOSType() == null)
-            return;
-        OperatingSystemType os_Type = getOrCreateOperatingSystem(value);
-        OperatingSystemTypeType ostt = os_Type.addNewOperatingSystemType();
-        ostt.setOperatingSystemName(OperatingSystemTypeEnumeration.Enum.forString(osType.getOSType().getValue()));
-        if (osType.getOSVersion() != null) {
-            os_Type.setOperatingSystemVersion(osType.getOSVersion());
-        }
-    }
-
-    public static void setRangeValue(RangeValueType u6Type, org.ogf.schemas.jsdl.RangeValueType jsdlType) {
-        Double exact = u6Type.getExact();
-        Double epsilon = u6Type.getEpsilon();
-        Double lower = u6Type.getLowerBound();
-        Double upper = u6Type.getUpperBound();
-
-        if (lower.isNaN() && upper.isNaN()) {
-            ExactType exactType = jsdlType.getExactArray().length > 0 ? jsdlType.getExactArray(0) : jsdlType
-                    .addNewExact();
-            exactType.setDoubleValue(exact);
-            if (!epsilon.isNaN() && epsilon != 0) {
-                exactType.setEpsilon(epsilon);
-            }
-        } else {
-            if (!lower.isNaN()) {
-                BoundaryType lowerBound = jsdlType.isSetLowerBoundedRange() ? jsdlType.getLowerBoundedRange()
-                        : jsdlType.addNewLowerBoundedRange();
-                lowerBound.setDoubleValue(lower);
-                lowerBound.setExclusiveBound(!u6Type.isIncludeLowerBound());
-            }
-
-            if (!upper.isNaN()) {
-                BoundaryType upperBound = jsdlType.isSetUpperBoundedRange() ? jsdlType.getUpperBoundedRange()
-                        : jsdlType.addNewUpperBoundedRange();
-                upperBound.setDoubleValue(upper);
-                upperBound.setExclusiveBound(!u6Type.isIncludeUpperBound());
-            }
-        }
-    }
-
-    public static void setTotalCPUCountRequirements(JobDefinitionType value, RangeValueType cpuCount) {
-        org.ogf.schemas.jsdl.RangeValueType cpuTotalCount = getOrCreateTotalCPUCount(value);
-        setRangeValue(cpuCount, cpuTotalCount);
-    }
-
-    public static void setTotalResourceCountRequirements(JobDefinitionType value, RangeValueType resourceCount) {
-        org.ogf.schemas.jsdl.RangeValueType totalCount = getOrCreateTotalResourceCount(value);
-        setRangeValue(resourceCount, totalCount);
-    }
+import org.ggf.schemas.jsdl.x2005.x11.jsdl.ApplicationType;
+import org.ggf.schemas.jsdl.x2005.x11.jsdl.BoundaryType;
+import org.ggf.schemas.jsdl.x2005.x11.jsdl.CPUArchitectureType;
+import org.ggf.schemas.jsdl.x2005.x11.jsdl.CandidateHostsType;
+import org.ggf.schemas.jsdl.x2005.x11.jsdl.CreationFlagEnumeration;
+import org.ggf.schemas.jsdl.x2005.x11.jsdl.DataStagingType;
+import org.ggf.schemas.jsdl.x2005.x11.jsdl.ExactType;
+import org.ggf.schemas.jsdl.x2005.x11.jsdl.JobDefinitionType;
+import org.ggf.schemas.jsdl.x2005.x11.jsdl.JobDescriptionType;
+import org.ggf.schemas.jsdl.x2005.x11.jsdl.JobIdentificationType;
+import org.ggf.schemas.jsdl.x2005.x11.jsdl.OperatingSystemType;
+import org.ggf.schemas.jsdl.x2005.x11.jsdl.OperatingSystemTypeEnumeration;
+import org.ggf.schemas.jsdl.x2005.x11.jsdl.OperatingSystemTypeType;
+import org.ggf.schemas.jsdl.x2005.x11.jsdl.ProcessorArchitectureEnumeration;
+import org.ggf.schemas.jsdl.x2005.x11.jsdl.ResourcesType;
+import org.ggf.schemas.jsdl.x2005.x11.jsdl.SourceTargetType;
+import org.ggf.schemas.jsdl.x2005.x11.jsdlPosix.EnvironmentType;
+import org.ggf.schemas.jsdl.x2005.x11.jsdlPosix.POSIXApplicationDocument;
+import org.ggf.schemas.jsdl.x2005.x11.jsdlPosix.POSIXApplicationType;
+import org.ggf.schemas.jsdl.x2006.x07.jsdlHpcpa.HPCProfileApplicationDocument;
+import org.ggf.schemas.jsdl.x2006.x07.jsdlHpcpa.HPCProfileApplicationType;
+import org.ogf.schemas.jsdl.x2007.x02.jsdlSpmd.SPMDApplicationDocument;
+import org.ogf.schemas.jsdl.x2007.x02.jsdlSpmd.SPMDApplicationType;
+
+
+/**
+ * 
+ * @author shahbaz memon, bastian demuth
+ *
+ */
+public class JSDLUtils
+{
+
+	public static final int FLAG_OVERWRITE = 1;
+	public static final int FLAG_APPEND = 2;
+	public static final int FLAG_DELETE_ON_TERMINATE = 32;
+
+	public static final QName POSIX_APPLICATION=POSIXApplicationDocument.type.getDocumentElementName();
+	
+	public static final QName HPC_PROFILE_APPLICATION=HPCProfileApplicationDocument.type.getDocumentElementName();
+	
+	public static final QName SPMD_APPLICATION=SPMDApplicationDocument.type.getDocumentElementName();
+	
+	public static final String PROCESSESPERHOST = "ProcessesPerHost"; 
+	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);
+		EnvironmentType newEnv = posixApp.addNewEnvironment();
+		newEnv.setName(name);
+		newEnv.setStringValue(value);
+		return newEnv;
+	}
+
+	public static void setApplicationName(JobDefinitionType value, String applicationName) {
+		getOrCreateApplication(value).setApplicationName(applicationName);
+	}
+
+	public static void setApplicationVersion(JobDefinitionType value, String applicationVersion) {
+		getOrCreateApplication(value).setApplicationVersion(applicationVersion);
+	}
+
+	public static void addProjectName(JobDefinitionType value, String projectName) {
+		getOrCreateJobIdentification(value).addNewJobProject().setStringValue(projectName);
+	}
+	
+	public static void addMultipleProjectNames(JobDefinitionType value, String[] projectNames) {
+		for (String name : projectNames) {
+			getOrCreateJobIdentification(value).addNewJobProject().setStringValue(name);
+		}
+	}
+
+	public static void addCandidateHost(JobDefinitionType value, String host) {
+		getOrCreateCandidateHosts(value).addHostName(host);
+
+	}
+	public static void addDataStagingTargetElement(JobDefinitionType value, String fileSystem, String file, String uri) {
+		addDataStagingTargetElement(value,fileSystem, file, uri, 0);
+	}
+
+	public static void addDataStagingTargetElement(JobDefinitionType value, String fileSystem, String file, String uri, int flags) {
+		JobDescriptionType jobDescr = getOrCreateJobDescription(value);
+		DataStagingType newDS = jobDescr.addNewDataStaging();
+		CreationFlagEnumeration.Enum creationFlag = CreationFlagEnumeration.DONT_OVERWRITE;
+		if((flags & FLAG_OVERWRITE) != 0) creationFlag = CreationFlagEnumeration.OVERWRITE;
+		if((flags & FLAG_APPEND) != 0) creationFlag = CreationFlagEnumeration.APPEND;
+		boolean deleteOnTerminate = (flags & FLAG_DELETE_ON_TERMINATE) != 0;
+		newDS.setCreationFlag(creationFlag);
+		newDS.setDeleteOnTermination(deleteOnTerminate);
+		SourceTargetType target = newDS.addNewTarget();
+
+		try {
+			uri = (uri == null) ? null : URIUtils.encodeAll(uri);
+		} catch (URIException e) {
+		}
+		target.setURI(uri);
+		newDS.setFileName(file);
+		if (fileSystem != null && !fileSystem.equals("Work")) {  //$NON-NLS-1$
+			newDS.setFilesystemName(fileSystem);
+		}
+	}
+
+	public static void addDataStagingSourceElement(JobDefinitionType value, String uri, String fileSystem, String file) {
+		addDataStagingSourceElement(value, uri, fileSystem, file, 0);
+	}
+
+	public static void addDataStagingSourceElement(JobDefinitionType value, String uri, String fileSystem, String file, int flags) {
+		JobDescriptionType jobDescr = getOrCreateJobDescription(value);
+
+		try {
+			uri = (uri == null) ? null : URIUtils.encodeAll(uri);
+		} catch (URIException e) {
+		}
+		DataStagingType newDS = jobDescr.addNewDataStaging();
+		CreationFlagEnumeration.Enum creationFlag = CreationFlagEnumeration.DONT_OVERWRITE;
+		if((flags & FLAG_OVERWRITE) != 0) creationFlag = CreationFlagEnumeration.OVERWRITE;
+		if((flags & FLAG_APPEND) != 0) creationFlag = CreationFlagEnumeration.APPEND;
+		boolean deleteOnTerminate = (flags & FLAG_DELETE_ON_TERMINATE) != 0;
+		newDS.setCreationFlag(creationFlag);
+		newDS.setDeleteOnTermination(deleteOnTerminate);
+		SourceTargetType source = newDS.addNewSource();
+		source.setURI(uri);
+		newDS.setFileName(file);
+		if (fileSystem != null && !fileSystem.equals("Work")) {  //$NON-NLS-1$
+			newDS.setFilesystemName(fileSystem);
+		}
+	}
+
+
+	public static ApplicationType getOrCreateApplication(JobDefinitionType value) {
+		JobDescriptionType jobDescr = getOrCreateJobDescription(value);
+		if (!jobDescr.isSetApplication()) {
+			jobDescr.addNewApplication();
+		}
+		return jobDescr.getApplication();
+	}
+
+	public static CandidateHostsType getOrCreateCandidateHosts(JobDefinitionType value) {
+		ResourcesType resources = getOrCreateResources(value);
+		if (!resources.isSetCandidateHosts()) {
+			resources.addNewCandidateHosts();
+		}
+		return resources.getCandidateHosts();
+	}
+
+	public static CPUArchitectureType getOrCreateCPUArchitecture(JobDefinitionType value) {
+
+		ResourcesType jobResources = getOrCreateResources(value);
+		if (!jobResources.isSetCPUArchitecture()) {
+			jobResources.addNewCPUArchitecture();
+		}
+		return jobResources.getCPUArchitecture();
+	}
+
+	public static org.ggf.schemas.jsdl.x2005.x11.jsdl.RangeValueType getOrCreateIndividualCPUCount(JobDefinitionType value) {        
+		ResourcesType jobResources = getOrCreateResources(value);
+		if (!jobResources.isSetIndividualCPUCount()) {
+			jobResources.addNewIndividualCPUCount();
+		}
+		return jobResources.getIndividualCPUCount();
+	}
+
+
+	public static org.ggf.schemas.jsdl.x2005.x11.jsdl.RangeValueType getOrCreateIndividualCPUSpeed(JobDefinitionType value) {
+
+		ResourcesType jobResources = getOrCreateResources(value);
+		if (!jobResources.isSetIndividualCPUSpeed()) {
+			jobResources.addNewIndividualCPUSpeed();
+		}
+		return jobResources.getIndividualCPUSpeed();
+	}
+
+	public static org.ggf.schemas.jsdl.x2005.x11.jsdl.RangeValueType getOrCreateIndividualCPUTime(JobDefinitionType value) {
+
+		ResourcesType jobResources = getOrCreateResources(value);
+		if ( !jobResources.isSetIndividualCPUTime() ) {
+			jobResources.addNewIndividualCPUTime();
+		}
+		return jobResources.getIndividualCPUTime();
+	}
+
+	public static org.ggf.schemas.jsdl.x2005.x11.jsdl.RangeValueType getOrCreateIndividualDiskSpace(JobDefinitionType value) {
+
+		ResourcesType jobResources = getOrCreateResources(value);
+		if (!jobResources.isSetIndividualDiskSpace()) {
+			jobResources.addNewIndividualDiskSpace();
+		}
+		return jobResources.getIndividualDiskSpace();
+	}
+
+	public static org.ggf.schemas.jsdl.x2005.x11.jsdl.RangeValueType getOrCreateIndividualPhysicalMemory(JobDefinitionType value) {
+
+		ResourcesType jobResources = getOrCreateResources(value);
+		if (!jobResources.isSetIndividualPhysicalMemory()) {
+			jobResources.addNewIndividualPhysicalMemory();
+		}
+		return jobResources.getIndividualPhysicalMemory();
+	}
+
+	public static JobDescriptionType getOrCreateJobDescription(JobDefinitionType value) {
+		if (value.getJobDescription() == null) {
+			return value.addNewJobDescription();
+		}
+		return value.getJobDescription();
+	}
+
+	public static JobIdentificationType getOrCreateJobIdentification(JobDefinitionType value) {
+		JobDescriptionType descr = getOrCreateJobDescription(value);
+		if (descr.getJobIdentification() == null) {
+			return descr.addNewJobIdentification();
+		}
+		return descr.getJobIdentification();
+	}
+
+	public static OperatingSystemType getOrCreateOperatingSystem(JobDefinitionType value)
+	{
+		ResourcesType jobResources = getOrCreateResources(value);        
+		if(!jobResources.isSetOperatingSystem()) {
+			jobResources.addNewOperatingSystem();
+		}
+		return jobResources.getOperatingSystem();
+	}
+
+	public static ResourcesType getOrCreateResources(JobDefinitionType value) {
+		JobDescriptionType jobDescr = getOrCreateJobDescription(value);
+		if (!jobDescr.isSetResources()) {
+			jobDescr.addNewResources();
+		}
+		return jobDescr.getResources();
+	}
+
+
+	public static org.ggf.schemas.jsdl.x2005.x11.jsdl.RangeValueType getOrCreateTotalCPUCount(JobDefinitionType value) {
+
+		ResourcesType jobResources = getOrCreateResources(value);
+		if ( !jobResources.isSetTotalCPUCount() ) {
+			jobResources.addNewTotalCPUCount();
+		}
+		return jobResources.getTotalCPUCount();
+	}
+
+
+	public static org.ggf.schemas.jsdl.x2005.x11.jsdl.RangeValueType getOrCreateTotalResourceCount(JobDefinitionType value) {
+
+		ResourcesType jobResources = getOrCreateResources(value);
+		if ( !jobResources.isSetTotalResourceCount())
+		{
+			jobResources.addNewTotalResourceCount();
+		}
+		return jobResources.getTotalResourceCount();
+	}
+
+	public static POSIXApplicationType getOrCreatePOSIXApplication(JobDefinitionType value) {
+		
+		ApplicationType application = getOrCreateApplication(value);
+		
+		if(getHPCProfileApplication(value) != null){
+			//TODO handle: not creating POSIX element if HPCProfile already exists
+			return getPOSIXApplication(value);
+		}
+		
+		if (getPOSIXApplication(value) == null) {
+			XmlCursor acursor = application.newCursor();
+			acursor.toEndToken();
+			acursor.insertElement(POSIX_APPLICATION);
+			acursor.dispose();
+		}
+		return getPOSIXApplication(value);
+	}
+
+	
+	public static SPMDApplicationType getOrCreateSPMDApplication(JobDefinitionType value) {
+		
+		ApplicationType application = getOrCreateApplication(value);
+		
+		if (getSPMDApplication(value) == null) {
+			XmlCursor acursor = application.newCursor();
+			acursor.toEndToken();
+			acursor.insertElement(SPMD_APPLICATION);
+			acursor.dispose();
+		}
+		return getSPMDApplication(value);
+	}
+
+	public static SPMDApplicationType getSPMDApplication(JobDefinitionType value) {
+		if (value != null &&
+				value.getJobDescription() != null && 
+				value.getJobDescription().isSetApplication() ) {
+			XmlCursor acursor = value.getJobDescription().getApplication().newCursor();
+			if (acursor.toFirstChild()) {
+				do {
+					if(acursor.getName().equals(SPMD_APPLICATION)) {
+						XmlObject result = acursor.getObject();
+						acursor.dispose();
+						return (SPMDApplicationType) result;
+					}
+				} while (acursor.toNextSibling());
+				acursor.dispose();
+				return null;
+			} else {
+				acursor.dispose();                               
+				return null;
+			}
+		} else {
+			return null;
+		}
+	}
+
+	
+	
+	public static POSIXApplicationType getPOSIXApplication(JobDefinitionType value) {
+		if (value != null &&
+				value.getJobDescription() != null && 
+				value.getJobDescription().isSetApplication() ) {
+			XmlCursor acursor = value.getJobDescription().getApplication().newCursor();
+			if (acursor.toFirstChild()) {
+				do {
+					if(acursor.getName().equals(POSIX_APPLICATION)) {
+						XmlObject result = acursor.getObject();
+						acursor.dispose();
+						return (POSIXApplicationType) result;
+					}
+				} while (acursor.toNextSibling());
+				acursor.dispose();
+				return null;
+			} else {
+				acursor.dispose();                               
+				return null;
+			}
+		} else {
+			return null;
+		}
+	}
+	
+	
+	
+	public static HPCProfileApplicationType getOrCreateHPCProfileApplication(JobDefinitionType value) {
+
+		ApplicationType application = getOrCreateApplication(value);
+		
+		if(getPOSIXApplication(value) != null){
+			//TODO handle: creating HPC element if POSIX already exists
+			return getHPCProfileApplication(value);
+		}
+		
+		if (getHPCProfileApplication(value) == null) {
+			XmlCursor acursor = application.newCursor();
+			acursor.toEndToken();
+			acursor.insertElement(HPC_PROFILE_APPLICATION);
+			acursor.dispose();
+		}
+		return getHPCProfileApplication(value);
+	}
+
+	
+	public static HPCProfileApplicationType getHPCProfileApplication(JobDefinitionType value) {
+		if (value != null &&
+				value.getJobDescription() != null && 
+				value.getJobDescription().isSetApplication() ) {
+			XmlCursor acursor = value.getJobDescription().getApplication().newCursor();
+			if (acursor.toFirstChild()) {
+				do {
+					if(acursor.getName().equals(HPC_PROFILE_APPLICATION)) {
+						XmlObject result = acursor.getObject();
+						acursor.dispose();
+						return (HPCProfileApplicationType) result;
+					}
+				} while (acursor.toNextSibling());
+				acursor.dispose();
+				return null;
+			} else {
+				acursor.dispose();                               
+				return null;
+			}
+		} else {
+			return null;
+		}
+	}
+
+	
+	
+
+	public static RangeValueType getTotalCPUCountRequirements(JobDefinitionType value) {
+		if(value != null && value.getJobDescription() != null && value.getJobDescription().isSetResources() && 
+				value.getJobDescription().getResources().isSetTotalCPUCount()){
+			return toU6RangeValue(value.getJobDescription().getResources().getTotalCPUCount());
+		}
+		else
+			return null;
+	}
+
+	public static RangeValueType getTotalResourceCountRequirements(JobDefinitionType value) {
+		if(value != null && value.getJobDescription() != null && value.getJobDescription().isSetResources() && 
+				value.getJobDescription().getResources().isSetTotalResourceCount()){
+			return toU6RangeValue(value.getJobDescription().getResources().getTotalResourceCount());
+		}
+		else
+			return null;
+	}
+
+
+	public static RangeValueType toU6RangeValue(org.ggf.schemas.jsdl.x2005.x11.jsdl.RangeValueType jsdlType) {
+		RangeValueType result = new RangeValueType();
+		if(jsdlType.getExactArray().length > 0){
+			result.setExact(jsdlType.getExactArray(0).getDoubleValue());                
+		}
+		if(jsdlType.isSetLowerBoundedRange()){
+			result.setLowerBound(jsdlType.getLowerBoundedRange().getDoubleValue());                
+		}
+		if(jsdlType.isSetUpperBoundedRange()){
+			result.setUpperBound(jsdlType.getUpperBoundedRange().getDoubleValue());                
+		}
+		return result;
+	}
+
+
+
+	public static void setCPUArchitectureRequirements(JobDefinitionType value, ProcessorRequirement cpuArchitecture) { 
+		if(cpuArchitecture == null || cpuArchitecture.getValue() == null) return;
+		CPUArchitectureType cpuArch = getOrCreateCPUArchitecture(value);
+		cpuArch.setCPUArchitectureName(ProcessorArchitectureEnumeration.Enum.forString(cpuArchitecture.getValue()));        
+	}
+
+	public static void setIndividualCPUCountRequirements(JobDefinitionType value, RangeValueType cpuCount) {
+		org.ggf.schemas.jsdl.x2005.x11.jsdl.RangeValueType individualCPUCount = getOrCreateIndividualCPUCount(value);
+		setRangeValue(cpuCount, individualCPUCount);
+	}
+
+	public static void setIndividualCPUSpeedRequirements(JobDefinitionType value, RangeValueType cpuSpeed) {
+		org.ggf.schemas.jsdl.x2005.x11.jsdl.RangeValueType individualCPUSpeed = getOrCreateIndividualCPUSpeed(value);
+		setRangeValue(cpuSpeed, individualCPUSpeed);
+	}
+
+	public static void setIndividualCPUTimeRequirements(JobDefinitionType value, RangeValueType cpuTime) {
+		org.ggf.schemas.jsdl.x2005.x11.jsdl.RangeValueType cpuIndividualTime = getOrCreateIndividualCPUTime(value);       
+		setRangeValue(cpuTime, cpuIndividualTime);
+	}
+
+	public static void setIndividualDiskSpaceRequirements(JobDefinitionType value, RangeValueType diskSpace) {
+		org.ggf.schemas.jsdl.x2005.x11.jsdl.RangeValueType individualDiskSpace = getOrCreateIndividualDiskSpace(value);
+		setRangeValue(diskSpace, individualDiskSpace);
+	}
+
+	public static void setIndividualPhysicalMemoryRequirements(JobDefinitionType value, RangeValueType physicalMemory) {
+		org.ggf.schemas.jsdl.x2005.x11.jsdl.RangeValueType individualPhysicalMemory = getOrCreateIndividualPhysicalMemory(value);
+		setRangeValue(physicalMemory, individualPhysicalMemory);
+	}
+
+
+	public static void setName(JobDefinitionType value, String name) {
+		getOrCreateJobIdentification(value).setJobName(name);
+	}
+
+	public static void setOperatingSystemRequirements(JobDefinitionType value, OSRequirement osType) {
+		if(osType == null || osType.getOSType() == null) return;
+		OperatingSystemType os_Type = getOrCreateOperatingSystem(value);
+		OperatingSystemTypeType ostt = os_Type.addNewOperatingSystemType();
+		ostt.setOperatingSystemName(OperatingSystemTypeEnumeration.Enum.forString(osType.getOSType().getValue()));
+		if(osType.getOSVersion() != null) 
+		{
+			os_Type.setOperatingSystemVersion(osType.getOSVersion());
+		}
+	}
+
+	public static void setRangeValue(RangeValueType u6Type, org.ggf.schemas.jsdl.x2005.x11.jsdl.RangeValueType jsdlType) {
+		Double exact = u6Type.getExact();
+		Double epsilon = u6Type.getEpsilon();
+		Double lower = u6Type.getLowerBound();
+		Double upper = u6Type.getUpperBound();
+
+
+		if(lower.isNaN() && upper.isNaN())
+		{
+			ExactType exactType = jsdlType.getExactArray().length > 0 ? jsdlType.getExactArray(0) : jsdlType.addNewExact();
+			exactType.setDoubleValue(exact);
+			if(!epsilon.isNaN() && epsilon != 0)
+			{
+				exactType.setEpsilon(epsilon);
+			}
+		}
+		else
+		{
+			if(!lower.isNaN())
+			{
+				BoundaryType lowerBound = jsdlType.isSetLowerBoundedRange() ? jsdlType.getLowerBoundedRange() : jsdlType.addNewLowerBoundedRange(); 
+				lowerBound.setDoubleValue(lower);
+				lowerBound.setExclusiveBound(!u6Type.isIncludeLowerBound());
+			}
+
+			if(!upper.isNaN())
+			{
+				BoundaryType upperBound = jsdlType.isSetUpperBoundedRange() ? jsdlType.getUpperBoundedRange() : jsdlType.addNewUpperBoundedRange();
+				upperBound.setDoubleValue(upper);
+				upperBound.setExclusiveBound(!u6Type.isIncludeUpperBound());
+			}
+		}
+	}
+
+	public static void setTotalCPUCountRequirements(JobDefinitionType value, RangeValueType cpuCount) {
+		org.ggf.schemas.jsdl.x2005.x11.jsdl.RangeValueType cpuTotalCount = getOrCreateTotalCPUCount(value);        
+		setRangeValue(cpuCount, cpuTotalCount);
+	}
+
+	public static void setTotalResourceCountRequirements(JobDefinitionType value, RangeValueType resourceCount) {
+		org.ggf.schemas.jsdl.x2005.x11.jsdl.RangeValueType totalCount = getOrCreateTotalResourceCount(value);   
+		setRangeValue(resourceCount, totalCount);
+	}
 }

Modified: airavata/trunk/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/provider/utils/ResourceProcessor.java
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/provider/utils/ResourceProcessor.java?rev=1550760&r1=1550759&r2=1550760&view=diff
==============================================================================
--- airavata/trunk/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/provider/utils/ResourceProcessor.java (original)
+++ airavata/trunk/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/provider/utils/ResourceProcessor.java Fri Dec 13 16:19:35 2013
@@ -1,94 +1,135 @@
-/*
- *
- * 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.provider.utils;
 
 import org.apache.airavata.gfac.context.JobExecutionContext;
+import org.apache.airavata.gfac.provider.GFacProviderException;
 import org.apache.airavata.schemas.gfac.HpcApplicationDeploymentType;
-import org.ogf.schemas.jsdl.JobDefinitionType;
+import org.apache.airavata.schemas.gfac.QueueType;
+import org.apache.airavata.schemas.wec.ContextHeaderDocument;
+import org.ggf.schemas.jsdl.x2005.x11.jsdl.JobDefinitionType;
+import org.ogf.schemas.jsdl.x2007.x02.jsdlSpmd.NumberOfProcessesType;
 
 public class ResourceProcessor {
 
-    public static void generateResourceElements(JobDefinitionType value, JobExecutionContext context) throws Exception {
+	
+	public static void generateResourceElements(JobDefinitionType value, JobExecutionContext context) throws Exception{
+		
+		HpcApplicationDeploymentType appDepType = (HpcApplicationDeploymentType) context
+				.getApplicationContext().getApplicationDeploymentDescription()
+				.getType();
+		
+		createMemory(value, appDepType);
+		ContextHeaderDocument.ContextHeader currentContextHeader = context.getContextHeader();
+	    if(currentContextHeader != null){
+        if (currentContextHeader.getWorkflowSchedulingContext() != null) {
+            if (currentContextHeader != null &&
+                    currentContextHeader.getWorkflowSchedulingContext().getApplicationSchedulingContextArray() != null &&
+                    currentContextHeader.getWorkflowSchedulingContext().getApplicationSchedulingContextArray().length > 0) {
+                try {
+                    int cpuCount = currentContextHeader.getWorkflowSchedulingContext().getApplicationSchedulingContextArray()[0].getCpuCount();
+                    if(cpuCount>0){
+//                    	appDepType.setCpuCount(cpuCount);
+                		NumberOfProcessesType num = NumberOfProcessesType.Factory.newInstance();
+    					String processers = Integer.toString(cpuCount);
+						num.setStringValue(processers);
+    					JSDLUtils.getOrCreateSPMDApplication(value).setNumberOfProcesses(num);
+                    }
+                } catch (NullPointerException e) {
+                    new GFacProviderException("No Value sent in WorkflowContextHeader for Node Count, value in the Deployment Descriptor will be used",e);
+                }
+                try {
+                    int nodeCount = currentContextHeader.getWorkflowSchedulingContext().getApplicationSchedulingContextArray()[0].getNodeCount();
+                    if(nodeCount>0){
+                    	appDepType.setNodeCount(nodeCount);
+                    }
+                } catch (NullPointerException e) {
+                     new GFacProviderException("No Value sent in WorkflowContextHeader for Node Count, value in the Deployment Descriptor will be used",e);
+                }
+                try {
+                    String queueName = currentContextHeader.getWorkflowSchedulingContext().getApplicationSchedulingContextArray()[0].getQueueName();
+                    if (queueName != null) {
+                        if(appDepType.getQueue() == null){
+                            QueueType queueType = appDepType.addNewQueue();
+                            queueType.setQueueName(queueName);
+                        }else{
+                        	appDepType.getQueue().setQueueName(queueName);
+                        }
+                    }
+                } catch (NullPointerException e) {
+                     new GFacProviderException("No Value sent in WorkflowContextHeader for Node Count, value in the Deployment Descriptor will be used",e);
+                }
+                try {
+                    int maxwallTime = currentContextHeader.getWorkflowSchedulingContext().getApplicationSchedulingContextArray()[0].getMaxWallTime();
+                    if(maxwallTime>0){
+                    	appDepType.setMaxWallTime(maxwallTime);
+                    }
+                } catch (NullPointerException e) {
+                     new GFacProviderException("No Value sent in WorkflowContextHeader for Node Count, value in the Deployment Descriptor will be used",e);
+                }
+            }
+        }
+	    }
+		
+		if (appDepType.getCpuCount() > 0) {
+			RangeValueType rangeType = new RangeValueType();
+			rangeType.setLowerBound(Double.NaN);
+			rangeType.setUpperBound(Double.NaN);
+			rangeType.setExact(appDepType.getCpuCount());
+			JSDLUtils.setTotalCPUCountRequirements(value, rangeType);
+		}
+
+		if (appDepType.getProcessorsPerNode() > 0) {
+			RangeValueType rangeType = new RangeValueType();
+			rangeType.setLowerBound(Double.NaN);
+			rangeType.setUpperBound(Double.NaN);
+			rangeType.setExact(appDepType.getProcessorsPerNode());
+			JSDLUtils.setIndividualCPUCountRequirements(value, rangeType);
+		}
+		
+		if (appDepType.getNodeCount() > 0) {
+			RangeValueType rangeType = new RangeValueType();
+			rangeType.setLowerBound(Double.NaN);
+			rangeType.setUpperBound(Double.NaN);
+			rangeType.setExact(appDepType.getNodeCount());
+			JSDLUtils.setTotalResourceCountRequirements(value, rangeType);
+		}
+		
+		if(appDepType.getMaxWallTime() > 0) {
+			RangeValueType cpuTime = new RangeValueType();
+			cpuTime.setLowerBound(Double.NaN);
+			cpuTime.setUpperBound(Double.NaN);
+			long wallTime = appDepType.getMaxWallTime() * 60;
+			cpuTime.setExact(wallTime);
+			JSDLUtils.setIndividualCPUTimeRequirements(value, cpuTime);
+		}
+	}
+	
+	
+	private static void createMemory(JobDefinitionType value, HpcApplicationDeploymentType appDepType){
+		if (appDepType.getMinMemory() > 0 && appDepType.getMaxMemory() > 0) {
+			RangeValueType rangeType = new RangeValueType();
+			rangeType.setLowerBound(appDepType.getMinMemory());
+			rangeType.setUpperBound(appDepType.getMaxMemory());
+			JSDLUtils.setIndividualPhysicalMemoryRequirements(value, rangeType);
+		}
+
+		else if (appDepType.getMinMemory() > 0 && appDepType.getMaxMemory() <= 0) {
+			// TODO set Wall time
+			RangeValueType rangeType = new RangeValueType();
+			rangeType.setLowerBound(appDepType.getMinMemory());
+			JSDLUtils.setIndividualPhysicalMemoryRequirements(value, rangeType);
+		}
+		
+		else if (appDepType.getMinMemory() <= 0 && appDepType.getMaxMemory() > 0) {
+			// TODO set Wall time
+			RangeValueType rangeType = new RangeValueType();
+			rangeType.setUpperBound(appDepType.getMinMemory());
+			JSDLUtils.setIndividualPhysicalMemoryRequirements(value, rangeType);
+		}
+		
+	}
 
-        HpcApplicationDeploymentType appDepType = (HpcApplicationDeploymentType) context.getApplicationContext()
-                .getApplicationDeploymentDescription().getType();
-
-        createMemory(value, appDepType);
-
-        if (appDepType.getCpuCount() > 0) {
-            RangeValueType rangeType = new RangeValueType();
-            rangeType.setLowerBound(Double.NaN);
-            rangeType.setUpperBound(Double.NaN);
-            rangeType.setExact(appDepType.getCpuCount());
-            JSDLUtils.setTotalCPUCountRequirements(value, rangeType);
-        }
-
-        if (appDepType.getProcessorsPerNode() > 0) {
-            RangeValueType rangeType = new RangeValueType();
-            rangeType.setLowerBound(Double.NaN);
-            rangeType.setUpperBound(Double.NaN);
-            rangeType.setExact(appDepType.getProcessorsPerNode());
-            JSDLUtils.setIndividualCPUCountRequirements(value, rangeType);
-        }
-
-        if (appDepType.getNodeCount() > 0) {
-            RangeValueType rangeType = new RangeValueType();
-            rangeType.setLowerBound(Double.NaN);
-            rangeType.setUpperBound(Double.NaN);
-            rangeType.setExact(appDepType.getNodeCount());
-            JSDLUtils.setTotalResourceCountRequirements(value, rangeType);
-        }
-
-        if (appDepType.getMaxWallTime() > 0) {
-            RangeValueType cpuTime = new RangeValueType();
-            cpuTime.setLowerBound(Double.NaN);
-            cpuTime.setUpperBound(Double.NaN);
-            long wallTime = appDepType.getMaxWallTime() * 60;
-            cpuTime.setExact(wallTime);
-            JSDLUtils.setIndividualCPUTimeRequirements(value, cpuTime);
-        }
-    }
-
-    private static void createMemory(JobDefinitionType value, HpcApplicationDeploymentType appDepType) {
-        if (appDepType.getMinMemory() > 0 && appDepType.getMaxMemory() > 0) {
-            RangeValueType rangeType = new RangeValueType();
-            rangeType.setLowerBound(appDepType.getMinMemory());
-            rangeType.setUpperBound(appDepType.getMaxMemory());
-            JSDLUtils.setIndividualPhysicalMemoryRequirements(value, rangeType);
-        }
-
-        else if (appDepType.getMinMemory() > 0 && appDepType.getMaxMemory() <= 0) {
-            // TODO set Wall time
-            RangeValueType rangeType = new RangeValueType();
-            rangeType.setLowerBound(appDepType.getMinMemory());
-            JSDLUtils.setIndividualPhysicalMemoryRequirements(value, rangeType);
-        }
-
-        else if (appDepType.getMinMemory() <= 0 && appDepType.getMaxMemory() > 0) {
-            // TODO set Wall time
-            RangeValueType rangeType = new RangeValueType();
-            rangeType.setUpperBound(appDepType.getMinMemory());
-            JSDLUtils.setIndividualPhysicalMemoryRequirements(value, rangeType);
-        }
-
-    }
+	
+	
 
+	
 }

Modified: airavata/trunk/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/provider/utils/SPMDProcessor.java
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/provider/utils/SPMDProcessor.java?rev=1550760&r1=1550759&r2=1550760&view=diff
==============================================================================
--- airavata/trunk/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/provider/utils/SPMDProcessor.java (original)
+++ airavata/trunk/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/provider/utils/SPMDProcessor.java Fri Dec 13 16:19:35 2013
@@ -1,33 +1,12 @@
-/*
- *
- * 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.provider.utils;
 
 import org.apache.airavata.gfac.context.JobExecutionContext;
-import org.ogf.schemas.jsdl.JobDefinitionType;
+import org.ggf.schemas.jsdl.x2005.x11.jsdl.JobDefinitionType;
 
 public class SPMDProcessor {
 
-    public static void generateSPMDElements(JobDefinitionType value, JobExecutionContext context) {
-
-    }
-
+	public static void generateSPMDElements(JobDefinitionType value, JobExecutionContext context) {
+		
+	}
+	
 }

Modified: airavata/trunk/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/provider/utils/SPMDVariations.java
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/provider/utils/SPMDVariations.java?rev=1550760&r1=1550759&r2=1550760&view=diff
==============================================================================
--- airavata/trunk/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/provider/utils/SPMDVariations.java (original)
+++ airavata/trunk/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/provider/utils/SPMDVariations.java Fri Dec 13 16:19:35 2013
@@ -1,24 +1,3 @@
-/*
- *
- * 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.provider.utils;
 
 public enum SPMDVariations {

Modified: airavata/trunk/modules/gfac/gfac-core/src/test/java/org/apache/airavata/core/gfac/services/impl/AbstractBESTest.java
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/gfac/gfac-core/src/test/java/org/apache/airavata/core/gfac/services/impl/AbstractBESTest.java?rev=1550760&r1=1550759&r2=1550760&view=diff
==============================================================================
--- airavata/trunk/modules/gfac/gfac-core/src/test/java/org/apache/airavata/core/gfac/services/impl/AbstractBESTest.java (original)
+++ airavata/trunk/modules/gfac/gfac-core/src/test/java/org/apache/airavata/core/gfac/services/impl/AbstractBESTest.java Fri Dec 13 16:19:35 2013
@@ -23,10 +23,9 @@ package org.apache.airavata.core.gfac.se
 import java.io.File;
 import java.net.URL;
 import java.util.Date;
+import java.util.Random;
 import java.util.UUID;
 
-import org.apache.airavata.common.utils.DatabaseTestCases;
-import org.apache.airavata.common.utils.DerbyUtil;
 import org.apache.airavata.commons.gfac.type.ApplicationDescription;
 import org.apache.airavata.commons.gfac.type.HostDescription;
 import org.apache.airavata.commons.gfac.type.ServiceDescription;
@@ -40,20 +39,32 @@ import org.apache.airavata.gfac.context.
 import org.apache.airavata.gfac.context.security.GSISecurityContext;
 import org.apache.airavata.schemas.gfac.JobTypeType;
 import org.apache.airavata.schemas.gfac.UnicoreHostType;
+import org.apache.airavata.schemas.wec.ContextHeaderDocument;
+import org.apache.airavata.schemas.wec.ContextHeaderDocument.ContextHeader;
 import org.apache.log4j.PropertyConfigurator;
-import org.junit.BeforeClass;
 
 public abstract class AbstractBESTest extends GFacBaseTestCase {
-
+	
+	protected static String tmpFilePath = "target"+File.separator+"data";
 	protected JobExecutionContext jobExecutionContext;
+	private String userName = "";
 
-	public static final String[] hostArray = new String[] { "https://zam1161v01.zam.kfa-juelich.de:8002/INTEROP1/services/BESFactory?res=default_bes_factory" };
-
+//	public static final String[] hostArray = new String[] { "https://zam1161v01.zam.kfa-juelich.de:8002/INTEROP1/services/BESFactory?res=default_bes_factory" };
 
-	// public static final String[] hostArray = new String[] {
-	// "https://deisa-unic.fz-juelich.de:9111/FZJ_JUROPA/services/BESFactory?res=default_bes_factory"
-	// };
+	 public static final String[] hostArray = new String[] {
+	 "https://deisa-unic.fz-juelich.de:9111/FZJ_JUROPA/services/BESFactory?res=default_bes_factory"
+	 };
+	 
+	
+//	 public static final String[] hostArray = new String[] {
+//	 "https://daemon.alamo.futuregrid.org:8082/ALAMO/services/BESFactory?res=default_bes_factory"
+//	 };
+	 
+//	public static final String[] hostArray = new String[] {
+//		"https://daemon.india.futuregrid.org:8081/INDIA/services/BESFactory?res=default_bes_factory"
+//	};
 
+	 
 	// directory where data will be copy into and copied out to unicore
 	// resources
 
@@ -66,7 +77,7 @@ public abstract class AbstractBESTest ex
 	// public static final String scratchDir = "/brashear/msmemon/airavata/";
 
 	public static final String gridftpAddress = "gsiftp://osg-xsede.grid.iu.edu:2811/";
-	public static final String scratchDir = "/home/ramifnu/airavata/";
+    public static final String scratchDir = "/home/ogce/airavata/";
 
 	protected String remoteTempDir = null;
 
@@ -91,7 +102,13 @@ public abstract class AbstractBESTest ex
 
 	}
 
-	protected abstract void submitJob() throws Exception;
+	protected void submitJob() throws Exception {
+		ContextHeader contextHeader = ContextHeader.Factory.newInstance();
+		buildOutputLocation(contextHeader);
+		
+		buildUserName(contextHeader, userName);
+		jobExecutionContext.setContextHeader(contextHeader);
+	}
 
 	protected GFacConfiguration getGFACConfig() throws Exception {
 		URL resource = this.getClass().getClassLoader()
@@ -130,5 +147,27 @@ public abstract class AbstractBESTest ex
 	protected abstract MessageContext getInMessageContext();
 
 	protected abstract MessageContext getOutMessageContext();
+	
+	
+	protected void buildOutputLocation(ContextHeader currentContextHeader) {
+		File tmpDir = new File(tmpFilePath+File.separator+"output-"+new Random().nextInt(1000));
+		
+		if(!tmpDir.exists()) {
+			tmpDir.mkdirs();
+		}
+		currentContextHeader.addNewWorkflowOutputDataHandling().addNewApplicationOutputDataHandling().setOutputDataDirectory(tmpDir.getAbsolutePath());
+		
+	}
+	
+	
+	protected void buildUserName(ContextHeader currentContextHeader, String userName) {
+		if("".equals(userName) || userName == null) return;
+
+		currentContextHeader.setUserIdentifier(userName);
+	}
+
+	public void setUserName(String userName) {
+		this.userName = userName;
+	}
 
 }

Modified: airavata/trunk/modules/gfac/gfac-core/src/test/java/org/apache/airavata/core/gfac/services/impl/GSISSHProviderTest.java
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/gfac/gfac-core/src/test/java/org/apache/airavata/core/gfac/services/impl/GSISSHProviderTest.java?rev=1550760&r1=1550759&r2=1550760&view=diff
==============================================================================
--- airavata/trunk/modules/gfac/gfac-core/src/test/java/org/apache/airavata/core/gfac/services/impl/GSISSHProviderTest.java (original)
+++ airavata/trunk/modules/gfac/gfac-core/src/test/java/org/apache/airavata/core/gfac/services/impl/GSISSHProviderTest.java Fri Dec 13 16:19:35 2013
@@ -58,7 +58,7 @@ public class GSISSHProviderTest {
     private static final String hostName = "trestles";
     private static final String myProxyUserName = "ogce";
     private static final String myProxyPassword = "";
-    private static final String certificateLocation = "/Users/lahirugunathilake/Downloads/certificates";
+    private static final String certificateLocation = "/Users/raminder/.globus/certificates/";
 
     @Before
     public void setUp() throws Exception {

Modified: airavata/trunk/modules/gfac/gfac-core/src/test/java/org/apache/airavata/core/gfac/services/impl/JSDLGeneratorTest.java
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/gfac/gfac-core/src/test/java/org/apache/airavata/core/gfac/services/impl/JSDLGeneratorTest.java?rev=1550760&r1=1550759&r2=1550760&view=diff
==============================================================================
--- airavata/trunk/modules/gfac/gfac-core/src/test/java/org/apache/airavata/core/gfac/services/impl/JSDLGeneratorTest.java (original)
+++ airavata/trunk/modules/gfac/gfac-core/src/test/java/org/apache/airavata/core/gfac/services/impl/JSDLGeneratorTest.java Fri Dec 13 16:19:35 2013
@@ -1,24 +1,3 @@
-/*
- *
- * 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.core.gfac.services.impl;
 
 import static org.junit.Assert.assertEquals;
@@ -40,7 +19,6 @@ import org.apache.airavata.gfac.GFacConf
 import org.apache.airavata.gfac.context.ApplicationContext;
 import org.apache.airavata.gfac.context.JobExecutionContext;
 import org.apache.airavata.gfac.context.MessageContext;
-import org.apache.airavata.gfac.context.security.GSISecurityContext;
 import org.apache.airavata.gfac.provider.utils.JSDLGenerator;
 import org.apache.airavata.gfac.provider.utils.JSDLUtils;
 import org.apache.airavata.schemas.gfac.ApplicationDeploymentDescriptionType;
@@ -54,230 +32,266 @@ import org.apache.airavata.schemas.gfac.
 import org.apache.airavata.schemas.gfac.URIParameterType;
 import org.apache.airavata.schemas.gfac.UnicoreHostType;
 import org.apache.log4j.PropertyConfigurator;
+import org.ggf.schemas.jsdl.x2005.x11.jsdl.JobDefinitionDocument;
 import org.junit.Before;
 import org.junit.Test;
-import org.ogf.schemas.jsdl.JobDefinitionDocument;
-
-public class JSDLGeneratorTest extends GFacBaseTestCase {
-
-    public static final String[] hostArray = new String[] { "https://zam1161v01.zam.kfa-juelich.de:8002/INTEROP1/services/BESFactory?res=default_bes_factory" };
-    public static final String gridftpAddress = "gsiftp://gridftp.blacklight.psc.teragrid.org:2811";
-    public static final String hostAddress = "zam1161v01.zam.kfa-juelich.de";
-    public static final String hostName = "DEMO-INTEROP-SITE";
-    public static final String scratchDir = "/scratch/msmemon/airavata";
-
-    protected JobExecutionContext jobExecutionContext;
-
-    @Test
-    public void testSerialJSDL() throws Exception {
-
-        JobTypeType jobType = JobTypeType.Factory.newInstance();
-        jobType.set(JobTypeType.SERIAL);
-        ApplicationContext appContext = getApplicationContext();
-        appContext.setApplicationDeploymentDescription(getApplicationDesc(jobType));
-        jobExecutionContext.setApplicationContext(appContext);
-
-        JobDefinitionDocument jobDefDoc = JSDLGenerator.buildJSDLInstance(jobExecutionContext);
-
-        assertTrue(jobDefDoc.getJobDefinition().getJobDescription().getApplication().toString().contains("/bin/cat"));
-        assertTrue(jobDefDoc.getJobDefinition().getJobDescription().getDataStagingArray().length > 2);
-
-        assertTrue(jobDefDoc.getJobDefinition().getJobDescription().getJobIdentification().getJobProjectArray().length > 0);
-
-        assertFalse(JSDLUtils.getPOSIXApplication(jobDefDoc.getJobDefinition()) == null);
-
-        assertEquals("jsdl_stdout", JSDLUtils.getOrCreatePOSIXApplication(jobDefDoc.getJobDefinition()).getOutput()
-                .getStringValue().toString());
-
-    }
-
-    @Test
-    public void testMPIJSDL() throws Exception {
-
-        JobTypeType jobType = JobTypeType.Factory.newInstance();
-        jobType.set(JobTypeType.MPI);
-        ApplicationContext appContext = getApplicationContext();
-        appContext.setApplicationDeploymentDescription(getApplicationDesc(jobType));
-        jobExecutionContext.setApplicationContext(appContext);
 
-        JobDefinitionDocument jobDefDoc = JSDLGenerator.buildJSDLInstance(jobExecutionContext);
+public class JSDLGeneratorTest {
 
-        assertTrue(jobDefDoc.getJobDefinition().getJobDescription().getApplication().toString().contains("/bin/cat"));
-        assertTrue(jobDefDoc.getJobDefinition().getJobDescription().getDataStagingArray().length > 2);
+	public static final String[] hostArray = new String[] { "https://zam1161v01.zam.kfa-juelich.de:8002/INTEROP1/services/BESFactory?res=default_bes_factory" };
+	public static final String gridftpAddress = "gsiftp://gridftp.blacklight.psc.teragrid.org:2811";
+	public static final String hostAddress = "zam1161v01.zam.kfa-juelich.de";
+	public static final String hostName = "DEMO-INTEROP-SITE";
+	public static final String scratchDir = "/scratch/msmemon/airavata";
+	
+	protected JobExecutionContext jobExecutionContext;
+
+	
+	@Test
+	public void testSerialJSDLWithStdout() throws Exception{
+
+		JobTypeType jobType = JobTypeType.Factory.newInstance();
+		jobType.set(JobTypeType.SERIAL);
+		ApplicationContext appContext = getApplicationContext();
+		appContext.setApplicationDeploymentDescription(getApplicationDesc(jobType, true));
+		jobExecutionContext.setApplicationContext(appContext);
+
+		JobDefinitionDocument jobDefDoc = JSDLGenerator.buildJSDLInstance(jobExecutionContext);
+		
+		assertTrue (jobDefDoc.getJobDefinition().getJobDescription().getApplication().toString().contains("/bin/cat"));
+		assertTrue(jobDefDoc.getJobDefinition().getJobDescription().getDataStagingArray().length > 2);
+		
+		assertTrue(jobDefDoc.getJobDefinition().getJobDescription().getJobIdentification().getJobProjectArray().length > 0);
+		
+		assertFalse(JSDLUtils.getPOSIXApplication(jobDefDoc.getJobDefinition())==null);
+		
+		assertEquals("jsdl_stdout", JSDLUtils.getOrCreatePOSIXApplication(jobDefDoc.getJobDefinition()).getOutput().getStringValue().toString());
+		
+	}
+
+	@Test
+	public void testSerialJSDLWithoutStdout() throws Exception{
+
+		JobTypeType jobType = JobTypeType.Factory.newInstance();
+		jobType.set(JobTypeType.SERIAL);
+		ApplicationContext appContext = getApplicationContext();
+		appContext.setApplicationDeploymentDescription(getApplicationDesc(jobType, false));
+		jobExecutionContext.setApplicationContext(appContext);
+
+		JobDefinitionDocument jobDefDoc = JSDLGenerator.buildJSDLInstance(jobExecutionContext);
+		
+		assertTrue (jobDefDoc.getJobDefinition().getJobDescription().getApplication().toString().contains("/bin/cat"));
+		assertTrue(jobDefDoc.getJobDefinition().getJobDescription().getDataStagingArray().length > 2);
+		
+		assertTrue(jobDefDoc.getJobDefinition().getJobDescription().getJobIdentification().getJobProjectArray().length > 0);
+		
+		assertFalse(JSDLUtils.getPOSIXApplication(jobDefDoc.getJobDefinition())==null);
+		
+		assertEquals("stdout", JSDLUtils.getOrCreatePOSIXApplication(jobDefDoc.getJobDefinition()).getOutput().getStringValue().toString());
+		assertEquals("stderr", JSDLUtils.getOrCreatePOSIXApplication(jobDefDoc.getJobDefinition()).getError().getStringValue().toString());
+		
+	}
+
+	
+	@Test
+	public void testMPIJSDL() throws Exception{
+		
+		JobTypeType jobType = JobTypeType.Factory.newInstance();
+		jobType.set(JobTypeType.MPI);
+		ApplicationContext appContext = getApplicationContext();
+		appContext.setApplicationDeploymentDescription(getApplicationDesc(jobType, true));
+		jobExecutionContext.setApplicationContext(appContext);
+		
+		JobDefinitionDocument jobDefDoc = JSDLGenerator.buildJSDLInstance(jobExecutionContext);
+		
+		assertTrue (jobDefDoc.getJobDefinition().getJobDescription().getApplication().toString().contains("/bin/cat"));
+		assertTrue(jobDefDoc.getJobDefinition().getJobDescription().getDataStagingArray().length > 2);
+		
+		assertTrue(jobDefDoc.getJobDefinition().getJobDescription().getJobIdentification().getJobProjectArray().length > 0);
+		
+		assertEquals("jsdl_stdout", JSDLUtils.getOrCreateSPMDApplication(jobDefDoc.getJobDefinition()).getOutput().getStringValue().toString());
+		
+		assertFalse(JSDLUtils.getSPMDApplication(jobDefDoc.getJobDefinition())==null);
+		
+		
+	}
 
-        assertTrue(jobDefDoc.getJobDefinition().getJobDescription().getJobIdentification().getJobProjectArray().length > 0);
-
-        assertEquals("jsdl_stdout", JSDLUtils.getOrCreateSPMDApplication(jobDefDoc.getJobDefinition()).getOutput()
-                .getStringValue().toString());
-
-        assertFalse(JSDLUtils.getSPMDApplication(jobDefDoc.getJobDefinition()) == null);
-
-    }
-
-    protected GFacConfiguration getGFACConfig() throws Exception {
+	protected GFacConfiguration getGFACConfig() throws Exception{
         URL resource = BESProviderTest.class.getClassLoader().getResource("gfac-config.xml");
         System.out.println(resource.getFile());
-        GFacConfiguration gFacConfiguration = GFacConfiguration.create(new File(resource.getPath()), null, null);
-        return gFacConfiguration;
-    }
-
-    protected ApplicationContext getApplicationContext() {
-        ApplicationContext applicationContext = new ApplicationContext();
-        applicationContext.setHostDescription(getHostDesc());
-
-        applicationContext.setServiceDescription(getServiceDesc());
-        return applicationContext;
-    }
-
-    protected ApplicationDescription getApplicationDesc(JobTypeType jobType) {
-        ApplicationDescription appDesc = new ApplicationDescription(HpcApplicationDeploymentType.type);
-        HpcApplicationDeploymentType app = (HpcApplicationDeploymentType) appDesc.getType();
-        ApplicationDeploymentDescriptionType.ApplicationName name = ApplicationDeploymentDescriptionType.ApplicationName.Factory
-                .newInstance();
-        name.setStringValue("EchoLocal");
-        app.setApplicationName(name);
-        ProjectAccountType projectAccountType = app.addNewProjectAccount();
-        projectAccountType.setProjectAccountNumber("TG-AST110064");
-
-        QueueType queueType = app.addNewQueue();
-        queueType.setQueueName("development");
-
-        app.setCpuCount(1);
-        // TODO: also handle parallel jobs
-        if ((jobType.enumValue() == JobTypeType.SERIAL) || (jobType.enumValue() == JobTypeType.SINGLE)) {
-            app.setJobType(JobTypeType.SERIAL);
-        } else if (jobType.enumValue() == JobTypeType.MPI) {
-            app.setJobType(JobTypeType.MPI);
-        } else {
-            app.setJobType(JobTypeType.OPEN_MP);
-        }
-
-        app.setNodeCount(1);
-        app.setProcessorsPerNode(1);
-
-        /*
-         * Use bat file if it is compiled on Windows
-         */
-        app.setExecutableLocation("/bin/cat");
-
-        /*
-         * Default tmp location
-         */
-        String date = (new Date()).toString();
-        date = date.replaceAll(" ", "_");
-        date = date.replaceAll(":", "_");
-
-        String remoteTempDir = scratchDir + File.separator + "SimpleEcho" + "_" + date + "_" + UUID.randomUUID();
-
-        System.out.println(remoteTempDir);
-
-        // no need of these parameters, as unicore manages by itself
-        app.setScratchWorkingDirectory(remoteTempDir);
-        app.setStaticWorkingDirectory(remoteTempDir);
-        app.setInputDataDirectory(remoteTempDir + File.separator + "inputData");
-        app.setOutputDataDirectory(remoteTempDir + File.separator + "outputData");
-
-        app.setStandardOutput(app.getOutputDataDirectory() + "/jsdl_stdout");
-
-        app.setStandardError(app.getOutputDataDirectory() + "/jsdl_stderr");
-
-        return appDesc;
-    }
-
-    protected HostDescription getHostDesc() {
-        HostDescription host = new HostDescription(UnicoreHostType.type);
-        host.getType().setHostAddress(hostAddress);
-        host.getType().setHostName(hostName);
-        ((UnicoreHostType) host.getType()).setUnicoreBESEndPointArray(hostArray);
-        ((UnicoreHostType) host.getType()).setGridFTPEndPointArray(new String[] { gridftpAddress });
-        return host;
-    }
-
-    protected ServiceDescription getServiceDesc() {
-        ServiceDescription serv = new ServiceDescription();
-        serv.getType().setName("SimpleCat");
-
-        List<InputParameterType> inputList = new ArrayList<InputParameterType>();
-        InputParameterType input = InputParameterType.Factory.newInstance();
-        input.setParameterName("echo_input");
-        input.setParameterType(StringParameterType.Factory.newInstance());
-        inputList.add(input);
-        InputParameterType[] inputParamList = inputList.toArray(new InputParameterType[inputList.size()]);
-
-        List<OutputParameterType> outputList = new ArrayList<OutputParameterType>();
-        OutputParameterType output = OutputParameterType.Factory.newInstance();
-        output.setParameterName("echo_output");
-        output.setParameterType(StringParameterType.Factory.newInstance());
-        outputList.add(output);
-        OutputParameterType[] outputParamList = outputList.toArray(new OutputParameterType[outputList.size()]);
-
-        serv.getType().setInputParametersArray(inputParamList);
-        serv.getType().setOutputParametersArray(outputParamList);
-
-        return serv;
-    }
-
-    protected MessageContext getInMessageContext() {
-        MessageContext inMessage = new MessageContext();
-
+        GFacConfiguration gFacConfiguration = GFacConfiguration.create(new File(resource.getPath()),null,null);
+		return gFacConfiguration;
+	}
+	
+	
+	protected ApplicationContext getApplicationContext() {
+		ApplicationContext applicationContext = new ApplicationContext();
+		applicationContext.setHostDescription(getHostDesc());
+		
+		applicationContext.setServiceDescription(getServiceDesc());
+		return applicationContext;
+	}
+
+	protected ApplicationDescription getApplicationDesc(JobTypeType jobType, boolean setOuput) {
+		ApplicationDescription appDesc = new ApplicationDescription(
+				HpcApplicationDeploymentType.type);
+		HpcApplicationDeploymentType app = (HpcApplicationDeploymentType) appDesc
+				.getType();
+		ApplicationDeploymentDescriptionType.ApplicationName name = ApplicationDeploymentDescriptionType.ApplicationName.Factory
+				.newInstance();
+		name.setStringValue("EchoLocal");
+		app.setApplicationName(name);
+		ProjectAccountType projectAccountType = app.addNewProjectAccount();
+		projectAccountType.setProjectAccountNumber("TG-AST110064");
+
+		QueueType queueType = app.addNewQueue();
+		queueType.setQueueName("development");
+
+		app.setCpuCount(1);
+		// TODO: also handle parallel jobs
+		if((jobType.enumValue() == JobTypeType.SERIAL) || (jobType.enumValue() == JobTypeType.SINGLE)) {
+			app.setJobType(JobTypeType.SERIAL);
+		}
+		else if (jobType.enumValue() == JobTypeType.MPI) {
+			app.setJobType(JobTypeType.MPI);
+		}
+		else {
+			app.setJobType(JobTypeType.OPEN_MP);
+		}
+		
+		app.setNodeCount(1);
+		app.setProcessorsPerNode(1);
+
+		/*
+		 * Use bat file if it is compiled on Windows
+		 */
+		app.setExecutableLocation("/bin/cat");
+
+		/*
+		 * Default tmp location
+		 */
+		String date = (new Date()).toString();
+		date = date.replaceAll(" ", "_");
+		date = date.replaceAll(":", "_");
+
+		String remoteTempDir = scratchDir + File.separator + "SimpleEcho" + "_" + date + "_"
+				+ UUID.randomUUID();
+
+		System.out.println(remoteTempDir);
+		
+		// no need of these parameters, as unicore manages by itself
+		app.setScratchWorkingDirectory(remoteTempDir);
+		app.setStaticWorkingDirectory(remoteTempDir);
+		app.setInputDataDirectory(remoteTempDir + File.separator + "inputData");
+		app.setOutputDataDirectory(remoteTempDir + File.separator + "outputData");
+		
+		if(setOuput) {		
+			app.setStandardOutput(app.getOutputDataDirectory()+"/jsdl_stdout");
+			app.setStandardError(app.getOutputDataDirectory()+"/jsdl_stderr");
+		}
+		return appDesc;
+	}
+
+	protected HostDescription getHostDesc() {
+		HostDescription host = new HostDescription(UnicoreHostType.type);
+		host.getType().setHostAddress(hostAddress);
+		host.getType().setHostName(hostName);
+		((UnicoreHostType) host.getType()).setUnicoreBESEndPointArray(hostArray);
+		((UnicoreHostType) host.getType()).setGridFTPEndPointArray(new String[]{gridftpAddress});
+		return host;
+	}
+
+	protected ServiceDescription getServiceDesc() {
+		ServiceDescription serv = new ServiceDescription();
+		serv.getType().setName("SimpleCat");
+
+		List<InputParameterType> inputList = new ArrayList<InputParameterType>();
+		InputParameterType input = InputParameterType.Factory.newInstance();
+		input.setParameterName("echo_input");
+		input.setParameterType(StringParameterType.Factory.newInstance());
+		inputList.add(input);
+		InputParameterType[] inputParamList = inputList
+				.toArray(new InputParameterType[inputList.size()]);
+
+		List<OutputParameterType> outputList = new ArrayList<OutputParameterType>();
+		OutputParameterType output = OutputParameterType.Factory.newInstance();
+		output.setParameterName("echo_output");
+		output.setParameterType(StringParameterType.Factory.newInstance());
+		outputList.add(output);
+		OutputParameterType[] outputParamList = outputList
+				.toArray(new OutputParameterType[outputList.size()]);
+
+		serv.getType().setInputParametersArray(inputParamList);
+		serv.getType().setOutputParametersArray(outputParamList);
+		
+		
+		return serv;
+	}
+
+	protected MessageContext getInMessageContext() {
+		MessageContext inMessage = new MessageContext();
+		
         ActualParameter i1 = new ActualParameter();
         i1.getType().changeType(URIParameterType.type);
-        ((URIParameterType) i1.getType()).setValue("file:///tmp/ifile1");
+        ((URIParameterType)i1.getType()).setValue("file:///tmp/ifile1");
         inMessage.addParameter("i1", i1);
-
+        
         ActualParameter i2 = new ActualParameter();
         i2.getType().changeType(URIParameterType.type);
-        ((URIParameterType) i2.getType()).setValue("file:///tmp/ifile2");
+        ((URIParameterType)i2.getType()).setValue("file:///tmp/ifile2");
         inMessage.addParameter("i2", i2);
-
+        
         ActualParameter i3 = new ActualParameter();
         i2.getType().changeType(URIParameterType.type);
-        ((URIParameterType) i2.getType()).setValue("///tmp/ifile2");
+        ((URIParameterType)i2.getType()).setValue("///tmp/ifile2");
         inMessage.addParameter("i3", i2);
 
         ActualParameter simpleArg = new ActualParameter();
         simpleArg.getType().changeType(StringParameterType.type);
-        ((StringParameterType) simpleArg.getType()).setValue("argument1");
+        ((StringParameterType)simpleArg.getType()).setValue("argument1");
         inMessage.addParameter("a1", simpleArg);
-
+        
         ActualParameter nameValueArg = new ActualParameter();
         nameValueArg.getType().changeType(StringParameterType.type);
-        ((StringParameterType) nameValueArg.getType()).setValue("name1=value1");
+        ((StringParameterType)nameValueArg.getType()).setValue("name1=value1");
         inMessage.addParameter("nameValueArg", nameValueArg);
-
-        ActualParameter echo_input = new ActualParameter();
-        ((StringParameterType) echo_input.getType()).setValue("echo_output=hello");
-        inMessage.addParameter("echo_input", echo_input);
-
-        return inMessage;
-    }
-
-    protected MessageContext getOutMessageContext() {
-        MessageContext om1 = new MessageContext();
-
-        // TODO: Aint the output parameters are only the name of the files staged out to the gridftp endpoint?
-        ActualParameter o1 = new ActualParameter();
-        ((StringParameterType) o1.getType()).setValue("tempfile");
-        om1.addParameter("o1", o1);
-
-        ActualParameter o2 = new ActualParameter();
-        o2.getType().changeType(URIParameterType.type);
-
-        ((URIParameterType) o2.getType()).setValue("http://path/to/upload");
-        om1.addParameter("o2", o2);
-
-        return om1;
-    }
-
-    @Before
-    public void initJobContext() throws Exception {
-        PropertyConfigurator.configure("src/test/resources/logging.properties");
-        jobExecutionContext = new JobExecutionContext(getGFACConfig(), getServiceDesc().getType().getName());
-        jobExecutionContext.setApplicationContext(getApplicationContext());
-        jobExecutionContext.setInMessageContext(getInMessageContext());
-        jobExecutionContext.setOutMessageContext(getOutMessageContext());
-        jobExecutionContext.addSecurityContext(GSISecurityContext.GSI_SECURITY_CONTEXT, getSecurityContext());
-
-    }
-
+        
+		ActualParameter echo_input = new ActualParameter();
+		((StringParameterType) echo_input.getType())
+				.setValue("echo_output=hello");
+		inMessage.addParameter("echo_input", echo_input);
+        
+		return inMessage;
+	}
+
+	protected MessageContext getOutMessageContext() {
+		MessageContext om1 = new MessageContext();
+		
+		// TODO: Aint the output parameters are only the name of the files staged out to the gridftp endpoint? 
+		ActualParameter o1 = new ActualParameter();
+		((StringParameterType) o1.getType())
+		.setValue("tempfile");
+		om1.addParameter("o1", o1);
+
+		ActualParameter o2 = new ActualParameter();
+		o2.getType().changeType(URIParameterType.type);
+		
+		((URIParameterType)o2.getType()).setValue("http://path/to/upload");
+		om1.addParameter("o2", o2);
+
+		
+		
+		return om1;
+	}
+
+	@Before
+	public void initJobContext() throws Exception {
+		PropertyConfigurator.configure("src/test/resources/logging.properties");
+		jobExecutionContext = new JobExecutionContext(getGFACConfig(), getServiceDesc().getType().getName());
+		jobExecutionContext.setApplicationContext(getApplicationContext());
+		jobExecutionContext.setInMessageContext(getInMessageContext());
+		jobExecutionContext.setOutMessageContext(getOutMessageContext());
+	}
+	
+	
 }

Modified: airavata/trunk/modules/registry/registry-api/src/main/java/org/apache/airavata/registry/api/workflow/ApplicationJob.java
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/registry/registry-api/src/main/java/org/apache/airavata/registry/api/workflow/ApplicationJob.java?rev=1550760&r1=1550759&r2=1550760&view=diff
==============================================================================
--- airavata/trunk/modules/registry/registry-api/src/main/java/org/apache/airavata/registry/api/workflow/ApplicationJob.java (original)
+++ airavata/trunk/modules/registry/registry-api/src/main/java/org/apache/airavata/registry/api/workflow/ApplicationJob.java Fri Dec 13 16:19:35 2013
@@ -68,8 +68,12 @@ public class ApplicationJob {
 		/**
 		 * Application job is being executed.
 		 */
-		EXECUTING, 
-		/**
+		EXECUTING,
+        /**
+         * Application job is being active.
+         */
+        ACTIVE,
+        /**
 		 * Application job is paused/suspended
 		 */
 		SUSPENDED,
@@ -105,6 +109,10 @@ public class ApplicationJob {
 		 * Execution of the application job was cancelled.
 		 */
 		CANCELLED,
+        /**
+         * Execution of the application job was cancelled.
+         */
+        CANCELED,
 		/**
 		 * Unable to determine the current status of the application job. <br />
 		 * <em><strong>Note: </strong>More information may be available on the application job 

Modified: airavata/trunk/modules/test-suite/pom.xml
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/test-suite/pom.xml?rev=1550760&r1=1550759&r2=1550760&view=diff
==============================================================================
--- airavata/trunk/modules/test-suite/pom.xml (original)
+++ airavata/trunk/modules/test-suite/pom.xml Fri Dec 13 16:19:35 2013
@@ -33,7 +33,7 @@
 
         <dependency>
             <groupId>org.bouncycastle</groupId>
-            <artifactId>bcprov-jdk16</artifactId>
+            <artifactId>bcprov-jdk15on</artifactId>
         </dependency>
         <dependency>
             <groupId>commons-configuration</groupId>

Modified: airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/invoker/EmbeddedGFacInvoker.java
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/invoker/EmbeddedGFacInvoker.java?rev=1550760&r1=1550759&r2=1550760&view=diff
==============================================================================
--- airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/invoker/EmbeddedGFacInvoker.java (original)
+++ airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/invoker/EmbeddedGFacInvoker.java Fri Dec 13 16:19:35 2013
@@ -412,17 +412,16 @@ public class EmbeddedGFacInvoker impleme
 
             GSISecurityContext context;
 
-            String gatewayId = contextHeader.getSecurityContext().getCredentialManagementService().getGatewayId();
 
             if (credentialManagementService != null) {
+                String gatewayId = credentialManagementService.getGatewayId();
                 String tokenId
                         = credentialManagementService.getTokenId();
                 String portalUser = credentialManagementService.getPortalUser();
 
                 requestData = new RequestData(tokenId, portalUser, gatewayId);
             } else {
-
-                requestData = new RequestData(gatewayId);
+               requestData = new RequestData("default");
             }
 
             try {