You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by sh...@apache.org on 2015/09/30 17:06:06 UTC

[2/4] airavata git commit: fixing jpa issue

fixing jpa issue


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

Branch: refs/heads/master
Commit: 8f5997e9e408e73c061f79d088a1611d5d34ebe9
Parents: 83d1dfd
Author: Chathuri Wimalasena <ch...@apache.org>
Authored: Tue Sep 29 10:54:31 2015 -0400
Committer: Shameera Rathnayaka <sh...@gmail.com>
Committed: Wed Sep 30 11:02:35 2015 -0400

----------------------------------------------------------------------
 .../experiment/catalog/ExpCatResourceUtils.java    |  7 ++-----
 .../catalog/resources/ExperimentErrorResource.java | 17 ++++++++++++-----
 .../catalog/resources/ExperimentInputResource.java | 12 +++++++++---
 .../resources/ExperimentOutputResource.java        | 12 +++++++++---
 .../catalog/resources/ExperimentResource.java      | 14 ++++++++++----
 .../resources/ExperimentStatusResource.java        | 12 +++++++++---
 .../experiment/catalog/resources/JobResource.java  | 15 +++++++++++----
 .../catalog/resources/JobStatusResource.java       | 12 +++++++++---
 .../catalog/resources/ProcessErrorResource.java    | 13 +++++++++----
 .../catalog/resources/ProcessInputResource.java    | 13 +++++++++----
 .../catalog/resources/ProcessOutputResource.java   | 13 +++++++++----
 .../catalog/resources/ProcessResource.java         | 13 ++++++++++---
 .../resources/ProcessResourceScheduleResource.java | 13 +++++++++----
 .../catalog/resources/ProcessStatusResource.java   | 13 +++++++++----
 .../catalog/resources/TaskErrorResource.java       | 14 +++++++++-----
 .../experiment/catalog/resources/TaskResource.java | 14 ++++++++++----
 .../catalog/resources/TaskStatusResource.java      | 13 +++++++++----
 .../resources/UserConfigurationDataResource.java   | 13 +++++++++----
 18 files changed, 163 insertions(+), 70 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/8f5997e9/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/ExpCatResourceUtils.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/ExpCatResourceUtils.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/ExpCatResourceUtils.java
index 36fd822..64ed997 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/ExpCatResourceUtils.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/ExpCatResourceUtils.java
@@ -23,6 +23,7 @@ package org.apache.airavata.registry.core.experiment.catalog;
 import org.apache.airavata.registry.core.experiment.catalog.model.*;
 import org.apache.airavata.registry.core.experiment.catalog.resources.*;
 import org.apache.airavata.registry.core.experiment.catalog.utils.QueryGenerator;
