moving Application Strucutre related classes to applications package

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

Branch: refs/heads/docker-grouping-merge
Commit: e15343080254dc46756804fffd454bbbd6dacced
Parents: ae257c1
Author: Isuru Haththotuwa <[email protected]>
Authored: Fri Oct 31 12:06:42 2014 +0530
Committer: Isuru Haththotuwa <[email protected]>
Committed: Fri Oct 31 12:06:42 2014 +0530

----------------------------------------------------------------------
 .../grouping/dependency/DependencyBuilder.java  |   2 +-
 .../grouping/dependency/DependencyTree.java     |   1 -
 .../context/ApplicationContextFactory.java      |   5 +-
 .../grouping/topic/StatusEventPublisher.java    |   1 +
 .../AutoscalerTopologyEventReceiver.java        |   4 +
 .../monitor/ApplicationMonitorFactory.java      |   2 +
 .../monitor/MonitorStatusEventBuilder.java      |   4 +-
 .../monitor/ParentComponentMonitor.java         |   6 +-
 .../monitor/application/ApplicationMonitor.java |   6 +-
 .../monitor/cluster/ClusterMonitor.java         |   4 +-
 .../monitor/events/ApplicationStatusEvent.java  |   2 +-
 .../monitor/events/GroupStatusEvent.java        |   2 +-
 .../autoscaler/monitor/group/GroupMonitor.java  |   7 +-
 .../status/checker/StatusChecker.java           |   1 +
 .../parser/DefaultApplicationParser.java        |   5 +-
 .../application/parser/ParserUtils.java         |   2 +-
 .../impl/CloudControllerServiceImpl.java        |   4 +-
 .../interfaces/ApplicationParser.java           |   2 +-
 .../controller/topology/TopologyBuilder.java    |   1 +
 .../topology/TopologyEventPublisher.java        |   1 +
 .../StratosManagerTopologyEventReceiver.java    |   2 +-
 .../domain/applications/Application.java        | 124 +++++++++++
 .../domain/applications/ApplicationStatus.java  |  74 +++++++
 .../domain/applications/ClusterDataHolder.java  |  51 +++++
 .../domain/applications/DependencyOrder.java    |  52 +++++
 .../messaging/domain/applications/Group.java    | 112 ++++++++++
 .../domain/applications/GroupStatus.java        |  73 +++++++
 .../domain/applications/ParentComponent.java    | 212 +++++++++++++++++++
 .../domain/applications/StartupOrder.java       |  40 ++++
 .../messaging/domain/topology/Application.java  | 123 -----------
 .../domain/topology/ApplicationStatus.java      |  74 -------
 .../domain/topology/ClusterDataHolder.java      |  51 -----
 .../domain/topology/DependencyOrder.java        |  52 -----
 .../messaging/domain/topology/Group.java        | 111 ----------
 .../messaging/domain/topology/GroupStatus.java  |  73 -------
 .../domain/topology/ParentComponent.java        | 212 -------------------
 .../messaging/domain/topology/StartupOrder.java |  40 ----
 .../messaging/domain/topology/Topology.java     |   1 +
 .../AppStatusApplicationTerminatedEvent.java    |   2 +-
 .../event/topology/ApplicationCreatedEvent.java |   2 +-
 .../topology/ApplicationTerminatedEvent.java    |   2 +-
 .../topology/ApplicationUndeployedEvent.java    |   2 +-
 .../ApplicationActivatedMessageProcessor.java   |   4 +-
 .../ApplicationCreatedMessageProcessor.java     |   2 +-
 .../ApplicationInactivatedMessageProcessor.java |   4 +-
 .../ApplicationTerminatedMessageProcessor.java  |   2 +-
 .../ApplicationTerminatingMessageProcessor.java |   4 +-
 .../ApplicationUndeployedMessageProcessor.java  |   3 +
 .../CompleteTopologyMessageProcessor.java       |   1 +
 .../topology/GroupActivatedProcessor.java       |   3 +
 .../topology/GroupCreatedProcessor.java         |   8 +-
 .../topology/GroupInActivateProcessor.java      |   7 +-
 .../topology/GroupTerminatedProcessor.java      |   6 +-
 .../topology/GroupTerminatingProcessor.java     |   6 +-
 .../topology/locking/TopologyLockingTest.java   |   2 +
 .../bean/util/converter/PojoConverter.java      |   4 +-
 .../rest/endpoint/services/ServiceUtils.java    |   3 +
 57 files changed, 811 insertions(+), 795 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/e1534308/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/grouping/dependency/DependencyBuilder.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/grouping/dependency/DependencyBuilder.java
 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/grouping/dependency/DependencyBuilder.java
index 4e67848..bf1233f 100644
--- 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/grouping/dependency/DependencyBuilder.java
+++ 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/grouping/dependency/DependencyBuilder.java
@@ -24,7 +24,7 @@ import org.apache.stratos.autoscaler.*;
 import org.apache.stratos.autoscaler.exception.DependencyBuilderException;
 import 
org.apache.stratos.autoscaler.grouping.dependency.context.ApplicationContext;
 import 
org.apache.stratos.autoscaler.grouping.dependency.context.ApplicationContextFactory;
-import org.apache.stratos.messaging.domain.topology.*;
+import org.apache.stratos.messaging.domain.applications.*;
 
 import java.util.Set;
 

http://git-wip-us.apache.org/repos/asf/stratos/blob/e1534308/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/grouping/dependency/DependencyTree.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/grouping/dependency/DependencyTree.java
 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/grouping/dependency/DependencyTree.java
index 1ec686b..05769a6 100644
--- 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/grouping/dependency/DependencyTree.java
+++ 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/grouping/dependency/DependencyTree.java
@@ -21,7 +21,6 @@ package org.apache.stratos.autoscaler.grouping.dependency;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import 
org.apache.stratos.autoscaler.grouping.dependency.context.ApplicationContext;
-import org.apache.stratos.messaging.domain.topology.Application;
 
 import java.util.ArrayList;
 import java.util.List;

http://git-wip-us.apache.org/repos/asf/stratos/blob/e1534308/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/grouping/dependency/context/ApplicationContextFactory.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/grouping/dependency/context/ApplicationContextFactory.java
 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/grouping/dependency/context/ApplicationContextFactory.java
index 631e5d4..3ea4cd5 100644
--- 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/grouping/dependency/context/ApplicationContextFactory.java
+++ 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/grouping/dependency/context/ApplicationContextFactory.java
@@ -22,9 +22,8 @@ import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.stratos.autoscaler.Constants;
 import org.apache.stratos.autoscaler.grouping.dependency.DependencyTree;
