You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by ch...@apache.org on 2012/11/01 16:18:49 UTC

svn commit: r1404637 - in /airavata/sandbox/airavata-registry-rest/src/main/java/org/apache/airavata/services/registry/rest: resourcemappings/ resources/ utils/

Author: chathuri
Date: Thu Nov  1 15:18:48 2012
New Revision: 1404637

URL: http://svn.apache.org/viewvc?rev=1404637&view=rev
Log:
combining application descriptor to have service related info

Modified:
    airavata/sandbox/airavata-registry-rest/src/main/java/org/apache/airavata/services/registry/rest/resourcemappings/ApplicationDescriptor.java
    airavata/sandbox/airavata-registry-rest/src/main/java/org/apache/airavata/services/registry/rest/resourcemappings/ServiceParameters.java
    airavata/sandbox/airavata-registry-rest/src/main/java/org/apache/airavata/services/registry/rest/resources/ApplicationRegistration.java
    airavata/sandbox/airavata-registry-rest/src/main/java/org/apache/airavata/services/registry/rest/resources/RegistryResource.java
    airavata/sandbox/airavata-registry-rest/src/main/java/org/apache/airavata/services/registry/rest/utils/DescriptorUtil.java

Modified: airavata/sandbox/airavata-registry-rest/src/main/java/org/apache/airavata/services/registry/rest/resourcemappings/ApplicationDescriptor.java
URL: http://svn.apache.org/viewvc/airavata/sandbox/airavata-registry-rest/src/main/java/org/apache/airavata/services/registry/rest/resourcemappings/ApplicationDescriptor.java?rev=1404637&r1=1404636&r2=1404637&view=diff
==============================================================================
--- airavata/sandbox/airavata-registry-rest/src/main/java/org/apache/airavata/services/registry/rest/resourcemappings/ApplicationDescriptor.java (original)
+++ airavata/sandbox/airavata-registry-rest/src/main/java/org/apache/airavata/services/registry/rest/resourcemappings/ApplicationDescriptor.java Thu Nov  1 15:18:48 2012
@@ -25,9 +25,9 @@ import javax.xml.bind.annotation.XmlRoot
 
 @XmlRootElement(name = "application")
 public class ApplicationDescriptor {
-    private String applicationName;
+    private String name;
     private String hostdescName;
-    private String serviceName;
+//    private String serviceName;
     private String executablePath;
     private String workingDir;
     private String jobType;
@@ -40,14 +40,15 @@ public class ApplicationDescriptor {
     private int minMemory;
     private int maxMemory;
     private String applicationDescType;
+    private ServiceDescriptor serviceDescriptor;
 
 
-    public String getApplicationName() {
-        return applicationName;
+    public String getName() {
+        return name;
     }
 
-    public void setApplicationName(String applicationName) {
-        this.applicationName = applicationName;
+    public void setName(String name) {
+        this.name = name;
     }
 
     public String getHostdescName() {
@@ -58,13 +59,13 @@ public class ApplicationDescriptor {
         this.hostdescName = hostdescName;
     }
 
-    public String getServiceName() {
-        return serviceName;
-    }
-
-    public void setServiceName(String serviceName) {
-        this.serviceName = serviceName;
-    }
+//    public String getServiceName() {
+//        return serviceName;
+//    }
+//
+//    public void setServiceName(String serviceName) {
+//        this.serviceName = serviceName;
+//    }
 
     public String getExecutablePath() {
         return executablePath;
@@ -161,4 +162,12 @@ public class ApplicationDescriptor {
     public void setApplicationDescType(String applicationDescType) {
         this.applicationDescType = applicationDescType;
     }
+
+    public ServiceDescriptor getServiceDescriptor() {
+        return serviceDescriptor;
+    }
+
+    public void setServiceDescriptor(ServiceDescriptor serviceDescriptor) {
+        this.serviceDescriptor = serviceDescriptor;
+    }
 }

Modified: airavata/sandbox/airavata-registry-rest/src/main/java/org/apache/airavata/services/registry/rest/resourcemappings/ServiceParameters.java
URL: http://svn.apache.org/viewvc/airavata/sandbox/airavata-registry-rest/src/main/java/org/apache/airavata/services/registry/rest/resourcemappings/ServiceParameters.java?rev=1404637&r1=1404636&r2=1404637&view=diff
==============================================================================
--- airavata/sandbox/airavata-registry-rest/src/main/java/org/apache/airavata/services/registry/rest/resourcemappings/ServiceParameters.java (original)
+++ airavata/sandbox/airavata-registry-rest/src/main/java/org/apache/airavata/services/registry/rest/resourcemappings/ServiceParameters.java Thu Nov  1 15:18:48 2012
@@ -6,8 +6,11 @@ import javax.xml.bind.annotation.XmlRoot
 @XmlRootElement
 public class ServiceParameters {
 
+    // whether string or other type
 	String type;
 	String name;
+
+    //whether it is input or output
 	String dataType;
 	String description;
 

Modified: airavata/sandbox/airavata-registry-rest/src/main/java/org/apache/airavata/services/registry/rest/resources/ApplicationRegistration.java
URL: http://svn.apache.org/viewvc/airavata/sandbox/airavata-registry-rest/src/main/java/org/apache/airavata/services/registry/rest/resources/ApplicationRegistration.java?rev=1404637&r1=1404636&r2=1404637&view=diff
==============================================================================
--- airavata/sandbox/airavata-registry-rest/src/main/java/org/apache/airavata/services/registry/rest/resources/ApplicationRegistration.java (original)
+++ airavata/sandbox/airavata-registry-rest/src/main/java/org/apache/airavata/services/registry/rest/resources/ApplicationRegistration.java Thu Nov  1 15:18:48 2012
@@ -37,7 +37,7 @@ public class ApplicationRegistration {
     @Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
     public Response addServiceDescriptor(ApplicationDescriptor application){
         try{
-        	application.getApplicationName();
+        	application.getName();
         	Response.ResponseBuilder builder = Response.status(Response.Status.ACCEPTED);
             return builder.build();
         } catch (Exception e) {
@@ -52,7 +52,7 @@ public class ApplicationRegistration {
     public ApplicationDescriptor getServiceDescriptor(String applicationName){
         try{
         	ApplicationDescriptor application = new ApplicationDescriptor();
-        	application.setApplicationName(applicationName);
+        	application.setName(applicationName);
         	ServiceDescriptor descriptor = new ServiceDescriptor();
 
         	ServiceParameters parameters = new ServiceParameters();
@@ -90,7 +90,7 @@ public class ApplicationRegistration {
         	descriptor.setInputParams(inputlist);
         	descriptor.setOutputParams(outputlist);
 
-        	application.setServiceName("service1");
+        	application.setName("service1");
         	application.setHostdescName("localhost");
             return application;
         } catch (Exception e) {

Modified: airavata/sandbox/airavata-registry-rest/src/main/java/org/apache/airavata/services/registry/rest/resources/RegistryResource.java
URL: http://svn.apache.org/viewvc/airavata/sandbox/airavata-registry-rest/src/main/java/org/apache/airavata/services/registry/rest/resources/RegistryResource.java?rev=1404637&r1=1404636&r2=1404637&view=diff
==============================================================================
--- airavata/sandbox/airavata-registry-rest/src/main/java/org/apache/airavata/services/registry/rest/resources/RegistryResource.java (original)
+++ airavata/sandbox/airavata-registry-rest/src/main/java/org/apache/airavata/services/registry/rest/resources/RegistryResource.java Thu Nov  1 15:18:48 2012
@@ -15,7 +15,6 @@ import org.apache.airavata.registry.api.
 import org.apache.airavata.services.registry.rest.resourcemappings.WorkflowInstanceMapping;
 import org.apache.airavata.services.registry.rest.utils.ApplicationDescriptorTypes;
 import org.apache.airavata.services.registry.rest.utils.DescriptorUtil;
-import org.apache.airavata.services.registry.rest.utils.HostTypes;
 import org.apache.airavata.services.registry.rest.utils.RestServicesConstants;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -566,21 +565,7 @@ import java.util.*;
     public Response addJSONHostDescriptor(HostDescriptor host) {
         airavataRegistry = (AiravataRegistry2) context.getAttribute(RestServicesConstants.AIRAVATA_REGISTRY);
         try {
-            HostDescription hostDescription = new HostDescription();
-            hostDescription.getType().setHostAddress(host.getHostAddress());
-            hostDescription.getType().setHostName(host.getHostname());
-
-            if (host.getHostType() != null && !host.getHostType().isEmpty()) {
-                if (host.getHostType().equals(HostTypes.GLOBUS_HOST_TYPE)) {
-                    ((GlobusHostType) hostDescription.getType()).addGlobusGateKeeperEndPoint(host.getGlobusGateKeeperEndPoint().get(0));
-                    ((GlobusHostType) hostDescription.getType()).addGridFTPEndPoint(host.getGridFTPEndPoint().get(0));
-                } else if (host.getHostType().equals(HostTypes.GSISSH_HOST_TYPE)) {
-                    ((GsisshHostType) hostDescription).addGridFTPEndPoint(host.getGridFTPEndPoint().get(0));
-                } else if (host.getHostType().equals(HostTypes.EC2_HOST_TYPE)) {
-                    ((Ec2HostType) hostDescription).addImageID(host.getImageID().get(0));
-                    ((Ec2HostType) hostDescription).addInstanceID(host.getInstanceID().get(0));
-                }
-            }
+            HostDescription hostDescription = DescriptorUtil.createHostDescription(host);
             airavataRegistry.addHostDescriptor(hostDescription);
             Response.ResponseBuilder builder = Response.status(Response.Status.NO_CONTENT);
             return builder.build();
@@ -600,21 +585,7 @@ import java.util.*;
     public Response updateHostDescriptor(HostDescriptor host) {
         airavataRegistry = (AiravataRegistry2) context.getAttribute(RestServicesConstants.AIRAVATA_REGISTRY);
         try{
-            HostDescription hostDescription = new HostDescription();
-            hostDescription.getType().setHostAddress(host.getHostAddress());
-            hostDescription.getType().setHostName(host.getHostname());
-            if (host.getHostType() != null && !host.getHostType().isEmpty()) {
-                if(host.getHostType().equals(HostTypes.GLOBUS_HOST_TYPE)){
-                    ((GlobusHostType)hostDescription.getType()).addGlobusGateKeeperEndPoint(host.getGlobusGateKeeperEndPoint().get(0));
-                    ((GlobusHostType)hostDescription.getType()).addGridFTPEndPoint(host.getGridFTPEndPoint().get(0));
-                }else if (host.getHostType().equals(HostTypes.GSISSH_HOST_TYPE)){
-                    ((GsisshHostType)hostDescription).addGridFTPEndPoint(host.getGridFTPEndPoint().get(0));
-                } else if (host.getHostType().equals(HostTypes.EC2_HOST_TYPE)){
-                    ((Ec2HostType)hostDescription).addImageID(host.getImageID().get(0));
-                    ((Ec2HostType)hostDescription).addInstanceID(host.getInstanceID().get(0));
-                }
-            }
-
+            HostDescription hostDescription = DescriptorUtil.createHostDescription(host);
             airavataRegistry.updateHostDescriptor(hostDescription);
             Response.ResponseBuilder builder = Response.status(Response.Status.NO_CONTENT);
             return builder.build();
@@ -634,63 +605,11 @@ import java.util.*;
     public Response getHostDescriptor(@QueryParam("hostName") String hostName) {
         airavataRegistry = (AiravataRegistry2) context.getAttribute(RestServicesConstants.AIRAVATA_REGISTRY);
         try{
-            List<String> hostType = new ArrayList<String>();
-            List<String> gridFTPEndPoint = new ArrayList<String>();
-            List<String> globusGateKeeperEndPoint  = new ArrayList<String>();
-            List<String> imageID  = new ArrayList<String>();
-            List<String> instanceID  = new ArrayList<String>();
-
             HostDescription hostDescription = airavataRegistry.getHostDescriptor(hostName);
-            HostDescriptor hostDescriptor = new HostDescriptor();
-            hostDescriptor.setHostname(hostDescription.getType().getHostName());
-            hostDescriptor.setHostAddress(hostDescription.getType().getHostAddress());
-
-            HostDescriptionType hostDescriptionType = hostDescription.getType();
-            if (hostDescriptionType instanceof GlobusHostType){
-                GlobusHostType globusHostType = (GlobusHostType) hostDescriptionType;
-                hostType.add(HostTypes.GLOBUS_HOST_TYPE);
-                String[] globusGateKeeperEndPointArray = globusHostType.getGlobusGateKeeperEndPointArray();
-                for (int i = 0; i < globusGateKeeperEndPointArray.length ; i++){
-                    globusGateKeeperEndPoint.add(globusGateKeeperEndPointArray[i]);
-                }
-
-                String[] gridFTPEndPointArray = globusHostType.getGridFTPEndPointArray();
-                for (int i = 0; i < gridFTPEndPointArray.length ; i++){
-                    gridFTPEndPoint.add(globusGateKeeperEndPointArray[i]);
-                }
-
-            }else if (hostDescriptionType instanceof GsisshHostType){
-                GsisshHostType gsisshHostType = (GsisshHostType) hostDescriptionType;
-                hostType.add(HostTypes.GSISSH_HOST_TYPE);
-
-                String[] gridFTPEndPointArray = gsisshHostType.getGridFTPEndPointArray();
-                for (int i = 0; i < gridFTPEndPointArray.length ; i++){
-                    gridFTPEndPoint.add(gridFTPEndPointArray[i]);
-                }
-            }  else if (hostDescriptionType instanceof  Ec2HostType) {
-                Ec2HostType ec2HostType = (Ec2HostType) hostDescriptionType;
-                hostType.add(HostTypes.EC2_HOST_TYPE);
-
-                String[] imageIDArray = ec2HostType.getImageIDArray();
-                for (int i = 0; i < imageIDArray.length ; i++){
-                    imageID.add(imageIDArray[i]);
-                }
-
-                String[] instanceIDArray = ec2HostType.getInstanceIDArray();
-                for (int i = 0; i < instanceIDArray.length ; i++){
-                    instanceID.add(instanceIDArray[i]);
-                }
-            } else {
-                hostType.add(HostTypes.HOST_DESCRIPTION_TYPE);
-            }
-            hostDescriptor.setGlobusGateKeeperEndPoint(globusGateKeeperEndPoint);
-            hostDescriptor.setGridFTPEndPoint(gridFTPEndPoint);
-            hostDescriptor.setImageID(imageID);
-            hostDescriptor.setInstanceID(instanceID);
-            hostDescriptor.setHostType(hostType);
+            HostDescriptor hostDescriptor = DescriptorUtil.createHostDescriptor(hostDescription);
             if (hostDescription != null) {
                 Response.ResponseBuilder builder = Response.status(Response.Status.OK);
-                builder.entity(hostDescription);
+                builder.entity(hostDescriptor);
                 return builder.build();
             } else {
                 Response.ResponseBuilder builder = Response.status(Response.Status.BAD_REQUEST);
@@ -721,7 +640,6 @@ import java.util.*;
         }
     }
 
-
     @GET
     @Path("get/hostdescriptors")
     @Consumes({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
@@ -733,59 +651,7 @@ import java.util.*;
             HostDescriptionList list = new HostDescriptionList();
             HostDescriptor[] hostDescriptions = new HostDescriptor[hostDescriptionList.size()];
             for (int i = 0; i < hostDescriptionList.size(); i++) {
-                List<String> hostType = new ArrayList<String>();
-                List<String> gridFTPEndPoint = new ArrayList<String>();
-                List<String> globusGateKeeperEndPoint  = new ArrayList<String>();
-                List<String> imageID  = new ArrayList<String>();
-                List<String> instanceID  = new ArrayList<String>();
-                HostDescriptor hostDescriptor = new HostDescriptor();
-                hostDescriptor.setHostname(hostDescriptionList.get(i).getType().getHostName());
-                hostDescriptor.setHostAddress(hostDescriptionList.get(i).getType().getHostAddress());
-
-                HostDescriptionType hostDescriptionType = hostDescriptionList.get(i).getType();
-                if (hostDescriptionType instanceof GlobusHostType){
-                    GlobusHostType globusHostType = (GlobusHostType) hostDescriptionType;
-                    hostType.add(HostTypes.GLOBUS_HOST_TYPE);
-                    String[] globusGateKeeperEndPointArray = globusHostType.getGlobusGateKeeperEndPointArray();
-                    for (int j = 0; j < globusGateKeeperEndPointArray.length ; j++){
-                        globusGateKeeperEndPoint.add(globusGateKeeperEndPointArray[j]);
-                    }
-
-                    String[] gridFTPEndPointArray = globusHostType.getGridFTPEndPointArray();
-                    for (int j = 0; j < gridFTPEndPointArray.length ; j++){
-                        gridFTPEndPoint.add(globusGateKeeperEndPointArray[j]);
-                    }
-
-                }else if (hostDescriptionType instanceof GsisshHostType){
-                    GsisshHostType gsisshHostType = (GsisshHostType) hostDescriptionType;
-                    hostType.add(HostTypes.GSISSH_HOST_TYPE);
-
-                    String[] gridFTPEndPointArray = gsisshHostType.getGridFTPEndPointArray();
-                    for (int j = 0; j < gridFTPEndPointArray.length ; j++){
-                        gridFTPEndPoint.add(gridFTPEndPointArray[j]);
-                    }
-                }  else if (hostDescriptionType instanceof  Ec2HostType) {
-                    Ec2HostType ec2HostType = (Ec2HostType) hostDescriptionType;
-                    hostType.add(HostTypes.EC2_HOST_TYPE);
-
-                    String[] imageIDArray = ec2HostType.getImageIDArray();
-                    for (int j = 0; j < imageIDArray.length ; j++){
-                        imageID.add(imageIDArray[j]);
-                    }
-
-                    String[] instanceIDArray = ec2HostType.getInstanceIDArray();
-                    for (int j = 0; j < instanceIDArray.length ; j++){
-                        instanceID.add(instanceIDArray[j]);
-                    }
-                } else {
-                    hostType.add(HostTypes.HOST_DESCRIPTION_TYPE);
-                }
-                hostDescriptor.setGlobusGateKeeperEndPoint(globusGateKeeperEndPoint);
-                hostDescriptor.setGridFTPEndPoint(gridFTPEndPoint);
-                hostDescriptor.setImageID(imageID);
-                hostDescriptor.setInstanceID(instanceID);
-                hostDescriptor.setHostType(hostType);
-
+                HostDescriptor hostDescriptor = DescriptorUtil.createHostDescriptor(hostDescriptionList.get(i));
                 hostDescriptions[i] = hostDescriptor;
             }
             list.setHostDescriptions(hostDescriptions);
@@ -803,10 +669,6 @@ import java.util.*;
         }
     }
 
-    public Response getHostDescriptorMetadata(String s) {
-        return null;
-    }
-
     @GET
     @Path("servicedescriptor/exist")
     @Produces(MediaType.TEXT_PLAIN)
@@ -836,36 +698,7 @@ import java.util.*;
     public Response addJSONServiceDescriptor(ServiceDescriptor service){
         airavataRegistry = (AiravataRegistry2) context.getAttribute(RestServicesConstants.AIRAVATA_REGISTRY);
         try{
-            ServiceDescription serviceDescription = new ServiceDescription();
-            serviceDescription.getType().setName(service.getServiceName());
-            serviceDescription.getType().setDescription(service.getDescription());
-            List<ServiceParameters> inputParams = service.getInputParams();
-            InputParameterType[] inputParameterTypeArray = new InputParameterType[inputParams.size()];
-            for (int i = 0; i < inputParams.size(); i++){
-                InputParameterType parameter = InputParameterType.Factory.newInstance();
-                parameter.setParameterName(inputParams.get(i).getType());
-                parameter.setParameterValueArray(new String[]{inputParams.get(i).getName()});
-                ParameterType parameterType = parameter.addNewParameterType();
-                parameterType.setType(DataType.Enum.forString(inputParams.get(i).getDataType()));
-                parameterType.setName(inputParams.get(i).getDataType());
-                parameter.setParameterType(parameterType);
-                inputParameterTypeArray[i] = parameter;
-            }
-            serviceDescription.getType().setInputParametersArray(inputParameterTypeArray);
-
-            List<ServiceParameters> outputParams = service.getOutputParams();
-            OutputParameterType[] outputParameterTypeArray = new OutputParameterType[outputParams.size()];
-            for (int i = 0; i < outputParams.size(); i++){
-                OutputParameterType parameter = OutputParameterType.Factory.newInstance();
-                parameter.setParameterName(outputParams.get(i).getType());
-                parameter.setParameterName(outputParams.get(i).getName());
-                ParameterType parameterType = parameter.addNewParameterType();
-                parameterType.setType(DataType.Enum.forString(outputParams.get(i).getDataType()));
-                parameterType.setName(outputParams.get(i).getDataType());
-                parameter.setParameterType(parameterType);
-                outputParameterTypeArray[i] = parameter;
-            }
-            serviceDescription.getType().setOutputParametersArray(outputParameterTypeArray);
+            ServiceDescription serviceDescription = DescriptorUtil.createServiceDescription(service);
             airavataRegistry.addServiceDescriptor(serviceDescription);
             Response.ResponseBuilder builder = Response.status(Response.Status.NO_CONTENT);
             return builder.build();
@@ -885,36 +718,7 @@ import java.util.*;
     public Response updateServiceDescriptor(ServiceDescriptor service) {
         airavataRegistry = (AiravataRegistry2) context.getAttribute(RestServicesConstants.AIRAVATA_REGISTRY);
         try{
-            ServiceDescription serviceDescription = new ServiceDescription();
-            serviceDescription.getType().setName(service.getServiceName());
-            serviceDescription.getType().setDescription(service.getDescription());
-            List<ServiceParameters> inputParams = service.getInputParams();
-            InputParameterType[] inputParameterTypeArray = new InputParameterType[inputParams.size()];
-            for (int i = 0; i < inputParams.size(); i++){
-                InputParameterType parameter = InputParameterType.Factory.newInstance();
-                parameter.setParameterName(inputParams.get(i).getType());
-                parameter.setParameterValueArray(new String[]{inputParams.get(i).getName()});
-                ParameterType parameterType = parameter.addNewParameterType();
-                parameterType.setType(DataType.Enum.forString(inputParams.get(i).getDataType()));
-                parameterType.setName(inputParams.get(i).getDataType());
-                parameter.setParameterType(parameterType);
-                inputParameterTypeArray[i] = parameter;
-            }
-            serviceDescription.getType().setInputParametersArray(inputParameterTypeArray);
-
-            List<ServiceParameters> outputParams = service.getOutputParams();
-            OutputParameterType[] outputParameterTypeArray = new OutputParameterType[outputParams.size()];
-            for (int i = 0; i < outputParams.size(); i++){
-                OutputParameterType parameter = OutputParameterType.Factory.newInstance();
-                parameter.setParameterName(outputParams.get(i).getType());
-                parameter.setParameterName(outputParams.get(i).getName());
-                ParameterType parameterType = parameter.addNewParameterType();
-                parameterType.setType(DataType.Enum.forString(outputParams.get(i).getDataType()));
-                parameterType.setName(outputParams.get(i).getDataType());
-                parameter.setParameterType(parameterType);
-                outputParameterTypeArray[i] = parameter;
-            }
-            serviceDescription.getType().setOutputParametersArray(outputParameterTypeArray);
+            ServiceDescription serviceDescription = DescriptorUtil.createServiceDescription(service);
             airavataRegistry.updateServiceDescriptor(serviceDescription);
             Response.ResponseBuilder builder = Response.status(Response.Status.NO_CONTENT);
             return builder.build();
@@ -935,37 +739,10 @@ import java.util.*;
         airavataRegistry = (AiravataRegistry2) context.getAttribute(RestServicesConstants.AIRAVATA_REGISTRY);
         try{
             ServiceDescription serviceDescription = airavataRegistry.getServiceDescriptor(serviceName);
-            ServiceDescriptor serviceDescriptor = new ServiceDescriptor();
-            serviceDescriptor.setServiceName(serviceDescription.getType().getName());
-            serviceDescriptor.setDescription(serviceDescription.getType().getDescription());
-            InputParameterType[] inputParametersArray = serviceDescription.getType().getInputParametersArray();
-            OutputParameterType[] outputParametersArray = serviceDescription.getType().getOutputParametersArray();
-            List<ServiceParameters> inputParams = new ArrayList<ServiceParameters>();
-            List<ServiceParameters> outputParams = new ArrayList<ServiceParameters>();
-
-            for (int i = 0; i < inputParametersArray.length; i++){
-                ServiceParameters serviceParameters = new ServiceParameters();
-                serviceParameters.setType(inputParametersArray[i].getParameterName());
-                serviceParameters.setName(inputParametersArray[i].getParameterValueArray().toString());
-                serviceParameters.setDescription(inputParametersArray[i].getParameterDescription());
-                serviceParameters.setDataType(inputParametersArray[i].getParameterType().getType().toString());
-                inputParams.add(serviceParameters);
-            }
-            serviceDescriptor.setInputParams(inputParams);
-
-            for (int i = 0; i < outputParametersArray.length; i++){
-                ServiceParameters serviceParameters = new ServiceParameters();
-                serviceParameters.setType(outputParametersArray[i].getParameterName());
-                serviceParameters.setName(outputParametersArray[i].getParameterName());
-                serviceParameters.setDescription(outputParametersArray[i].getParameterDescription());
-                serviceParameters.setDataType(outputParametersArray[i].getParameterType().getType().toString());
-                inputParams.add(serviceParameters);
-            }
-            serviceDescriptor.setOutputParams(outputParams);
-
+            ServiceDescriptor serviceDescriptor = DescriptorUtil.createServiceDescriptor(serviceDescription);
             if (serviceDescription != null) {
                 Response.ResponseBuilder builder = Response.status(Response.Status.OK);
-                builder.entity(serviceDescription);
+                builder.entity(serviceDescriptor);
                 return builder.build();
             } else {
                 Response.ResponseBuilder builder = Response.status(Response.Status.BAD_REQUEST);
@@ -1006,33 +783,7 @@ import java.util.*;
             ServiceDescriptionList list = new ServiceDescriptionList();
             ServiceDescriptor[] serviceDescriptions = new ServiceDescriptor[serviceDescriptors.size()];
             for (int i = 0; i < serviceDescriptors.size(); i++) {
-                ServiceDescriptor serviceDescriptor = new ServiceDescriptor();
-                serviceDescriptor.setServiceName(serviceDescriptors.get(i).getType().getName());
-                serviceDescriptor.setDescription(serviceDescriptors.get(i).getType().getDescription());
-                InputParameterType[] inputParametersArray = serviceDescriptors.get(i).getType().getInputParametersArray();
-                OutputParameterType[] outputParametersArray = serviceDescriptors.get(i).getType().getOutputParametersArray();
-                List<ServiceParameters> inputParams = new ArrayList<ServiceParameters>();
-                List<ServiceParameters> outputParams = new ArrayList<ServiceParameters>();
-
-                for (int j = 0; j < inputParametersArray.length; j++){
-                    ServiceParameters serviceParameters = new ServiceParameters();
-                    serviceParameters.setType(inputParametersArray[j].getParameterName());
-                    serviceParameters.setName(inputParametersArray[j].getParameterValueArray().toString());
-                    serviceParameters.setDescription(inputParametersArray[j].getParameterDescription());
-                    serviceParameters.setDataType(inputParametersArray[j].getParameterType().getType().toString());
-                    inputParams.add(serviceParameters);
-                }
-                serviceDescriptor.setInputParams(inputParams);
-
-                for (int j = 0; j < outputParametersArray.length; j++){
-                    ServiceParameters serviceParameters = new ServiceParameters();
-                    serviceParameters.setType(outputParametersArray[j].getParameterName());
-                    serviceParameters.setName(outputParametersArray[j].getParameterName());
-                    serviceParameters.setDescription(outputParametersArray[j].getParameterDescription());
-                    serviceParameters.setDataType(outputParametersArray[j].getParameterType().getType().toString());
-                    inputParams.add(serviceParameters);
-                }
-                serviceDescriptor.setOutputParams(outputParams);
+                ServiceDescriptor serviceDescriptor = DescriptorUtil.createServiceDescriptor(serviceDescriptors.get(i));
                 serviceDescriptions[i] = serviceDescriptor;
             }
             list.setServiceDescriptions(serviceDescriptions);
@@ -1049,10 +800,6 @@ import java.util.*;
             return builder.build();
         }    }
 
-    public Response getServiceDescriptorMetadata(String s){
-        return null;
-    }
-
 
     @GET
     @Path("applicationdescriptor/exist")
@@ -1128,7 +875,6 @@ import java.util.*;
         }
     }
 
-
     @POST
     @Path("applicationdescriptor/build/save")
     @Consumes({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
@@ -1141,36 +887,21 @@ import java.util.*;
                 Response.ResponseBuilder builder = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
                 return builder.build();
             }
-            ApplicationDeploymentDescription applicationDeploymentDescription = new ApplicationDeploymentDescription();
-            ApplicationDeploymentDescriptionType.ApplicationName name = ApplicationDeploymentDescriptionType.ApplicationName.Factory.newInstance();
-            name.setStringValue(applicationDescriptor.getApplicationName());
-            applicationDeploymentDescription.getType().setApplicationName(name);
-            applicationDeploymentDescription.getType().setExecutableLocation(applicationDescriptor.getExecutablePath());
-            applicationDeploymentDescription.getType().setOutputDataDirectory(applicationDescriptor.getWorkingDir());
-
-            //set advanced options according app desc type
-            if(applicationDescriptor.getApplicationDescType() != null && !applicationDescriptor.getApplicationDescType().isEmpty()){
-                if (applicationDescriptor.getApplicationDescType().equals(ApplicationDescriptorTypes.GRAM_APP_DEP_DESC_TYPE)){
-                    GramApplicationDeploymentType applicationDeploymentType = (GramApplicationDeploymentType)applicationDeploymentDescription.getType();
-                    applicationDeploymentType.setCpuCount(applicationDescriptor.getCpuCount());
-                    applicationDeploymentType.setJobType(JobTypeType.Enum.forString(applicationDescriptor.getJobType()));
-                    applicationDeploymentType.setMaxMemory(applicationDescriptor.getMaxMemory());
-                    applicationDeploymentType.setMinMemory(applicationDescriptor.getMinMemory());
-                    applicationDeploymentType.setMaxWallTime(applicationDescriptor.getMaxWallTime());
-                    applicationDeploymentType.setNodeCount(applicationDescriptor.getNodeCount());
-                    applicationDeploymentType.setProcessorsPerNode(applicationDescriptor.getProcessorsPerNode());
-                } else if (applicationDescriptor.getApplicationDescType().equals(ApplicationDescriptorTypes.BATCH_APP_DEP_DESC_TYPE)){
-                    BatchApplicationDeploymentDescriptionType applicationDeploymentType = (BatchApplicationDeploymentDescriptionType)applicationDeploymentDescription.getType();
-                    applicationDeploymentType.setCpuCount(applicationDescriptor.getCpuCount());
-                    applicationDeploymentType.setJobType(JobTypeType.Enum.forString(applicationDescriptor.getJobType()));
-                    applicationDeploymentType.setMaxMemory(applicationDescriptor.getMaxMemory());
-                    applicationDeploymentType.setMinMemory(applicationDescriptor.getMinMemory());
-                    applicationDeploymentType.setMaxWallTime(applicationDescriptor.getMaxWallTime());
-                    applicationDeploymentType.setNodeCount(applicationDescriptor.getNodeCount());
-                    applicationDeploymentType.setProcessorsPerNode(applicationDescriptor.getProcessorsPerNode());
+            ApplicationDeploymentDescription applicationDeploymentDescription = DescriptorUtil.createApplicationDescription(applicationDescriptor);
+            ServiceDescriptor serviceDescriptor = applicationDescriptor.getServiceDescriptor();
+            String serviceName;
+            if (serviceDescriptor != null){
+                if (serviceDescriptor.getServiceName() == null){
+                    serviceName = applicationDescriptor.getName();
+                    serviceDescriptor.setServiceName(serviceName);
+                }else{
+                    serviceName = serviceDescriptor.getServiceName();
                 }
+                ServiceDescription serviceDescription = DescriptorUtil.createServiceDescription(serviceDescriptor);
+                airavataRegistry.addServiceDescriptor(serviceDescription);
+            }  else {
+                serviceName = applicationDescriptor.getName();
             }
-            String serviceName = applicationDescriptor.getServiceName();
             airavataRegistry.addApplicationDescriptor(serviceName, hostdescName, applicationDeploymentDescription);
             Response.ResponseBuilder builder = Response.status(Response.Status.NO_CONTENT);
             return builder.build();
@@ -1223,38 +954,26 @@ import java.util.*;
                 Response.ResponseBuilder builder = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
                 return builder.build();
             }
-            ApplicationDeploymentDescription applicationDeploymentDescription = new ApplicationDeploymentDescription();
-            ApplicationDeploymentDescriptionType.ApplicationName name = ApplicationDeploymentDescriptionType.ApplicationName.Factory.newInstance();
-            name.setStringValue(applicationDescriptor.getApplicationName());
-            applicationDeploymentDescription.getType().setApplicationName(name);
-            applicationDeploymentDescription.getType().setExecutableLocation(applicationDescriptor.getExecutablePath());
-            applicationDeploymentDescription.getType().setOutputDataDirectory(applicationDescriptor.getWorkingDir());
-
-            //set advanced options according app desc type
-            if(applicationDescriptor.getApplicationDescType() != null && !applicationDescriptor.getApplicationDescType().isEmpty()){
-                if (applicationDescriptor.getApplicationDescType().equals(ApplicationDescriptorTypes.GRAM_APP_DEP_DESC_TYPE)){
-                    GramApplicationDeploymentType applicationDeploymentType = (GramApplicationDeploymentType)applicationDeploymentDescription.getType();
-                    applicationDeploymentType.setCpuCount(applicationDescriptor.getCpuCount());
-                    applicationDeploymentType.setJobType(JobTypeType.Enum.forString(applicationDescriptor.getJobType()));
-                    applicationDeploymentType.setMaxMemory(applicationDescriptor.getMaxMemory());
-                    applicationDeploymentType.setMinMemory(applicationDescriptor.getMinMemory());
-                    applicationDeploymentType.setMaxWallTime(applicationDescriptor.getMaxWallTime());
-                    applicationDeploymentType.setNodeCount(applicationDescriptor.getNodeCount());
-                    applicationDeploymentType.setProcessorsPerNode(applicationDescriptor.getProcessorsPerNode());
-                } else if (applicationDescriptor.getApplicationDescType().equals(ApplicationDescriptorTypes.BATCH_APP_DEP_DESC_TYPE)){
-                    BatchApplicationDeploymentDescriptionType applicationDeploymentType = (BatchApplicationDeploymentDescriptionType)applicationDeploymentDescription.getType();
-                    applicationDeploymentType.setCpuCount(applicationDescriptor.getCpuCount());
-                    applicationDeploymentType.setJobType(JobTypeType.Enum.forString(applicationDescriptor.getJobType()));
-                    applicationDeploymentType.setMaxMemory(applicationDescriptor.getMaxMemory());
-                    applicationDeploymentType.setMinMemory(applicationDescriptor.getMinMemory());
-                    applicationDeploymentType.setMaxWallTime(applicationDescriptor.getMaxWallTime());
-                    applicationDeploymentType.setNodeCount(applicationDescriptor.getNodeCount());
-                    applicationDeploymentType.setProcessorsPerNode(applicationDescriptor.getProcessorsPerNode());
+            ApplicationDeploymentDescription applicationDeploymentDescription = DescriptorUtil.createApplicationDescription(applicationDescriptor);
+            ServiceDescriptor serviceDescriptor = applicationDescriptor.getServiceDescriptor();
+            String serviceName;
+            if (serviceDescriptor != null){
+                if (serviceDescriptor.getServiceName() == null){
+                    serviceName = applicationDescriptor.getName();
+                    serviceDescriptor.setServiceName(serviceName);
+                }else{
+                    serviceName = serviceDescriptor.getServiceName();
+                }
+                ServiceDescription serviceDescription = DescriptorUtil.createServiceDescription(serviceDescriptor);
+                if(airavataRegistry.isServiceDescriptorExists(serviceName)){
+                    airavataRegistry.updateServiceDescriptor(serviceDescription);
+                } else {
+                    airavataRegistry.addServiceDescriptor(serviceDescription);
                 }
-            }
-
 
-            String serviceName = applicationDescriptor.getServiceName();
+            }  else {
+                serviceName = applicationDescriptor.getName();
+            }
             airavataRegistry.updateApplicationDescriptor(serviceName, hostdescName, applicationDeploymentDescription);
             Response.ResponseBuilder builder = Response.status(Response.Status.NO_CONTENT);
             return builder.build();
@@ -1265,33 +984,8 @@ import java.util.*;
             Response.ResponseBuilder builder = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
             return builder.build();
         }
-
     }
 
-//    @POST
-//    @Path("applicationdescriptor/update")
-//    @Consumes(MediaType.TEXT_XML)
-//    @Produces(MediaType.TEXT_PLAIN)
-//    public Response updateApplicationDescriptor(@FormParam("serviceName") String serviceName,
-//                                                @FormParam("hostName")String hostName,
-//                                                String application){
-//        airavataRegistry = (AiravataRegistry2) context.getAttribute(RestServicesConstants.AIRAVATA_REGISTRY);
-//        try{
-//            ApplicationDeploymentDescription applicationDeploymentDescription = ApplicationDeploymentDescription.fromXML(application);
-//            airavataRegistry.updateApplicationDescriptor(serviceName, hostName, applicationDeploymentDescription);
-//            Response.ResponseBuilder builder = Response.status(Response.Status.NO_CONTENT);
-//            return builder.build();
-//        } catch (DescriptorAlreadyExistsException e){
-//            Response.ResponseBuilder builder = Response.status(Response.Status.BAD_REQUEST);
-//            return builder.build();
-//        } catch (XmlException e) {
-//            Response.ResponseBuilder builder = Response.status(Response.Status.BAD_REQUEST);
-//            return builder.build();
-//        } catch (RegistryException e) {
-//            Response.ResponseBuilder builder = Response.status(Response.Status.INTERNAL_SERVER_ERROR);
-//            return builder.build();
-//        }
-//    }
 
     @GET
     @Path("applicationdescriptor/description")
@@ -1302,29 +996,11 @@ import java.util.*;
         airavataRegistry = (AiravataRegistry2) context.getAttribute(RestServicesConstants.AIRAVATA_REGISTRY);
         try{
             ApplicationDeploymentDescription applicationDeploymentDescription = airavataRegistry.getApplicationDescriptor(serviceName, hostName, applicationName);
-            ApplicationDescriptor applicationDescriptor = new ApplicationDescriptor();
-            applicationDescriptor.setApplicationName(applicationDeploymentDescription.getType().getApplicationName().getStringValue());
-            applicationDescriptor.setExecutablePath(applicationDeploymentDescription.getType().getExecutableLocation());
-            applicationDescriptor.setWorkingDir(applicationDeploymentDescription.getType().getOutputDataDirectory());
-            if(applicationDeploymentDescription.getType() != null){
-                if(applicationDeploymentDescription.getType() instanceof GramApplicationDeploymentType){
-                    GramApplicationDeploymentType gramApplicationDeploymentType = (GramApplicationDeploymentType)applicationDeploymentDescription.getType();
-                    applicationDescriptor.setCpuCount(gramApplicationDeploymentType.getCpuCount());
-                    applicationDescriptor.setNodeCount(gramApplicationDeploymentType.getNodeCount());
-                    applicationDescriptor.setMaxMemory(gramApplicationDeploymentType.getMaxMemory());
-                    applicationDescriptor.setMinMemory(gramApplicationDeploymentType.getMinMemory());
-                    applicationDescriptor.setMaxWallTime(gramApplicationDeploymentType.getMaxWallTime());
-                    applicationDescriptor.setQueueName(gramApplicationDeploymentType.getQueue().getQueueName());
-                } else if (applicationDeploymentDescription.getType() instanceof BatchApplicationDeploymentDescriptionType){
-                    BatchApplicationDeploymentDescriptionType batchApplicationDeploymentDescriptionType = (BatchApplicationDeploymentDescriptionType)applicationDeploymentDescription.getType();
-                    applicationDescriptor.setCpuCount(batchApplicationDeploymentDescriptionType.getCpuCount());
-                    applicationDescriptor.setNodeCount(batchApplicationDeploymentDescriptionType.getNodeCount());
-                    applicationDescriptor.setMaxMemory(batchApplicationDeploymentDescriptionType.getMaxMemory());
-                    applicationDescriptor.setMinMemory(batchApplicationDeploymentDescriptionType.getMinMemory());
-                    applicationDescriptor.setMaxWallTime(batchApplicationDeploymentDescriptionType.getMaxWallTime());
-                    applicationDescriptor.setQueueName(batchApplicationDeploymentDescriptionType.getQueue().getQueueName());
-                }
-            }
+            ApplicationDescriptor applicationDescriptor = DescriptorUtil.createApplicationDescriptor(applicationDeploymentDescription);
+            applicationDescriptor.setHostdescName(hostName);
+            ServiceDescription serviceDescription = airavataRegistry.getServiceDescriptor(serviceName);
+            ServiceDescriptor serviceDescriptor = DescriptorUtil.createServiceDescriptor(serviceDescription);
+            applicationDescriptor.setServiceDescriptor(serviceDescriptor);
 
             if (applicationDescriptor != null) {
                 Response.ResponseBuilder builder = Response.status(Response.Status.OK);
@@ -1348,29 +1024,11 @@ import java.util.*;
         airavataRegistry = (AiravataRegistry2) context.getAttribute(RestServicesConstants.AIRAVATA_REGISTRY);
         try{
             ApplicationDeploymentDescription applicationDeploymentDescription = airavataRegistry.getApplicationDescriptors(serviceName, hostName);
-            ApplicationDescriptor applicationDescriptor = new ApplicationDescriptor();
-            applicationDescriptor.setApplicationName(applicationDeploymentDescription.getType().getApplicationName().getStringValue());
-            applicationDescriptor.setExecutablePath(applicationDeploymentDescription.getType().getExecutableLocation());
-            applicationDescriptor.setWorkingDir(applicationDeploymentDescription.getType().getOutputDataDirectory());
-            if(applicationDeploymentDescription.getType() != null){
-                if(applicationDeploymentDescription.getType() instanceof GramApplicationDeploymentType){
-                    GramApplicationDeploymentType gramApplicationDeploymentType = (GramApplicationDeploymentType)applicationDeploymentDescription.getType();
-                    applicationDescriptor.setCpuCount(gramApplicationDeploymentType.getCpuCount());
-                    applicationDescriptor.setNodeCount(gramApplicationDeploymentType.getNodeCount());
-                    applicationDescriptor.setMaxMemory(gramApplicationDeploymentType.getMaxMemory());
-                    applicationDescriptor.setMinMemory(gramApplicationDeploymentType.getMinMemory());
-                    applicationDescriptor.setMaxWallTime(gramApplicationDeploymentType.getMaxWallTime());
-                    applicationDescriptor.setQueueName(gramApplicationDeploymentType.getQueue().getQueueName());
-                } else if (applicationDeploymentDescription.getType() instanceof BatchApplicationDeploymentDescriptionType){
-                    BatchApplicationDeploymentDescriptionType batchApplicationDeploymentDescriptionType = (BatchApplicationDeploymentDescriptionType)applicationDeploymentDescription.getType();
-                    applicationDescriptor.setCpuCount(batchApplicationDeploymentDescriptionType.getCpuCount());
-                    applicationDescriptor.setNodeCount(batchApplicationDeploymentDescriptionType.getNodeCount());
-                    applicationDescriptor.setMaxMemory(batchApplicationDeploymentDescriptionType.getMaxMemory());
-                    applicationDescriptor.setMinMemory(batchApplicationDeploymentDescriptionType.getMinMemory());
-                    applicationDescriptor.setMaxWallTime(batchApplicationDeploymentDescriptionType.getMaxWallTime());
-                    applicationDescriptor.setQueueName(batchApplicationDeploymentDescriptionType.getQueue().getQueueName());
-                }
-            }
+            ApplicationDescriptor applicationDescriptor = DescriptorUtil.createApplicationDescriptor(applicationDeploymentDescription);
+            applicationDescriptor.setHostdescName(hostName);
+            ServiceDescription serviceDescription = airavataRegistry.getServiceDescriptor(serviceName);
+            ServiceDescriptor serviceDescriptor = DescriptorUtil.createServiceDescriptor(serviceDescription);
+            applicationDescriptor.setServiceDescriptor(serviceDescriptor);
 
             if (applicationDescriptor != null) {
                 Response.ResponseBuilder builder = Response.status(Response.Status.OK);
@@ -1398,30 +1056,12 @@ import java.util.*;
             int i = 0;
             for(String hostName : applicationDeploymentDescriptionMap.keySet()){
                 ApplicationDeploymentDescription applicationDeploymentDescription = applicationDeploymentDescriptionMap.get(hostName);
-                ApplicationDescriptor applicationDescriptor = new ApplicationDescriptor();
+                ApplicationDescriptor applicationDescriptor = DescriptorUtil.createApplicationDescriptor(applicationDeploymentDescription);
                 applicationDescriptor.setHostdescName(hostName);
-                applicationDescriptor.setApplicationName(applicationDeploymentDescription.getType().getApplicationName().getStringValue());
-                applicationDescriptor.setExecutablePath(applicationDeploymentDescription.getType().getExecutableLocation());
-                applicationDescriptor.setWorkingDir(applicationDeploymentDescription.getType().getOutputDataDirectory());
-                if(applicationDeploymentDescription.getType() != null){
-                    if(applicationDeploymentDescription.getType() instanceof GramApplicationDeploymentType){
-                        GramApplicationDeploymentType gramApplicationDeploymentType = (GramApplicationDeploymentType)applicationDeploymentDescription.getType();
-                        applicationDescriptor.setCpuCount(gramApplicationDeploymentType.getCpuCount());
-                        applicationDescriptor.setNodeCount(gramApplicationDeploymentType.getNodeCount());
-                        applicationDescriptor.setMaxMemory(gramApplicationDeploymentType.getMaxMemory());
-                        applicationDescriptor.setMinMemory(gramApplicationDeploymentType.getMinMemory());
-                        applicationDescriptor.setMaxWallTime(gramApplicationDeploymentType.getMaxWallTime());
-                        applicationDescriptor.setQueueName(gramApplicationDeploymentType.getQueue().getQueueName());
-                    } else if (applicationDeploymentDescription.getType() instanceof BatchApplicationDeploymentDescriptionType){
-                        BatchApplicationDeploymentDescriptionType batchApplicationDeploymentDescriptionType = (BatchApplicationDeploymentDescriptionType)applicationDeploymentDescription.getType();
-                        applicationDescriptor.setCpuCount(batchApplicationDeploymentDescriptionType.getCpuCount());
-                        applicationDescriptor.setNodeCount(batchApplicationDeploymentDescriptionType.getNodeCount());
-                        applicationDescriptor.setMaxMemory(batchApplicationDeploymentDescriptionType.getMaxMemory());
-                        applicationDescriptor.setMinMemory(batchApplicationDeploymentDescriptionType.getMinMemory());
-                        applicationDescriptor.setMaxWallTime(batchApplicationDeploymentDescriptionType.getMaxWallTime());
-                        applicationDescriptor.setQueueName(batchApplicationDeploymentDescriptionType.getQueue().getQueueName());
-                    }
-                }
+
+                ServiceDescription serviceDescription = airavataRegistry.getServiceDescriptor(serviceName);
+                ServiceDescriptor serviceDescriptor = DescriptorUtil.createServiceDescriptor(serviceDescription);
+                applicationDescriptor.setServiceDescriptor(serviceDescriptor);
 
                 applicationDescriptors[i] = applicationDescriptor;
                 i++;
@@ -1455,33 +1095,16 @@ import java.util.*;
             ApplicationDescriptor[] applicationDescriptors = new ApplicationDescriptor[applicationDeploymentDescriptionMap.size()];
             int i = 0;
             for (String[] descriptors : applicationDeploymentDescriptionMap.keySet()){
-                ApplicationDescriptor applicationDescriptor = new ApplicationDescriptor();
                 ApplicationDeploymentDescription applicationDeploymentDescription = applicationDeploymentDescriptionMap.get(descriptors);
-                applicationDescriptor.setServiceName(descriptors[0]);
+                ApplicationDescriptor applicationDescriptor = DescriptorUtil.createApplicationDescriptor(applicationDeploymentDescription);
                 applicationDescriptor.setHostdescName(descriptors[1]);
-                applicationDescriptor.setApplicationName(applicationDeploymentDescription.getType().getApplicationName().getStringValue());
-                applicationDescriptor.setExecutablePath(applicationDeploymentDescription.getType().getExecutableLocation());
-                applicationDescriptor.setWorkingDir(applicationDeploymentDescription.getType().getOutputDataDirectory());
-                if(applicationDeploymentDescription.getType() != null){
-                    if(applicationDeploymentDescription.getType() instanceof GramApplicationDeploymentType){
-                        GramApplicationDeploymentType gramApplicationDeploymentType = (GramApplicationDeploymentType)applicationDeploymentDescription.getType();
-                        applicationDescriptor.setCpuCount(gramApplicationDeploymentType.getCpuCount());
-                        applicationDescriptor.setNodeCount(gramApplicationDeploymentType.getNodeCount());
-                        applicationDescriptor.setMaxMemory(gramApplicationDeploymentType.getMaxMemory());
-                        applicationDescriptor.setMinMemory(gramApplicationDeploymentType.getMinMemory());
-                        applicationDescriptor.setMaxWallTime(gramApplicationDeploymentType.getMaxWallTime());
-                        applicationDescriptor.setQueueName(gramApplicationDeploymentType.getQueue().getQueueName());
-                    } else if (applicationDeploymentDescription.getType() instanceof BatchApplicationDeploymentDescriptionType){
-                        BatchApplicationDeploymentDescriptionType batchApplicationDeploymentDescriptionType = (BatchApplicationDeploymentDescriptionType)applicationDeploymentDescription.getType();
-                        applicationDescriptor.setCpuCount(batchApplicationDeploymentDescriptionType.getCpuCount());
-                        applicationDescriptor.setNodeCount(batchApplicationDeploymentDescriptionType.getNodeCount());
-                        applicationDescriptor.setMaxMemory(batchApplicationDeploymentDescriptionType.getMaxMemory());
-                        applicationDescriptor.setMinMemory(batchApplicationDeploymentDescriptionType.getMinMemory());
-                        applicationDescriptor.setMaxWallTime(batchApplicationDeploymentDescriptionType.getMaxWallTime());
-                        applicationDescriptor.setQueueName(batchApplicationDeploymentDescriptionType.getQueue().getQueueName());
-                    }
+                ServiceDescription serviceDescription = airavataRegistry.getServiceDescriptor(descriptors[0]);
+                if (serviceDescription == null){
+                    Response.ResponseBuilder builder = Response.status(Response.Status.NO_CONTENT);
+                    return builder.build();
                 }
-
+                ServiceDescriptor serviceDescriptor = DescriptorUtil.createServiceDescriptor(serviceDescription);
+                applicationDescriptor.setServiceDescriptor(serviceDescriptor);
                 applicationDescriptors[i] = applicationDescriptor;
                 i++;
             }

Modified: airavata/sandbox/airavata-registry-rest/src/main/java/org/apache/airavata/services/registry/rest/utils/DescriptorUtil.java
URL: http://svn.apache.org/viewvc/airavata/sandbox/airavata-registry-rest/src/main/java/org/apache/airavata/services/registry/rest/utils/DescriptorUtil.java?rev=1404637&r1=1404636&r2=1404637&view=diff
==============================================================================
--- airavata/sandbox/airavata-registry-rest/src/main/java/org/apache/airavata/services/registry/rest/utils/DescriptorUtil.java (original)
+++ airavata/sandbox/airavata-registry-rest/src/main/java/org/apache/airavata/services/registry/rest/utils/DescriptorUtil.java Thu Nov  1 15:18:48 2012
@@ -1,14 +1,14 @@
 package org.apache.airavata.services.registry.rest.utils;
 
-import org.apache.airavata.client.api.AiravataAPI;
-import org.apache.airavata.client.api.AiravataAPIInvocationException;
-import org.apache.airavata.client.api.ApplicationManager;
 import org.apache.airavata.commons.gfac.type.ApplicationDeploymentDescription;
 import org.apache.airavata.commons.gfac.type.HostDescription;
 import org.apache.airavata.commons.gfac.type.ServiceDescription;
 import org.apache.airavata.schemas.gfac.*;
+import org.apache.airavata.services.registry.rest.resourcemappings.ApplicationDescriptor;
+import org.apache.airavata.services.registry.rest.resourcemappings.HostDescriptor;
+import org.apache.airavata.services.registry.rest.resourcemappings.ServiceDescriptor;
+import org.apache.airavata.services.registry.rest.resourcemappings.ServiceParameters;
 
-import javax.ws.rs.FormParam;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -80,4 +80,212 @@ public class DescriptorUtil {
         serv.getType().setOutputParametersArray(outputParamList);
         return serv;
     }
+
+
+    public static HostDescriptor createHostDescriptor (HostDescription hostDescription){
+        List<String> hostType = new ArrayList<String>();
+        List<String> gridFTPEndPoint = new ArrayList<String>();
+        List<String> globusGateKeeperEndPoint  = new ArrayList<String>();
+        List<String> imageID  = new ArrayList<String>();
+        List<String> instanceID  = new ArrayList<String>();
+
+        HostDescriptor hostDescriptor = new HostDescriptor();
+        hostDescriptor.setHostname(hostDescription.getType().getHostName());
+        hostDescriptor.setHostAddress(hostDescription.getType().getHostAddress());
+
+        HostDescriptionType hostDescriptionType = hostDescription.getType();
+        if (hostDescriptionType instanceof GlobusHostType){
+            GlobusHostType globusHostType = (GlobusHostType) hostDescriptionType;
+            hostType.add(HostTypes.GLOBUS_HOST_TYPE);
+            String[] globusGateKeeperEndPointArray = globusHostType.getGlobusGateKeeperEndPointArray();
+            for (int i = 0; i < globusGateKeeperEndPointArray.length ; i++){
+                globusGateKeeperEndPoint.add(globusGateKeeperEndPointArray[i]);
+            }
+
+            String[] gridFTPEndPointArray = globusHostType.getGridFTPEndPointArray();
+            for (int i = 0; i < gridFTPEndPointArray.length ; i++){
+                gridFTPEndPoint.add(globusGateKeeperEndPointArray[i]);
+            }
+
+        }else if (hostDescriptionType instanceof GsisshHostType){
+            GsisshHostType gsisshHostType = (GsisshHostType) hostDescriptionType;
+            hostType.add(HostTypes.GSISSH_HOST_TYPE);
+
+            String[] gridFTPEndPointArray = gsisshHostType.getGridFTPEndPointArray();
+            for (int i = 0; i < gridFTPEndPointArray.length ; i++){
+                gridFTPEndPoint.add(gridFTPEndPointArray[i]);
+            }
+        }  else if (hostDescriptionType instanceof  Ec2HostType) {
+            Ec2HostType ec2HostType = (Ec2HostType) hostDescriptionType;
+            hostType.add(HostTypes.EC2_HOST_TYPE);
+
+            String[] imageIDArray = ec2HostType.getImageIDArray();
+            for (int i = 0; i < imageIDArray.length ; i++){
+                imageID.add(imageIDArray[i]);
+            }
+
+            String[] instanceIDArray = ec2HostType.getInstanceIDArray();
+            for (int i = 0; i < instanceIDArray.length ; i++){
+                instanceID.add(instanceIDArray[i]);
+            }
+        } else {
+            hostType.add(HostTypes.HOST_DESCRIPTION_TYPE);
+        }
+        hostDescriptor.setGlobusGateKeeperEndPoint(globusGateKeeperEndPoint);
+        hostDescriptor.setGridFTPEndPoint(gridFTPEndPoint);
+        hostDescriptor.setImageID(imageID);
+        hostDescriptor.setInstanceID(instanceID);
+        hostDescriptor.setHostType(hostType);
+        return hostDescriptor;
+    }
+
+    public static HostDescription createHostDescription (HostDescriptor hostDescriptor){
+        HostDescription hostDescription = new HostDescription();
+        hostDescription.getType().setHostAddress(hostDescriptor.getHostAddress());
+        hostDescription.getType().setHostName(hostDescriptor.getHostname());
+
+        if (hostDescriptor.getHostType() != null && !hostDescriptor.getHostType().isEmpty()) {
+            if (hostDescriptor.getHostType().equals(HostTypes.GLOBUS_HOST_TYPE)) {
+                ((GlobusHostType) hostDescription.getType()).addGlobusGateKeeperEndPoint(hostDescriptor.getGlobusGateKeeperEndPoint().get(0));
+                ((GlobusHostType) hostDescription.getType()).addGridFTPEndPoint(hostDescriptor.getGridFTPEndPoint().get(0));
+            } else if (hostDescriptor.getHostType().equals(HostTypes.GSISSH_HOST_TYPE)) {
+                ((GsisshHostType) hostDescription).addGridFTPEndPoint(hostDescriptor.getGridFTPEndPoint().get(0));
+            } else if (hostDescriptor.getHostType().equals(HostTypes.EC2_HOST_TYPE)) {
+                ((Ec2HostType) hostDescription).addImageID(hostDescriptor.getImageID().get(0));
+                ((Ec2HostType) hostDescription).addInstanceID(hostDescriptor.getInstanceID().get(0));
+            }
+        }
+
+        return hostDescription;
+    }
+
+    public static ServiceDescription createServiceDescription (ServiceDescriptor serviceDescriptor){
+        ServiceDescription serviceDescription = new ServiceDescription();
+        serviceDescription.getType().setName(serviceDescriptor.getServiceName());
+        serviceDescription.getType().setDescription(serviceDescriptor.getDescription());
+        List<ServiceParameters> inputParams = serviceDescriptor.getInputParams();
+        InputParameterType[] inputParameterTypeArray = new InputParameterType[inputParams.size()];
+        for (int i = 0; i < inputParams.size(); i++){
+            InputParameterType parameter = InputParameterType.Factory.newInstance();
+            parameter.setParameterName(inputParams.get(i).getName());
+            parameter.setParameterValueArray(new String[]{inputParams.get(i).getName()});
+            ParameterType parameterType = parameter.addNewParameterType();
+            parameterType.setType(DataType.Enum.forString(inputParams.get(i).getType()));
+            parameterType.setName(inputParams.get(i).getType());
+            parameter.setParameterType(parameterType);
+            inputParameterTypeArray[i] = parameter;
+        }
+        serviceDescription.getType().setInputParametersArray(inputParameterTypeArray);
+
+        List<ServiceParameters> outputParams = serviceDescriptor.getOutputParams();
+        OutputParameterType[] outputParameterTypeArray = new OutputParameterType[outputParams.size()];
+        for (int i = 0; i < outputParams.size(); i++){
+            OutputParameterType parameter = OutputParameterType.Factory.newInstance();
+            parameter.setParameterName(outputParams.get(i).getName());
+            ParameterType parameterType = parameter.addNewParameterType();
+            parameterType.setType(DataType.Enum.forString(outputParams.get(i).getType()));
+            parameterType.setName(outputParams.get(i).getType());
+            parameter.setParameterType(parameterType);
+            outputParameterTypeArray[i] = parameter;
+        }
+        serviceDescription.getType().setOutputParametersArray(outputParameterTypeArray);
+        return serviceDescription;
+    }
+
+    public static ServiceDescriptor createServiceDescriptor(ServiceDescription serviceDescription){
+        ServiceDescriptor serviceDescriptor = new ServiceDescriptor();
+        serviceDescriptor.setServiceName(serviceDescription.getType().getName());
+        serviceDescriptor.setDescription(serviceDescription.getType().getDescription());
+        InputParameterType[] inputParametersArray = serviceDescription.getType().getInputParametersArray();
+        OutputParameterType[] outputParametersArray = serviceDescription.getType().getOutputParametersArray();
+        List<ServiceParameters> inputParams = new ArrayList<ServiceParameters>();
+        List<ServiceParameters> outputParams = new ArrayList<ServiceParameters>();
+
+        for (int i = 0; i < inputParametersArray.length; i++){
+            ServiceParameters serviceParameters = new ServiceParameters();
+            serviceParameters.setType(inputParametersArray[i].getParameterType().getType().toString());
+//            String[] parameterValueArray = inputParametersArray[i].getParameterValueArray();
+//            if (parameterValueArray.length != 0){
+//                serviceParameters.setName(parameterValueArray[0]);
+//            }
+            serviceParameters.setName(inputParametersArray[i].getParameterName());
+            serviceParameters.setDescription(inputParametersArray[i].getParameterDescription());
+//            serviceParameters.set(inputParametersArray[i].getParameterType().getType().toString());
+            inputParams.add(serviceParameters);
+        }
+        serviceDescriptor.setInputParams(inputParams);
+
+        for (int i = 0; i < outputParametersArray.length; i++){
+            ServiceParameters serviceParameters = new ServiceParameters();
+            serviceParameters.setType(outputParametersArray[i].getParameterType().getType().toString());
+            serviceParameters.setName(outputParametersArray[i].getParameterName());
+            serviceParameters.setDescription(outputParametersArray[i].getParameterDescription());
+//            serviceParameters.setDataType(outputParametersArray[i].getParameterType().getType().toString());
+            outputParams.add(serviceParameters);
+        }
+        serviceDescriptor.setOutputParams(outputParams);
+        return serviceDescriptor;
+    }
+
+    public static ApplicationDeploymentDescription createApplicationDescription(ApplicationDescriptor applicationDescriptor){
+        ApplicationDeploymentDescription applicationDeploymentDescription = new ApplicationDeploymentDescription();
+        ApplicationDeploymentDescriptionType.ApplicationName name = ApplicationDeploymentDescriptionType.ApplicationName.Factory.newInstance();
+        name.setStringValue(applicationDescriptor.getName());
+        applicationDeploymentDescription.getType().setApplicationName(name);
+        applicationDeploymentDescription.getType().setExecutableLocation(applicationDescriptor.getExecutablePath());
+        applicationDeploymentDescription.getType().setOutputDataDirectory(applicationDescriptor.getWorkingDir());
+
+        //set advanced options according app desc type
+        if(applicationDescriptor.getApplicationDescType() != null && !applicationDescriptor.getApplicationDescType().isEmpty()){
+            if (applicationDescriptor.getApplicationDescType().equals(ApplicationDescriptorTypes.GRAM_APP_DEP_DESC_TYPE)){
+                GramApplicationDeploymentType applicationDeploymentType = (GramApplicationDeploymentType)applicationDeploymentDescription.getType();
+                applicationDeploymentType.setCpuCount(applicationDescriptor.getCpuCount());
+                applicationDeploymentType.setJobType(JobTypeType.Enum.forString(applicationDescriptor.getJobType()));
+                applicationDeploymentType.setMaxMemory(applicationDescriptor.getMaxMemory());
+                applicationDeploymentType.setMinMemory(applicationDescriptor.getMinMemory());
+                applicationDeploymentType.setMaxWallTime(applicationDescriptor.getMaxWallTime());
+                applicationDeploymentType.setNodeCount(applicationDescriptor.getNodeCount());
+                applicationDeploymentType.setProcessorsPerNode(applicationDescriptor.getProcessorsPerNode());
+            } else if (applicationDescriptor.getApplicationDescType().equals(ApplicationDescriptorTypes.BATCH_APP_DEP_DESC_TYPE)){
+                BatchApplicationDeploymentDescriptionType applicationDeploymentType = (BatchApplicationDeploymentDescriptionType)applicationDeploymentDescription.getType();
+                applicationDeploymentType.setCpuCount(applicationDescriptor.getCpuCount());
+                applicationDeploymentType.setJobType(JobTypeType.Enum.forString(applicationDescriptor.getJobType()));
+                applicationDeploymentType.setMaxMemory(applicationDescriptor.getMaxMemory());
+                applicationDeploymentType.setMinMemory(applicationDescriptor.getMinMemory());
+                applicationDeploymentType.setMaxWallTime(applicationDescriptor.getMaxWallTime());
+                applicationDeploymentType.setNodeCount(applicationDescriptor.getNodeCount());
+                applicationDeploymentType.setProcessorsPerNode(applicationDescriptor.getProcessorsPerNode());
+            }
+        }
+        return applicationDeploymentDescription;
+    }
+
+    public static ApplicationDescriptor createApplicationDescriptor (ApplicationDeploymentDescription applicationDeploymentDescription){
+        ApplicationDescriptor applicationDescriptor = new ApplicationDescriptor();
+        applicationDescriptor.setName(applicationDeploymentDescription.getType().getApplicationName().getStringValue());
+        applicationDescriptor.setExecutablePath(applicationDeploymentDescription.getType().getExecutableLocation());
+        applicationDescriptor.setWorkingDir(applicationDeploymentDescription.getType().getOutputDataDirectory());
+        if(applicationDeploymentDescription.getType() != null){
+            if(applicationDeploymentDescription.getType() instanceof GramApplicationDeploymentType){
+                GramApplicationDeploymentType gramApplicationDeploymentType = (GramApplicationDeploymentType)applicationDeploymentDescription.getType();
+                applicationDescriptor.setCpuCount(gramApplicationDeploymentType.getCpuCount());
+                applicationDescriptor.setNodeCount(gramApplicationDeploymentType.getNodeCount());
+                applicationDescriptor.setMaxMemory(gramApplicationDeploymentType.getMaxMemory());
+                applicationDescriptor.setMinMemory(gramApplicationDeploymentType.getMinMemory());
+                applicationDescriptor.setMaxWallTime(gramApplicationDeploymentType.getMaxWallTime());
+                applicationDescriptor.setQueueName(gramApplicationDeploymentType.getQueue().getQueueName());
+            } else if (applicationDeploymentDescription.getType() instanceof BatchApplicationDeploymentDescriptionType){
+                BatchApplicationDeploymentDescriptionType batchApplicationDeploymentDescriptionType = (BatchApplicationDeploymentDescriptionType)applicationDeploymentDescription.getType();
+                applicationDescriptor.setCpuCount(batchApplicationDeploymentDescriptionType.getCpuCount());
+                applicationDescriptor.setNodeCount(batchApplicationDeploymentDescriptionType.getNodeCount());
+                applicationDescriptor.setMaxMemory(batchApplicationDeploymentDescriptionType.getMaxMemory());
+                applicationDescriptor.setMinMemory(batchApplicationDeploymentDescriptionType.getMinMemory());
+                applicationDescriptor.setMaxWallTime(batchApplicationDeploymentDescriptionType.getMaxWallTime());
+                applicationDescriptor.setQueueName(batchApplicationDeploymentDescriptionType.getQueue().getQueueName());
+            }
+        }
+
+        return applicationDescriptor;
+    }
+
 }