+import org.apache.airavata.registry.cpi.ExperimentCatalogException;
 import org.apache.airavata.registry.cpi.RegistryException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -41,11 +42,7 @@ public class ExpCatResourceUtils {
     @PersistenceContext(unitName="experiment_data")
     private static EntityManager expCatEntityManager;
 
-    public static void reset(){
-        expCatFactory=null;
-    }
-    
-    public static EntityManager getEntityManager(){
+    public static EntityManager getEntityManager() throws ExperimentCatalogException{
         if (expCatFactory == null) {
             String connectionProperties = "DriverClassName=" + Utils.getJDBCDriver() + "," + "Url=" +
                     Utils.getJDBCURL() + "?autoReconnect=true," +

http://git-wip-us.apache.org/repos/asf/airavata/blob/8f5997e9/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ExperimentErrorResource.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ExperimentErrorResource.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ExperimentErrorResource.java
index 7217599..86b2e34 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ExperimentErrorResource.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ExperimentErrorResource.java
@@ -135,21 +135,28 @@ public class ExperimentErrorResource extends AbstractExpCatResource {
             ExperimentErrorPK experimentErrorPK = new ExperimentErrorPK();
             experimentErrorPK.setExperimentId(experimentId);
             experimentErrorPK.setErrorId(errorId);
-            experimentError = em.find(ExperimentError.class, experimentErrorPK);
+            ExperimentError existingExpError = em.find(ExperimentError.class, experimentErrorPK);
             em.close();
 
-            em = ExpCatResourceUtils.getEntityManager();
-            em.getTransaction().begin();
-            if(experimentError == null){
+            if (existingExpError == null){
                 experimentError = new ExperimentError();
+            }else {
+                experimentError = existingExpError;
             }
+
+            em = ExpCatResourceUtils.getEntityManager();
+            em.getTransaction().begin();
             experimentError.setErrorId(errorId);
             experimentError.setExperimentId(experimentId);
             experimentError.setActualErrorMessage(actualErrorMessage);
             experimentError.setUserFriendlyMessage(userFriendlyMessage);
             experimentError.setRootCauseErrorIdList(rootCauseErrorIdList);
             experimentError.setTransientOrPersistent(transientOrPersistent);
-            em.persist(experimentError);
+            if (existingExpError == null){
+                em.persist(experimentError);
+            }else {
+                em.merge(experimentError);
+            }
             em.getTransaction().commit();
             em.close();
         } catch (Exception e) {

http://git-wip-us.apache.org/repos/asf/airavata/blob/8f5997e9/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ExperimentInputResource.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ExperimentInputResource.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ExperimentInputResource.java
index 2389b57..855735c 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ExperimentInputResource.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ExperimentInputResource.java
@@ -179,13 +179,15 @@ public class ExperimentInputResource extends AbstractExpCatResource {
             ExperimentInputPK experimentInputPK = new ExperimentInputPK();
             experimentInputPK.setExperimentId(experimentId);
             experimentInputPK.setInputName(inputName);
-            experimentInput = em.find(ExperimentInput.class, experimentInputPK);
+            ExperimentInput existingExpInput = em.find(ExperimentInput.class, experimentInputPK);
             em.close();
 
             em = ExpCatResourceUtils.getEntityManager();
             em.getTransaction().begin();
-            if(experimentInput == null){
+            if(existingExpInput == null){
                 experimentInput = new ExperimentInput();
+            }else {
+                experimentInput = existingExpInput;
             }
             experimentInput.setExperimentId(experimentId);
             experimentInput.setInputName(inputName);
@@ -199,7 +201,11 @@ public class ExperimentInputResource extends AbstractExpCatResource {
             experimentInput.setIsRequired(isRequired);
             experimentInput.setRequiredToAddedToCmd(requiredToAddedToCmd);
             experimentInput.setDataStaged(dataStaged);
-            em.merge(experimentInput);
+            if (existingExpInput == null){
+                em.persist(experimentInput);
+            }else {
+                em.merge(experimentInput);
+            }
             em.getTransaction().commit();
             em.close();
         } catch (Exception e) {

http://git-wip-us.apache.org/repos/asf/airavata/blob/8f5997e9/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ExperimentOutputResource.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ExperimentOutputResource.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ExperimentOutputResource.java
index 57c28fd..2502306 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ExperimentOutputResource.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ExperimentOutputResource.java
@@ -161,13 +161,15 @@ public class ExperimentOutputResource extends AbstractExpCatResource {
             ExperimentOutputPK experimentOutputPK = new ExperimentOutputPK();
             experimentOutputPK.setExperimentId(experimentId);
             experimentOutputPK.setOutputName(outputName);
-            experimentOutput = em.find(ExperimentOutput.class, experimentOutputPK);
+            ExperimentOutput existingExpOutput = em.find(ExperimentOutput.class, experimentOutputPK);
             em.close();
 
             em = ExpCatResourceUtils.getEntityManager();
             em.getTransaction().begin();
-            if(experimentOutput == null){
+            if(existingExpOutput == null){
                 experimentOutput = new ExperimentOutput();
+            }else {
+                experimentOutput = existingExpOutput;
             }
             experimentOutput.setExperimentId(experimentId);
             experimentOutput.setOutputName(outputName);
@@ -179,7 +181,11 @@ public class ExperimentOutputResource extends AbstractExpCatResource {
             experimentOutput.setDataMovement(dataMovement);
             experimentOutput.setLocation(location);
             experimentOutput.setSearchQuery(searchQuery);
-            em.merge(experimentOutput);
+            if (existingExpOutput == null){
+                em.persist(experimentOutput);
+            }else {
+                em.merge(experimentOutput);
+            }
             em.getTransaction().commit();
             em.close();
         } catch (Exception e) {

http://git-wip-us.apache.org/repos/asf/airavata/blob/8f5997e9/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ExperimentResource.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ExperimentResource.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ExperimentResource.java
index ad71f91..6098770 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ExperimentResource.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ExperimentResource.java
@@ -436,13 +436,15 @@ public class ExperimentResource extends AbstractExpCatResource {
         EntityManager em = null;
         try {
             em = ExpCatResourceUtils.getEntityManager();
-            Experiment experiment = em.find(Experiment.class, experimentId);
+            Experiment existingExp = em.find(Experiment.class, experimentId);
             em.close();
-
+            Experiment experiment;
             em = ExpCatResourceUtils.getEntityManager();
             em.getTransaction().begin();
-            if (experiment == null) {
+            if (existingExp == null) {
             	experiment = new Experiment();
+            }else {
+                experiment = existingExp;
             }
             experiment.setExperimentId(experimentId);
             experiment.setProjectId(projectId);
@@ -456,7 +458,11 @@ public class ExperimentResource extends AbstractExpCatResource {
             experiment.setGatewayExecutionId(gatewayExecutionId);
             experiment.setEnableEmailNotification(enableEmailNotification);
             experiment.setEmailAddresses(emailAddresses);
-            em.merge(experiment);
+            if (existingExp == null){
+                em.persist(experiment);
+            }else {
+                em.merge(experiment);
+            }
             em.getTransaction().commit();
             em.close();
         } catch (Exception e) {

http://git-wip-us.apache.org/repos/asf/airavata/blob/8f5997e9/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ExperimentStatusResource.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ExperimentStatusResource.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ExperimentStatusResource.java
index c7242c2..3ea0b41 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ExperimentStatusResource.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ExperimentStatusResource.java
@@ -117,20 +117,26 @@ public class ExperimentStatusResource extends AbstractExpCatResource {
             ExperimentStatusPK experimentStatusPK = new ExperimentStatusPK();
             experimentStatusPK.setStatusId(statusId);
             experimentStatusPK.setExperimentId(experimentId);
-            experimentStatus = em.find(ExperimentStatus.class, experimentStatusPK);
+            ExperimentStatus existingStatus = em.find(ExperimentStatus.class, experimentStatusPK);
             em.close();
 
             em = ExpCatResourceUtils.getEntityManager();
             em.getTransaction().begin();
-            if(experimentStatus == null){
+            if(existingStatus == null){
                 experimentStatus = new ExperimentStatus();
+            }else {
+                experimentStatus = existingStatus;
             }
             experimentStatus.setStatusId(statusId);
             experimentStatus.setExperimentId(experimentId);
             experimentStatus.setState(state);
             experimentStatus.setReason(reason);
 	        experimentStatus.setTimeOfStateChange(timeOfStateChange);
-	        em.merge(experimentStatus);
+            if (existingStatus == null){
+                em.persist(experimentStatus);
+            }else {
+                em.merge(experimentStatus);
+            }
             em.getTransaction().commit();
             em.close();
         } catch (Exception e) {

http://git-wip-us.apache.org/repos/asf/airavata/blob/8f5997e9/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/JobResource.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/JobResource.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/JobResource.java
index abee18f..941b267 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/JobResource.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/JobResource.java
@@ -277,17 +277,20 @@ public class JobResource extends AbstractExpCatResource {
             JobPK jobPK = new JobPK();
             jobPK.setJobId(jobId);
             jobPK.setProcessId(processId);
-            Job job = em.find(Job.class, jobPK);
+            Job existingJob = em.find(Job.class, jobPK);
             em.close();
 
+            Job job;
             em = ExpCatResourceUtils.getEntityManager();
             em.getTransaction().begin();
-            if(job == null){
+            if(existingJob == null){
                 job = new Job();
+            }else {
+                job = existingJob;
             }
             job.setJobId(jobId);
             job.setTaskId(taskId);
-	        job.setProcessId(processId);
+            job.setProcessId(processId);
             if (jobDescription != null) {
                 job.setJobDescription(jobDescription.toCharArray());
             }
@@ -302,7 +305,11 @@ public class JobResource extends AbstractExpCatResource {
             job.setJobName(jobName);
             job.setWorkingDir(workingDir);
             job.setExitCode(exitCode);
-            em.merge(job);
+            if (existingJob == null){
+                em.persist(job);
+            }else {
+                em.merge(job);
+            }
             em.getTransaction().commit();
             em.close();
         } catch (Exception e) {

http://git-wip-us.apache.org/repos/asf/airavata/blob/8f5997e9/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/JobStatusResource.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/JobStatusResource.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/JobStatusResource.java
index 3de163c..9ed1f31 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/JobStatusResource.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/JobStatusResource.java
@@ -127,20 +127,26 @@ public class JobStatusResource extends AbstractExpCatResource {
             jobStatusPK.setJobId(jobId);
             jobStatusPK.setStatusId(statusId);
             jobStatusPK.setProcessId(processId);
-            jobStatus = em.find(JobStatus.class, jobStatusPK);
+            JobStatus existingJobStatus = em.find(JobStatus.class, jobStatusPK);
             em.close();
 
             em = ExpCatResourceUtils.getEntityManager();
             em.getTransaction().begin();
-            if(jobStatus == null){
+            if(existingJobStatus == null){
                 jobStatus = new JobStatus();
+            }else {
+                jobStatus = existingJobStatus;
             }
             jobStatus.setStatusId(statusId);
             jobStatus.setJobId(jobId);
             jobStatus.setProcessId(processId);
             jobStatus.setState(state);
             jobStatus.setReason(reason);
-            em.merge(jobStatus);
+            if (existingJobStatus == null){
+                em.persist(jobStatus);
+            }else {
+                em.merge(jobStatus);
+            }
             em.getTransaction().commit();
             em.close();
         } catch (Exception e) {

http://git-wip-us.apache.org/repos/asf/airavata/blob/8f5997e9/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ProcessErrorResource.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ProcessErrorResource.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ProcessErrorResource.java
index 3faa9b5..9d13705 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ProcessErrorResource.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ProcessErrorResource.java
@@ -131,18 +131,19 @@ public class ProcessErrorResource extends AbstractExpCatResource {
                 throw new RegistryException("Does not have the process id or error id");
             }
             em = ExpCatResourceUtils.getEntityManager();
-
             ProcessError processError;
             ProcessErrorPK processErrorPK = new ProcessErrorPK();
             processErrorPK.setProcessId(processId);
             processErrorPK.setErrorId(errorId);
-            processError = em.find(ProcessError.class, processErrorPK);
+            ProcessError existingPrError = em.find(ProcessError.class, processErrorPK);
             em.close();
 
             em = ExpCatResourceUtils.getEntityManager();
             em.getTransaction().begin();
-            if(processError == null){
+            if(existingPrError == null){
                 processError = new ProcessError();
+            }else {
+                processError = existingPrError;
             }
             processError.setProcessId(processId);
             processError.setErrorId(errorId);
@@ -150,7 +151,11 @@ public class ProcessErrorResource extends AbstractExpCatResource {
             processError.setUserFriendlyMessage(userFriendlyMessage);
             processError.setRootCauseErrorIdList(rootCauseErrorIdList);
             processError.setTransientOrPersistent(transientOrPersistent);
-            em.merge(processError);
+            if (existingPrError == null){
+                em.persist(processError);
+            }else {
+                em.merge(processError);
+            }
             em.getTransaction().commit();
             em.close();
         } catch (Exception e) {

http://git-wip-us.apache.org/repos/asf/airavata/blob/8f5997e9/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ProcessInputResource.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ProcessInputResource.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ProcessInputResource.java
index 8f0531f..aff8ec8 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ProcessInputResource.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ProcessInputResource.java
@@ -175,18 +175,19 @@ public class ProcessInputResource extends AbstractExpCatResource {
                 throw new RegistryException("Does not have the process id");
             }
             em = ExpCatResourceUtils.getEntityManager();
-
             ProcessInput processInput;
             ProcessInputPK processInputPk = new ProcessInputPK();
             processInputPk.setProcessId(processId);
             processInputPk.setInputName(inputName);
-            processInput = em.find(ProcessInput.class, processInputPk);
+            ProcessInput existingProInput = em.find(ProcessInput.class, processInputPk);
             em.close();
 
             em = ExpCatResourceUtils.getEntityManager();
             em.getTransaction().begin();
-            if(processInput == null){
+            if(existingProInput == null){
                 processInput = new ProcessInput();
+            }else {
+                processInput = existingProInput;
             }
             processInput.setProcessId(processId);
             processInput.setInputName(inputName);
@@ -200,7 +201,11 @@ public class ProcessInputResource extends AbstractExpCatResource {
             processInput.setIsRequired(isRequired);
             processInput.setRequiredToAddedToCmd(requiredToAddedToCmd);
             processInput.setDataStaged(dataStaged);
-            em.merge(processInput);
+            if (existingProInput == null){
+                em.persist(processInput);
+            }else {
+                em.merge(processInput);
+            }
             em.getTransaction().commit();
             em.close();
         } catch (Exception e) {

http://git-wip-us.apache.org/repos/asf/airavata/blob/8f5997e9/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ProcessOutputResource.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ProcessOutputResource.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ProcessOutputResource.java
index 0b56cd1..de93b63 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ProcessOutputResource.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ProcessOutputResource.java
@@ -158,18 +158,19 @@ public class ProcessOutputResource extends AbstractExpCatResource {
                         + " OutputName:" + outputName);
             }
             em = ExpCatResourceUtils.getEntityManager();
-
             ProcessOutput processOutput;
             ProcessOutputPK processOutputPK = new ProcessOutputPK();
             processOutputPK.setProcessId(processId);
             processOutputPK.setOutputName(outputName);
-            processOutput = em.find(ProcessOutput.class, processOutputPK);
+            ProcessOutput existingProcessOutput = em.find(ProcessOutput.class, processOutputPK);
             em.close();
 
             em = ExpCatResourceUtils.getEntityManager();
             em.getTransaction().begin();
-            if(processOutput == null){
+            if(existingProcessOutput == null){
                 processOutput = new ProcessOutput();
+            }else {
+                processOutput = existingProcessOutput;
             }
             processOutput.setProcessId(processId);
             processOutput.setOutputName(outputName);
@@ -181,7 +182,11 @@ public class ProcessOutputResource extends AbstractExpCatResource {
             processOutput.setDataMovement(dataMovement);
             processOutput.setLocation(location);
             processOutput.setSearchQuery(searchQuery);
-            em.merge(processOutput);
+            if (existingProcessOutput == null){
+                em.persist(processOutput);
+            }else {
+                em.merge(processOutput);
+            }
             em.getTransaction().commit();
             em.close();
         } catch (Exception e) {

http://git-wip-us.apache.org/repos/asf/airavata/blob/8f5997e9/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ProcessResource.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ProcessResource.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ProcessResource.java
index 2cab3e9..1c89cba 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ProcessResource.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ProcessResource.java
@@ -471,13 +471,16 @@ public class ProcessResource extends AbstractExpCatResource {
         EntityManager em = null;
         try {
             em = ExpCatResourceUtils.getEntityManager();
-            Process process = em.find(Process.class, processId);
+            Process existingProcess = em.find(Process.class, processId);
             em.close();
 
+            Process process;
             em = ExpCatResourceUtils.getEntityManager();
             em.getTransaction().begin();
-            if (process == null) {
+            if (existingProcess == null) {
             	process = new Process();
+            }else {
+                process = existingProcess;
             }
             process.setProcessId(processId);
             process.setExperimentId(experimentId);
@@ -491,7 +494,11 @@ public class ProcessResource extends AbstractExpCatResource {
             process.setGatewayExecutionId(gatewayExecutionId);
             process.setEnableEmailNotification(enableEmailNotification);
             process.setEmailAddresses(emailAddresses);
-            em.merge(process);
+            if (existingProcess == null){
+                em.persist(process);
+            }else {
+                em.merge(process);
+            }
             em.getTransaction().commit();
             em.close();
         } catch (Exception e) {

http://git-wip-us.apache.org/repos/asf/airavata/blob/8f5997e9/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ProcessResourceScheduleResource.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ProcessResourceScheduleResource.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ProcessResourceScheduleResource.java
index 0e7c4f8..2513213 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ProcessResourceScheduleResource.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ProcessResourceScheduleResource.java
@@ -138,15 +138,16 @@ public class ProcessResourceScheduleResource extends AbstractExpCatResource {
                 throw new RegistryException("Does not have the process id");
             }
             em = ExpCatResourceUtils.getEntityManager();
-
             ProcessResourceSchedule processResourceSchedule;
-            processResourceSchedule = em.find(ProcessResourceSchedule.class, processId);
+            ProcessResourceSchedule existingSchedule = em.find(ProcessResourceSchedule.class, processId);
             em.close();
 
             em = ExpCatResourceUtils.getEntityManager();
             em.getTransaction().begin();
-            if(processResourceSchedule == null){
+            if(existingSchedule == null){
                 processResourceSchedule = new ProcessResourceSchedule();
+            }else {
+                processResourceSchedule = existingSchedule;
             }
             processResourceSchedule.setProcessId(processId);
             processResourceSchedule.setResourceHostId(resourceHostId);
@@ -156,7 +157,11 @@ public class ProcessResourceScheduleResource extends AbstractExpCatResource {
             processResourceSchedule.setQueueName(queueName);
             processResourceSchedule.setWallTimeLimit(wallTimeLimit);
             processResourceSchedule.setTotalPhysicalMemory(totalPhysicalMemory);
-            em.merge(processResourceSchedule);
+            if (existingSchedule == null){
+                em.persist(processResourceSchedule);
+            }else {
+                em.merge(processResourceSchedule);
+            }
             em.getTransaction().commit();
             em.close();
         } catch (Exception e) {

http://git-wip-us.apache.org/repos/asf/airavata/blob/8f5997e9/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ProcessStatusResource.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ProcessStatusResource.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ProcessStatusResource.java
index 285a81e..2e5e10c 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ProcessStatusResource.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/ProcessStatusResource.java
@@ -113,24 +113,29 @@ public class ProcessStatusResource extends AbstractExpCatResource {
                 throw new RegistryException("Does not have the process id or status id");
             }
             em = ExpCatResourceUtils.getEntityManager();
-
             ProcessStatus processStatus;
             ProcessStatusPK processStatusPK = new ProcessStatusPK();
             processStatusPK.setStatusId(statusId);
             processStatusPK.setProcessId(processId);
-            processStatus = em.find(ProcessStatus.class, processStatusPK);
+            ProcessStatus existingStatus = em.find(ProcessStatus.class, processStatusPK);
             em.close();
 
             em = ExpCatResourceUtils.getEntityManager();
             em.getTransaction().begin();
-            if(processStatus == null){
+            if(existingStatus == null){
                 processStatus = new ProcessStatus();
+            }else {
+                processStatus = existingStatus;
             }
             processStatus.setStatusId(statusId);
             processStatus.setProcessId(processId);
             processStatus.setState(state);
             processStatus.setReason(reason);
-            em.merge(processStatus);
+            if (existingStatus == null){
+                em.persist(processStatus);
+            }else {
+                em.merge(processStatus);
+            }
             em.getTransaction().commit();
             em.close();
         } catch (Exception e) {

http://git-wip-us.apache.org/repos/asf/airavata/blob/8f5997e9/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/TaskErrorResource.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/TaskErrorResource.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/TaskErrorResource.java
index 5d5730f..8fd71f5 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/TaskErrorResource.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/TaskErrorResource.java
@@ -128,7 +128,6 @@ public class TaskErrorResource extends AbstractExpCatResource {
         EntityManager em = null;
         try {
             em = ExpCatResourceUtils.getEntityManager();
-
             TaskError taskError;
             if(taskId == null || errorId == null){
                 throw new RegistryException("Does not have the task id or error id");
@@ -136,22 +135,27 @@ public class TaskErrorResource extends AbstractExpCatResource {
             TaskErrorPK taskErrorPK = new TaskErrorPK();
             taskErrorPK.setTaskId(taskId);
             taskErrorPK.setErrorId(errorId);
-            taskError = em.find(TaskError.class, taskErrorPK);
+            TaskError existingTaskError = em.find(TaskError.class, taskErrorPK);
             em.close();
 
             em = ExpCatResourceUtils.getEntityManager();
             em.getTransaction().begin();
-            if(taskError == null){
+            if(existingTaskError == null){
                 taskError = new TaskError();
+            }else {
+                taskError = existingTaskError;
             }
-
             taskError.setTaskId(taskId);
             taskError.setErrorId(errorId);
             taskError.setActualErrorMessage(actualErrorMessage);
             taskError.setUserFriendlyMessage(userFriendlyMessage);
             taskError.setRootCauseErrorIdList(rootCauseErrorIdList);
             taskError.setTransientOrPersistent(transientOrPersistent);
-            em.merge(taskError);
+            if (existingTaskError == null){
+                em.persist(taskError);
+            }else {
+                em.merge(taskError);
+            }
             em.getTransaction().commit();
             em.close();
         } catch (Exception e) {

http://git-wip-us.apache.org/repos/asf/airavata/blob/8f5997e9/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/TaskResource.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/TaskResource.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/TaskResource.java
index 3904283..0226f30 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/TaskResource.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/TaskResource.java
@@ -274,14 +274,16 @@ public class TaskResource extends AbstractExpCatResource {
         EntityManager em = null;
         try {
             em = ExpCatResourceUtils.getEntityManager();
-
-            Task task = em.find(Task.class, taskId);
+            Task task;
+            Task existingTask = em.find(Task.class, taskId);
             em.close();
 
             em = ExpCatResourceUtils.getEntityManager();
             em.getTransaction().begin();
-            if(task == null){
+            if(existingTask == null){
                 task = new Task();
+            }else {
+                task = existingTask;
             }
             task.setTaskId(taskId);
             task.setTaskType(taskType);
@@ -290,7 +292,11 @@ public class TaskResource extends AbstractExpCatResource {
             task.setLastUpdateTime(lastUpdateTime);
             task.setTaskDetail(taskDetail);
             task.setSetSubTaskModel(subTaskModel);
-            em.merge(task);
+            if (existingTask == null){
+                em.persist(task);
+            }else {
+                em.merge(task);
+            }
             em.getTransaction().commit();
             em.close();
         } catch (Exception e) {

http://git-wip-us.apache.org/repos/asf/airavata/blob/8f5997e9/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/TaskStatusResource.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/TaskStatusResource.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/TaskStatusResource.java
index 7b3d085..dc59e83 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/TaskStatusResource.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/TaskStatusResource.java
@@ -110,7 +110,6 @@ public class TaskStatusResource extends AbstractExpCatResource {
         EntityManager em = null;
         try {
             em = ExpCatResourceUtils.getEntityManager();
-
             TaskStatus taskStatus;
             if(taskId == null || statusId == null){
                 throw new RegistryException("Does not have the task id or status id");
@@ -118,20 +117,26 @@ public class TaskStatusResource extends AbstractExpCatResource {
             TaskStatusPK taskStatusPK = new TaskStatusPK();
             taskStatusPK.setTaskId(taskId);
             taskStatusPK.setStatusId(statusId);
-            taskStatus = em.find(TaskStatus.class, taskStatusPK);
+            TaskStatus existingStatus = em.find(TaskStatus.class, taskStatusPK);
             em.close();
 
             em = ExpCatResourceUtils.getEntityManager();
             em.getTransaction().begin();
-            if(taskStatus == null){
+            if(existingStatus == null){
                 taskStatus = new TaskStatus();
+            }else {
+                taskStatus = existingStatus;
             }
             taskStatus.setStatusId(statusId);
             taskStatus.setTaskId(taskId);
             taskStatus.setState(state);
             taskStatus.setReason(reason);
             taskStatus.setTimeOfStateChange(timeOfStateChange);
-	        em.merge(taskStatus);
+            if (existingStatus == null){
+                em.persist(taskStatus);
+            }else {
+                em.merge(taskStatus);
+            }
             em.getTransaction().commit();
             em.close();
         } catch (Exception e) {

http://git-wip-us.apache.org/repos/asf/airavata/blob/8f5997e9/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/UserConfigurationDataResource.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/UserConfigurationDataResource.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/UserConfigurationDataResource.java
index f7c2090..ef670f2 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/UserConfigurationDataResource.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/UserConfigurationDataResource.java
@@ -189,18 +189,19 @@ public class UserConfigurationDataResource extends AbstractExpCatResource {
         EntityManager em = null;
         try {
             em = ExpCatResourceUtils.getEntityManager();
-
             UserConfigurationData userConfigurationData;
             if(experimentId == null){
                 throw new RegistryException("Does not have the experiment id");
             }
-            userConfigurationData = em.find(UserConfigurationData.class, experimentId);
+            UserConfigurationData existingConf = em.find(UserConfigurationData.class, experimentId);
             em.close();
 
             em = ExpCatResourceUtils.getEntityManager();
             em.getTransaction().begin();
-            if(userConfigurationData == null){
+            if(existingConf == null){
                 userConfigurationData = new UserConfigurationData();
+            }else {
+                userConfigurationData = existingConf;
             }
             userConfigurationData.setExperimentId(experimentId);
             userConfigurationData.setAiravataAutoSchedule(airavataAutoSchedule);
@@ -216,7 +217,11 @@ public class UserConfigurationDataResource extends AbstractExpCatResource {
             userConfigurationData.setQueueName(queueName);
             userConfigurationData.setWallTimeLimit(wallTimeLimit);
             userConfigurationData.setTotalPhysicalMemory(totalPhysicalMemory);
-            em.merge(userConfigurationData);
+            if (existingConf == null){
+                em.persist(userConfigurationData);
+            }else {
+                em.merge(userConfigurationData);
+            }
             em.getTransaction().commit();
             em.close();
         } catch (Exception e) {