-import org.apache.stratos.messaging.domain.topology.ClusterDataHolder;
-import org.apache.stratos.messaging.domain.topology.Group;
-import org.apache.stratos.messaging.domain.topology.ParentComponent;
+import org.apache.stratos.messaging.domain.applications.ClusterDataHolder;
+import org.apache.stratos.messaging.domain.applications.ParentComponent;
 
 /**
  * Factory to create new GroupContext or ClusterContext

http://git-wip-us.apache.org/repos/asf/stratos/blob/e1534308/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/grouping/topic/StatusEventPublisher.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/grouping/topic/StatusEventPublisher.java
 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/grouping/topic/StatusEventPublisher.java
index 9b39a52..eb6e084 100644
--- 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/grouping/topic/StatusEventPublisher.java
+++ 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/grouping/topic/StatusEventPublisher.java
@@ -4,6 +4,7 @@ import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.stratos.messaging.broker.publish.EventPublisher;
 import org.apache.stratos.messaging.broker.publish.EventPublisherPool;
+import org.apache.stratos.messaging.domain.applications.*;
 import org.apache.stratos.messaging.domain.topology.*;
 import org.apache.stratos.messaging.event.Event;
 import org.apache.stratos.messaging.event.application.status.*;

http://git-wip-us.apache.org/repos/asf/stratos/blob/e1534308/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/message/receiver/topology/AutoscalerTopologyEventReceiver.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/message/receiver/topology/AutoscalerTopologyEventReceiver.java
 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/message/receiver/topology/AutoscalerTopologyEventReceiver.java
index 54a1461..fe4d9df 100644
--- 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/message/receiver/topology/AutoscalerTopologyEventReceiver.java
+++ 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/message/receiver/topology/AutoscalerTopologyEventReceiver.java
@@ -37,6 +37,10 @@ import 
org.apache.stratos.autoscaler.monitor.group.GroupMonitor;
 import org.apache.stratos.autoscaler.partition.PartitionManager;
 import org.apache.stratos.autoscaler.policy.PolicyManager;
 import org.apache.stratos.autoscaler.status.checker.StatusChecker;
+import org.apache.stratos.messaging.domain.applications.Application;
+import org.apache.stratos.messaging.domain.applications.ApplicationStatus;
+import org.apache.stratos.messaging.domain.applications.ClusterDataHolder;
+import org.apache.stratos.messaging.domain.applications.GroupStatus;
 import org.apache.stratos.messaging.domain.topology.*;
 import org.apache.stratos.messaging.event.Event;
 import org.apache.stratos.messaging.event.topology.*;

http://git-wip-us.apache.org/repos/asf/stratos/blob/e1534308/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/ApplicationMonitorFactory.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/ApplicationMonitorFactory.java
 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/ApplicationMonitorFactory.java
index 2ead896..debcf93 100644
--- 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/ApplicationMonitorFactory.java
+++ 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/ApplicationMonitorFactory.java
@@ -44,6 +44,8 @@ import 
org.apache.stratos.cloud.controller.stub.deployment.partition.Partition;
 import org.apache.stratos.cloud.controller.stub.pojo.MemberContext;
 import org.apache.stratos.cloud.controller.stub.pojo.Properties;
 import org.apache.stratos.cloud.controller.stub.pojo.Property;
+import org.apache.stratos.messaging.domain.applications.Application;
+import org.apache.stratos.messaging.domain.applications.Group;
 import org.apache.stratos.messaging.domain.topology.*;
 import org.apache.stratos.messaging.message.receiver.topology.TopologyManager;
 import org.apache.stratos.messaging.util.Constants;

http://git-wip-us.apache.org/repos/asf/stratos/blob/e1534308/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/MonitorStatusEventBuilder.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/MonitorStatusEventBuilder.java
 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/MonitorStatusEventBuilder.java
index 59bb4c0..dac53b4 100644
--- 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/MonitorStatusEventBuilder.java
+++ 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/MonitorStatusEventBuilder.java
@@ -24,9 +24,9 @@ import 
org.apache.stratos.autoscaler.monitor.events.ApplicationStatusEvent;
 import org.apache.stratos.autoscaler.monitor.events.ClusterStatusEvent;
 import org.apache.stratos.autoscaler.monitor.events.GroupStatusEvent;
 import org.apache.stratos.autoscaler.monitor.events.MonitorStatusEvent;
-import org.apache.stratos.messaging.domain.topology.ApplicationStatus;
+import org.apache.stratos.messaging.domain.applications.ApplicationStatus;
 import org.apache.stratos.messaging.domain.topology.ClusterStatus;
-import org.apache.stratos.messaging.domain.topology.GroupStatus;
+import org.apache.stratos.messaging.domain.applications.GroupStatus;
 
 /**
  * This will build the necessary monitor status events to be sent to the 
parent/child  monitor

http://git-wip-us.apache.org/repos/asf/stratos/blob/e1534308/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/ParentComponentMonitor.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/ParentComponentMonitor.java
 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/ParentComponentMonitor.java
index 91d5275..c304027 100644
--- 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/ParentComponentMonitor.java
+++ 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/ParentComponentMonitor.java
@@ -28,12 +28,8 @@ import 
org.apache.stratos.autoscaler.grouping.dependency.DependencyBuilder;
 import org.apache.stratos.autoscaler.grouping.dependency.DependencyTree;
 import 
org.apache.stratos.autoscaler.grouping.dependency.context.ApplicationContext;
 import org.apache.stratos.autoscaler.grouping.topic.StatusEventPublisher;
-import org.apache.stratos.autoscaler.monitor.events.MonitorStatusEvent;
 import org.apache.stratos.autoscaler.status.checker.StatusChecker;
-import org.apache.stratos.messaging.domain.topology.Application;
-import org.apache.stratos.messaging.domain.topology.ApplicationStatus;
-import org.apache.stratos.messaging.domain.topology.GroupStatus;
-import org.apache.stratos.messaging.domain.topology.ParentComponent;
+import org.apache.stratos.messaging.domain.applications.ParentComponent;
 
 import java.util.HashMap;
 import java.util.List;

http://git-wip-us.apache.org/repos/asf/stratos/blob/e1534308/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/application/ApplicationMonitor.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/application/ApplicationMonitor.java
 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/application/ApplicationMonitor.java
index 4632361..dbcbabb 100644
--- 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/application/ApplicationMonitor.java
+++ 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/application/ApplicationMonitor.java
@@ -31,10 +31,10 @@ import 
org.apache.stratos.autoscaler.monitor.events.MonitorScalingEvent;
 import org.apache.stratos.autoscaler.monitor.events.MonitorStatusEvent;
 import org.apache.stratos.autoscaler.monitor.events.MonitorTerminateAllEvent;
 import org.apache.stratos.autoscaler.status.checker.StatusChecker;
-import org.apache.stratos.messaging.domain.topology.Application;
-import org.apache.stratos.messaging.domain.topology.ApplicationStatus;
+import org.apache.stratos.messaging.domain.applications.Application;
+import org.apache.stratos.messaging.domain.applications.ApplicationStatus;
 import org.apache.stratos.messaging.domain.topology.ClusterStatus;
-import org.apache.stratos.messaging.domain.topology.GroupStatus;
+import org.apache.stratos.messaging.domain.applications.GroupStatus;
 import org.apache.stratos.messaging.domain.topology.lifecycle.LifeCycleState;
 
 import java.util.Collection;

http://git-wip-us.apache.org/repos/asf/stratos/blob/e1534308/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/ClusterMonitor.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/ClusterMonitor.java
 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/ClusterMonitor.java
index 988f266..22b5e48 100644
--- 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/ClusterMonitor.java
+++ 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/ClusterMonitor.java
@@ -33,9 +33,9 @@ import 
org.apache.stratos.autoscaler.rule.AutoscalerRuleEvaluator;
 import org.apache.stratos.cloud.controller.stub.pojo.MemberContext;
 import org.apache.stratos.cloud.controller.stub.pojo.Properties;
 import org.apache.stratos.cloud.controller.stub.pojo.Property;
-import org.apache.stratos.messaging.domain.topology.ApplicationStatus;
+import org.apache.stratos.messaging.domain.applications.ApplicationStatus;
 import org.apache.stratos.messaging.domain.topology.ClusterStatus;
-import org.apache.stratos.messaging.domain.topology.GroupStatus;
+import org.apache.stratos.messaging.domain.applications.GroupStatus;
 
 import java.util.ArrayList;
 import java.util.List;

http://git-wip-us.apache.org/repos/asf/stratos/blob/e1534308/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/events/ApplicationStatusEvent.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/events/ApplicationStatusEvent.java
 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/events/ApplicationStatusEvent.java
index d92de77..83c764d 100644
--- 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/events/ApplicationStatusEvent.java
+++ 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/events/ApplicationStatusEvent.java
@@ -18,7 +18,7 @@
  */
 package org.apache.stratos.autoscaler.monitor.events;
 
