You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by sc...@apache.org on 2016/08/08 18:14:23 UTC

[6/7] airavata git commit: adding registry server module

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;
+        }
+    }
+}