Repository: stratos
Updated Branches:
  refs/heads/docker-grouping-merge 46edc50db -> 08b7cac1a


Introducing new resource in REST API to get applications and removing 
un-subscribe resource


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

Branch: refs/heads/docker-grouping-merge
Commit: 37ebabe3e3660a5cdaf10091d5b7df1152f691fc
Parents: f7b64ca
Author: Imesh Gunaratne <[email protected]>
Authored: Fri Nov 7 16:03:24 2014 +0530
Committer: Imesh Gunaratne <[email protected]>
Committed: Fri Nov 7 16:03:24 2014 +0530

----------------------------------------------------------------------
 .../rest/endpoint/api/StratosApiV41.java        | 24 ++++---
 .../rest/endpoint/api/StratosApiV41Utils.java   | 74 +++++++++++++-------
 2 files changed, 62 insertions(+), 36 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/37ebabe3/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV41.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV41.java
 
b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV41.java
index a7702c1..21d5c61 100644
--- 
a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV41.java
+++ 
b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV41.java
@@ -407,6 +407,19 @@ public class StratosApiV41 extends AbstractApi {
         return  Response.ok().entity(subscriptions).build();
     }
 
+    @GET
+    @Path("/application/")
+    @Consumes("application/json")
+    @AuthorizationAction("/permission/protected/manage/monitor/tenants")
+    public Response getApplications() throws RestAPIException {
+        ApplicationBean[] applications = StratosApiV41Utils.getApplications();
+        if(applications == null) {
+            return Response.status(Response.Status.NOT_FOUND).build();
+        }else{
+            return  Response.ok().entity(applications).build();
+        }
+    }
+
     /**
      * This API resource provides information about the application denoted by 
the given appId. Details includes,
      * Application details, top level cluster details, details of the group 
and sub groups.
@@ -421,7 +434,7 @@ public class StratosApiV41 extends AbstractApi {
     @Consumes("application/json")
     @AuthorizationAction("/permission/protected/manage/monitor/tenants")
     public Response getApplicationInfo(@PathParam("appId") String 
applicationId) throws RestAPIException {
-        ApplicationBean application = 
StratosApiV41Utils.getApplicationInfo(applicationId, getConfigContext());
+        ApplicationBean application = 
StratosApiV41Utils.getApplicationInfo(applicationId);
         if(application == null) {
             return Response.status(Response.Status.NOT_FOUND).build();
         }else{
@@ -621,15 +634,6 @@ public class StratosApiV41 extends AbstractApi {
     }
 
     @POST
-    @Path("/cartridge/unsubscribe")
-    @Consumes("application/json")
-    @AuthorizationAction("/permission/protected/manage/monitor/tenants")
-    public Response unsubscribe(String alias) throws RestAPIException {
-        StratosApiV41Utils.unsubscribe(alias, getTenantDomain());
-        return Response.noContent().build();
-    }
-
-    @POST
     @Path("/tenant")
     @Consumes("application/json")
     @Produces("application/json")

http://git-wip-us.apache.org/repos/asf/stratos/blob/37ebabe3/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV41Utils.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV41Utils.java
 
b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV41Utils.java
index 25008aa..c58c9b5 100644
--- 
a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV41Utils.java
+++ 
b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV41Utils.java
@@ -1492,7 +1492,25 @@ public class StratosApiV41Utils {
         log.info("Successfully undeployed the Service Group Definition with 
name " + serviceGroupDefinitionName);
     }
 
-    public static ApplicationBean getApplicationInfo(String applicationId, 
ConfigurationContext configContext) {
+    public static ApplicationBean[] getApplications() {
+        List<ApplicationBean> applicationBeanList = new 
ArrayList<ApplicationBean>();
+        try {
+            ApplicationManager.acquireReadLockForApplications();
+            ApplicationBean applicationBean;
+            for(Application application : 
ApplicationManager.getApplications().getApplications().values()) {
+                applicationBean = PojoConverter.applicationToBean(application);
+                addClustersToApplicationBean(applicationBean, application);
+                addGroupsToApplicationBean(applicationBean, application);
+                applicationBeanList.add(applicationBean);
+            }
+        } finally {
+            ApplicationManager.releaseReadLockForApplications();
+        }
+
+        return applicationBeanList.toArray(new 
ApplicationBean[applicationBeanList.size()]);
+    }
+
+    public static ApplicationBean getApplicationInfo(String applicationId) {
         ApplicationBean applicationBean = null;
         try {
             ApplicationManager.acquireReadLockForApplication(applicationId);
@@ -1501,36 +1519,40 @@ public class StratosApiV41Utils {
                 return null;
             }
             applicationBean = PojoConverter.applicationToBean(application);
-
-            Map<String, ClusterDataHolder> topLevelClusterDataMap = 
application.getClusterDataMap();
-            for (Map.Entry<String, ClusterDataHolder> entry : 
topLevelClusterDataMap.entrySet()) {
-                ClusterDataHolder clusterDataHolder = entry.getValue();
-                String clusterId = clusterDataHolder.getClusterId();
-                String serviceType = clusterDataHolder.getServiceType();
-                TopologyManager.acquireReadLockForCluster(serviceType, 
clusterId);
-                Cluster topLevelCluster;
-
-                try {
-                    TopologyManager.acquireReadLockForCluster(serviceType, 
clusterId);
-                    topLevelCluster = 
TopologyManager.getTopology().getService(serviceType).getCluster(clusterId);
-                } finally {
-                    TopologyManager.releaseReadLockForCluster(serviceType, 
clusterId);
-                }
-                
applicationBean.clusters.add(PojoConverter.populateClusterPojos(topLevelCluster));
-            }
-
-            Collection<Group> groups = application.getGroups();
-            for (Group group : groups) {
-                GroupBean groupBean = PojoConverter.toGroupBean(group);
-                setSubGroups(group, groupBean);
-                applicationBean.addGroup(groupBean);
-            }
+            addClustersToApplicationBean(applicationBean, application);
+            addGroupsToApplicationBean(applicationBean, application);
         } finally {
             ApplicationManager.releaseReadLockForApplication(applicationId);
         }
+        return applicationBean;
+    }
+
+    private static void addGroupsToApplicationBean(ApplicationBean 
applicationBean, Application application) {
+        Collection<Group> groups = application.getGroups();
+        for (Group group : groups) {
+            GroupBean groupBean = PojoConverter.toGroupBean(group);
+            setSubGroups(group, groupBean);
+            applicationBean.addGroup(groupBean);
+        }
+    }
 
+    private static void addClustersToApplicationBean(ApplicationBean 
applicationBean, Application application) {
+        Map<String, ClusterDataHolder> topLevelClusterDataMap = 
application.getClusterDataMap();
+        for (Map.Entry<String, ClusterDataHolder> entry : 
topLevelClusterDataMap.entrySet()) {
+            ClusterDataHolder clusterDataHolder = entry.getValue();
+            String clusterId = clusterDataHolder.getClusterId();
+            String serviceType = clusterDataHolder.getServiceType();
+            TopologyManager.acquireReadLockForCluster(serviceType, clusterId);
+            Cluster topLevelCluster;
 
-        return applicationBean;
+            try {
+                TopologyManager.acquireReadLockForCluster(serviceType, 
clusterId);
+                topLevelCluster = 
TopologyManager.getTopology().getService(serviceType).getCluster(clusterId);
+            } finally {
+                TopologyManager.releaseReadLockForCluster(serviceType, 
clusterId);
+            }
+            
applicationBean.clusters.add(PojoConverter.populateClusterPojos(topLevelCluster));
+        }
     }
 
     private static void setSubGroups(Group group, GroupBean groupBean) {

Reply via email to