-import org.apache.stratos.messaging.domain.topology.ApplicationStatus;
+import org.apache.stratos.messaging.domain.applications.ApplicationStatus;
 
 /**
  * This will use to notify observers upon a application activation events 
received in Topology.

http://git-wip-us.apache.org/repos/asf/stratos/blob/e1534308/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/events/GroupStatusEvent.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/events/GroupStatusEvent.java
 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/events/GroupStatusEvent.java
index 7956914..7f21761 100644
--- 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/events/GroupStatusEvent.java
+++ 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/events/GroupStatusEvent.java
@@ -18,7 +18,7 @@
  */
 package org.apache.stratos.autoscaler.monitor.events;
 
-import org.apache.stratos.messaging.domain.topology.GroupStatus;
+import org.apache.stratos.messaging.domain.applications.GroupStatus;
 
 /**
  * This will use to notify observers upon a group activation events received 
in Topology.

http://git-wip-us.apache.org/repos/asf/stratos/blob/e1534308/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/group/GroupMonitor.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/group/GroupMonitor.java
 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/group/GroupMonitor.java
index 3623de9..d48c7ae 100644
--- 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/group/GroupMonitor.java
+++ 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/group/GroupMonitor.java
@@ -24,7 +24,6 @@ import 
org.apache.stratos.autoscaler.exception.DependencyBuilderException;
 import org.apache.stratos.autoscaler.exception.TopologyInConsistentException;
 import org.apache.stratos.autoscaler.grouping.topic.StatusEventPublisher;
 import org.apache.stratos.autoscaler.monitor.EventHandler;
-import org.apache.stratos.autoscaler.monitor.Monitor;
 import org.apache.stratos.autoscaler.monitor.MonitorStatusEventBuilder;
 import org.apache.stratos.autoscaler.monitor.ParentComponentMonitor;
 import org.apache.stratos.autoscaler.monitor.events.GroupStatusEvent;
@@ -32,10 +31,10 @@ import 
org.apache.stratos.autoscaler.monitor.events.MonitorScalingEvent;
 import org.apache.stratos.autoscaler.monitor.events.MonitorStatusEvent;
 import org.apache.stratos.autoscaler.monitor.events.MonitorTerminateAllEvent;
 import org.apache.stratos.autoscaler.status.checker.StatusChecker;
-import org.apache.stratos.messaging.domain.topology.ApplicationStatus;
+import org.apache.stratos.messaging.domain.applications.ApplicationStatus;
 import org.apache.stratos.messaging.domain.topology.ClusterStatus;
-import org.apache.stratos.messaging.domain.topology.Group;
-import org.apache.stratos.messaging.domain.topology.GroupStatus;
+import org.apache.stratos.messaging.domain.applications.Group;
+import org.apache.stratos.messaging.domain.applications.GroupStatus;
 import org.apache.stratos.messaging.domain.topology.lifecycle.LifeCycleState;
 
 /**

http://git-wip-us.apache.org/repos/asf/stratos/blob/e1534308/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/checker/StatusChecker.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/checker/StatusChecker.java
 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/checker/StatusChecker.java
index a742b89..392a0d5 100644
--- 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/checker/StatusChecker.java
+++ 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/checker/StatusChecker.java
@@ -26,6 +26,7 @@ import org.apache.stratos.autoscaler.PartitionContext;
 import org.apache.stratos.autoscaler.grouping.topic.StatusEventPublisher;
 import org.apache.stratos.autoscaler.monitor.AbstractClusterMonitor;
 import org.apache.stratos.autoscaler.monitor.cluster.ClusterMonitor;
+import org.apache.stratos.messaging.domain.applications.*;
 import org.apache.stratos.messaging.domain.topology.*;
 import org.apache.stratos.messaging.message.receiver.topology.TopologyManager;
 

http://git-wip-us.apache.org/repos/asf/stratos/blob/e1534308/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/application/parser/DefaultApplicationParser.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/application/parser/DefaultApplicationParser.java
 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/application/parser/DefaultApplicationParser.java
index 06f749a..000a06a 100644
--- 
a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/application/parser/DefaultApplicationParser.java
+++ 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/application/parser/DefaultApplicationParser.java
@@ -33,7 +33,10 @@ import org.apache.stratos.cloud.controller.pojo.Cartridge;
 import org.apache.stratos.cloud.controller.pojo.application.*;
 import org.apache.stratos.cloud.controller.pojo.payload.MetaDataHolder;
 import org.apache.stratos.cloud.controller.runtime.FasterLookUpDataHolder;
-import org.apache.stratos.messaging.domain.topology.*;
+import org.apache.stratos.messaging.domain.applications.Application;
+import org.apache.stratos.messaging.domain.applications.ClusterDataHolder;
+import org.apache.stratos.messaging.domain.applications.DependencyOrder;
+import org.apache.stratos.messaging.domain.applications.Group;
 
 import java.util.*;
 

http://git-wip-us.apache.org/repos/asf/stratos/blob/e1534308/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/application/parser/ParserUtils.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/application/parser/ParserUtils.java
 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/application/parser/ParserUtils.java
index 23b0bab..e6cdda0 100644
--- 
a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/application/parser/ParserUtils.java
+++ 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/application/parser/ParserUtils.java
@@ -22,7 +22,7 @@ package 
org.apache.stratos.cloud.controller.application.parser;
 import 
org.apache.stratos.cloud.controller.exception.ApplicationDefinitionException;
 import org.apache.stratos.cloud.controller.pojo.application.GroupContext;
 import 
org.apache.stratos.cloud.controller.pojo.application.SubscribableContext;
-import org.apache.stratos.messaging.domain.topology.StartupOrder;
+import org.apache.stratos.messaging.domain.applications.StartupOrder;
 
 import java.util.*;
 

http://git-wip-us.apache.org/repos/asf/stratos/blob/e1534308/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java
 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java
index 6e003b1..0c27316 100644
--- 
a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java
+++ 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java
@@ -39,12 +39,10 @@ import 
org.apache.stratos.cloud.controller.publisher.CartridgeInstanceDataPublis
 import org.apache.stratos.cloud.controller.registry.RegistryManager;
 import org.apache.stratos.cloud.controller.runtime.FasterLookUpDataHolder;
 import org.apache.stratos.cloud.controller.topology.TopologyBuilder;
-import org.apache.stratos.cloud.controller.topology.TopologyManager;
 import org.apache.stratos.cloud.controller.util.CloudControllerConstants;
 import org.apache.stratos.cloud.controller.util.CloudControllerUtil;
 import 
org.apache.stratos.cloud.controller.validate.interfaces.PartitionValidator;
-import org.apache.stratos.messaging.domain.topology.Application;
-import org.apache.stratos.messaging.domain.topology.Member;
+import org.apache.stratos.messaging.domain.applications.Application;
 import org.apache.stratos.messaging.domain.topology.MemberStatus;
 import org.apache.stratos.messaging.util.Constants;
 import org.jclouds.compute.ComputeService;

http://git-wip-us.apache.org/repos/asf/stratos/blob/e1534308/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/interfaces/ApplicationParser.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/interfaces/ApplicationParser.java
 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/interfaces/ApplicationParser.java
index 7bd471d..33e98f9 100644
--- 
a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/interfaces/ApplicationParser.java
+++ 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/interfaces/ApplicationParser.java
@@ -22,7 +22,7 @@ package org.apache.stratos.cloud.controller.interfaces;
 import 
org.apache.stratos.cloud.controller.exception.ApplicationDefinitionException;
 import org.apache.stratos.cloud.controller.pojo.ApplicationClusterContext;
 import org.apache.stratos.cloud.controller.pojo.payload.MetaDataHolder;
-import org.apache.stratos.messaging.domain.topology.Application;
+import org.apache.stratos.messaging.domain.applications.Application;
 
 import java.util.Set;
 

http://git-wip-us.apache.org/repos/asf/stratos/blob/e1534308/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/topology/TopologyBuilder.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/topology/TopologyBuilder.java
 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/topology/TopologyBuilder.java
index 2cf4905..e31cf32 100644
--- 
a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/topology/TopologyBuilder.java
+++ 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/topology/TopologyBuilder.java
@@ -29,6 +29,7 @@ import 
org.apache.stratos.cloud.controller.publisher.CartridgeInstanceDataPublis
 import org.apache.stratos.cloud.controller.registry.RegistryManager;
 import org.apache.stratos.cloud.controller.runtime.FasterLookUpDataHolder;
 import org.apache.stratos.cloud.controller.util.CloudControllerUtil;
+import org.apache.stratos.messaging.domain.applications.*;
 import org.apache.stratos.messaging.domain.topology.*;
 import org.apache.stratos.messaging.event.application.status.*;
 import 
org.apache.stratos.messaging.event.instance.status.InstanceActivatedEvent;

http://git-wip-us.apache.org/repos/asf/stratos/blob/e1534308/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/topology/TopologyEventPublisher.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/topology/TopologyEventPublisher.java
 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/topology/TopologyEventPublisher.java
index c9337d2..f96ba8e 100644
--- 
a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/topology/TopologyEventPublisher.java
+++ 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/topology/TopologyEventPublisher.java
@@ -26,6 +26,7 @@ import org.apache.stratos.cloud.controller.pojo.PortMapping;
 import org.apache.stratos.cloud.controller.util.CloudControllerUtil;
 import org.apache.stratos.messaging.broker.publish.EventPublisher;
 import org.apache.stratos.messaging.broker.publish.EventPublisherPool;
+import org.apache.stratos.messaging.domain.applications.ClusterDataHolder;
 import org.apache.stratos.messaging.domain.topology.*;
 import org.apache.stratos.messaging.event.Event;
 import org.apache.stratos.messaging.event.instance.status.InstanceStartedEvent;

http://git-wip-us.apache.org/repos/asf/stratos/blob/e1534308/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/topology/receiver/StratosManagerTopologyEventReceiver.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/topology/receiver/StratosManagerTopologyEventReceiver.java
 
b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/topology/receiver/StratosManagerTopologyEventReceiver.java
index d4e90cc..d6cc395 100644
--- 
a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/topology/receiver/StratosManagerTopologyEventReceiver.java
+++ 
b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/topology/receiver/StratosManagerTopologyEventReceiver.java
@@ -26,7 +26,7 @@ import 
org.apache.stratos.manager.exception.ApplicationSubscriptionException;
 import org.apache.stratos.manager.manager.CartridgeSubscriptionManager;
 import org.apache.stratos.manager.subscription.ApplicationSubscription;
 import 
org.apache.stratos.manager.topology.model.TopologyClusterInformationModel;
-import org.apache.stratos.messaging.domain.topology.Application;
+import org.apache.stratos.messaging.domain.applications.Application;
 import org.apache.stratos.messaging.domain.topology.Cluster;
 import org.apache.stratos.messaging.domain.topology.Service;
 import org.apache.stratos.messaging.event.Event;

http://git-wip-us.apache.org/repos/asf/stratos/blob/e1534308/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/applications/Application.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/applications/Application.java
 
b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/applications/Application.java
new file mode 100644
index 0000000..e33de39
--- /dev/null
+++ 
b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/applications/Application.java
@@ -0,0 +1,124 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.stratos.messaging.domain.applications;
+
+import org.apache.commons.lang3.RandomStringUtils;
+import 
org.apache.stratos.messaging.domain.topology.LifeCycleStateTransitionBehavior;
+import 
org.apache.stratos.messaging.domain.topology.lifecycle.LifeCycleStateManager;
+
+import java.util.*;
+
+/**
+ * Represents an Application in the Topology
+ */
+
+public class Application extends ParentComponent implements 
LifeCycleStateTransitionBehavior<ApplicationStatus> {
+
+    private static final long serialVersionUID = -5092959597171649688L;
+    // Unique id for the Application, defined in Application Definition
+    private String id;
+    // Key used for authentication (with metadata service, etc.)
+    private String key;
+    // tenant id
+    private int tenantId;
+    // tenant domain
+    private String tenantDomain;
+    // tenant admin user
+    private String tenantAdminUserName;
+    // Life cycle state manager
+    protected LifeCycleStateManager<ApplicationStatus> applicationStateManager;
+
+    public Application (String id) {
+        super();
+        this.id = id;
+        this.key = RandomStringUtils.randomAlphanumeric(16);
+        this.applicationStateManager =
+                new 
LifeCycleStateManager<ApplicationStatus>(ApplicationStatus.Created, id);
+    }
+
+    public String getUniqueIdentifier() {
+        return id;
+    }
+
+    public String getKey() {
+        return key;
+    }
+
+    public int getTenantId() {
+        return tenantId;
+    }
+
+    public void setTenantId(int tenantId) {
+        this.tenantId = tenantId;
+    }
+
+    public String getTenantDomain() {
+        return tenantDomain;
+    }
+
+    public void setTenantDomain(String tenantDomain) {
+        this.tenantDomain = tenantDomain;
+    }
+
+    public String getTenantAdminUserName() {
+        return tenantAdminUserName;
+    }
+
+    public void setTenantAdminUserName(String tenantAdminUserName) {
+        this.tenantAdminUserName = tenantAdminUserName;
+    }
+
+    @Override
+    public boolean isStateTransitionValid(ApplicationStatus newState) {
+        return this.applicationStateManager.isStateTransitionValid(newState);
+    }
+
+    @Override
+    public Stack<ApplicationStatus> getTransitionedStates() {
+        return this.applicationStateManager.getStateStack();
+    }
+
+    @Override
+    public ApplicationStatus getStatus() {
+        return this.applicationStateManager.getCurrentState();
+    }
+
+    @Override
+    public void setStatus(ApplicationStatus newState) {
+        this.applicationStateManager.changeState(newState);
+    }
+
+    public boolean equals(Object other) {
+        if(other == null || !(other instanceof Application)) {
+            return false;
+        }
+
+        if(this == other) {
+            return true;
+        }
+
+        Application that = (Application)other;
+        return this.id.equals(that.id);
+    }
+
+    public int hashCode () {
+        return id.hashCode();
+    }
+}

