Attaching the diff for DefaultExtensionHandler.java between 4.1.0 and 4.0.0 
(--- 4.0.0, +++ 4.1.0)

Thanks

Martin

From: Martin Eppel (meppel)
Sent: Tuesday, March 17, 2015 11:21 AM
To: [email protected]
Subject: DISCUSS: JIRA STRATOS-697support in 4.1 ?

I noticed that the code which resolved the JIRA STRATOS-697 seems to be missing 
in 4.1. This JIRA supports clustering and WKA member handling in Stratos.

I am not sure if it is still required or not ?

STRATOS-697 introduced in the JCA the class DefaultExtensionHandler.java which 
is there in 4.0.0 and 4.1.0 . However, some code in DefaultExtensionHandleris 
missing in 4.1, for instance:

In 4.0.0 DefaultExtensionHandler references lb enhancements ( missing in 4.1):

...
String lbClusterId = 
cluster.getMember(memberActivatedEvent.getMemberId()).getLbClusterId();
...

// check whether member activated event is received from the same cluster, 
lbcluster or service group
        if 
(ExtensionUtils.isRelevantMemberEvent(memberActivatedEvent.getServiceName(), 
memberActivatedEvent.getClusterId(), lbClusterId)) {
            Map<String, String> env = new HashMap<String, String>();
            env.put("STRATOS_MEMBER_ACTIVATED_MEMBER_IP", 
memberActivatedEvent.getMemberIp());
            env.put("STRATOS_MEMBER_ACTIVATED_MEMBER_ID", 
memberActivatedEvent.getMemberId());
            env.put("STRATOS_MEMBER_ACTIVATED_CLUSTER_ID", 
memberActivatedEvent.getClusterId());
            env.put("STRATOS_MEMBER_ACTIVATED_LB_CLUSTER_ID", lbClusterId);
...
In ExtensionUtils.java
...
public static boolean isRelevantMemberEvent(String serviceName, String 
clusterId, String lbClusterId) {
...


In think the question is if code changes for JIRA STRATOS-697 are still need to 
be supported in 4.1 or not and were missed to be ported to 4.1 or were 
implemented differently - same question might apply to JPA ?

Thanks

Martin

diff --git 
a/./components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/extensions/DefaultExtensionHandler.java
 
b/../../cisco_stratos/stratos/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/extensions/DefaultExtensionHandler.java
index e861819..421deb0 100644
--- 
a/./components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/extensions/DefaultExtensionHandler.java
+++ 
b/../../cisco_stratos/stratos/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/extensions/DefaultExtensionHandler.java
@@ -21,6 +21,7 @@ package org.apache.stratos.cartridge.agent.extensions;
 
 import com.google.gson.Gson;
 import com.google.gson.reflect.TypeToken;
+
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
@@ -37,14 +38,14 @@ import 
org.apache.stratos.messaging.event.instance.notifier.ArtifactUpdatedEvent
 import 
org.apache.stratos.messaging.event.instance.notifier.InstanceCleanupClusterEvent;
 import 
org.apache.stratos.messaging.event.instance.notifier.InstanceCleanupMemberEvent;
 import org.apache.stratos.messaging.event.tenant.CompleteTenantEvent;
-import org.apache.stratos.messaging.event.tenant.SubscriptionDomainAddedEvent;
-import 
org.apache.stratos.messaging.event.tenant.SubscriptionDomainRemovedEvent;
+import 
org.apache.stratos.messaging.event.application.signup.ApplicationSignUpRemovedEvent;
+import 
org.apache.stratos.messaging.event.domain.mapping.DomainMappingAddedEvent;
+import 
org.apache.stratos.messaging.event.domain.mapping.DomainMappingRemovedEvent;
+import org.apache.stratos.messaging.event.tenant.TenantSubscribedEvent;
+import org.apache.stratos.messaging.event.tenant.TenantUnSubscribedEvent;
 import org.apache.stratos.messaging.event.topology.*;
 import org.apache.stratos.messaging.message.receiver.tenant.TenantManager;
-import org.apache.stratos.messaging.message.receiver.topology.TopologyManager;
-import org.wso2.andes.util.Serial;
 
-import java.io.File;
 import java.lang.reflect.Type;
 import java.util.*;
 
@@ -58,7 +59,6 @@ public class DefaultExtensionHandler implements 
ExtensionHandler {
     }.getType();
     private static final Type serviceType = new 
TypeToken<Collection<Service>>() {
     }.getType();
-    private final ArrayList<Member> wkMembers = new ArrayList<Member>();
 
     @Override
     public void onInstanceStartedEvent() {
@@ -66,6 +66,13 @@ public class DefaultExtensionHandler implements 
ExtensionHandler {
             if (log.isDebugEnabled()) {
                 log.debug("Processing instance started event...");
             }
+
+            if (CartridgeAgentConfiguration.getInstance().isMultitenant()) {
+                ExtensionUtils.executeCopyArtifactsExtension(
+                        CartridgeAgentConfiguration.getInstance().getAppPath() 
+ "/repository/deployment/server/",
+                        CartridgeAgentConstants.SUPERTENANT_TEMP_PATH);
+            }
+
             Map<String, String> env = new HashMap<String, String>();
             ExtensionUtils.executeInstanceStartedExtension(env);
         } catch (Exception e) {
@@ -103,6 +110,7 @@ public class DefaultExtensionHandler implements 
ExtensionHandler {
             if (log.isInfoEnabled()) {
                 log.info("Executing git checkout");
             }
+
             RepositoryInformation repoInformation = new 
RepositoryInformation();
             repoInformation.setRepoUsername(repoUsername);
             if (repoPassword == null) {
@@ -110,6 +118,7 @@ public class DefaultExtensionHandler implements 
ExtensionHandler {
             } else {
                 repoInformation.setRepoPassword(repoPassword);
             }
+
             repoInformation.setRepoUrl(repoURL);
             repoInformation.setRepoPath(localRepoPath);
             repoInformation.setTenantId(tenantId);
@@ -120,6 +129,7 @@ public class DefaultExtensionHandler implements 
ExtensionHandler {
             } catch (Exception e) {
                 log.error(e);
             }
+
             Map<String, String> env = new HashMap<String, String>();
             env.put("STRATOS_ARTIFACT_UPDATED_CLUSTER_ID", 
artifactUpdatedEvent.getClusterId());
             env.put("STRATOS_ARTIFACT_UPDATED_TENANT_ID", 
artifactUpdatedEvent.getTenantId());
@@ -129,7 +139,7 @@ public class DefaultExtensionHandler implements 
ExtensionHandler {
             env.put("STRATOS_ARTIFACT_UPDATED_STATUS", 
artifactUpdatedEvent.getStatus());
             ExtensionUtils.executeArtifactsUpdatedExtension(env);
 
-            if (!cloneExists) {
+            if (!cloneExists && !isMultitenant) {
                 // Executed git clone, publish instance activated event
                 CartridgeAgentEventPublisher.publishInstanceActivatedEvent();
             }
@@ -158,7 +168,7 @@ public class DefaultExtensionHandler implements 
ExtensionHandler {
                 log.info("Artifact updating task enabled, update interval: " + 
artifactUpdateInterval + "s");
                 if (autoCommit) {
                     log.info("Auto Commit is turned on ");
-                }  else {
+                } else {
                     log.info("Auto Commit is turned off ");
                 }
 
@@ -173,15 +183,6 @@ public class DefaultExtensionHandler implements 
ExtensionHandler {
             } else {
                 log.info("Artifact updating task disabled");
             }
-            
-            // If supert tenant temp app path is available,
-            // copy the artifacts to carbon server's deployment path
-            String src = CartridgeAgentConstants.SUPERTENANT_TEMP_PATH;
-            if (new File(src).exists() && tenantId.equals("-1234")) {
-                ExtensionUtils.executeCopyArtifactsExtension(src,
-                                       
CartridgeAgentConfiguration.getInstance().getAppPath()+ 
"/repository/deployment/server/");
-            }
-
         }
     }
 
@@ -222,7 +223,6 @@ public class DefaultExtensionHandler implements 
ExtensionHandler {
         CartridgeAgentEventPublisher.publishInstanceReadyToShutdownEvent();
     }
 
-
     @Override
     public void onMemberActivatedEvent(MemberActivatedEvent 
memberActivatedEvent) {
         if (log.isInfoEnabled()) {
@@ -235,95 +235,20 @@ public class DefaultExtensionHandler implements 
ExtensionHandler {
             log.debug("Member activated event msg:" + msg);
         }
 
-        boolean isConsistent = 
ExtensionUtils.checkTopologyConsistency(memberActivatedEvent.getServiceName(),
+        boolean memberInitialized = 
ExtensionUtils.checkTopologyConsistency(memberActivatedEvent.getServiceName(),
                 memberActivatedEvent.getClusterId(), 
memberActivatedEvent.getMemberId());
-        if (!isConsistent) {
+        if (!memberInitialized) {
             if (log.isErrorEnabled()) {
-                log.error("Topology is inconsistent...failed to execute member 
activated event");
+                log.error("Member has not initialized. Failed to execute 
member activated event");
             }
             return;
         }
+        
+        Map<String, String> env = new HashMap<String, String>();
 
-        Topology topology = TopologyManager.getTopology();
-        Service service = 
topology.getService(memberActivatedEvent.getServiceName());
-        Cluster cluster = 
service.getCluster(memberActivatedEvent.getClusterId());
-        String lbClusterId = 
cluster.getMember(memberActivatedEvent.getMemberId()).getLbClusterId();
-        Member member = cluster.getMember(memberActivatedEvent.getMemberId());
-
-        // check whether member activated event is received from the same 
cluster, lbcluster or service group
-        if 
(ExtensionUtils.isRelevantMemberEvent(memberActivatedEvent.getServiceName(), 
memberActivatedEvent.getClusterId(), lbClusterId)) {
-            Map<String, String> env = new HashMap<String, String>();
-            env.put("STRATOS_MEMBER_ACTIVATED_MEMBER_IP", 
memberActivatedEvent.getMemberIp());
-            env.put("STRATOS_MEMBER_ACTIVATED_MEMBER_ID", 
memberActivatedEvent.getMemberId());
-            env.put("STRATOS_MEMBER_ACTIVATED_CLUSTER_ID", 
memberActivatedEvent.getClusterId());
-            env.put("STRATOS_MEMBER_ACTIVATED_LB_CLUSTER_ID", lbClusterId);
-            env.put("STRATOS_MEMBER_ACTIVATED_NETWORK_PARTITION_ID", 
memberActivatedEvent.getNetworkPartitionId());
-            env.put("STRATOS_MEMBER_ACTIVATED_SERVICE_NAME", 
memberActivatedEvent.getServiceName());
-
-            Collection<Port> ports = memberActivatedEvent.getPorts();
-            String ports_str = "";
-            for (Port port : ports) {
-                ports_str += port.getProtocol() + "," + port.getValue() + "," 
+ port.getProxy() + "|";
-            }
-            env.put("STRATOS_MEMBER_ACTIVATED_PORTS", ports_str);
-
-            Collection<Member> members = cluster.getMembers();
-            env.put("STRATOS_MEMBER_ACTIVATED_MEMBER_LIST_JSON", 
gson.toJson(members, memberType));
-            String[] memberIps = ExtensionUtils.getLbMemberIp(lbClusterId);
-            if (memberIps != null && memberIps.length > 1) {
-                env.put("STRATOS_MEMBER_ACTIVATED_LB_IP", memberIps[0]);
-                env.put("STRATOS_MEMBER_ACTIVATED_LB_PUBLIC_IP", memberIps[1]);
-            }
-            env.put("STRATOS_TOPOLOGY_JSON", 
gson.toJson(topology.getServices(), serviceType));
-            ExtensionUtils.addProperties(service.getProperties(), env, 
"MEMBER_ACTIVATED_SERVICE_PROPERTY");
-            ExtensionUtils.addProperties(cluster.getProperties(), env, 
"MEMBER_ACTIVATED_CLUSTER_PROPERTY");
-            ExtensionUtils.addProperties(member.getProperties(), env, 
"MEMBER_ACTIVATED_MEMBER_PROPERTY");
-            
-            // if clustering is enabled check activated member is WK member
-            String flagClustering = 
CartridgeAgentConfiguration.getInstance().getIsClustered();
-
-            // if WK member is re-spawned, update axis2.xml
-            if (member.getProperties() != null && 
"true".equals(member.getProperties().getProperty(CartridgeAgentConstants.CLUSTERING_PRIMARY_KEY))
 &&
-                    flagClustering != null && 
"true".equals(flagClustering.toLowerCase())){
-               if(log.isDebugEnabled()) {
-                       log.debug(" If WK member is re-spawned, update 
axis2.xml ");
-               }
-                boolean hasWKIpChanged = true;
-                for (Member m : this.wkMembers){
-                    if 
(m.getMemberIp().equals(memberActivatedEvent.getMemberIp())){
-                        hasWKIpChanged = false;
-                    }
-                }
-                if(log.isDebugEnabled()) {
-                       log.debug(" hasWKIpChanged " + hasWKIpChanged);
-                }
-                int minCount = 
Integer.parseInt(CartridgeAgentConfiguration.getInstance().getMinCount());      
          
-                boolean isWKMemberGroupReady = isWKMemberGroupReady(env, 
minCount);
-                if(log.isDebugEnabled()) {
-                       log.debug("minCount " + minCount);
-                       log.debug("isWKMemberGroupReady " + 
isWKMemberGroupReady);
-                }
-                if (hasWKIpChanged && isWKMemberGroupReady){
-                       if(log.isDebugEnabled()) {
-                               log.debug("Setting env var STRATOS_UPDATE_WK_IP 
to true");
-                       }
-                    env.put("STRATOS_UPDATE_WK_IP", "true");
-                }
-            }      
-            if(log.isDebugEnabled()) {
-               log.debug("Setting env var STRATOS_CLUSTERING to " + 
flagClustering);
-            }
-            env.put("STRATOS_CLUSTERING", flagClustering);
-            env.put("STRATOS_WK_MEMBER_COUNT", 
CartridgeAgentConfiguration.getInstance().getMinCount());
-            ExtensionUtils.executeMemberActivatedExtension(env);
-        } else {
-            if (log.isDebugEnabled()) {
-                log.debug("Member activated event is not relevant...skipping 
agent extension");
-            }
-        }
+        ExtensionUtils.executeMemberActivatedExtension(env);
     }
-
-
+    
     @Override
     public void onCompleteTopologyEvent(CompleteTopologyEvent 
completeTopologyEvent) {
         if (log.isDebugEnabled()) {
@@ -333,7 +258,15 @@ public class DefaultExtensionHandler implements 
ExtensionHandler {
         String serviceNameInPayload = 
CartridgeAgentConfiguration.getInstance().getServiceName();
         String clusterIdInPayload = 
CartridgeAgentConfiguration.getInstance().getClusterId();
         String memberIdInPayload = 
CartridgeAgentConfiguration.getInstance().getMemberId();
-        ExtensionUtils.checkTopologyConsistency(serviceNameInPayload, 
clusterIdInPayload, memberIdInPayload);
+
+
+        boolean isConsistent = 
ExtensionUtils.checkTopologyConsistency(serviceNameInPayload, 
clusterIdInPayload, memberIdInPayload);
+        if (!isConsistent) {
+            // if this member isn't there in the complete topology
+            return;
+        } else {
+            CartridgeAgentConfiguration.getInstance().setInitialized(true);
+        }
 
         Topology topology = completeTopologyEvent.getTopology();
         Service service = topology.getService(serviceNameInPayload);
@@ -346,6 +279,46 @@ public class DefaultExtensionHandler implements 
ExtensionHandler {
     }
 
     @Override
+    public void onMemberInitializedEvent(MemberInitializedEvent 
memberInitializedEvent) {
+        if (log.isDebugEnabled()) {
+            log.debug("Member initialized event received");
+        }
+        String serviceNameInPayload = 
CartridgeAgentConfiguration.getInstance().getServiceName();
+        String clusterIdInPayload = 
CartridgeAgentConfiguration.getInstance().getClusterId();
+        String memberIdInPayload = 
CartridgeAgentConfiguration.getInstance().getMemberId();
+
+        Member activatedMember = 
ExtensionUtils.getMemberFromTopology(serviceNameInPayload, clusterIdInPayload, 
memberIdInPayload);
+        if (activatedMember == null) {
+            // if this member isn't there in the complete topology
+               if (log.isDebugEnabled()) {
+                log.debug("Member does not exist in topology, or not in 
initialized state.");
+            }
+        } else {
+               if (log.isDebugEnabled()) {
+                log.debug("Member has initialized, topology is consistent, 
agent is initialized");
+            }
+
+            CartridgeAgentConfiguration.getInstance().setInitialized(true);
+        }
+    }
+
+    @Override
+    public void onMemberCreatedEvent(MemberCreatedEvent memberCreatedEvent) {
+        // listen to this just to get updated faster about the member 
initialization
+        if (log.isDebugEnabled()) {
+            log.debug("Instance Spawned event received");
+        }
+        String serviceNameInPayload = 
CartridgeAgentConfiguration.getInstance().getServiceName();
+        String clusterIdInPayload = 
CartridgeAgentConfiguration.getInstance().getClusterId();
+        String memberIdInPayload = 
CartridgeAgentConfiguration.getInstance().getMemberId();
+
+        boolean memberInitialized = 
ExtensionUtils.checkTopologyConsistency(serviceNameInPayload, 
clusterIdInPayload, memberIdInPayload);
+        if (memberInitialized) {
+            CartridgeAgentConfiguration.getInstance().setInitialized(true);
+        }
+    }
+
+    @Override
     public void onCompleteTenantEvent(CompleteTenantEvent completeTenantEvent) 
{
         if (log.isDebugEnabled()) {
             log.debug("Complete tenant event received");
@@ -371,50 +344,18 @@ public class DefaultExtensionHandler implements 
ExtensionHandler {
             log.debug("Member terminated event msg:" + msg);
         }
 
-        boolean isConsistent = 
ExtensionUtils.checkTopologyConsistency(memberTerminatedEvent.getServiceName(),
+        boolean memberInitialized = 
ExtensionUtils.checkTopologyConsistency(memberTerminatedEvent.getServiceName(),
                 memberTerminatedEvent.getClusterId(), 
memberTerminatedEvent.getMemberId());
-        if (!isConsistent) {
+        if (!memberInitialized) {
             if (log.isErrorEnabled()) {
-                log.error("Topology is inconsistent...failed to execute member 
terminated event");
+                log.error("Member has not initialized. Failed to execute 
member terminated event");
             }
             return;
         }
+        
+        Map<String, String> env = new HashMap<String, String>();
 
-        Topology topology = TopologyManager.getTopology();
-        Service service = 
topology.getService(memberTerminatedEvent.getServiceName());
-        Cluster cluster = 
service.getCluster(memberTerminatedEvent.getClusterId());
-        Member terminatedMember = 
cluster.getMember(memberTerminatedEvent.getMemberId());
-        String lbClusterId = 
cluster.getMember(memberTerminatedEvent.getClusterId()).getLbClusterId();
-
-        // check whether terminated member is within the same cluster, LB 
cluster or service group
-        if 
(ExtensionUtils.isRelevantMemberEvent(memberTerminatedEvent.getServiceName(),
-                memberTerminatedEvent.getClusterId(), lbClusterId)) {
-
-            Collection<Member> members = cluster.getMembers();
-            Map<String, String> env = new HashMap<String, String>();
-            env.put("STRATOS_MEMBER_TERMINATED_MEMBER_IP", 
terminatedMember.getMemberIp());
-            env.put("STRATOS_MEMBER_TERMINATED_MEMBER_ID", 
memberTerminatedEvent.getMemberId());
-            env.put("STRATOS_MEMBER_TERMINATED_CLUSTER_ID", 
memberTerminatedEvent.getClusterId());
-            env.put("STRATOS_MEMBER_TERMINATED_LB_CLUSTER_ID", lbClusterId);
-            env.put("STRATOS_MEMBER_TERMINATED_NETWORK_PARTITION_ID", 
memberTerminatedEvent.getNetworkPartitionId());
-            env.put("STRATOS_MEMBER_TERMINATED_SERVICE_NAME", 
memberTerminatedEvent.getServiceName());
-            env.put("STRATOS_MEMBER_TERMINATED_MEMBER_LIST_JSON", 
gson.toJson(members, memberType));
-            env.put("STRATOS_TOPOLOGY_JSON", 
gson.toJson(topology.getServices(), serviceType));
-            String[] memberIps = ExtensionUtils.getLbMemberIp(lbClusterId);
-            if (memberIps != null && memberIps.length > 1) {
-                env.put("STRATOS_MEMBER_TERMINATED_LB_IP", memberIps[0]);
-                env.put("STRATOS_MEMBER_TERMINATED_LB_PUBLIC_IP", 
memberIps[1]);
-            }
-
-            ExtensionUtils.addProperties(service.getProperties(), env, 
"MEMBER_TERMINATED_SERVICE_PROPERTY");
-            ExtensionUtils.addProperties(cluster.getProperties(), env, 
"MEMBER_TERMINATED_CLUSTER_PROPERTY");
-            ExtensionUtils.addProperties(terminatedMember.getProperties(), 
env, "MEMBER_TERMINATED_MEMBER_PROPERTY");
-            ExtensionUtils.executeMemberTerminatedExtension(env);
-        } else {
-            if (log.isDebugEnabled()) {
-                log.debug("Member terminated event is not relevant...skipping 
agent extension");
-            }
-        }
+        ExtensionUtils.executeMemberTerminatedExtension(env);
     }
 
     @Override
@@ -429,49 +370,18 @@ public class DefaultExtensionHandler implements 
ExtensionHandler {
             log.debug("Member suspended event msg:" + msg);
         }
 
-        boolean isConsistent = 
ExtensionUtils.checkTopologyConsistency(memberSuspendedEvent.getServiceName(),
+        boolean memberInitialized = 
ExtensionUtils.checkTopologyConsistency(memberSuspendedEvent.getServiceName(),
                 memberSuspendedEvent.getClusterId(), 
memberSuspendedEvent.getMemberId());
-        if (!isConsistent) {
+        if (!memberInitialized) {
             if (log.isErrorEnabled()) {
-                log.error("Topology is inconsistent...failed to execute member 
suspended event");
+                log.error("Member has not initialized. Failed to execute 
member suspended event");
             }
             return;
         }
+        
+        Map<String, String> env = new HashMap<String, String>();
 
-        String clusterId = memberSuspendedEvent.getClusterId();
-        Topology topology = TopologyManager.getTopology();
-        Service service = 
topology.getService(memberSuspendedEvent.getServiceName());
-        Cluster cluster = 
service.getCluster(memberSuspendedEvent.getClusterId());
-        Member suspendedMember = 
cluster.getMember(memberSuspendedEvent.getMemberId());
-        String lbClusterId = 
cluster.getMember(memberSuspendedEvent.getClusterId()).getLbClusterId();
-
-        // check whether new member is in the same member cluster or LB 
cluster of this instance
-        if 
(ExtensionUtils.isRelevantMemberEvent(memberSuspendedEvent.getServiceName(),
-                memberSuspendedEvent.getClusterId(), lbClusterId)) {
-            Collection<Member> members = cluster.getMembers();
-            Map<String, String> env = new HashMap<String, String>();
-            env.put("STRATOS_MEMBER_SUSPENDED_MEMBER_IP", 
suspendedMember.getMemberIp());
-            env.put("STRATOS_MEMBER_SUSPENDED_MEMBER_ID", 
memberSuspendedEvent.getMemberId());
-            env.put("STRATOS_MEMBER_SUSPENDED_CLUSTER_ID", 
memberSuspendedEvent.getClusterId());
-            env.put("STRATOS_MEMBER_SUSPENDED_LB_CLUSTER_ID", lbClusterId);
-            env.put("STRATOS_MEMBER_SUSPENDED_NETWORK_PARTITION_ID", 
memberSuspendedEvent.getNetworkPartitionId());
-            env.put("STRATOS_MEMBER_SUSPENDED_SERVICE_NAME", 
memberSuspendedEvent.getServiceName());
-            env.put("STRATOS_MEMBER_SUSPENDED_MEMBER_LIST_JSON", 
gson.toJson(members, memberType));
-            env.put("STRATOS_TOPOLOGY_JSON", 
gson.toJson(topology.getServices(), serviceType));
-            String[] memberIps = ExtensionUtils.getLbMemberIp(lbClusterId);
-            if (memberIps != null && memberIps.length > 1) {
-                env.put("STRATOS_MEMBER_SUSPENDED_LB_IP", memberIps[0]);
-                env.put("STRATOS_MEMBER_SUSPENDED_LB_PUBLIC_IP", memberIps[1]);
-            }
-            ExtensionUtils.addProperties(service.getProperties(), env, 
"MEMBER_SUSPENDED_SERVICE_PROPERTY");
-            ExtensionUtils.addProperties(cluster.getProperties(), env, 
"MEMBER_SUSPENDED_CLUSTER_PROPERTY");
-            ExtensionUtils.addProperties(suspendedMember.getProperties(), env, 
"MEMBER_SUSPENDED_MEMBER_PROPERTY");
-            ExtensionUtils.executeMemberSuspendedExtension(env);
-        } else {
-            if (log.isDebugEnabled()) {
-                log.debug("Member suspended event is not relevant...skipping 
agent extension");
-            }
-        }
+        ExtensionUtils.executeMemberSuspendedExtension(env);
     }
 
     @Override
@@ -486,373 +396,18 @@ public class DefaultExtensionHandler implements 
ExtensionHandler {
             log.debug("Member started event msg:" + msg);
         }
 
-        boolean isConsistent = 
ExtensionUtils.checkTopologyConsistency(memberStartedEvent.getServiceName(),
+        boolean memberInitialized = 
ExtensionUtils.checkTopologyConsistency(memberStartedEvent.getServiceName(),
                 memberStartedEvent.getClusterId(), 
memberStartedEvent.getMemberId());
-        if (!isConsistent) {
+        if (!memberInitialized) {
             if (log.isErrorEnabled()) {
-                log.error("Topology is inconsistent...failed to execute member 
started event");
+                log.error("Member has not initialized. Failed to execute 
member started event");
             }
             return;
         }
-        String clusterId = memberStartedEvent.getClusterId();
-        Topology topology = TopologyManager.getTopology();
-        Service service = 
topology.getService(memberStartedEvent.getServiceName());
-        Cluster cluster = 
service.getCluster(memberStartedEvent.getClusterId());
-        Member startedMember = 
cluster.getMember(memberStartedEvent.getMemberId());
-        String lbClusterId = 
cluster.getMember(memberStartedEvent.getMemberId()).getLbClusterId();
-
-        // check whether new member is in the same member cluster or LB 
cluster of this instance
-        if 
(ExtensionUtils.isRelevantMemberEvent(memberStartedEvent.getServiceName(),
-                memberStartedEvent.getClusterId(), lbClusterId)) {
-            Collection<Member> members = cluster.getMembers();
-            Map<String, String> env = new HashMap<String, String>();
-            env.put("STRATOS_MEMBER_STARTED_MEMBER_IP", 
startedMember.getMemberIp());
-            env.put("STRATOS_MEMBER_STARTED_MEMBER_ID", 
memberStartedEvent.getMemberId());
-            env.put("STRATOS_MEMBER_STARTED_CLUSTER_ID", 
memberStartedEvent.getClusterId());
-            env.put("STRATOS_MEMBER_STARTED_LB_CLUSTER_ID", lbClusterId);
-            env.put("STRATOS_MEMBER_STARTED_NETWORK_PARTITION_ID", 
memberStartedEvent.getNetworkPartitionId());
-            env.put("STRATOS_MEMBER_STARTED_SERVICE_NAME", 
memberStartedEvent.getServiceName());
-            env.put("STRATOS_MEMBER_STARTED_MEMBER_LIST_JSON", 
gson.toJson(members, memberType));
-            env.put("STRATOS_MEMBER_STARTED_TOPOLOGY_JSON", 
gson.toJson(topology.getServices(), serviceType));
-            String[] memberIps = ExtensionUtils.getLbMemberIp(lbClusterId);
-            if (memberIps != null && memberIps.length > 1) {
-                env.put("STRATOS_MEMBER_STARTED_LB_IP", memberIps[0]);
-                env.put("STRATOS_MEMBER_STARTED_LB_PUBLIC_IP", memberIps[1]);
-            }
-            ExtensionUtils.addProperties(service.getProperties(), env, 
"MEMBER_STARTED_SERVICE_PROPERTY");
-            ExtensionUtils.addProperties(cluster.getProperties(), env, 
"MEMBER_STARTED_CLUSTER_PROPERTY");
-            ExtensionUtils.addProperties(startedMember.getProperties(), env, 
"MEMBER_STARTED_MEMBER_PROPERTY");
-            ExtensionUtils.executeMemberStartedExtension(env);
-        } else {
-            if (log.isDebugEnabled()) {
-                log.debug("Member started event is not relevant...skipping 
agent extension");
-            }
-        }
-    }
-
-    private boolean isWKMemberGroupReady(Map<String, String> envParameters, 
int minCount) {
-        Topology topology = TopologyManager.getTopology();
-        if (topology == null || !topology.isInitialized()) {
-            return false;
-        }
-        String serviceGroupInPayload = 
CartridgeAgentConfiguration.getInstance().getServiceGroup();
-        if (serviceGroupInPayload != null) {
-            envParameters.put("STRATOS_SERVICE_GROUP", serviceGroupInPayload);
-        }
-
-        // clustering logic for apimanager
-        if (serviceGroupInPayload != null && 
serviceGroupInPayload.equals("apim")) {
-
-            // handle apistore and publisher case
-            if 
(CartridgeAgentConfiguration.getInstance().getServiceName().equals("apistore") 
||
-                    
CartridgeAgentConfiguration.getInstance().getServiceName().equals("publisher")) 
{
-
-                Collection<Cluster> apistoreClusterCollection = 
topology.getService("apistore").getClusters();
-                Collection<Cluster> publisherClusterCollection = 
topology.getService("publisher").getClusters();
-
-                List<Member> apistoreMemberList = new ArrayList<Member>();
-                for (Member member : 
apistoreClusterCollection.iterator().next().getMembers()) {
-                    if (member.getStatus().equals(MemberStatus.Starting) || 
member.getStatus().equals(MemberStatus.Activated)) {
-                        apistoreMemberList.add(member);
-                        this.wkMembers.add(member);
-                    }
-                }
-                if (apistoreMemberList.isEmpty()) {
-                    if (log.isDebugEnabled()) {
-                        log.debug("API Store members not yet created");
-                    }
-                    return false;
-                }
-                Member apistoreMember = apistoreMemberList.get(0);
-                envParameters.put("STRATOS_WK_APISTORE_MEMBER_IP", 
apistoreMember.getMemberIp());
-                if (log.isDebugEnabled()) {
-                    log.debug("STRATOS_WK_APISTORE_MEMBER_IP: " + 
apistoreMember.getMemberIp());
-                }
-
-                List<Member> publisherMemberList = new ArrayList<Member>();
-                for (Member member : 
publisherClusterCollection.iterator().next().getMembers()) {
-                    if (member.getStatus().equals(MemberStatus.Starting) || 
member.getStatus().equals(MemberStatus.Activated)) {
-                        publisherMemberList.add(member);
-                        this.wkMembers.add(member);
-                    }
-                }
-                if (publisherMemberList.isEmpty()) {
-                    if (log.isDebugEnabled()) {
-                        log.debug("API Publisher members not yet created");
-                    }
-                    return false;
-                }
-                Member publisherMember = publisherMemberList.get(0);
-                envParameters.put("STRATOS_WK_PUBLISHER_MEMBER_IP", 
publisherMember.getMemberIp());
-                if (log.isDebugEnabled()) {
-                    log.debug("STRATOS_WK_PUBLISHER_MEMBER_IP: " + 
publisherMember.getMemberIp());
-                }
-
-                return true;
-
-            } else if 
(CartridgeAgentConfiguration.getInstance().getServiceName().equals("gatewaymgt")
 ||
-                    
CartridgeAgentConfiguration.getInstance().getServiceName().equals("gateway")) {
-
-                if (CartridgeAgentConfiguration.getInstance().getDeployment() 
!= null) {
-                    // check if deployment is Manager Worker separated
-                    if 
(CartridgeAgentConfiguration.getInstance().getDeployment().equalsIgnoreCase(CartridgeAgentConstants.DEPLOYMENT_MANAGER)
 ||
-                            
CartridgeAgentConfiguration.getInstance().getDeployment().equalsIgnoreCase(CartridgeAgentConstants.DEPLOYMENT_WORKER))
 {
-
-                        log.info("Deployment pattern for the node: " + 
CartridgeAgentConfiguration.getInstance().getDeployment());
-                        envParameters.put("DEPLOYMENT", 
CartridgeAgentConfiguration.getInstance().getDeployment());
-                        // check if WKA members of Manager Worker separated 
deployment is ready
-                        return isManagerWorkerWKAGroupReady(envParameters);
-                    }
-                }
-
-
-            } else if 
(CartridgeAgentConfiguration.getInstance().getServiceName().equals("keymanager"))
 {
-                return true;
-            }
-        } else {
-
-            if (CartridgeAgentConfiguration.getInstance().getDeployment() != 
null) {
-                // check if deployment is Manager Worker separated
-                if 
(CartridgeAgentConfiguration.getInstance().getDeployment().equalsIgnoreCase(CartridgeAgentConstants.DEPLOYMENT_MANAGER)
 ||
-                        
CartridgeAgentConfiguration.getInstance().getDeployment().equalsIgnoreCase(CartridgeAgentConstants.DEPLOYMENT_WORKER))
 {
-
-                    log.info("Deployment pattern for the node: " + 
CartridgeAgentConfiguration.getInstance().getDeployment());
-                    envParameters.put("DEPLOYMENT", 
CartridgeAgentConfiguration.getInstance().getDeployment());
-                    // check if WKA members of Manager Worker separated 
deployment is ready
-                    return isManagerWorkerWKAGroupReady(envParameters);
-                }
-            }
-
-            String serviceNameInPayload = 
CartridgeAgentConfiguration.getInstance().getServiceName();
-            String clusterIdInPayload = 
CartridgeAgentConfiguration.getInstance().getClusterId();
-            Service service = topology.getService(serviceNameInPayload);
-            Cluster cluster = service.getCluster(clusterIdInPayload);
-
-            List<Member> wkMembers = new ArrayList<Member>();
-            for (Member member : cluster.getMembers()) {
-                if (member.getProperties() != null &&
-                        member.getProperties().containsKey("PRIMARY") &&
-                        
member.getProperties().getProperty("PRIMARY").toLowerCase().equals("true") &&
-                        (member.getStatus().equals(MemberStatus.Starting) || 
member.getStatus().equals(MemberStatus.Activated))
-                        ) {
-                    wkMembers.add(member);
-                    this.wkMembers.add(member);
-                    if (log.isDebugEnabled()) {
-                        log.debug("Found WKA: STRATOS_WK_MEMBER_IP: " + 
member.getMemberIp());
-                    }
-                }
-            }
-            if (wkMembers.size() >= minCount) {
-                int idx = 0;
-                for (Member member : wkMembers) {
-                    envParameters.put("STRATOS_WK_MEMBER_" + idx + "_IP", 
member.getMemberIp());
-                    if (log.isDebugEnabled()) {
-                        log.debug("STRATOS_WK_MEMBER_" + idx + "_IP: " + 
member.getMemberIp());
-                    }
-                    idx++;
-                }
-                return true;
-            }
-        }
-        return false;
-    }
-
-    // generic worker manager separated clustering logic
-    private boolean isManagerWorkerWKAGroupReady (Map<String, String> 
envParameters) {
-
-        // for this, we need both manager cluster service name and worker 
cluster service name
-        String managerServiceName =  
CartridgeAgentConfiguration.getInstance().getManagerServiceName();
-        String workerServiceName =  
CartridgeAgentConfiguration.getInstance().getWorkerServiceName();
-
-        // managerServiceName and workerServiceName both should not be null 
/empty
-        if (managerServiceName == null || managerServiceName.isEmpty()) {
-            log.error("Manager service name [ "+ managerServiceName +" ] is 
invalid");
-            return false;
-        }
-        if (workerServiceName == null || workerServiceName.isEmpty()) {
-            log.error("Worker service name [ "+ workerServiceName +" ] is 
invalid");
-            return false;
-        }
-
-        boolean minManagerInstancesAvailable = false;
-        boolean minWorkerInstancesAvailable = false;
-
-        TopologyManager.acquireReadLock();
-
-        try {
-            Service managerService = 
TopologyManager.getTopology().getService(managerServiceName);
-            Service workerService = 
TopologyManager.getTopology().getService(workerServiceName);
-
-            if (managerService == null) {
-                log.warn("Service [ "+managerServiceName+" ] is not found");
-                return false;
-            }
-
-            if (workerService == null) {
-                log.warn("Service [ "+workerServiceName+" ] is not found");
-                return false;
-            }
-
-            // manager clusters
-            Collection<Cluster> managerClusters = managerService.getClusters();
-            if (managerClusters == null || managerClusters.isEmpty()) {
-                log.warn("No clusters found for service [ "+ 
managerServiceName + " ]");
-                return false;
-            }
-
-            int managerMinInstanceCount = 1;
-            boolean managerMinInstanceCountFound = false;
-
-            List<Member> managerWkaMembers = new ArrayList<Member>();
-            for (Member member : 
managerClusters.iterator().next().getMembers()) {
-
-                if (member.getProperties() != null && 
member.getProperties().containsKey("PRIMARY") &&
-                            
member.getProperties().getProperty("PRIMARY").toLowerCase().equals("true") &&
-                            (member.getStatus().equals(MemberStatus.Starting) 
|| member.getStatus().equals(MemberStatus.Activated))) {
-
-                    managerWkaMembers.add(member);
-                    this.wkMembers.add(member);
-                    
-                    // get the min instance count
-                    if (!managerMinInstanceCountFound) {
-                        managerMinInstanceCount = 
getMinInstanceCountFromMemberProperties(member);
-                        managerMinInstanceCountFound = true;
-                        log.info("Manager min instance count: " + 
managerMinInstanceCount);
-
-                    }
-                }
-            }
-
-            if (managerWkaMembers.size() >= managerMinInstanceCount) {
-                minManagerInstancesAvailable = true;
-                int idx = 0;
-                for (Member member : managerWkaMembers) {
-                    envParameters.put("STRATOS_WK_MANAGER_MEMBER_" + idx + 
"_IP", member.getMemberIp());
-                    if(log.isDebugEnabled()) {
-                        log.debug("STRATOS_WK_MANAGER_MEMBER_" + idx + "_IP: " 
+ member.getMemberIp());
-                    }
-                    idx++;
-                }
-
-                envParameters.put("STRATOS_WK_MANAGER_MEMBER_COUNT", 
Integer.toString(managerMinInstanceCount));
-            }
-            
-            // If all the manager members are non primary and is greate than 
or equal to mincount, 
-            // minManagerInstancesAvailable should be true
-            boolean allManagersNonPrimary = true;
-            for (Member member : 
managerClusters.iterator().next().getMembers()) {
-               
-               // get the min instance count
-                if (!managerMinInstanceCountFound) {
-                    managerMinInstanceCount = 
getMinInstanceCountFromMemberProperties(member);
-                    managerMinInstanceCountFound = true;
-                    log.info("Manager min instance count when 
allManagersNonPrimary true : " + managerMinInstanceCount);
-                }
-                
-                if (member.getProperties() != null && 
member.getProperties().containsKey("PRIMARY") &&
-                            
member.getProperties().getProperty("PRIMARY").toLowerCase().equals("true") ) {
-                       allManagersNonPrimary = false;
-                       break;
-                }
-            }
-            if(log.isDebugEnabled()){
-               log.debug(" allManagerNonPrimary & managerMinInstanceCount [" 
-                        + allManagersNonPrimary + "], [" + 
managerMinInstanceCount+"] ");
-            }
-                       if (allManagersNonPrimary &&  managerClusters.size() >= 
managerMinInstanceCount) {
-                               minManagerInstancesAvailable = true;
-                       }
-
-            // worker cluster
-            Collection<Cluster> workerClusters = workerService.getClusters();
-            if (workerClusters == null || workerClusters.isEmpty()) {
-                log.warn("No clusters found for service [ "+ workerServiceName 
+ " ]");
-                return false;
-            }
-
-            int workerMinInstanceCount = 1;
-            boolean workerMinInstanceCountFound = false;
-
-            List<Member> workerWkaMembers = new ArrayList<Member>();
-            for (Member member : 
workerClusters.iterator().next().getMembers()) {
-               if (log.isDebugEnabled()) {
-                       log.debug("Checking member : " + member.getMemberId());
-               }
-                if (member.getProperties() != null &&
-                        member.getProperties().containsKey("PRIMARY") &&
-                        
member.getProperties().getProperty("PRIMARY").toLowerCase().equals("true") &&
-                        (member.getStatus().equals(MemberStatus.Starting) || 
member.getStatus().equals(MemberStatus.Activated))) {
-                       if (log.isDebugEnabled()) {
-                               log.debug("Added worker member " + 
member.getMemberId());
-                       }
-                    workerWkaMembers.add(member);
-                    this.wkMembers.add(member);
-
-                    // get the min instance count
-                    if (!workerMinInstanceCountFound) {
-                        workerMinInstanceCount = 
getMinInstanceCountFromMemberProperties(member);
-                        workerMinInstanceCountFound = true;
-                        if (log.isDebugEnabled()) {
-                            log.debug("Worker min instance count: " + 
workerMinInstanceCount);
-                        }
-                    }
-                }
-            }
-
-            if (workerWkaMembers.size() >= workerMinInstanceCount) {
-                minWorkerInstancesAvailable = true;
-                int idx = 0;
-                for (Member member : workerWkaMembers) {
-                    envParameters.put("STRATOS_WK_WORKER_MEMBER_" + idx + 
"_IP", member.getMemberIp());
-                    if (log.isDebugEnabled()) {
-                        log.debug("STRATOS_WK_WORKER_MEMBER_" + idx + "_IP: " 
+ member.getMemberIp());
-                    }
-                    idx++;
-                }
-
-                envParameters.put("STRATOS_WK_WORKER_MEMBER_COUNT", 
Integer.toString(workerMinInstanceCount));
-            }
-
-        } finally {
-            TopologyManager.releaseReadLock();
-        }
-
-        if (log.isDebugEnabled()) {
-               log.debug(" Returnning values minManagerInstancesAvailable && 
minWorkerInstancesAvailable [" +
-                       minManagerInstancesAvailable + "],  ["+ 
minWorkerInstancesAvailable+"] ");
-        }
-        return (minManagerInstancesAvailable && minWorkerInstancesAvailable);
-    }
-
-
-    private int getMinInstanceCountFromMemberProperties (Member member) {
-
-        // default value is 1
-        int minInstanceCount = 1;
-
-        if(member.getProperties().containsKey("MIN_COUNT")) {
-            minInstanceCount = 
Integer.parseInt(member.getProperties().getProperty("MIN_COUNT"));
-        }
-
-        return minInstanceCount;
-    }
-
-    private void waitForWKMembers(Map<String, String> envParameters) {
-        int minCount = 
Integer.parseInt(CartridgeAgentConfiguration.getInstance().getMinCount());
-        boolean isWKMemberGroupReady = false;
-        while (!isWKMemberGroupReady) {
-            if (log.isInfoEnabled()) {
-                log.info(String.format("Waiting for %d well known members...", 
minCount));
-            }
-            try {
-                Thread.sleep(5000);
-            } catch (InterruptedException e) {
-            }
+        
+        Map<String, String> env = new HashMap<String, String>();
 
-            TopologyManager.acquireReadLock();
-            isWKMemberGroupReady = isWKMemberGroupReady(envParameters, 
minCount);
-            TopologyManager.releaseReadLock();
-        }
+        ExtensionUtils.executeMemberStartedExtension(env);
     }
 
     @Override
@@ -867,51 +422,18 @@ public class DefaultExtensionHandler implements 
ExtensionHandler {
         String clusterIdInPayload = 
CartridgeAgentConfiguration.getInstance().getClusterId();
         String memberIdInPayload = 
CartridgeAgentConfiguration.getInstance().getMemberId();
 
-        try {
-            TopologyManager.acquireReadLock();
-            boolean isConsistent = 
ExtensionUtils.checkTopologyConsistency(serviceNameInPayload,
-                    clusterIdInPayload, memberIdInPayload);
-            if (!isConsistent) {
-                if (log.isErrorEnabled()) {
-                    log.error("Topology is inconsistent...failed to execute 
start server event");
-                }
-                return;
-            }
-            Topology topology = TopologyManager.getTopology();
-            Service service = topology.getService(serviceNameInPayload);
-            Cluster cluster = service.getCluster(clusterIdInPayload);
-
-            // store environment variable parameters to be passed to extension 
shell script
-            Map<String, String> env = new HashMap<String, String>();
-
-            // if clustering is enabled wait until all well known members have 
started
-            String flagClustering = 
CartridgeAgentConfiguration.getInstance().getIsClustered();
-            if (flagClustering != null && 
flagClustering.toLowerCase().equals("true")) {
-                env.put("STRATOS_CLUSTERING", "true");
-                env.put("STRATOS_WK_MEMBER_COUNT", 
CartridgeAgentConfiguration.getInstance().getMinCount());
-                if 
(CartridgeAgentConfiguration.getInstance().getIsPrimary().toLowerCase().equals("true"))
 {
-                    env.put("STRATOS_PRIMARY", "true");
-                } else {
-                    env.put("STRATOS_PRIMARY", "false");
-                }
-                TopologyManager.releaseReadLock();
-                waitForWKMembers(env);
-                if (log.isInfoEnabled()) {
-                    log.info(String.format("All well known members have 
started! Resuming start server extension..."));
-                }
-                TopologyManager.acquireReadLock();
-            }
-
-            env.put("STRATOS_TOPOLOGY_JSON", 
gson.toJson(topology.getServices(), serviceType));
-            env.put("STRATOS_MEMBER_LIST_JSON", 
gson.toJson(cluster.getMembers(), memberType));
-            ExtensionUtils.executeStartServersExtension(env);
-        } catch (Exception e) {
+        boolean isConsistent = 
ExtensionUtils.checkTopologyConsistency(serviceNameInPayload,
+                clusterIdInPayload, memberIdInPayload);
+        if (!isConsistent) {
             if (log.isErrorEnabled()) {
-                log.error("Error processing start servers event", e);
+                log.error("Topology is inconsistent...Failed to execute start 
server event");
             }
-        } finally {
-            TopologyManager.releaseReadLock();
+            return;
         }
+        
+        Map<String, String> env = new HashMap<String, String>();
+
+        ExtensionUtils.executeStartServersExtension(env);
     }
 
     @Override
@@ -920,30 +442,32 @@ public class DefaultExtensionHandler implements 
ExtensionHandler {
     }
 
     @Override
-    public void onSubscriptionDomainAddedEvent(SubscriptionDomainAddedEvent 
subscriptionDomainAddedEvent) {
-        String tenantDomain = 
findTenantDomain(subscriptionDomainAddedEvent.getTenantId());
+    public void onDomainMappingAddedEvent(DomainMappingAddedEvent 
domainMappingAddedEvent) {
+        String tenantDomain = 
findTenantDomain(domainMappingAddedEvent.getTenantId());
         if (log.isInfoEnabled()) {
-            log.info(String.format("Subscription domain added event received: 
[tenant-id] %d [tenant-domain] %s " +
+            log.info(String.format("Domain mapping added event received: 
[tenant-id] %d [tenant-domain] %s " +
                             "[domain-name] %s [application-context] %s",
-                    subscriptionDomainAddedEvent.getTenantId(),
+                    domainMappingAddedEvent.getTenantId(),
                     tenantDomain,
-                    subscriptionDomainAddedEvent.getDomainName(),
-                    subscriptionDomainAddedEvent.getApplicationContext()
+                    domainMappingAddedEvent.getDomainName(),
+                    domainMappingAddedEvent.getContextPath()
             ));
         }
 
         if (log.isDebugEnabled()) {
-            String msg = gson.toJson(subscriptionDomainAddedEvent);
-            log.debug("Subscription domain added event msg:" + msg);
+            String msg = gson.toJson(domainMappingAddedEvent);
+            log.debug("Domain mapping added event msg:" + msg);
         }
 
         Map<String, String> env = new HashMap<String, String>();
-        env.put("STRATOS_SUBSCRIPTION_SERVICE_NAME", 
subscriptionDomainAddedEvent.getServiceName());
-        env.put("STRATOS_SUBSCRIPTION_DOMAIN_NAME", 
subscriptionDomainAddedEvent.getDomainName());
-        env.put("STRATOS_SUBSCRIPTION_TENANT_ID", 
Integer.toString(subscriptionDomainAddedEvent.getTenantId()));
+        env.put("STRATOS_SUBSCRIPTION_APPLICATION_ID", 
domainMappingAddedEvent.getApplicationId());
+        env.put("STRATOS_SUBSCRIPTION_SERVICE_NAME", 
domainMappingAddedEvent.getServiceName());
+        env.put("STRATOS_SUBSCRIPTION_DOMAIN_NAME", 
domainMappingAddedEvent.getDomainName());
+        env.put("STRATOS_SUBSCRIPTION_CLUSTER_ID", 
domainMappingAddedEvent.getClusterId());
+        env.put("STRATOS_SUBSCRIPTION_TENANT_ID", 
Integer.toString(domainMappingAddedEvent.getTenantId()));
         env.put("STRATOS_SUBSCRIPTION_TENANT_DOMAIN", tenantDomain);
-        env.put("STRATOS_SUBSCRIPTION_APPLICATION_CONTEXT", 
subscriptionDomainAddedEvent.getApplicationContext());
-        ExtensionUtils.executeSubscriptionDomainAddedExtension(env);
+        env.put("STRATOS_SUBSCRIPTION_CONTEXT_PATH", 
domainMappingAddedEvent.getContextPath());
+        ExtensionUtils.executeDomainMappingAddedExtension(env);
     }
 
     private String findTenantDomain(int tenantId) {
@@ -960,10 +484,10 @@ public class DefaultExtensionHandler implements 
ExtensionHandler {
     }
 
     @Override
-    public void 
onSubscriptionDomainRemovedEvent(SubscriptionDomainRemovedEvent 
subscriptionDomainRemovedEvent) {
+    public void onDomainMappingRemovedEvent(DomainMappingRemovedEvent 
subscriptionDomainRemovedEvent) {
         String tenantDomain = 
findTenantDomain(subscriptionDomainRemovedEvent.getTenantId());
         if (log.isInfoEnabled()) {
-            log.info(String.format("Subscription domain removed event 
received: [tenant-id] %d [tenant-domain] %s " +
+            log.info(String.format("Domain mapping removed event received: 
[tenant-id] %d [tenant-domain] %s " +
                             "[domain-name] %s",
                     subscriptionDomainRemovedEvent.getTenantId(),
                     tenantDomain,
@@ -973,15 +497,17 @@ public class DefaultExtensionHandler implements 
ExtensionHandler {
 
         if (log.isDebugEnabled()) {
             String msg = gson.toJson(subscriptionDomainRemovedEvent);
-            log.debug("Subscription domain removed event msg:" + msg);
+            log.debug("Domain mapping removed event msg:" + msg);
         }
 
         Map<String, String> env = new HashMap<String, String>();
+        env.put("STRATOS_SUBSCRIPTION_APPLICATION_ID", 
subscriptionDomainRemovedEvent.getApplicationId());
         env.put("STRATOS_SUBSCRIPTION_SERVICE_NAME", 
subscriptionDomainRemovedEvent.getServiceName());
         env.put("STRATOS_SUBSCRIPTION_DOMAIN_NAME", 
subscriptionDomainRemovedEvent.getDomainName());
+        env.put("STRATOS_SUBSCRIPTION_CLUSTER_ID", 
subscriptionDomainRemovedEvent.getClusterId());
         env.put("STRATOS_SUBSCRIPTION_TENANT_ID", 
Integer.toString(subscriptionDomainRemovedEvent.getTenantId()));
         env.put("STRATOS_SUBSCRIPTION_TENANT_DOMAIN", tenantDomain);
-        ExtensionUtils.executeSubscriptionDomainRemovedExtension(env);
+        ExtensionUtils.executeDomainMappingRemovedExtension(env);
     }
 
     @Override
@@ -989,4 +515,63 @@ public class DefaultExtensionHandler implements 
ExtensionHandler {
         ExtensionUtils.executeCopyArtifactsExtension(src, des);
     }
 
+    @Override
+    public void onTenantSubscribedEvent(TenantSubscribedEvent 
tenantSubscribedEvent) {
+        if (log.isInfoEnabled()) {
+            log.info(String.format("Tenant subscribed event received: [tenant] 
%s [service] %s [cluster] %s",
+                            tenantSubscribedEvent.getTenantId(), 
tenantSubscribedEvent.getServiceName(),
+                            tenantSubscribedEvent.getClusterIds())
+            );
+        }
+
+        if (log.isDebugEnabled()) {
+            String msg = gson.toJson(tenantSubscribedEvent);
+            log.debug("Tenant subscribed event msg:" + msg);
+        }
+        Map<String, String> env = new HashMap<String, String>();
+        ExtensionUtils.executeTenantSubscribedExtension(env);
+    }
+
+    @Override
+    public void onTenantUnSubscribedEvent(TenantUnSubscribedEvent 
tenantUnSubscribedEvent) {
+        if (log.isInfoEnabled()) {
+            log.info(String.format("Tenant unsubscribed event received: 
[tenant] %s [service] %s [cluster] %s",
+                    tenantUnSubscribedEvent.getTenantId(), 
tenantUnSubscribedEvent.getServiceName(),
+                    tenantUnSubscribedEvent.getClusterIds()));
+        }
+
+        if (log.isDebugEnabled()) {
+            String msg = gson.toJson(tenantUnSubscribedEvent);
+            log.debug("Tenant unsubscribed event msg:" + msg);
+        }
+
+        try {
+            if 
(CartridgeAgentConfiguration.getInstance().getServiceName().equals(tenantUnSubscribedEvent.getServiceName()))
 {
+                
GitBasedArtifactRepository.getInstance().removeRepo(tenantUnSubscribedEvent.getTenantId());
+            }
+        } catch (Exception e) {
+            log.error(e);
+        }
+        Map<String, String> env = new HashMap<String, String>();
+        ExtensionUtils.executeTenantUnSubscribedExtension(env);
+    }
+    
+    //ApplicationSignUpRemovedEvent
+    @Override
+    public void onApplicationSignUpRemovedEvent(ApplicationSignUpRemovedEvent 
applicationSignUpRemovedEvent) {
+        if (log.isInfoEnabled()) {
+            log.info(String.format("applicationSignUpRemovedEvent event 
received: [appId] %s [tenantId] %s ",
+                       applicationSignUpRemovedEvent.getApplicationId(), 
applicationSignUpRemovedEvent.getTenantId()));
+        }
+
+        try {
+            if 
(CartridgeAgentConfiguration.getInstance().getApplicationId().equals(applicationSignUpRemovedEvent.getApplicationId()))
 {
+                
GitBasedArtifactRepository.getInstance().removeRepo(applicationSignUpRemovedEvent.getTenantId());
+            }
+        } catch (Exception e) {
+            log.error(e);
+        }
+        
+    }
+
 }
\ No newline at end of file

Reply via email to