Merge branch 'master' of https://github.com/Thanu/stratos. This closes #505
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/parser/DefaultApplicationParser.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/parser/DefaultApplicationParser.java
index 1d93a0e..b5d9296 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/parser/DefaultApplicationParser.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/parser/DefaultApplicationParser.java
@@ -28,6 +28,7 @@
import org.apache.stratos.autoscaler.applications.ClusterInformation;
import org.apache.stratos.autoscaler.applications.MTClusterInformation;
import org.apache.stratos.autoscaler.applications.STClusterInformation;
+import org.apache.stratos.autoscaler.applications.ApplicationHolder;
import org.apache.stratos.autoscaler.applications.payload.PayloadData;
import org.apache.stratos.autoscaler.applications.pojo.*;
import org.apache.stratos.autoscaler.client.IdentityApplicationManagementServiceClient;
@@ -270,7 +271,19 @@
Map<String, SubscribableInfoContext> subscribableInfoCtxts)
throws ApplicationDefinitionException, CartridgeGroupNotFoundException, CartridgeNotFoundException {
- Application application = new Application(applicationContext.getApplicationId());
+ Application application;
+
+ // check if application already exists, and get existing key if true
+ ApplicationHolder.acquireReadLock();
+ Applications persistedApplications = ApplicationHolder.getApplications();
+ if (persistedApplications != null && persistedApplications.applicationExists(applicationContext.getApplicationId())) {
+ String existingKey = persistedApplications.getApplication(applicationContext.getApplicationId()).getKey();
+ application = new Application(applicationContext.getApplicationId(), existingKey);
+ } else {
+ application = new Application(applicationContext.getApplicationId());
+ }
+
+ ApplicationHolder.releaseReadLock();
// Set tenant information
application.setTenantId(applicationContext.getTenantId());
diff --git a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/application/Application.java b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/application/Application.java
index 5dcea72..9c49883 100644
--- a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/application/Application.java
+++ b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/application/Application.java
@@ -61,6 +61,13 @@
this.setInstanceIdToInstanceContextMap(new HashMap<String, ApplicationInstance>());
}
+ public Application(String id, String key) {
+ super();
+ this.id = id;
+ this.key = key;
+ this.setInstanceIdToInstanceContextMap(new HashMap<String, ApplicationInstance>());
+ }
+
public String getUniqueIdentifier() {
return id;
}