http://git-wip-us.apache.org/repos/asf/stratos/blob/e1534308/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/applications/ApplicationStatus.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/applications/ApplicationStatus.java
 
b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/applications/ApplicationStatus.java
new file mode 100644
index 0000000..38ac01c
--- /dev/null
+++ 
b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/applications/ApplicationStatus.java
@@ -0,0 +1,74 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.stratos.messaging.domain.applications;
+
+import org.apache.stratos.messaging.domain.topology.lifecycle.LifeCycleState;
+
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Set;
+
+public enum ApplicationStatus implements LifeCycleState {
+
+    Created (0) {
+        @Override
+        public Set<LifeCycleState> getNextStates() {
+            return new 
HashSet<LifeCycleState>(Arrays.asList(ApplicationStatus.Created,
+                    ApplicationStatus.Active, ApplicationStatus.Terminating));
+        }
+    },
+    Active (1) {
+        @Override
+        public Set<LifeCycleState> getNextStates() {
+            return new 
HashSet<LifeCycleState>(Arrays.asList(ApplicationStatus.Active,
+                    ApplicationStatus.Terminating, 
ApplicationStatus.Inactive));
+        }
+    },
+    Inactive (2) {
+        @Override
+        public Set<LifeCycleState> getNextStates() {
+            return new 
HashSet<LifeCycleState>(Arrays.asList(ApplicationStatus.Inactive, 
ApplicationStatus.Active,
+                    ApplicationStatus.Terminating));
+        }
+    },
+    Terminating (3) {
+        @Override
+        public Set<LifeCycleState> getNextStates() {
+            return new 
HashSet<LifeCycleState>(Arrays.asList(ApplicationStatus.Terminating,
+                    ApplicationStatus.Terminated));
+        }
+    },
+    Terminated (4) {
+        @Override
+        public Set<LifeCycleState> getNextStates() {
+            return new 
HashSet<LifeCycleState>(Arrays.asList(ApplicationStatus.Terminated));
+        }
+    };
+
+    private int code;
+
+    private ApplicationStatus (int code) {
+        this.code = code;
+    }
+
+    public int getCode() {
+        return code;
+    }
+}

