http://git-wip-us.apache.org/repos/asf/airavata/blob/2d9fd253/modules/registry/registry-server/registry-api-service/src/main/java/org/apache/airavata/registry/api/service/handler/RegistryServerHandler.java
----------------------------------------------------------------------
diff --git 
a/modules/registry/registry-server/registry-api-service/src/main/java/org/apache/airavata/registry/api/service/handler/RegistryServerHandler.java
 
b/modules/registry/registry-server/registry-api-service/src/main/java/org/apache/airavata/registry/api/service/handler/RegistryServerHandler.java
new file mode 100644
index 0000000..7e2eb29
--- /dev/null
+++ 
b/modules/registry/registry-server/registry-api-service/src/main/java/org/apache/airavata/registry/api/service/handler/RegistryServerHandler.java
@@ -0,0 +1,1677 @@
+/*
+ *
+ * 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.registry.api.service.handler;
+
+import org.apache.airavata.model.WorkflowModel;
+import 
org.apache.airavata.model.appcatalog.appdeployment.ApplicationDeploymentDescription;
+import org.apache.airavata.model.appcatalog.appdeployment.ApplicationModule;
+import 
org.apache.airavata.model.appcatalog.appinterface.ApplicationInterfaceDescription;
+import org.apache.airavata.model.appcatalog.computeresource.*;
+import 
org.apache.airavata.model.appcatalog.gatewayprofile.ComputeResourcePreference;
+import 
org.apache.airavata.model.appcatalog.gatewayprofile.GatewayResourceProfile;
+import org.apache.airavata.model.appcatalog.gatewayprofile.StoragePreference;
+import 
org.apache.airavata.model.appcatalog.storageresource.StorageResourceDescription;
+import org.apache.airavata.model.application.io.InputDataObjectType;
+import org.apache.airavata.model.application.io.OutputDataObjectType;
+import org.apache.airavata.model.data.movement.DMType;
+import org.apache.airavata.model.data.movement.*;
+import org.apache.airavata.model.data.replica.DataProductModel;
+import org.apache.airavata.model.data.replica.DataReplicaLocationModel;
+import org.apache.airavata.model.error.AiravataClientException;
+import org.apache.airavata.model.error.AiravataSystemException;
+import org.apache.airavata.model.error.ExperimentNotFoundException;
+import org.apache.airavata.model.error.InvalidRequestException;
+import org.apache.airavata.model.experiment.*;
+import org.apache.airavata.model.job.JobModel;
+import 
org.apache.airavata.model.scheduling.ComputationalResourceSchedulingModel;
+import org.apache.airavata.model.status.ExperimentStatus;
+import org.apache.airavata.model.status.JobStatus;
+import org.apache.airavata.model.workspace.Gateway;
+import org.apache.airavata.model.workspace.Notification;
+import org.apache.airavata.model.workspace.Project;
+import org.apache.airavata.registry.api.RegistryService;
+import org.apache.airavata.registry.api.exception.RegistryServiceException;
+import org.apache.thrift.TException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.List;
+import java.util.Map;
+
+public class RegistryServerHandler implements RegistryService.Iface {
+    private final static Logger logger = 
LoggerFactory.getLogger(RegistryServerHandler.class);
+
+    /**
+     * Fetch Apache Registry API version
+     */
+    @Override
+    public String getAPIVersion() throws RegistryServiceException, TException {
+        return null;
+    }
+
+    /**
+     * Verify if User Exists within Airavata.
+     *
+     * @param gatewayId
+     * @param userName
+     * @return true/false
+     */
+    @Override
+    public boolean isUserExists(String gatewayId, String userName) throws 
RegistryServiceException, TException {
+        return false;
+    }
+
+    /**
+     * Get all users in the gateway
+     *
+     * @param gatewayId The gateway data model.
+     * @return users
+     * list of usernames of the users in the gateway
+     */
+    @Override
+    public List<String> getAllUsersInGateway(String gatewayId) throws 
RegistryServiceException, TException {
+        return null;
+    }
+
+    /**
+     * Get Gateway details by providing gatewayId
+     *
+     * @param gatewayId The gateway Id of the Gateway.
+     * @return gateway
+     * Gateway obejct.
+     */
+    @Override
+    public Gateway getGateway(String gatewayId) throws 
RegistryServiceException, TException {
+        return null;
+    }
+
+    /**
+     * Delete a Gateway
+     *
+     * @param gatewayId The gateway Id of the Gateway to be deleted.
+     * @return boolean
+     * Boolean identifier for the success or failure of the deletion operation.
+     */
+    @Override
+    public boolean deleteGateway(String gatewayId) throws 
RegistryServiceException, TException {
+        return false;
+    }
+
+    /**
+     * Get All the Gateways Connected to Airavata.
+     */
+    @Override
+    public List<Gateway> getAllGateways() throws RegistryServiceException, 
TException {
+        return null;
+    }
+
+    /**
+     * Check for the Existance of a Gateway within Airavata
+     *
+     * @param gatewayId Provide the gatewayId of the gateway you want to check 
the existancy
+     * @return gatewayId
+     * return the gatewayId of the existing gateway.
+     */
+    @Override
+    public boolean isGatewayExist(String gatewayId) throws 
RegistryServiceException, TException {
+        return false;
+    }
+
+    @Override
+    public boolean deleteNotification(String gatewayId, String notificationId) 
throws RegistryServiceException, TException {
+        return false;
+    }
+
+    @Override
+    public Notification getNotification(String gatewayId, String 
notificationId) throws RegistryServiceException, TException {
+        return null;
+    }
+
+    @Override
+    public List<Notification> getAllNotifications(String gatewayId) throws 
RegistryServiceException, TException {
+        return null;
+    }
+
+    /**
+     * Get a Project by ID
+     * This method is to obtain a project by providing a projectId.
+     *
+     * @param projectId projectId of the project you require.
+     * @return project
+     * project data model will be returned.
+     */
+    @Override
+    public Project getProject(String projectId) throws 
RegistryServiceException, TException {
+        return null;
+    }
+
+    /**
+     * Delete a Project
+     * This method is used to delete an existing Project.
+     *
+     * @param projectId projectId of the project you want to delete.
+     * @return boolean
+     * Boolean identifier for the success or failure of the deletion operation.
+     * <p>
+     * NOTE: This method is not used within gateways connected with Airavata.
+     */
+    @Override
+    public boolean deleteProject(String projectId) throws 
RegistryServiceException, TException {
+        return false;
+    }
+
+    /**
+     * Get All User Projects
+     * Get all Project for the user with pagination. Results will be ordered 
based on creation time DESC.
+     *
+     * @param gatewayId The identifier for the requested gateway.
+     * @param userName  The identifier of the user.
+     * @param limit     The amount results to be fetched.
+     * @param offset    The starting point of the results to be fetched.
+     */
+    @Override
+    public List<Project> getUserProjects(String gatewayId, String userName, 
int limit, int offset) throws RegistryServiceException, TException {
+        return null;
+    }
+
+    /**
+     * Get Experiment Statistics
+     * Get Experiment Statisitics for a given gateway for a specific time 
period. This feature is available only for admins of a particular gateway. 
Gateway admin access is managed by the user roles.
+     *
+     * @param gatewayId Unique identifier of the gateway making the request to 
fetch statistics.
+     * @param fromTime  Starting date time.
+     * @param toTime    Ending data time.
+     */
+    @Override
+    public ExperimentStatistics getExperimentStatistics(String gatewayId, long 
fromTime, long toTime) throws RegistryServiceException, TException {
+        return null;
+    }
+
+    /**
+     * Get All Experiments of the Project
+     * Get Experiments within project with pagination. Results will be sorted 
based on creation time DESC.
+     *
+     * @param projectId Uniqie identifier of the project.
+     * @param limit     Amount of results to be fetched.
+     * @param offset    The starting point of the results to be fetched.
+     */
+    @Override
+    public List<ExperimentModel> getExperimentsInProject(String projectId, int 
limit, int offset) throws RegistryServiceException, TException {
+        return null;
+    }
+
+    /**
+     * Get All Experiments of the User
+     * Get experiments by user with pagination. Results will be sorted based 
on creation time DESC.
+     *
+     * @param gatewayId Identifier of the requesting gateway.
+     * @param userName  Username of the requested end user.
+     * @param limit     Amount of results to be fetched.
+     * @param offset    The starting point of the results to be fetched.
+     */
+    @Override
+    public List<ExperimentModel> getUserExperiments(String gatewayId, String 
userName, int limit, int offset) throws RegistryServiceException, TException {
+        return null;
+    }
+
+    /**
+     * Delete an Experiment
+     * If the experiment is not already launched experiment can be deleted.
+     *
+     * @param experimentId@return boolean
+     *                            Identifier for the success or failure of the 
deletion operation.
+     */
+    @Override
+    public boolean deleteExperiment(String experimentId) throws 
RegistryServiceException, TException {
+        return false;
+    }
+
+    /**
+     * *
+     * * Get Experiment
+     * * Fetch previously created experiment metadata.
+     * *
+     * * @param airavataExperimentId
+     * *    The unique identifier of the requested experiment. This ID is 
returned during the create experiment step.
+     * *
+     * * @return ExperimentModel
+     * *   This method will return the previously stored experiment metadata.
+     * *
+     * * @throws org.apache.airavata.model.error.InvalidRequestException
+     * *    For any incorrect forming of the request itself.
+     * *
+     * * @throws org.apache.airavata.model.error.ExperimentNotFoundException
+     * *    If the specified experiment is not previously created, then an 
Experiment Not Found Exception is thrown.
+     * *
+     * * @throws org.apache.airavata.model.error.AiravataClientException
+     * *    The following list of exceptions are thrown which Airavata Client 
can take corrective actions to resolve:
+     * *
+     * *      UNKNOWN_GATEWAY_ID - If a Gateway is not registered with 
Airavata as a one time administrative
+     * *         step, then Airavata Registry will not have a provenance area 
setup. The client has to follow
+     * *         gateway registration steps and retry this request.
+     * *
+     * *      AUTHENTICATION_FAILURE - How Authentication will be implemented 
is yet to be determined.
+     * *         For now this is a place holder.
+     * *
+     * *      INVALID_AUTHORIZATION - This will throw an authorization 
exception. When a more robust security hand-shake
+     * *         is implemented, the authorization will be more substantial.
+     * *
+     * * @throws org.apache.airavata.model.error.AiravataSystemException
+     * *    This exception will be thrown for any Airavata Server side issues 
and if the problem cannot be corrected by the client
+     * *       rather an Airavata Administrator will be notified to take 
corrective action.
+     * *
+     * *
+     *
+     * @param airavataExperimentId
+     */
+    @Override
+    public ExperimentModel getExperiment(String airavataExperimentId) throws 
RegistryServiceException, TException {
+        return null;
+    }
+
+    /**
+     * Get Complete Experiment Details
+     * Fetch the completed nested tree structue of previously created 
experiment metadata which includes processes ->
+     * tasks -> jobs information.
+     *
+     * @param airavataExperimentId The identifier for the requested 
experiment. This is returned during the create experiment step.
+     * @return ExperimentModel
+     * This method will return the previously stored experiment metadata 
including application input parameters, computational resource scheduling
+     * information, special input output handling and additional quality of 
service parameters.
+     * @throws InvalidRequestException     For any incorrect forming of the 
request itself.
+     * @throws ExperimentNotFoundException If the specified experiment is not 
previously created, then an Experiment Not Found Exception is thrown.
+     * @throws AiravataClientException     The following list of exceptions 
are thrown which Airavata Client can take corrective actions to resolve:
+     *                                     <p>
+     *                                     UNKNOWN_GATEWAY_ID - If a Gateway 
is not registered with Airavata as a one time administrative
+     *                                     step, then Airavata Registry will 
not have a provenance area setup. The client has to follow
+     *                                     gateway registration steps and 
retry this request.
+     *                                     <p>
+     *                                     AUTHENTICATION_FAILURE - How 
Authentication will be implemented is yet to be determined.
+     *                                     For now this is a place holder.
+     *                                     <p>
+     *                                     INVALID_AUTHORIZATION - This will 
throw an authorization exception. When a more robust security hand-shake
+     *                                     is implemented, the authorization 
will be more substantial.
+     * @throws AiravataSystemException     This exception will be thrown for 
any Airavata Server side issues and if the problem cannot be corrected by the 
client
+     *                                     rather an Airavata Administrator 
will be notified to take corrective action.
+     */
+    @Override
+    public ExperimentModel getDetailedExperimentTree(String 
airavataExperimentId) throws RegistryServiceException, TException {
+        return null;
+    }
+
+    /**
+     * Get Experiment Status
+     * <p>
+     * Obtain the status of an experiment by providing the Experiment Id
+     *
+     * @param airavataExperimentId Experiment ID of the experimnet you require 
the status.
+     * @return ExperimentStatus
+     * ExperimentStatus model with the current status will be returned.
+     */
+    @Override
+    public ExperimentStatus getExperimentStatus(String airavataExperimentId) 
throws RegistryServiceException, TException {
+        return null;
+    }
+
+    /**
+     * Get Experiment Outputs
+     * This method to be used when need to obtain final outputs of a certain 
Experiment
+     *
+     * @param airavataExperimentId Experiment ID of the experimnet you need 
the outputs.
+     * @return list
+     * List of experiment outputs will be returned. They will be returned as a 
list of OutputDataObjectType for the experiment.
+     */
+    @Override
+    public List<OutputDataObjectType> getExperimentOutputs(String 
airavataExperimentId) throws RegistryServiceException, TException {
+        return null;
+    }
+
+    /**
+     * Get Intermediate Experiment Outputs
+     * This method to be used when need to obtain intermediate outputs of a 
certain Experiment
+     *
+     * @param airavataExperimentId Experiment ID of the experimnet you need 
intermediate outputs.
+     * @return list
+     * List of intermediate experiment outputs will be returned. They will be 
returned as a list of OutputDataObjectType for the experiment.
+     */
+    @Override
+    public List<OutputDataObjectType> getIntermediateOutputs(String 
airavataExperimentId) throws RegistryServiceException, TException {
+        return null;
+    }
+
+    /**
+     * Get Job Statuses for an Experiment
+     * This method to be used when need to get the job status of an 
Experiment. An experiment may have one or many jobs; there for one or many job 
statuses may turnup
+     *
+     * @param airavataExperimentId@return JobStatus
+     *                                    Job status (string) for all all the 
existing jobs for the experiment will be returned in the form of a map
+     */
+    @Override
+    public Map<String, JobStatus> getJobStatuses(String airavataExperimentId) 
throws RegistryServiceException, TException {
+        return null;
+    }
+
+    /**
+     * Get Job Details for all the jobs within an Experiment.
+     * This method to be used when need to get the job details for one or many 
jobs of an Experiment.
+     *
+     * @param airavataExperimentId@return list of JobDetails
+     *                                    Job details.
+     */
+    @Override
+    public List<JobModel> getJobDetails(String airavataExperimentId) throws 
RegistryServiceException, TException {
+        return null;
+    }
+
+    /**
+     * Fetch a Application Module.
+     *
+     * @param appModuleId The unique identifier of the application module 
required
+     * @return applicationModule
+     * Returns an Application Module Object.
+     */
+    @Override
+    public ApplicationModule getApplicationModule(String appModuleId) throws 
RegistryServiceException, TException {
+        return null;
+    }
+
+    /**
+     * Fetch all Application Module Descriptions.
+     *
+     * @param gatewayId ID of the gateway which need to list all available 
application deployment documentation.
+     * @return list
+     * Returns the list of all Application Module Objects.
+     */
+    @Override
+    public List<ApplicationModule> getAllAppModules(String gatewayId) throws 
RegistryServiceException, TException {
+        return null;
+    }
+
+    /**
+     * Delete an Application Module.
+     *
+     * @param appModuleId The identifier of the Application Module to be 
deleted.
+     * @return status
+     * Returns a success/failure of the deletion.
+     */
+    @Override
+    public boolean deleteApplicationModule(String appModuleId) throws 
RegistryServiceException, TException {
+        return false;
+    }
+
+    /**
+     * Fetch a Application Deployment.
+     *
+     * @param appDeploymentId The identifier for the requested application 
module
+     * @return applicationDeployment
+     * Returns a application Deployment Object.
+     */
+    @Override
+    public ApplicationDeploymentDescription getApplicationDeployment(String 
appDeploymentId) throws RegistryServiceException, TException {
+        return null;
+    }
+
+    /**
+     * Delete an Application Deployment.
+     *
+     * @param appDeploymentId The unique identifier of application deployment 
to be deleted.
+     * @return status
+     * Returns a success/failure of the deletion.
+     */
+    @Override
+    public boolean deleteApplicationDeployment(String appDeploymentId) throws 
RegistryServiceException, TException {
+        return false;
+    }
+
+    /**
+     * Fetch all Application Deployment Descriptions.
+     *
+     * @param gatewayId ID of the gateway which need to list all available 
application deployment documentation.
+     * @param gatewayId
+     * @return list<applicationDeployment.
+     * Returns the list of all application Deployment Objects.
+     */
+    @Override
+    public List<ApplicationDeploymentDescription> 
getAllApplicationDeployments(String gatewayId) throws RegistryServiceException, 
TException {
+        return null;
+    }
+
+    /**
+     * Fetch a list of Deployed Compute Hosts.
+     *
+     * @param appModuleId The identifier for the requested application module
+     * @return list<string>
+     * Returns a list of Deployed Resources.
+     */
+    @Override
+    public List<String> getAppModuleDeployedResources(String appModuleId) 
throws RegistryServiceException, TException {
+        return null;
+    }
+
+    /**
+     * Fetch an Application Interface.
+     *
+     * @param appInterfaceId The identifier for the requested application 
interface.
+     * @return applicationInterface
+     * Returns an application Interface Object.
+     */
+    @Override
+    public ApplicationInterfaceDescription getApplicationInterface(String 
appInterfaceId) throws RegistryServiceException, TException {
+        return null;
+    }
+
+    /**
+     * Delete an Application Interface.
+     *
+     * @param appInterfaceId The identifier for the requested application 
interface to be deleted.
+     * @return status
+     * Returns a success/failure of the deletion.
+     */
+    @Override
+    public boolean deleteApplicationInterface(String appInterfaceId) throws 
RegistryServiceException, TException {
+        return false;
+    }
+
+    /**
+     * Fetch name and ID of  Application Interface documents.
+     *
+     * @param gatewayId
+     * @return map<applicationId, applicationInterfaceNames>
+     * Returns a list of application interfaces with corresponsing ID's
+     */
+    @Override
+    public Map<String, String> getAllApplicationInterfaceNames(String 
gatewayId) throws RegistryServiceException, TException {
+        return null;
+    }
+
+    /**
+     * Fetch all Application Interface documents.
+     *
+     * @param gatewayId
+     * @return map<applicationId, applicationInterfaceNames>
+     * Returns a list of application interfaces documents (Application 
Interface ID, name, description, Inputs and Outputs objects).
+     */
+    @Override
+    public List<ApplicationInterfaceDescription> 
getAllApplicationInterfaces(String gatewayId) throws RegistryServiceException, 
TException {
+        return null;
+    }
+
+    /**
+     * Fetch the list of Application Inputs.
+     *
+     * @param appInterfaceId The identifier of the application interface which 
need inputs to be fetched.
+     * @return list<application_interface_model.InputDataObjectType>
+     * Returns a list of application inputs.
+     */
+    @Override
+    public List<InputDataObjectType> getApplicationInputs(String 
appInterfaceId) throws RegistryServiceException, TException {
+        return null;
+    }
+
+    /**
+     * Fetch list of Application Outputs.
+     *
+     * @param appInterfaceId The identifier of the application interface which 
need outputs to be fetched.
+     * @return list<application_interface_model.OutputDataObjectType>
+     * Returns a list of application outputs.
+     */
+    @Override
+    public List<OutputDataObjectType> getApplicationOutputs(String 
appInterfaceId) throws RegistryServiceException, TException {
+        return null;
+    }
+
+    /**
+     * Fetch a list of all deployed Compute Hosts for a given application 
interfaces.
+     *
+     * @param appInterfaceId The identifier for the requested application 
interface.
+     * @return map<computeResourceId, computeResourceName>
+     * A map of registered compute resource id's and their corresponding 
hostnames.
+     * Deployments of each modules listed within the interfaces will be listed.
+     */
+    @Override
+    public Map<String, String> getAvailableAppInterfaceComputeResources(String 
appInterfaceId) throws RegistryServiceException, TException {
+        return null;
+    }
+
+    /**
+     * Fetch the given Compute Resource.
+     *
+     * @param computeResourceId The identifier for the requested compute 
resource
+     * @return computeResourceDescription
+     * Compute Resource Object created from the datamodel..
+     */
+    @Override
+    public ComputeResourceDescription getComputeResource(String 
computeResourceId) throws RegistryServiceException, TException {
+        return null;
+    }
+
+    /**
+     * Fetch all registered Compute Resources.
+     *
+     * @return A map of registered compute resource id's and thier 
corresponding hostnames.
+     * Compute Resource Object created from the datamodel..
+     */
+    @Override
+    public Map<String, String> getAllComputeResourceNames() throws 
RegistryServiceException, TException {
+        return null;
+    }
+
+    /**
+     * Delete a Compute Resource.
+     *
+     * @param computeResourceId The identifier for the requested compute 
resource to be deleted.
+     * @return status
+     * Returns a success/failure of the deletion.
+     */
+    @Override
+    public boolean deleteComputeResource(String computeResourceId) throws 
RegistryServiceException, TException {
+        return false;
+    }
+
+    /**
+     * Fetch the given Storage Resource.
+     *
+     * @param storageResourceId The identifier for the requested storage 
resource
+     * @return storageResourceDescription
+     * Storage Resource Object created from the datamodel..
+     */
+    @Override
+    public StorageResourceDescription getStorageResource(String 
storageResourceId) throws RegistryServiceException, TException {
+        return null;
+    }
+
+    /**
+     * Fetch all registered Storage Resources.
+     *
+     * @return A map of registered compute resource id's and thier 
corresponding hostnames.
+     * Compute Resource Object created from the datamodel..
+     */
+    @Override
+    public Map<String, String> getAllStorageResourceNames() throws 
RegistryServiceException, TException {
+        return null;
+    }
+
+    /**
+     * Delete a Storage Resource.
+     *
+     * @param storageResourceId The identifier of the requested compute 
resource to be deleted.
+     * @return status
+     * Returns a success/failure of the deletion.
+     */
+    @Override
+    public boolean deleteStorageResource(String storageResourceId) throws 
RegistryServiceException, TException {
+        return false;
+    }
+
+    /**
+     * This method returns localJobSubmission object
+     *
+     * @param jobSubmissionId@return LOCALSubmission instance
+     */
+    @Override
+    public LOCALSubmission getLocalJobSubmission(String jobSubmissionId) 
throws RegistryServiceException, TException {
+        return null;
+    }
+
+    /**
+     * This method returns SSHJobSubmission object
+     *
+     * @param jobSubmissionId@return SSHJobSubmission instance
+     */
+    @Override
+    public SSHJobSubmission getSSHJobSubmission(String jobSubmissionId) throws 
RegistryServiceException, TException {
+        return null;
+    }
+
+    /**
+     * *
+     * * This method returns UnicoreJobSubmission object
+     * *
+     * * @param jobSubmissionInterfaceId
+     * *   The identifier of the JobSubmission Interface to be retrieved.
+     * *  @return UnicoreJobSubmission instance
+     * *
+     * *
+     *
+     * @param jobSubmissionId
+     */
+    @Override
+    public UnicoreJobSubmission getUnicoreJobSubmission(String 
jobSubmissionId) throws RegistryServiceException, TException {
+        return null;
+    }
+
+    /**
+     * *
+     * * This method returns cloudJobSubmission object
+     * * @param jobSubmissionInterfaceI
+     * *   The identifier of the JobSubmission Interface to be retrieved.
+     * *  @return CloudJobSubmission instance
+     * *
+     *
+     * @param jobSubmissionId
+     */
+    @Override
+    public CloudJobSubmission getCloudJobSubmission(String jobSubmissionId) 
throws RegistryServiceException, TException {
+        return null;
+    }
+
+    /**
+     * This method returns local datamovement object.
+     *
+     * @param dataMovementId The identifier of the datamovement Interface to 
be retrieved.
+     * @return LOCALDataMovement instance
+     */
+    @Override
+    public LOCALDataMovement getLocalDataMovement(String dataMovementId) 
throws RegistryServiceException, TException {
+        return null;
+    }
+
+    /**
+     * This method returns SCP datamovement object
+     *
+     * @param dataMovementId The identifier of the datamovement Interface to 
be retrieved.
+     * @return SCPDataMovement instance
+     */
+    @Override
+    public SCPDataMovement getSCPDataMovement(String dataMovementId) throws 
RegistryServiceException, TException {
+        return null;
+    }
+
+    /**
+     * This method returns UNICORE datamovement object
+     *
+     * @param dataMovementId The identifier of the datamovement Interface to 
be retrieved.
+     * @return UnicoreDataMovement instance
+     */
+    @Override
+    public UnicoreDataMovement getUnicoreDataMovement(String dataMovementId) 
throws RegistryServiceException, TException {
+        return null;
+    }
+
+    /**
+     * This method returns GridFTP datamovement object
+     *
+     * @param dataMovementId The identifier of the datamovement Interface to 
be retrieved.
+     * @return GridFTPDataMovement instance
+     */
+    @Override
+    public GridFTPDataMovement getGridFTPDataMovement(String dataMovementId) 
throws RegistryServiceException, TException {
+        return null;
+    }
+
+    /**
+     * Change the priority of a given job submisison interface
+     *
+     * @param jobSubmissionInterfaceId The identifier of the JobSubmission 
Interface to be changed
+     * @param newPriorityOrder
+     * @return status
+     * Returns a success/failure of the change.
+     */
+    @Override
+    public boolean changeJobSubmissionPriority(String 
jobSubmissionInterfaceId, int newPriorityOrder) throws 
RegistryServiceException, TException {
+        return false;
+    }
+
+    /**
+     * Change the priority of a given data movement interface
+     *
+     * @param dataMovementInterfaceId The identifier of the DataMovement 
Interface to be changed
+     * @param newPriorityOrder
+     * @return status
+     * Returns a success/failure of the change.
+     */
+    @Override
+    public boolean changeDataMovementPriority(String dataMovementInterfaceId, 
int newPriorityOrder) throws RegistryServiceException, TException {
+        return false;
+    }
+
+    /**
+     * Change the priorities of a given set of job submission interfaces
+     *
+     * @param jobSubmissionPriorityMap A Map of identifiers of the 
JobSubmission Interfaces and thier associated priorities to be set.
+     * @return status
+     * Returns a success/failure of the changes.
+     */
+    @Override
+    public boolean changeJobSubmissionPriorities(Map<String, Integer> 
jobSubmissionPriorityMap) throws RegistryServiceException, TException {
+        return false;
+    }
+
+    /**
+     * Change the priorities of a given set of data movement interfaces
+     *
+     * @param dataMovementPriorityMap A Map of identifiers of the DataMovement 
Interfaces and thier associated priorities to be set.
+     * @return status
+     * Returns a success/failure of the changes.
+     */
+    @Override
+    public boolean changeDataMovementPriorities(Map<String, Integer> 
dataMovementPriorityMap) throws RegistryServiceException, TException {
+        return false;
+    }
+
+    /**
+     * Delete a given job submisison interface
+     *
+     * @param computeResourceId
+     * @param jobSubmissionInterfaceId The identifier of the JobSubmission 
Interface to be changed
+     * @return status
+     * Returns a success/failure of the deletion.
+     */
+    @Override
+    public boolean deleteJobSubmissionInterface(String computeResourceId, 
String jobSubmissionInterfaceId) throws RegistryServiceException, TException {
+        return false;
+    }
+
+    @Override
+    public ResourceJobManager getResourceJobManager(String 
resourceJobManagerId) throws RegistryServiceException, TException {
+        return null;
+    }
+
+    @Override
+    public boolean deleteResourceJobManager(String resourceJobManagerId) 
throws RegistryServiceException, TException {
+        return false;
+    }
+
+    /**
+     * Delete a Compute Resource Queue
+     *
+     * @param computeResourceId The identifier of the compute resource which 
has the queue to be deleted
+     * @param queueName         Name of the queue need to be deleted. Name is 
the uniqueue identifier for the queue within a compute resource
+     * @return status
+     * Returns a success/failure of the deletion.
+     */
+    @Override
+    public boolean deleteBatchQueue(String computeResourceId, String 
queueName) throws RegistryServiceException, TException {
+        return false;
+    }
+
+    /**
+     * Fetch the given Gateway Resource Profile.
+     *
+     * @param gatewayID The identifier for the requested gateway resource.
+     * @return gatewayResourceProfile
+     * Gateway Resource Profile Object.
+     */
+    @Override
+    public GatewayResourceProfile getGatewayResourceProfile(String gatewayID) 
throws RegistryServiceException, TException {
+        return null;
+    }
+
+    /**
+     * Delete the given Gateway Resource Profile.
+     *
+     * @param gatewayID The identifier for the requested gateway resource to 
be deleted.
+     * @return status
+     * Returns a success/failure of the deletion.
+     */
+    @Override
+    public boolean deleteGatewayResourceProfile(String gatewayID) throws 
RegistryServiceException, TException {
+        return false;
+    }
+
+    /**
+     * Fetch a Compute Resource Preference of a registered gateway profile.
+     *
+     * @param gatewayID         The identifier for the gateway profile to be 
requested
+     * @param computeResourceId Preferences related to a particular compute 
resource
+     * @return computeResourcePreference
+     * Returns the ComputeResourcePreference object.
+     */
+    @Override
+    public ComputeResourcePreference 
getGatewayComputeResourcePreference(String gatewayID, String computeResourceId) 
throws RegistryServiceException, TException {
+        return null;
+    }
+
+    /**
+     * Fetch a Storage Resource Preference of a registered gateway profile.
+     *
+     * @param gatewayID         The identifier of the gateway profile to 
request to fetch the particular storage resource preference.
+     * @param storageResourceId Identifier of the Stprage Preference required 
to be fetched.
+     * @return StoragePreference
+     * Returns the StoragePreference object.
+     */
+    @Override
+    public StoragePreference getGatewayStoragePreference(String gatewayID, 
String storageResourceId) throws RegistryServiceException, TException {
+        return null;
+    }
+
+    /**
+     * Fetch all Compute Resource Preferences of a registered gateway profile.
+     *
+     * @param gatewayID The identifier for the gateway profile to be requested
+     * @return computeResourcePreference
+     * Returns the ComputeResourcePreference object.
+     */
+    @Override
+    public List<ComputeResourcePreference> 
getAllGatewayComputeResourcePreferences(String gatewayID) throws 
RegistryServiceException, TException {
+        return null;
+    }
+
+    /**
+     * Fetch all Storage Resource Preferences of a registered gateway profile.
+     *
+     * @param gatewayID The identifier for the gateway profile to be requested
+     * @return StoragePreference
+     * Returns the StoragePreference object.
+     */
+    @Override
+    public List<StoragePreference> getAllGatewayStoragePreferences(String 
gatewayID) throws RegistryServiceException, TException {
+        return null;
+    }
+
+    /**
+     * Fetch all Gateway Profiles registered
+     *
+     * @return GatewayResourceProfile
+     * Returns all the GatewayResourcePrifle list object.
+     */
+    @Override
+    public List<GatewayResourceProfile> getAllGatewayResourceProfiles() throws 
RegistryServiceException, TException {
+        return null;
+    }
+
+    /**
+     * Delete the Compute Resource Preference of a registered gateway profile.
+     *
+     * @param gatewayID         The identifier for the gateway profile to be 
deleted.
+     * @param computeResourceId Preferences related to a particular compute 
resource
+     * @return status
+     * Returns a success/failure of the deletion.
+     */
+    @Override
+    public boolean deleteGatewayComputeResourcePreference(String gatewayID, 
String computeResourceId) throws RegistryServiceException, TException {
+        return false;
+    }
+
+    /**
+     * Delete the Storage Resource Preference of a registered gateway profile.
+     *
+     * @param gatewayID The identifier of the gateway profile to be deleted.
+     * @param storageId ID of the storage preference you want to delete.
+     * @return status
+     * Returns a success/failure of the deletion.
+     */
+    @Override
+    public boolean deleteGatewayStoragePreference(String gatewayID, String 
storageId) throws RegistryServiceException, TException {
+        return false;
+    }
+
+    /**
+     * Delete the Storage Resource Preference of a registered gateway profile.
+     *
+     * @param gatewayId@return status
+     *                         Returns a success/failure of the deletion.
+     */
+    @Override
+    public List<String> getAllWorkflows(String gatewayId) throws 
RegistryServiceException, TException {
+        return null;
+    }
+
+    /**
+     * API Methods Related for Work-Flow Submission Features.
+     *
+     * @param workflowTemplateId
+     */
+    @Override
+    public WorkflowModel getWorkflow(String workflowTemplateId) throws 
RegistryServiceException, TException {
+        return null;
+    }
+
+    @Override
+    public void deleteWorkflow(String workflowTemplateId) throws 
RegistryServiceException, TException {
+
+    }
+
+    @Override
+    public String getWorkflowTemplateId(String workflowName) throws 
RegistryServiceException, TException {
+        return null;
+    }
+
+    @Override
+    public boolean isWorkflowExistWithName(String workflowName) throws 
RegistryServiceException, TException {
+        return false;
+    }
+
+    @Override
+    public DataProductModel getDataProduct(String dataProductUri) throws 
RegistryServiceException, TException {
+        return null;
+    }
+
+    @Override
+    public DataProductModel getParentDataProduct(String productUri) throws 
RegistryServiceException, TException {
+        return null;
+    }
+
+    @Override
+    public List<DataProductModel> getChildDataProducts(String productUri) 
throws RegistryServiceException, TException {
+        return null;
+    }
+
+    @Override
+    public String registerReplicaLocation(DataReplicaLocationModel 
replicaLocationModel) throws RegistryServiceException, TException {
+        return null;
+    }
+
+    /**
+     * API Methods related to replica catalog
+     *
+     * @param dataProductModel
+     */
+    @Override
+    public String registerDataProduct(DataProductModel dataProductModel) 
throws RegistryServiceException, TException {
+        return null;
+    }
+
+    @Override
+    public void updateWorkflow(String workflowTemplateId, WorkflowModel 
workflow) throws RegistryServiceException, TException {
+
+    }
+
+    @Override
+    public String registerWorkflow(String gatewayId, WorkflowModel workflow) 
throws RegistryServiceException, TException {
+        return null;
+    }
+
+    /**
+     * Update a Storage Resource Preference of a registered gateway profile.
+     *
+     * @param gatewayID         The identifier of the gateway profile to be 
updated.
+     * @param storageId         The Storage resource identifier of the one 
that you want to update
+     * @param storagePreference The storagePreference object to be updated to 
the resource profile.
+     * @return status
+     * Returns a success/failure of the updation.
+     */
+    @Override
+    public boolean updateGatewayStoragePreference(String gatewayID, String 
storageId, StoragePreference storagePreference) throws 
RegistryServiceException, TException {
+        return false;
+    }
+
+    /**
+     * Update a Compute Resource Preference to a registered gateway profile.
+     *
+     * @param gatewayID                 The identifier for the gateway profile 
to be updated.
+     * @param computeResourceId         Preferences related to a particular 
compute resource
+     * @param computeResourcePreference The ComputeResourcePreference object 
to be updated to the resource profile.
+     * @return status
+     * Returns a success/failure of the updation.
+     */
+    @Override
+    public boolean updateGatewayComputeResourcePreference(String gatewayID, 
String computeResourceId, ComputeResourcePreference computeResourcePreference) 
throws RegistryServiceException, TException {
+        return false;
+    }
+
+    /**
+     * Add a Storage Resource Preference to a registered gateway profile.
+     *
+     * @param gatewayID         The identifier of the gateway profile to be 
added.
+     * @param storageResourceId Preferences related to a particular compute 
resource
+     * @param storagePreference
+     * @return status
+     * Returns a success/failure of the addition. If a profile already exists, 
this operation will fail.
+     * Instead an update should be used.
+     */
+    @Override
+    public boolean addGatewayStoragePreference(String gatewayID, String 
storageResourceId, StoragePreference storagePreference) throws 
RegistryServiceException, TException {
+        return false;
+    }
+
+    /**
+     * Add a Compute Resource Preference to a registered gateway profile.
+     *
+     * @param gatewayID                 The identifier for the gateway profile 
to be added.
+     * @param computeResourceId         Preferences related to a particular 
compute resource
+     * @param computeResourcePreference The ComputeResourcePreference object 
to be added to the resource profile.
+     * @return status
+     * Returns a success/failure of the addition. If a profile already exists, 
this operation will fail.
+     * Instead an update should be used.
+     */
+    @Override
+    public boolean addGatewayComputeResourcePreference(String gatewayID, 
String computeResourceId, ComputeResourcePreference computeResourcePreference) 
throws RegistryServiceException, TException {
+        return false;
+    }
+
+    /**
+     * Update a Gateway Resource Profile.
+     *
+     * @param gatewayID              The identifier for the requested gateway 
resource to be updated.
+     * @param gatewayResourceProfile Gateway Resource Profile Object.
+     * @return status
+     * Returns a success/failure of the update.
+     */
+    @Override
+    public boolean updateGatewayResourceProfile(String gatewayID, 
GatewayResourceProfile gatewayResourceProfile) throws RegistryServiceException, 
TException {
+        return false;
+    }
+
+    /**
+     * Register a Gateway Resource Profile.
+     *
+     * @param gatewayResourceProfile Gateway Resource Profile Object.
+     *                               The GatewayID should be obtained from 
Airavata gateway registration and passed to register a corresponding
+     *                               resource profile.
+     * @return status
+     * Returns a success/failure of the update.
+     */
+    @Override
+    public String registerGatewayResourceProfile(GatewayResourceProfile 
gatewayResourceProfile) throws RegistryServiceException, TException {
+        return null;
+    }
+
+    @Override
+    public boolean updateResourceJobManager(String resourceJobManagerId, 
ResourceJobManager updatedResourceJobManager) throws RegistryServiceException, 
TException {
+        return false;
+    }
+
+    @Override
+    public String registerResourceJobManager(ResourceJobManager 
resourceJobManager) throws RegistryServiceException, TException {
+        return null;
+    }
+
+    /**
+     * Delete a given data movement interface
+     *
+     * @param productUri
+     * @param dataMovementInterfaceId The identifier of the DataMovement 
Interface to be changed
+     * @param dataMoveType
+     * @return status
+     * Returns a success/failure of the deletion.
+     */
+    @Override
+    public boolean deleteDataMovementInterface(String productUri, String 
dataMovementInterfaceId, DMType dataMoveType) throws RegistryServiceException, 
TException {
+        return false;
+    }
+
+    /**
+     * Update the given GridFTP data movement details to a compute resource
+     * App catalog will return a dataMovementInterfaceId which will be added 
to the dataMovementInterfaces.
+     *
+     * @param dataMovementInterfaceId The identifier of the data movement 
Interface to be updated.
+     * @param gridFTPDataMovement     The GridFTPDataMovement object to be 
updated.
+     * @return boolean
+     * Returns a success/failure of the update.
+     */
+    @Override
+    public boolean updateGridFTPDataMovementDetails(String 
dataMovementInterfaceId, GridFTPDataMovement gridFTPDataMovement) throws 
RegistryServiceException, TException {
+        return false;
+    }
+
+    /**
+     * Add a GridFTP data movement details to a compute resource
+     * App catalog will return a dataMovementInterfaceId which will be added 
to the dataMovementInterfaces.
+     *
+     * @param productUri          The identifier of the compute resource to 
which dataMovement protocol to be added
+     * @param dataMoveType
+     * @param priorityOrder       Specify the priority of this job manager. If 
this is the only jobmanager, the priority can be zero.
+     * @param gridFTPDataMovement The GridFTPDataMovement object to be added 
to the resource.
+     * @return status
+     * Returns the unique data movement id.
+     */
+    @Override
+    public String addGridFTPDataMovementDetails(String productUri, DMType 
dataMoveType, int priorityOrder, GridFTPDataMovement gridFTPDataMovement) 
throws RegistryServiceException, TException {
+        return null;
+    }
+
+    /**
+     * Update a selected UNICORE data movement details
+     * App catalog will return a dataMovementInterfaceId which will be added 
to the dataMovementInterfaces.
+     *
+     * @param dataMovementInterfaceId The identifier of the data movement 
Interface to be updated.
+     * @param unicoreDataMovement
+     * @return status
+     * Returns a success/failure of the update.
+     */
+    @Override
+    public boolean updateUnicoreDataMovementDetails(String 
dataMovementInterfaceId, UnicoreDataMovement unicoreDataMovement) throws 
RegistryServiceException, TException {
+        return false;
+    }
+
+    /**
+     * Add a UNICORE data movement details to a compute resource
+     * App catalog will return a dataMovementInterfaceId which will be added 
to the dataMovementInterfaces.
+     *
+     * @param productUri          The identifier of the compute resource to 
which data movement protocol to be added
+     * @param dataMoveType
+     * @param priorityOrder       Specify the priority of this job manager. If 
this is the only jobmanager, the priority can be zero.
+     * @param unicoreDataMovement
+     * @return status
+     * Returns the unique data movement id.
+     */
+    @Override
+    public String addUnicoreDataMovementDetails(String productUri, DMType 
dataMoveType, int priorityOrder, UnicoreDataMovement unicoreDataMovement) 
throws RegistryServiceException, TException {
+        return null;
+    }
+
+    /**
+     * Update the given scp data movement details
+     * App catalog will return a dataMovementInterfaceId which will be added 
to the dataMovementInterfaces.
+     *
+     * @param dataMovementInterfaceId The identifier of the data movement 
Interface to be updated.
+     * @param scpDataMovement         The SCPDataMovement object to be updated.
+     * @return status
+     * Returns a success/failure of the update.
+     */
+    @Override
+    public boolean updateSCPDataMovementDetails(String 
dataMovementInterfaceId, SCPDataMovement scpDataMovement) throws 
RegistryServiceException, TException {
+        return false;
+    }
+
+    /**
+     * Add a SCP data movement details to a compute resource
+     * App catalog will return a dataMovementInterfaceId which will be added 
to the dataMovementInterfaces.
+     *
+     * @param productUri      The identifier of the compute resource to which 
JobSubmission protocol to be added
+     * @param dataMoveType
+     * @param priorityOrder   Specify the priority of this job manager. If 
this is the only jobmanager, the priority can be zero.
+     * @param scpDataMovement The SCPDataMovement object to be added to the 
resource.
+     * @return status
+     * Returns the unique job submission id.
+     */
+    @Override
+    public String addSCPDataMovementDetails(String productUri, DMType 
dataMoveType, int priorityOrder, SCPDataMovement scpDataMovement) throws 
RegistryServiceException, TException {
+        return null;
+    }
+
+    /**
+     * Update the given Local data movement details
+     *
+     * @param dataMovementInterfaceId The identifier of the data movement 
Interface to be updated.
+     * @param localDataMovement       The LOCALDataMovement object to be 
updated.
+     * @return status
+     * Returns a success/failure of the update.
+     */
+    @Override
+    public boolean updateLocalDataMovementDetails(String 
dataMovementInterfaceId, LOCALDataMovement localDataMovement) throws 
RegistryServiceException, TException {
+        return false;
+    }
+
+    /**
+     * Add a Local data movement details to a compute resource
+     * App catalog will return a dataMovementInterfaceId which will be added 
to the dataMovementInterfaces.
+     *
+     * @param productUri        The identifier of the compute resource to 
which JobSubmission protocol to be added
+     * @param dataMoveType
+     * @param priorityOrder     Specify the priority of this job manager. If 
this is the only jobmanager, the priority can be zero.
+     * @param localDataMovement The LOCALDataMovement object to be added to 
the resource.
+     * @return status
+     * Returns the unique job submission id.
+     */
+    @Override
+    public String addLocalDataMovementDetails(String productUri, DMType 
dataMoveType, int priorityOrder, LOCALDataMovement localDataMovement) throws 
RegistryServiceException, TException {
+        return null;
+    }
+
+    /**
+     * Update the UNIOCRE Job Submission details
+     *
+     * @param jobSubmissionInterfaceId The identifier of the JobSubmission 
Interface to be updated.
+     * @param unicoreJobSubmission
+     * @return status
+     * Returns a success/failure of the update.
+     */
+    @Override
+    public boolean updateUnicoreJobSubmissionDetails(String 
jobSubmissionInterfaceId, UnicoreJobSubmission unicoreJobSubmission) throws 
RegistryServiceException, TException {
+        return false;
+    }
+
+    /**
+     * Update the cloud Job Submission details
+     *
+     * @param jobSubmissionInterfaceId The identifier of the JobSubmission 
Interface to be updated.
+     * @param sshJobSubmission
+     * @return status
+     * Returns a success/failure of the update.
+     */
+    @Override
+    public boolean updateCloudJobSubmissionDetails(String 
jobSubmissionInterfaceId, CloudJobSubmission sshJobSubmission) throws 
RegistryServiceException, TException {
+        return false;
+    }
+
+    /**
+     * Update the given SSH Job Submission details
+     *
+     * @param jobSubmissionInterfaceId The identifier of the JobSubmission 
Interface to be updated.
+     * @param sshJobSubmission         The SSHJobSubmission object to be 
updated.
+     * @return status
+     * Returns a success/failure of the update.
+     */
+    @Override
+    public boolean updateSSHJobSubmissionDetails(String 
jobSubmissionInterfaceId, SSHJobSubmission sshJobSubmission) throws 
RegistryServiceException, TException {
+        return false;
+    }
+
+    /**
+     * *
+     * * Add a Cloud Job Submission details to a compute resource
+     * *  App catalog will return a jobSubmissionInterfaceId which will be 
added to the jobSubmissionInterfaces.
+     * *
+     * * @param computeResourceId
+     * *   The identifier of the compute resource to which JobSubmission 
protocol to be added
+     * *
+     * * @param priorityOrder
+     * *   Specify the priority of this job manager. If this is the only 
jobmanager, the priority can be zero.
+     * *
+     * * @param sshJobSubmission
+     * *   The SSHJobSubmission object to be added to the resource.
+     * *
+     * * @return status
+     * *   Returns the unique job submission id.
+     * *
+     * *
+     *
+     * @param computeResourceId
+     * @param priorityOrder
+     * @param cloudSubmission
+     */
+    @Override
+    public String addCloudJobSubmissionDetails(String computeResourceId, int 
priorityOrder, CloudJobSubmission cloudSubmission) throws 
RegistryServiceException, TException {
+        return null;
+    }
+
+    /**
+     * Add a UNICORE Job Submission details to a compute resource
+     * App catalog will return a jobSubmissionInterfaceId which will be added 
to the jobSubmissionInterfaces.
+     *
+     * @param computeResourceId    The identifier of the compute resource to 
which JobSubmission protocol to be added
+     * @param priorityOrder        Specify the priority of this job manager. 
If this is the only jobmanager, the priority can be zero.
+     * @param unicoreJobSubmission The UnicoreJobSubmission object to be added 
to the resource.
+     * @return status
+     * Returns the unique job submission id.
+     */
+    @Override
+    public String addUNICOREJobSubmissionDetails(String computeResourceId, int 
priorityOrder, UnicoreJobSubmission unicoreJobSubmission) throws 
RegistryServiceException, TException {
+        return null;
+    }
+
+    /**
+     * Add a SSH_FORK Job Submission details to a compute resource
+     * App catalog will return a jobSubmissionInterfaceId which will be added 
to the jobSubmissionInterfaces.
+     *
+     * @param computeResourceId The identifier of the compute resource to 
which JobSubmission protocol to be added
+     * @param priorityOrder     Specify the priority of this job manager. If 
this is the only jobmanager, the priority can be zero.
+     * @param sshJobSubmission  The SSHJobSubmission object to be added to the 
resource.
+     * @return status
+     * Returns the unique job submission id.
+     */
+    @Override
+    public String addSSHForkJobSubmissionDetails(String computeResourceId, int 
priorityOrder, SSHJobSubmission sshJobSubmission) throws 
RegistryServiceException, TException {
+        return null;
+    }
+
+    /**
+     * Add a SSH Job Submission details to a compute resource
+     * App catalog will return a jobSubmissionInterfaceId which will be added 
to the jobSubmissionInterfaces.
+     *
+     * @param computeResourceId The identifier of the compute resource to 
which JobSubmission protocol to be added
+     * @param priorityOrder     Specify the priority of this job manager. If 
this is the only jobmanager, the priority can be zero.
+     * @param sshJobSubmission  The SSHJobSubmission object to be added to the 
resource.
+     * @return status
+     * Returns the unique job submission id.
+     */
+    @Override
+    public String addSSHJobSubmissionDetails(String computeResourceId, int 
priorityOrder, SSHJobSubmission sshJobSubmission) throws 
RegistryServiceException, TException {
+        return null;
+    }
+
+    /**
+     * Update the given Local Job Submission details
+     *
+     * @param jobSubmissionInterfaceId The identifier of the JobSubmission 
Interface to be updated.
+     * @param localSubmission          The LOCALSubmission object to be 
updated.
+     * @return status
+     * Returns a success/failure of the deletion.
+     */
+    @Override
+    public boolean updateLocalSubmissionDetails(String 
jobSubmissionInterfaceId, LOCALSubmission localSubmission) throws 
RegistryServiceException, TException {
+        return false;
+    }
+
+    /**
+     * Add a Local Job Submission details to a compute resource
+     * App catalog will return a jobSubmissionInterfaceId which will be added 
to the jobSubmissionInterfaces.
+     *
+     * @param computeResourceId The identifier of the compute resource to 
which JobSubmission protocol to be added
+     * @param priorityOrder     Specify the priority of this job manager. If 
this is the only jobmanager, the priority can be zero.
+     * @param localSubmission   The LOCALSubmission object to be added to the 
resource.
+     * @return status
+     * Returns the unique job submission id.
+     */
+    @Override
+    public String addLocalSubmissionDetails(String computeResourceId, int 
priorityOrder, LOCALSubmission localSubmission) throws 
RegistryServiceException, TException {
+        return null;
+    }
+
+    /**
+     * Update a Storage Resource.
+     *
+     * @param storageResourceId          The identifier for the requested 
compute resource to be updated.
+     * @param storageResourceDescription Storage Resource Object created from 
the datamodel.
+     * @return status
+     * Returns a success/failure of the update.
+     */
+    @Override
+    public boolean updateStorageResource(String storageResourceId, 
StorageResourceDescription storageResourceDescription) throws 
RegistryServiceException, TException {
+        return false;
+    }
+
+    /**
+     * Register a Storage Resource.
+     *
+     * @param storageResourceDescription Storge Resource Object created from 
the datamodel.
+     * @return storageResourceId
+     * Returns a server-side generated airavata storage resource globally 
unique identifier.
+     */
+    @Override
+    public String registerStorageResource(StorageResourceDescription 
storageResourceDescription) throws RegistryServiceException, TException {
+        return null;
+    }
+
+    /**
+     * Update a Compute Resource.
+     *
+     * @param computeResourceId          The identifier for the requested 
compute resource to be updated.
+     * @param computeResourceDescription Compute Resource Object created from 
the datamodel.
+     * @return status
+     * Returns a success/failure of the update.
+     */
+    @Override
+    public boolean updateComputeResource(String computeResourceId, 
ComputeResourceDescription computeResourceDescription) throws 
RegistryServiceException, TException {
+        return false;
+    }
+
+    /**
+     * Register a Compute Resource.
+     *
+     * @param computeResourceDescription Compute Resource Object created from 
the datamodel.
+     * @return computeResourceId
+     * Returns a server-side generated airavata compute resource globally 
unique identifier.
+     */
+    @Override
+    public String registerComputeResource(ComputeResourceDescription 
computeResourceDescription) throws RegistryServiceException, TException {
+        return null;
+    }
+
+    /**
+     * Update a Application Interface.
+     *
+     * @param appInterfaceId       The identifier of the requested application 
deployment to be updated.
+     * @param applicationInterface
+     * @return status
+     * Returns a success/failure of the update.
+     */
+    @Override
+    public boolean updateApplicationInterface(String appInterfaceId, 
ApplicationInterfaceDescription applicationInterface) throws 
RegistryServiceException, TException {
+        return false;
+    }
+
+    /**
+     * Register a Application Interface.
+     *
+     * @param gatewayId
+     * @param applicationInterface Application Module Object created from the 
datamodel.
+     * @return appInterfaceId
+     * Returns a server-side generated airavata application interface globally 
unique identifier.
+     */
+    @Override
+    public String registerApplicationInterface(String gatewayId, 
ApplicationInterfaceDescription applicationInterface) throws 
RegistryServiceException, TException {
+        return null;
+    }
+
+    /**
+     * Update an Application Deployment.
+     *
+     * @param appDeploymentId       The identifier of the requested 
application deployment to be updated.
+     * @param applicationDeployment
+     * @return status
+     * Returns a success/failure of the update.
+     */
+    @Override
+    public boolean updateApplicationDeployment(String appDeploymentId, 
ApplicationDeploymentDescription applicationDeployment) throws 
RegistryServiceException, TException {
+        return false;
+    }
+
+    /**
+     * Register an Application Deployment.
+     *
+     * @param gatewayId             ID of the gateway which is registering the 
new Application Deployment.
+     * @param applicationDeployment Application Module Object created from the 
datamodel.
+     * @return appDeploymentId
+     * Returns a server-side generated airavata appDeployment globally unique 
identifier.
+     */
+    @Override
+    public String registerApplicationDeployment(String gatewayId, 
ApplicationDeploymentDescription applicationDeployment) throws 
RegistryServiceException, TException {
+        return null;
+    }
+
+    /**
+     * Update a Application Module.
+     *
+     * @param appModuleId       The identifier for the requested application 
module to be updated.
+     * @param applicationModule Application Module Object created from the 
datamodel.
+     * @return status
+     * Returns a success/failure of the update.
+     */
+    @Override
+    public boolean updateApplicationModule(String appModuleId, 
ApplicationModule applicationModule) throws RegistryServiceException, 
TException {
+        return false;
+    }
+
+    /**
+     * Register a Application Module.
+     *
+     * @param gatewayId
+     * @param applicationModule Application Module Object created from the 
datamodel.
+     * @return appModuleId
+     * Returns the server-side generated airavata appModule globally unique 
identifier.
+     * @gatewayId ID of the gateway which is registering the new Application 
Module.
+     */
+    @Override
+    public String registerApplicationModule(String gatewayId, 
ApplicationModule applicationModule) throws RegistryServiceException, 
TException {
+        return null;
+    }
+
+    @Override
+    public void updateResourceScheduleing(String airavataExperimentId, 
ComputationalResourceSchedulingModel resourceScheduling) throws 
RegistryServiceException, TException {
+
+    }
+
+    @Override
+    public void updateExperimentConfiguration(String airavataExperimentId, 
UserConfigurationDataModel userConfiguration) throws RegistryServiceException, 
TException {
+
+    }
+
+    /**
+     * Update a Previously Created Experiment
+     * Configure the CREATED experiment with required inputs, scheduling and 
other quality of service parameters. This method only updates the experiment 
object within the registry.
+     * The experiment has to be launched to make it actionable by the server.
+     *
+     * @param airavataExperimentId The identifier for the requested 
experiment. This is returned during the create experiment step.
+     * @param experiment
+     * @return This method call does not have a return value.
+     * @throws InvalidRequestException     For any incorrect forming of the 
request itself.
+     * @throws ExperimentNotFoundException If the specified experiment is not 
previously created, then an Experiment Not Found Exception is thrown.
+     * @throws AiravataClientException     The following list of exceptions 
are thrown which Airavata Client can take corrective actions to resolve:
+     *                                     <p>
+     *                                     UNKNOWN_GATEWAY_ID - If a Gateway 
is not registered with Airavata as a one time administrative
+     *                                     step, then Airavata Registry will 
not have a provenance area setup. The client has to follow
+     *                                     gateway registration steps and 
retry this request.
+     *                                     <p>
+     *                                     AUTHENTICATION_FAILURE - How 
Authentication will be implemented is yet to be determined.
+     *                                     For now this is a place holder.
+     *                                     <p>
+     *                                     INVALID_AUTHORIZATION - This will 
throw an authorization exception. When a more robust security hand-shake
+     *                                     is implemented, the authorization 
will be more substantial.
+     * @throws AiravataSystemException     This exception will be thrown for 
any Airavata Server side issues and if the problem cannot be corrected by the 
client
+     *                                     rather an Airavata Administrator 
will be notified to take corrective action.
+     */
+    @Override
+    public void updateExperiment(String airavataExperimentId, ExperimentModel 
experiment) throws RegistryServiceException, TException {
+
+    }
+
+    /**
+     * *
+     * * Create New Experiment
+     * * Create an experiment for the specified user belonging to the gateway. 
The gateway identity is not explicitly passed
+     * *   but inferred from the sshKeyAuthentication header. This experiment 
is just a persistent place holder. The client
+     * *   has to subsequently configure and launch the created experiment. No 
action is taken on Airavata Server except
+     * *   registering the experiment in a persistent store.
+     * *
+     * * @param gatewayId
+     * *    The unique ID of the gateway where the experiment is been created.
+     * *
+     * * @param ExperimentModel
+     * *    The create experiment will require the basic experiment metadata 
like the name and description, intended user,
+     * *      the gateway identifer and if the experiment should be shared 
public by defualt. During the creation of an experiment
+     * *      the ExperimentMetadata is a required field.
+     * *
+     * * @return
+     * *   The server-side 
generated.airavata.registry.core.experiment.globally unique identifier.
+     * *
+     * * @throws org.apache.airavata.model.error.InvalidRequestException
+     * *    For any incorrect forming of the request itself.
+     * *
+     * * @throws org.apache.airavata.model.error.AiravataClientException
+     * *    The following list of exceptions are thrown which Airavata Client 
can take corrective actions to resolve:
+     * *
+     * *      UNKNOWN_GATEWAY_ID - If a Gateway is not registered with 
Airavata as a one time administrative
+     * *         step, then Airavata Registry will not have a provenance area 
setup. The client has to follow
+     * *         gateway registration steps and retry this request.
+     * *
+     * *      AUTHENTICATION_FAILURE - How Authentication will be implemented 
is yet to be determined.
+     * *         For now this is a place holder.
+     * *
+     * *      INVALID_AUTHORIZATION - This will throw an authorization 
exception. When a more robust security hand-shake
+     * *         is implemented, the authorization will be more substantial.
+     * *
+     * * @throws org.apache.airavata.model.error.AiravataSystemException
+     * *    This exception will be thrown for any Airavata Server side issues 
and if the problem cannot be corrected by the client
+     * *       rather an Airavata Administrator will be notified to take 
corrective action.
+     * *
+     * *
+     *
+     * @param gatewayId
+     * @param experiment
+     */
+    @Override
+    public String createExperiment(String gatewayId, ExperimentModel 
experiment) throws RegistryServiceException, TException {
+        return null;
+    }
+
+    /**
+     * Search Experiments.
+     * Search Experiments by using multiple filter criteria with pagination. 
Results will be sorted based on creation time DESC.
+     *
+     * @param gatewayId Identifier of the requested gateway.
+     * @param userName  Username of the user requesting the search function.
+     * @param filters   Map of multiple filter criteria. Currenlt search 
filters includes Experiment Name, Description, Application, etc....
+     * @param limit     Amount of results to be fetched.
+     * @param offset    The starting point of the results to be fetched.
+     * @return ExperimentSummaryModel
+     * List of experiments for the given search filter. Here only the 
Experiment summary will be returned.
+     */
+    @Override
+    public List<ExperimentSummaryModel> searchExperiments(String gatewayId, 
String userName, Map<ExperimentSearchFields, String> filters, int limit, int 
offset) throws RegistryServiceException, TException {
+        return null;
+    }
+
+    /**
+     * Search User Projects
+     * Search and get all Projects for user by project description or/and 
project name  with pagination.
+     * Results will be ordered based on creation time DESC.
+     *
+     * @param gatewayId The unique identifier of the gateway making the 
request.
+     * @param userName  The identifier of the user.
+     * @param filters   Map of multiple filter criteria. Currenlt search 
filters includes Project Name and Project Description
+     * @param limit     The amount results to be fetched.
+     * @param offset    The starting point of the results to be fetched.
+     */
+    @Override
+    public List<Project> searchProjects(String gatewayId, String userName, 
Map<ProjectSearchFields, String> filters, int limit, int offset) throws 
RegistryServiceException, TException {
+        return null;
+    }
+
+    /**
+     * Update an Existing Project
+     *
+     * @param projectId      The projectId of the project needed an update.
+     * @param updatedProject
+     * @return void
+     * Currently this does not return any value.
+     */
+    @Override
+    public void updateProject(String projectId, Project updatedProject) throws 
RegistryServiceException, TException {
+
+    }
+
+    /**
+     * Creates a Project with basic metadata.
+     * A Project is a container of experiments.
+     *
+     * @param gatewayId The identifier for the requested gateway.
+     * @param project
+     */
+    @Override
+    public String createProject(String gatewayId, Project project) throws 
RegistryServiceException, TException {
+        return null;
+    }
+
+    @Override
+    public boolean updateNotification(Notification notification) throws 
RegistryServiceException, TException {
+        return false;
+    }
+
+    /**
+     * * API methods to retrieve notifications
+     * *
+     *
+     * @param notification
+     */
+    @Override
+    public String createNotification(Notification notification) throws 
RegistryServiceException, TException {
+        return null;
+    }
+
+    /**
+     * Update previously registered Gateway metadata.
+     *
+     * @param gatewayId      The gateway Id of the Gateway which require an 
update.
+     * @param updatedGateway
+     * @return gateway
+     * Modified gateway obejct.
+     * @throws AiravataClientException
+     */
+    @Override
+    public boolean updateGateway(String gatewayId, Gateway updatedGateway) 
throws RegistryServiceException, TException {
+        return false;
+    }
+
+    /**
+     * Register a Gateway with Airavata.
+     *
+     * @param gateway The gateway data model.
+     * @return gatewayId
+     * Th unique identifier of the  newly registered gateway.
+     */
+    @Override
+    public String addGateway(Gateway gateway) throws RegistryServiceException, 
TException {
+        return null;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/2d9fd253/modules/registry/registry-server/registry-api-service/src/main/java/org/apache/airavata/registry/api/service/util/AppCatalogInitUtil.java
----------------------------------------------------------------------
diff --git 
a/modules/registry/registry-server/registry-api-service/src/main/java/org/apache/airavata/registry/api/service/util/AppCatalogInitUtil.java
 
b/modules/registry/registry-server/registry-api-service/src/main/java/org/apache/airavata/registry/api/service/util/AppCatalogInitUtil.java
new file mode 100644
index 0000000..715ccbd
--- /dev/null
+++ 
b/modules/registry/registry-server/registry-api-service/src/main/java/org/apache/airavata/registry/api/service/util/AppCatalogInitUtil.java
@@ -0,0 +1,168 @@
+/*
+*
+* 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.registry.api.service.util;
+
+import org.apache.airavata.common.exception.ApplicationSettingsException;
+import org.apache.airavata.common.utils.AiravataUtils;
+import org.apache.airavata.common.utils.ServerSettings;
+import 
org.apache.airavata.registry.core.app.catalog.resources.GatewayProfileResource;
+import org.apache.derby.drda.NetworkServerControl;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.IOException;
+import java.net.InetAddress;
+import java.net.URI;
+import java.sql.Connection;
+import java.sql.SQLException;
+
+public class AppCatalogInitUtil {
+    public static final String COMPUTE_RESOURCE = "GATEWAY_PROFILE";
+    private static final Logger logger = 
LoggerFactory.getLogger(AppCatalogInitUtil.class);
+    public static final String APPCATALOG_JDBC_DRIVER = 
"appcatalog.jdbc.driver";
+    public static final String APPCATALOG_JDBC_URL = "appcatalog.jdbc.url";
+    public static final String APPCATALOG_JDBC_USER = "appcatalog.jdbc.user";
+    public static final String APPCATALOG_JDBC_PASSWORD = 
"appcatalog.jdbc.password";
+    public static final String START_DERBY_ENABLE = "start.derby.server.mode";
+    public static final String DERBY_SERVER_MODE_SYS_PROPERTY = 
"derby.drda.startNetworkServer";
+    private static NetworkServerControl server;
+    private static JdbcStorage db;
+    private static String jdbcURl;
+    private static String jdbcDriver;
+    private static String jdbcUser;
+    private static String jdbcPassword;
+
+
+    public static void initializeDB() {
+//        System.setProperty("appcatalog.initialize.state", "0");
+        try{
+            jdbcDriver = ServerSettings.getSetting(APPCATALOG_JDBC_DRIVER);
+            jdbcURl = ServerSettings.getSetting(APPCATALOG_JDBC_URL);
+            jdbcUser = ServerSettings.getSetting(APPCATALOG_JDBC_USER);
+            jdbcPassword = ServerSettings.getSetting(APPCATALOG_JDBC_PASSWORD);
+            jdbcURl = jdbcURl + "?" + "user=" + jdbcUser + "&" + "password=" + 
jdbcPassword;
+        } catch (ApplicationSettingsException e) {
+            logger.error("Unable to read airavata server properties", 
e.getMessage());
+        }
+
+        if (getDBType(jdbcURl).equals("derby") && isDerbyStartEnabled()) {
+            startDerbyInServerMode();
+        }
+        db = new JdbcStorage(10, 50, jdbcURl, jdbcDriver, true);
+
+        Connection conn = null;
+        try {
+            conn = db.connect();
+            if (!DatabaseCreator.isDatabaseStructureCreated(COMPUTE_RESOURCE, 
conn)) {
+                
DatabaseCreator.createRegistryDatabase("database_scripts/appcatalog", conn);
+                logger.info("New Database created for App Catalog !!!");
+            } else {
+                logger.info("Database already created for App Catalog !!!");
+            }
+            GatewayProfileResource gatewayProfileResource = new 
GatewayProfileResource();
+            if 
(!gatewayProfileResource.isExists(ServerSettings.getDefaultUserGateway())){
+                
gatewayProfileResource.setGatewayID(ServerSettings.getDefaultUserGateway());
+                
gatewayProfileResource.setCreatedTime(AiravataUtils.getCurrentTimestamp());
+                gatewayProfileResource.save();
+            }
+        } catch (Exception e) {
+            logger.error(e.getMessage(), e);
+            throw new RuntimeException("Database failure", e);
+        } finally {
+            db.closeConnection(conn);
+            try {
+                if(conn != null){
+                    if (!conn.getAutoCommit()) {
+                        conn.commit();
+                    }
+                    conn.close();
+                }
+            } catch (SQLException e) {
+                logger.error("Error while closing database connection...", 
e.getMessage(), e);
+            }
+        }
+//        System.setProperty("appcatalog.initialize.state", "1");
+    }
+
+    public static String getDBType(String jdbcUrl){
+        try{
+            String cleanURI = jdbcUrl.substring(5);
+            URI uri = URI.create(cleanURI);
+            return uri.getScheme();
+        } catch (Exception e) {
+            logger.error(e.getMessage(), e);
+            return null;
+        }
+    }
+
+    public static boolean isDerbyStartEnabled(){
+        try {
+            String s = ServerSettings.getSetting(START_DERBY_ENABLE);
+            if("true".equals(s)){
+                return true;
+            }
+        }  catch (ApplicationSettingsException e) {
+            logger.error("Unable to read airavata server properties", 
e.getMessage(), e);
+            return false;
+        }
+        return false;
+    }
+
+    public static void startDerbyInServerMode() {
+        try {
+            System.setProperty(DERBY_SERVER_MODE_SYS_PROPERTY, "true");
+            server = new NetworkServerControl(InetAddress.getByName("0.0.0.0"),
+                    getPort(jdbcURl),
+                    jdbcUser, jdbcPassword);
+            java.io.PrintWriter consoleWriter = new 
java.io.PrintWriter(System.out, true);
+            server.start(consoleWriter);
+        } catch (IOException e) {
+            logger.error("Unable to start Apache derby in the server mode! 
Check whether " +
+                    "specified port is available");
+        } catch (Exception e) {
+            logger.error("Unable to start Apache derby in the server mode! 
Check whether " +
+                    "specified port is available");
+        }
+    }
+    
+    public static void stopDerbyInServerMode() {
+            System.setProperty(DERBY_SERVER_MODE_SYS_PROPERTY, "false");
+            if (server!=null){
+               try {
+                                       server.shutdown();
+                               } catch (Exception e) {
+                           logger.error("Error when stopping the derby server 
: "+e.getLocalizedMessage());
+                               }
+            }
+    }
+
+    public static int getPort(String jdbcURL){
+        try{
+            String cleanURI = jdbcURL.substring(5);
+            URI uri = URI.create(cleanURI);
+            return uri.getPort();
+        } catch (Exception e) {
+            logger.error(e.getMessage(), e);
+            return -1;
+        }
+    }
+}

Reply via email to