http://git-wip-us.apache.org/repos/asf/stratos/blob/e1534308/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/applications/ClusterDataHolder.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/applications/ClusterDataHolder.java
 
b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/applications/ClusterDataHolder.java
new file mode 100644
index 0000000..6a7e421
--- /dev/null
+++ 
b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/applications/ClusterDataHolder.java
@@ -0,0 +1,51 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.stratos.messaging.domain.applications;
+
+import java.io.Serializable;
+
+/**
+ * Data Holder for a Cluster.
+ * Will hold the Service Type and Cluster Id.
+ */
+
+public class ClusterDataHolder implements Serializable {
+
+    // Service/Cartridge type
+    private String serviceType;
+
+    // Cluster id
+    private String clusterId;
+
+    public ClusterDataHolder (String serviceType, String clusterId) {
+
+        this.serviceType = serviceType;
+        this.clusterId = clusterId;
+    }
+
+
+    public String getServiceType() {
+        return serviceType;
+    }
+
+    public String getClusterId() {
+        return clusterId;
+    }
+}

http://git-wip-us.apache.org/repos/asf/stratos/blob/e1534308/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/applications/DependencyOrder.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/applications/DependencyOrder.java
 
b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/applications/DependencyOrder.java
new file mode 100644
index 0000000..9ece450
--- /dev/null
+++ 
b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/applications/DependencyOrder.java
@@ -0,0 +1,52 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.stratos.messaging.domain.applications;
+
+import java.io.Serializable;
+import java.util.Set;
+
+public class DependencyOrder implements Serializable {
+
+       private static final long serialVersionUID = -599600831844477527L;
+
+       private Set<StartupOrder> startupOrders;
+
+    private String terminationBehaviour;
+
+    public DependencyOrder () {
+
+    }
+
+    public String getTerminationBehaviour() {
+        return terminationBehaviour;
+    }
+
+    public void setTerminationBehaviour(String terminationBehaviour) {
+        this.terminationBehaviour = terminationBehaviour;
+    }
+
+       public Set<StartupOrder> getStartupOrders() {
+               return startupOrders;
+       }
+
+       public void setStartupOrders(Set<StartupOrder> startupOrders) {
+               this.startupOrders = startupOrders;
+       }
+}

http://git-wip-us.apache.org/repos/asf/stratos/blob/e1534308/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/applications/Group.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/applications/Group.java
 
b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/applications/Group.java
new file mode 100644
index 0000000..1f4d323
--- /dev/null
+++ 
b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/applications/Group.java
@@ -0,0 +1,112 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.stratos.messaging.domain.applications;
+
+import 
org.apache.stratos.messaging.domain.topology.LifeCycleStateTransitionBehavior;
+import 
org.apache.stratos.messaging.domain.topology.lifecycle.LifeCycleStateManager;
+
+import java.util.Stack;
+
+/**
+ * Represents a Group/nested Group in an Application/Group
+ */
+
+public class Group extends ParentComponent implements 
LifeCycleStateTransitionBehavior<GroupStatus> {
+
+    private static final long serialVersionUID = 8347096598203655846L;
+    // Name of the Group, specified in Group Definition
+    private String name;
+    // Group alias
+    private String alias;
+    // Group deployment policy
+    private String deploymentPolicy;
+    // Group level autoscaling policy
+    private String autoscalingPolicy;
+    // Life cycle state manager
+    protected LifeCycleStateManager<GroupStatus> groupStateManager;
+
+    public Group (String name, String alias) {
+        super();
+        this.name = name;
+        this.alias = alias;
+        this.groupStateManager = new 
LifeCycleStateManager<GroupStatus>(GroupStatus.Created, alias);
+    }
+
+    public String getUniqueIdentifier() {
+        return alias;
+    }
+
+    public String getAlias() {
+        return alias;
+    }
+
+    public String getDeploymentPolicy() {
+        return deploymentPolicy;
+    }
+
+    public void setDeploymentPolicy(String deploymentPolicy) {
+        this.deploymentPolicy = deploymentPolicy;
+    }
+
+    public String getAutoscalingPolicy() {
+        return autoscalingPolicy;
+    }
+
+    public void setAutoscalingPolicy(String autoscalingPolicy) {
+        this.autoscalingPolicy = autoscalingPolicy;
+    }
+
+    @Override
+    public boolean isStateTransitionValid(GroupStatus newState) {
+        return groupStateManager.isStateTransitionValid(newState);
+    }
+
+    @Override
+    public Stack<GroupStatus> getTransitionedStates() {
+        return groupStateManager.getStateStack();
+    }
+
+    @Override
+    public GroupStatus getStatus() {
+        return groupStateManager.getCurrentState();
+    }
+
+    @Override
+    public void setStatus(GroupStatus newState) {
+        this.groupStateManager.changeState(newState);
+    }
+
+    public boolean equals(Object other) {
+        if(other == null || !(other instanceof Group)) {
+            return false;
+        }
+
+        if(this == other) {
+            return true;
+        }
+
+        Group that = (Group)other;
+        return this.name.equals(that.name) && this.alias.equals(that.alias);
+    }
+
+    public int hashCode () {
+        return name.hashCode() + alias.hashCode();
+    }
+}

http://git-wip-us.apache.org/repos/asf/stratos/blob/e1534308/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/applications/GroupStatus.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/applications/GroupStatus.java
 
b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/applications/GroupStatus.java
new file mode 100644
index 0000000..0079476
--- /dev/null
+++ 
b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/applications/GroupStatus.java
@@ -0,0 +1,73 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.stratos.messaging.domain.applications;
+
+import org.apache.stratos.messaging.domain.topology.lifecycle.LifeCycleState;
+
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Set;
+
+public enum GroupStatus implements LifeCycleState {
+
+    Created(0) {
+        @Override
+        public Set<LifeCycleState> getNextStates() {
+            return new 
HashSet<LifeCycleState>(Arrays.asList(GroupStatus.Created,
+                    GroupStatus.Active, GroupStatus.Terminating));
+        }
+    },
+    Active(1) {
+        @Override
+        public Set<LifeCycleState> getNextStates() {
+            return new 
HashSet<LifeCycleState>(Arrays.asList(GroupStatus.Active,
+                    GroupStatus.Inactive, GroupStatus.Terminating));
+        }
+    },
+    Inactive(2) {
+        @Override
+        public Set<LifeCycleState> getNextStates() {
+            return new 
HashSet<LifeCycleState>(Arrays.asList(GroupStatus.Inactive, 
GroupStatus.Terminating));
+        }
+    },
+    Terminating(3) {
+        @Override
+        public Set<LifeCycleState> getNextStates() {
+            return new 
HashSet<LifeCycleState>(Arrays.asList(GroupStatus.Terminating,
+                    GroupStatus.Terminated, GroupStatus.Created));
+        }
+    },
+    Terminated(4) {
+        @Override
+        public Set<LifeCycleState> getNextStates() {
+            return new 
HashSet<LifeCycleState>(Arrays.asList(GroupStatus.Terminated));
+        }
+    };
+
+    private int code;
+
+    private GroupStatus(int code) {
+        this.code = code;
+    }
+
+    public int getCode() {
+        return code;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/stratos/blob/e1534308/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/applications/ParentComponent.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/applications/ParentComponent.java
 
b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/applications/ParentComponent.java
new file mode 100644
index 0000000..3c2814f
--- /dev/null
+++ 
b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/applications/ParentComponent.java
@@ -0,0 +1,212 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.stratos.messaging.domain.applications;
+
+import java.io.Serializable;
+import java.util.*;
+
+/**
+ * Abstraction for a an entity that can have child entities
+ * in an Application withing the Topology
+ */
+
+public abstract class ParentComponent implements Serializable {
+
+    // Dependency Order
+    private DependencyOrder dependencyOrder;
+    // Group Map, key = Group.alias
+    private Map<String, Group> aliasToGroupMap;
+    // Cluster Id map, key = subscription alias for the cartridge type
+    private Map<String, ClusterDataHolder> aliasToClusterDataMap;
+    // Application status
+
+    public ParentComponent () {
+        aliasToGroupMap = new HashMap<String, Group>();
+        aliasToClusterDataMap = new HashMap<String, ClusterDataHolder>();
+    }
+
+    /**
+     * This method should be implemented in each concrete child class
+     * to return the unique identifier for each implementation
+     * ex.: group alias for a Group, app id for an Application
+     *
+     * @return unique identifier String
+     */
+    public abstract String getUniqueIdentifier ();
+
+    /**
+     * Adds a group
+     *
+     * @param group Group instance to be added
+     */
+    public void addGroup(Group group) {
+        aliasToGroupMap.put(group.getUniqueIdentifier(), group);
+    }
+
+    /**
+     * Setter for Group alias to Group map
+     *
+     * @param groupAliasToGroup Map, key = alias given to the Group, value = 
Group
+     */
+    public void setGroups(Map<String, Group> groupAliasToGroup) {
+        aliasToGroupMap.putAll(groupAliasToGroup);
+    }
+
+    /**
+     * Get the Group for the given alias in the context of the parent entity.
+     * Will not search recursively in the nested levels.
+     *
+     * @param groupAlias alias of the Group
+     * @return Group, if exists for the given alias, else null
+     */
+    public Group getGroup(String groupAlias) {
+        return aliasToGroupMap.get(groupAlias);
+    }
+
+    /**
+     * Get the Group for the given alias in the context of the parent entity.
+     * Will search recursively in the nested levels.
+     *
+     * @param groupAlias alias of the Group
+     * @return Group, if exists for the given alias, else null
+     */
+    public Group getGroupRecursively(String groupAlias) {
+
+        return travereAndCheckRecursively(aliasToGroupMap, groupAlias);
+    }
+
+    private Group travereAndCheckRecursively (Map<String,Group> 
aliasToGroupMap, String groupAlias) {
+
+        if (aliasToGroupMap.containsKey(groupAlias)) {
+            synchronized (aliasToGroupMap) {
+                if (aliasToGroupMap.containsKey(groupAlias)) {
+                    return aliasToGroupMap.get(groupAlias);
+                }
+            }
+        } else {
+            for (Group group : aliasToGroupMap.values()) {
+                return travereAndCheckRecursively(group.getAliasToGroupMap(), 
groupAlias);
+            }
+        }
+
+        return null;
+    }
+
+    /**
+     * Getter for alias to Group map
+     * Will not search recursively in the nested levels.
+     *
+     * @return Map, key = alias given to the Group, value = Group
+     */
+    public Map<String, Group> getAliasToGroupMap() {
+        return this.aliasToGroupMap;
+    }
+
+    /**
+     * Getter for cluster alias to ClusterData map for this level
+     *
+     * @return Map, key = alias given to the cluster, value =  ClusterData 
object
+     */
+    public Map<String, ClusterDataHolder> getClusterDataMap() {
+        return this.aliasToClusterDataMap;
+    }
+
+    /**
+     * Collection of Groups in this level
+     *
+     * @return Group Collection object, empty if no Groups are found
+     */
+    public Collection<Group> getGroups() {
+        return aliasToGroupMap.values();
+    }
+
+    /**
+     * Setter for Dependency Order
+     *
+     * @param dependencyOrder Dependency Order object
+     */
+    public void setDependencyOrder(DependencyOrder dependencyOrder) {
+        this.dependencyOrder = dependencyOrder;
+    }
+
+    /**
+     * Getter for Dependency Order for this level
+     *
+     * @return Dependency Order object
+     */
+    public DependencyOrder getDependencyOrder() {
+        return dependencyOrder;
+    }
+
+    /**
+     * Setter for alias to Cluster Data map
+     *
+     * @param aliasToClusterData Map, key = alias given to the cluster, value 
=  ClusterData object
+     */
+    public void setClusterData(Map<String, ClusterDataHolder> 
aliasToClusterData) {
+        this.aliasToClusterDataMap.putAll(aliasToClusterData);
+    }
+
+    /**
+     * Getter for Cluster Data instance for the given alias
+     * Will not search recursively in the nested levels.
+     *
+     * @param alias
+     * @return
+     */
+    public ClusterDataHolder getClusterData(String alias) {
+        return aliasToClusterDataMap.get(alias);
+    }
+
+    /**
+     * Collects the Cluster Data for the parent component and all the
+     * child components recursively
+     *
+     * @return Set of ClusterDataHolder objects if available, else null
+     */
+    public Set<ClusterDataHolder> getClusterDataRecursively () {
+
+        Set<ClusterDataHolder> appClusterData = new 
HashSet<ClusterDataHolder>();
+
+        // get top level Cluster Data
+        if (this.aliasToClusterDataMap != null && 
!this.aliasToClusterDataMap.isEmpty()) {
+            appClusterData.addAll(this.aliasToClusterDataMap.values());
+        }
+
+        // find other nested Cluster Data (in the Groups)
+        if (getGroups() != null) {
+            getClusterData(appClusterData, getGroups());
+        }
+
+        return appClusterData;
+    }
+
+    private void getClusterData (Set<ClusterDataHolder> clusterData, 
Collection<Group> groups) {
+
+        for (Group group : groups) {
+            if (group.getClusterDataMap() != null && 
!group.getClusterDataMap().isEmpty()) {
+                clusterData.addAll(group.getClusterDataMap().values());
+                if (group.getGroups() != null) {
+                    getClusterData(clusterData, group.getGroups());
+                }
+            }
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/stratos/blob/e1534308/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/applications/StartupOrder.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/applications/StartupOrder.java
 
b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/applications/StartupOrder.java
new file mode 100644
index 0000000..83d583e
--- /dev/null
+++ 
b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/applications/StartupOrder.java
@@ -0,0 +1,40 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.stratos.messaging.domain.applications;
+
+import java.io.Serializable;
+import java.util.List;
+
+public class StartupOrder implements Serializable {
+
+    private List<String> startList;
+
+    public StartupOrder (List<String> startList) {
+        this.startList = startList;
+    }
+
+    public List<String> getStartList() {
+        return startList;
+    }
+
+    public void setStartList(List<String> startList) {
+        this.startList = startList;
+    }
+}

http://git-wip-us.apache.org/repos/asf/stratos/blob/e1534308/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/Application.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/Application.java
 
b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/Application.java
deleted file mode 100644
index 0e4438b..0000000
--- 
a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/Application.java
+++ /dev/null
@@ -1,123 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.stratos.messaging.domain.topology;
-
-import org.apache.commons.lang3.RandomStringUtils;
-import 
org.apache.stratos.messaging.domain.topology.lifecycle.LifeCycleStateManager;
-
-import java.util.*;
-
-/**
- * Represents an Application in the Topology
- */
-
-public class Application extends ParentComponent implements 
LifeCycleStateTransitionBehavior<ApplicationStatus> {
-
-    private static final long serialVersionUID = -5092959597171649688L;
-    // Unique id for the Application, defined in Application Definition
-    private String id;
-    // Key used for authentication (with metadata service, etc.)
-    private String key;
-    // tenant id
-    private int tenantId;
-    // tenant domain
-    private String tenantDomain;
-    // tenant admin user
-    private String tenantAdminUserName;
-    // Life cycle state manager
-    protected LifeCycleStateManager<ApplicationStatus> applicationStateManager;
-
-    public Application (String id) {
-        super();
-        this.id = id;
-        this.key = RandomStringUtils.randomAlphanumeric(16);
-        this.applicationStateManager =
-                new 
LifeCycleStateManager<ApplicationStatus>(ApplicationStatus.Created, id);
-    }
-
-    public String getUniqueIdentifier() {
-        return id;
-    }
-
-    public String getKey() {
-        return key;
-    }
-
-    public int getTenantId() {
-        return tenantId;
-    }
-
-    public void setTenantId(int tenantId) {
-        this.tenantId = tenantId;
-    }
-
-    public String getTenantDomain() {
-        return tenantDomain;
-    }
-
-    public void setTenantDomain(String tenantDomain) {
-        this.tenantDomain = tenantDomain;
-    }
-
-    public String getTenantAdminUserName() {
-        return tenantAdminUserName;
-    }
-
-    public void setTenantAdminUserName(String tenantAdminUserName) {
-        this.tenantAdminUserName = tenantAdminUserName;
-    }
-
-    @Override
-    public boolean isStateTransitionValid(ApplicationStatus newState) {
-        return this.applicationStateManager.isStateTransitionValid(newState);
-    }
-
-    @Override
-    public Stack<ApplicationStatus> getTransitionedStates() {
-        return this.applicationStateManager.getStateStack();
-    }
-
-    @Override
-    public ApplicationStatus getStatus() {
-        return this.applicationStateManager.getCurrentState();
-    }
-
-    @Override
-    public void setStatus(ApplicationStatus newState) {
-        this.applicationStateManager.changeState(newState);
-    }
-
-    public boolean equals(Object other) {
-        if(other == null || !(other instanceof Application)) {
-            return false;
-        }
-
-        if(this == other) {
-            return true;
-        }
-
-        Application that = (Application)other;
-        return this.id.equals(that.id);
-    }
-
-    public int hashCode () {
-        return id.hashCode();
-    }
-}

http://git-wip-us.apache.org/repos/asf/stratos/blob/e1534308/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/ApplicationStatus.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/ApplicationStatus.java
 
b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/ApplicationStatus.java
deleted file mode 100644
index 2173f86..0000000
--- 
a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/ApplicationStatus.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.stratos.messaging.domain.topology;
-
-import org.apache.stratos.messaging.domain.topology.lifecycle.LifeCycleState;
-
-import java.util.Arrays;
-import java.util.HashSet;
-import java.util.Set;
-
-public enum ApplicationStatus implements LifeCycleState {
-
-    Created (0) {
-        @Override
-        public Set<LifeCycleState> getNextStates() {
-            return new 
HashSet<LifeCycleState>(Arrays.asList(ApplicationStatus.Created,
-                    ApplicationStatus.Active, ApplicationStatus.Terminating));
-        }
-    },
-    Active (1) {
-        @Override
-        public Set<LifeCycleState> getNextStates() {
-            return new 
HashSet<LifeCycleState>(Arrays.asList(ApplicationStatus.Active,
-                    ApplicationStatus.Terminating, 
ApplicationStatus.Inactive));
-        }
-    },
-    Inactive (2) {
-        @Override
-        public Set<LifeCycleState> getNextStates() {
-            return new 
HashSet<LifeCycleState>(Arrays.asList(ApplicationStatus.Inactive, 
ApplicationStatus.Active,
-                    ApplicationStatus.Terminating));
-        }
-    },
-    Terminating (3) {
-        @Override
-        public Set<LifeCycleState> getNextStates() {
-            return new 
HashSet<LifeCycleState>(Arrays.asList(ApplicationStatus.Terminating,
-                    ApplicationStatus.Terminated));
-        }
-    },
-    Terminated (4) {
-        @Override
-        public Set<LifeCycleState> getNextStates() {
-            return new 
HashSet<LifeCycleState>(Arrays.asList(ApplicationStatus.Terminated));
-        }
-    };
-
-    private int code;
-
-    private ApplicationStatus (int code) {
-        this.code = code;
-    }
-
-    public int getCode() {
-        return code;
-    }
-}

http://git-wip-us.apache.org/repos/asf/stratos/blob/e1534308/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/ClusterDataHolder.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/ClusterDataHolder.java
 
b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/ClusterDataHolder.java
deleted file mode 100644
index 70eab4c..0000000
--- 
a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/ClusterDataHolder.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.stratos.messaging.domain.topology;
-
-import java.io.Serializable;
-
-/**
- * Data Holder for a Cluster.
- * Will hold the Service Type and Cluster Id.
- */
-
-public class ClusterDataHolder implements Serializable {
-
-    // Service/Cartridge type
-    private String serviceType;
-
-    // Cluster id
-    private String clusterId;
-
-    public ClusterDataHolder (String serviceType, String clusterId) {
-
-        this.serviceType = serviceType;
-        this.clusterId = clusterId;
-    }
-
-
-    public String getServiceType() {
-        return serviceType;
-    }
-
-    public String getClusterId() {
-        return clusterId;
-    }
-}

http://git-wip-us.apache.org/repos/asf/stratos/blob/e1534308/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/DependencyOrder.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/DependencyOrder.java
 
b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/DependencyOrder.java
deleted file mode 100644
index bdba59c..0000000
--- 
a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/DependencyOrder.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.stratos.messaging.domain.topology;
-
-import java.io.Serializable;
-import java.util.Set;
-
-public class DependencyOrder implements Serializable {
-
-       private static final long serialVersionUID = -599600831844477527L;
-
-       private Set<StartupOrder> startupOrders;
-
-    private String terminationBehaviour;
-
-    public DependencyOrder () {
-
-    }
-
-    public String getTerminationBehaviour() {
-        return terminationBehaviour;
-    }
-
-    public void setTerminationBehaviour(String terminationBehaviour) {
-        this.terminationBehaviour = terminationBehaviour;
-    }
-
-       public Set<StartupOrder> getStartupOrders() {
-               return startupOrders;
-       }
-
-       public void setStartupOrders(Set<StartupOrder> startupOrders) {
-               this.startupOrders = startupOrders;
-       }
-}

http://git-wip-us.apache.org/repos/asf/stratos/blob/e1534308/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/Group.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/Group.java
 
b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/Group.java
deleted file mode 100644
index 79ce4bc..0000000
--- 
a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/Group.java
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.stratos.messaging.domain.topology;
-
-import 
org.apache.stratos.messaging.domain.topology.lifecycle.LifeCycleStateManager;
-
-import java.util.Stack;
-
-/**
- * Represents a Group/nested Group in an Application/Group
- */
-
-public class Group extends ParentComponent implements 
LifeCycleStateTransitionBehavior<GroupStatus> {
-
-    private static final long serialVersionUID = 8347096598203655846L;
-    // Name of the Group, specified in Group Definition
-    private String name;
-    // Group alias
-    private String alias;
-    // Group deployment policy
-    private String deploymentPolicy;
-    // Group level autoscaling policy
-    private String autoscalingPolicy;
-    // Life cycle state manager
-    protected LifeCycleStateManager<GroupStatus> groupStateManager;
-
-    public Group (String name, String alias) {
-        super();
-        this.name = name;
-        this.alias = alias;
-        this.groupStateManager = new 
LifeCycleStateManager<GroupStatus>(GroupStatus.Created, alias);
-    }
-
-    public String getUniqueIdentifier() {
-        return alias;
-    }
-
-    public String getAlias() {
-        return alias;
-    }
-
-    public String getDeploymentPolicy() {
-        return deploymentPolicy;
-    }
-
-    public void setDeploymentPolicy(String deploymentPolicy) {
-        this.deploymentPolicy = deploymentPolicy;
-    }
-
-    public String getAutoscalingPolicy() {
-        return autoscalingPolicy;
-    }
-
-    public void setAutoscalingPolicy(String autoscalingPolicy) {
-        this.autoscalingPolicy = autoscalingPolicy;
-    }
-
-    @Override
-    public boolean isStateTransitionValid(GroupStatus newState) {
-        return groupStateManager.isStateTransitionValid(newState);
-    }
-
-    @Override
-    public Stack<GroupStatus> getTransitionedStates() {
-        return groupStateManager.getStateStack();
-    }
-
-    @Override
-    public GroupStatus getStatus() {
-        return groupStateManager.getCurrentState();
-    }
-
-    @Override
-    public void setStatus(GroupStatus newState) {
-        this.groupStateManager.changeState(newState);
-    }
-
-    public boolean equals(Object other) {
-        if(other == null || !(other instanceof Group)) {
-            return false;
-        }
-
-        if(this == other) {
-            return true;
-        }
-
-        Group that = (Group)other;
-        return this.name.equals(that.name) && this.alias.equals(that.alias);
-    }
-
-    public int hashCode () {
-        return name.hashCode() + alias.hashCode();
-    }
-}

http://git-wip-us.apache.org/repos/asf/stratos/blob/e1534308/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/GroupStatus.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/GroupStatus.java
 
b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/GroupStatus.java
deleted file mode 100644
index fbbaebc..0000000
--- 
a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/GroupStatus.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.stratos.messaging.domain.topology;
-
-import org.apache.stratos.messaging.domain.topology.lifecycle.LifeCycleState;
-
-import java.util.Arrays;
-import java.util.HashSet;
-import java.util.Set;
-
-public enum GroupStatus implements LifeCycleState {
-
-    Created(0) {
-        @Override
-        public Set<LifeCycleState> getNextStates() {
-            return new 
HashSet<LifeCycleState>(Arrays.asList(GroupStatus.Created,
-                    GroupStatus.Active, GroupStatus.Terminating));
-        }
-    },
-    Active(1) {
-        @Override
-        public Set<LifeCycleState> getNextStates() {
-            return new 
HashSet<LifeCycleState>(Arrays.asList(GroupStatus.Active,
-                    GroupStatus.Inactive, GroupStatus.Terminating));
-        }
-    },
-    Inactive(2) {
-        @Override
-        public Set<LifeCycleState> getNextStates() {
-            return new 
HashSet<LifeCycleState>(Arrays.asList(GroupStatus.Inactive, 
GroupStatus.Terminating));
-        }
-    },
-    Terminating(3) {
-        @Override
-        public Set<LifeCycleState> getNextStates() {
-            return new 
HashSet<LifeCycleState>(Arrays.asList(GroupStatus.Terminating,
-                    GroupStatus.Terminated, GroupStatus.Created));
-        }
-    },
-    Terminated(4) {
-        @Override
-        public Set<LifeCycleState> getNextStates() {
-            return new 
HashSet<LifeCycleState>(Arrays.asList(GroupStatus.Terminated));
-        }
-    };
-
-    private int code;
-
-    private GroupStatus(int code) {
-        this.code = code;
-    }
-
-    public int getCode() {
-        return code;
-    }
-
-}

Reply via email to