Fixing JSON de-serialization issue in GET /applications method
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/dce73b03 Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/dce73b03 Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/dce73b03 Branch: refs/heads/master Commit: dce73b03fb9f14f457b801d8aba4ccd3c31f26bd Parents: 1283987 Author: Imesh Gunaratne <[email protected]> Authored: Wed Dec 17 10:21:12 2014 +0530 Committer: Udara Liyanage <[email protected]> Committed: Thu Dec 18 12:06:58 2014 +0530 ---------------------------------------------------------------------- components/org.apache.stratos.cli/pom.xml | 5 ++ .../java/org/apache/stratos/cli/RestClient.java | 3 +- .../stratos/cli/RestCommandLineService.java | 37 +++++---- .../application/beans/CartridgeDefinition.java | 3 - .../endpoint/util/converter/PojoConverter.java | 83 ++++++++------------ .../src/main/webapp/api/WEB-INF/cxf-servlet.xml | 1 + 6 files changed, 59 insertions(+), 73 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/stratos/blob/dce73b03/components/org.apache.stratos.cli/pom.xml ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.cli/pom.xml b/components/org.apache.stratos.cli/pom.xml index a83c997..60467eb 100644 --- a/components/org.apache.stratos.cli/pom.xml +++ b/components/org.apache.stratos.cli/pom.xml @@ -110,6 +110,11 @@ <artifactId>httpclient</artifactId> <version>4.3.3</version> </dependency> + <dependency> + <groupId>org.apache.stratos</groupId> + <artifactId>org.apache.stratos.manager</artifactId> + <version>4.1.0-SNAPSHOT</version> + </dependency> </dependencies> <build> <plugins> http://git-wip-us.apache.org/repos/asf/stratos/blob/dce73b03/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/RestClient.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/RestClient.java b/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/RestClient.java index 2cd4289..b2df173 100644 --- a/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/RestClient.java +++ b/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/RestClient.java @@ -211,7 +211,8 @@ public class RestClient implements GenericRestClient { } } - public Object getEntity(String serviceEndpoint, Class responseJsonClass, String identifierPlaceHolder, String identifier, String entityName) { + public Object getEntity(String serviceEndpoint, Class responseJsonClass, String identifierPlaceHolder, + String identifier, String entityName) { try { return executeGet(serviceEndpoint.replace(identifierPlaceHolder, identifier), responseJsonClass); } catch (Exception e) { http://git-wip-us.apache.org/repos/asf/stratos/blob/dce73b03/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/RestCommandLineService.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/RestCommandLineService.java b/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/RestCommandLineService.java index 6ee2696..bb015bc 100644 --- a/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/RestCommandLineService.java +++ b/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/RestCommandLineService.java @@ -33,21 +33,17 @@ import org.apache.stratos.cli.exception.ExceptionMapper; import org.apache.stratos.cli.utils.CliConstants; import org.apache.stratos.cli.utils.CliUtils; import org.apache.stratos.cli.utils.RowMapper; -import org.apache.stratos.common.beans.ApplicationBean; import org.apache.stratos.common.beans.GroupBean; import org.apache.stratos.common.beans.TenantInfoBean; import org.apache.stratos.common.beans.UserInfoBean; -import org.apache.stratos.common.beans.autoscaler.partition.Partition; import org.apache.stratos.common.beans.autoscaler.policy.autoscale.AutoscalePolicy; import org.apache.stratos.common.beans.autoscaler.policy.deployment.DeploymentPolicy; import org.apache.stratos.common.beans.cartridge.definition.CartridgeDefinitionBean; import org.apache.stratos.common.beans.cartridge.definition.IaasProviderBean; -import org.apache.stratos.common.beans.cartridge.definition.PortMappingBean; import org.apache.stratos.common.beans.kubernetes.KubernetesGroup; import org.apache.stratos.common.beans.kubernetes.KubernetesHost; import org.apache.stratos.common.beans.topology.Cluster; -import org.apache.stratos.common.beans.topology.Member; -import org.apache.stratos.manager.dto.Cartridge; +import org.apache.stratos.manager.composite.application.beans.ApplicationDefinition; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -654,9 +650,9 @@ public class RestCommandLineService { // This method helps to list applications public void listApplications() throws CommandException { try { - Type listType = new TypeToken<ArrayList<ApplicationBean>>() { + Type listType = new TypeToken<ArrayList<ApplicationDefinition>>() { }.getType(); - List<ApplicationBean> list = (List<ApplicationBean>) restClient.listEntity(ENDPOINT_LIST_APPLICATION, + List<ApplicationDefinition> list = (List<ApplicationDefinition>) restClient.listEntity(ENDPOINT_LIST_APPLICATION, listType, "applications"); if ((list == null) || (list.size() == 0)) { @@ -664,19 +660,22 @@ public class RestCommandLineService { return; } - RowMapper<ApplicationBean> rowMapper = new RowMapper<ApplicationBean>() { - public String[] getData(ApplicationBean definition) { - String[] data = new String[1]; - data[0] = definition.getId(); + RowMapper<ApplicationDefinition> rowMapper = new RowMapper<ApplicationDefinition>() { + public String[] getData(ApplicationDefinition applicationDefinition) { + String[] data = new String[4]; + data[0] = applicationDefinition.getApplicationId(); + data[1] = applicationDefinition.getName(); + data[2] = applicationDefinition.getAlias(); + data[3] = applicationDefinition.getStatus(); return data; } }; - ApplicationBean[] array = new ApplicationBean[list.size()]; + ApplicationDefinition[] array = new ApplicationDefinition[list.size()]; array = list.toArray(array); System.out.println("Applications found:"); - CliUtils.printTable(array, rowMapper, "Application ID"); + CliUtils.printTable(array, rowMapper, "Application ID", "Name", "Alias", "Status"); } catch (Exception e) { String message = "Error in listing applications"; System.out.println(message); @@ -937,19 +936,19 @@ public class RestCommandLineService { // This method helps to describe applications public void describeApplication (String applicationID) { try { - Type listType = new TypeToken<ArrayList<ApplicationBean>>() { + Type listType = new TypeToken<ApplicationDefinition>() { }.getType(); - List<ApplicationBean> applications = (List<ApplicationBean>) restClient - .listEntity(ENDPOINT_GET_APPLICATION.replace("{appId}", applicationID), - listType, "applications"); + ApplicationDefinition application = (ApplicationDefinition) restClient + .getEntity(ENDPOINT_GET_APPLICATION, ApplicationDefinition.class, "{appId}", applicationID, + "application"); - if (applications == null) { + if (application == null) { System.out.println("Application not found: " + applicationID); return; } System.out.println("Application: " + applicationID); - System.out.println(getGson().toJson(applications)); + System.out.println(getGson().toJson(application)); } catch (Exception e) { String message = "Error in describing application: " + applicationID; System.out.println(message); http://git-wip-us.apache.org/repos/asf/stratos/blob/dce73b03/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/beans/CartridgeDefinition.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/beans/CartridgeDefinition.java b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/beans/CartridgeDefinition.java index c79f7ed..8339d65 100644 --- a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/beans/CartridgeDefinition.java +++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/beans/CartridgeDefinition.java @@ -28,11 +28,8 @@ public class CartridgeDefinition implements Serializable { private static final long serialVersionUID = 8968224678298479827L; private String type; - private int cartridgeMin; - private int cartridgeMax; - private SubscribableInfo subscribableInfo; public String getType() { http://git-wip-us.apache.org/repos/asf/stratos/blob/dce73b03/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/util/converter/PojoConverter.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/util/converter/PojoConverter.java b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/util/converter/PojoConverter.java index ab4a03c..f95636b 100644 --- a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/util/converter/PojoConverter.java +++ b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/util/converter/PojoConverter.java @@ -19,66 +19,23 @@ package org.apache.stratos.rest.endpoint.util.converter; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Enumeration; -import java.util.List; - import org.apache.commons.lang.StringUtils; import org.apache.stratos.autoscaler.stub.deployment.partition.ChildLevelNetworkPartition; import org.apache.stratos.autoscaler.stub.deployment.partition.ChildLevelPartition; import org.apache.stratos.autoscaler.stub.deployment.policy.ChildPolicy; -import org.apache.stratos.autoscaler.stub.pojo.ApplicationContext; -import org.apache.stratos.autoscaler.stub.pojo.CartridgeContext; -import org.apache.stratos.autoscaler.stub.pojo.DependencyContext; -import org.apache.stratos.autoscaler.stub.pojo.GroupContext; -import org.apache.stratos.autoscaler.stub.pojo.SubscribableInfoContext; -import org.apache.stratos.cloud.controller.stub.domain.CartridgeConfig; -import org.apache.stratos.cloud.controller.stub.domain.Container; -import org.apache.stratos.cloud.controller.stub.domain.FloatingNetwork; -import org.apache.stratos.cloud.controller.stub.domain.FloatingNetworks; -import org.apache.stratos.cloud.controller.stub.domain.IaasConfig; -import org.apache.stratos.cloud.controller.stub.domain.LoadbalancerConfig; -import org.apache.stratos.cloud.controller.stub.domain.NetworkInterface; -import org.apache.stratos.cloud.controller.stub.domain.NetworkInterfaces; -import org.apache.stratos.cloud.controller.stub.domain.Persistence; -import org.apache.stratos.cloud.controller.stub.domain.PortMapping; +import org.apache.stratos.autoscaler.stub.pojo.*; +import org.apache.stratos.cloud.controller.stub.domain.*; import org.apache.stratos.cloud.controller.stub.domain.ServiceGroup; -import org.apache.stratos.cloud.controller.stub.domain.Volume; import org.apache.stratos.common.Properties; import org.apache.stratos.common.Property; -import org.apache.stratos.manager.composite.application.beans.*; -import org.apache.stratos.manager.deploy.service.Service; -import org.apache.stratos.manager.grouping.definitions.DependencyDefinitions; -import org.apache.stratos.manager.grouping.definitions.ServiceGroupDefinition; -import org.apache.stratos.manager.subscription.SubscriptionDomain; -import org.apache.stratos.messaging.domain.applications.Application; -import org.apache.stratos.messaging.domain.applications.Group; -import org.apache.stratos.messaging.domain.instance.ApplicationInstance; -import org.apache.stratos.messaging.domain.instance.ClusterInstance; -import org.apache.stratos.messaging.domain.instance.GroupInstance; -import org.apache.stratos.messaging.domain.topology.Cluster; import org.apache.stratos.common.beans.ApplicationBean; import org.apache.stratos.common.beans.GroupBean; import org.apache.stratos.common.beans.autoscaler.partition.ApplicationLevelNetworkPartition; import org.apache.stratos.common.beans.autoscaler.partition.Partition; -import org.apache.stratos.common.beans.autoscaler.policy.autoscale.AutoscalePolicy; -import org.apache.stratos.common.beans.autoscaler.policy.autoscale.LoadAverageThresholds; -import org.apache.stratos.common.beans.autoscaler.policy.autoscale.LoadThresholds; -import org.apache.stratos.common.beans.autoscaler.policy.autoscale.MemoryConsumptionThresholds; -import org.apache.stratos.common.beans.autoscaler.policy.autoscale.RequestsInFlightThresholds; +import org.apache.stratos.common.beans.autoscaler.policy.autoscale.*; import org.apache.stratos.common.beans.autoscaler.policy.deployment.DeploymentPolicy; -import org.apache.stratos.common.beans.cartridge.definition.CartridgeDefinitionBean; -import org.apache.stratos.common.beans.cartridge.definition.ContainerBean; -import org.apache.stratos.common.beans.cartridge.definition.FloatingNetworkBean; -import org.apache.stratos.common.beans.cartridge.definition.IaasProviderBean; -import org.apache.stratos.common.beans.cartridge.definition.LoadBalancerBean; -import org.apache.stratos.common.beans.cartridge.definition.NetworkInterfaceBean; -import org.apache.stratos.common.beans.cartridge.definition.PersistenceBean; -import org.apache.stratos.common.beans.cartridge.definition.PortMappingBean; +import org.apache.stratos.common.beans.cartridge.definition.*; import org.apache.stratos.common.beans.cartridge.definition.PropertyBean; -import org.apache.stratos.common.beans.cartridge.definition.ServiceDefinitionBean; -import org.apache.stratos.common.beans.cartridge.definition.VolumeBean; import org.apache.stratos.common.beans.kubernetes.KubernetesGroup; import org.apache.stratos.common.beans.kubernetes.KubernetesHost; import org.apache.stratos.common.beans.kubernetes.KubernetesMaster; @@ -86,6 +43,23 @@ import org.apache.stratos.common.beans.kubernetes.PortRange; import org.apache.stratos.common.beans.subscription.domain.SubscriptionDomainBean; import org.apache.stratos.common.beans.topology.Instance; import org.apache.stratos.common.beans.topology.Member; +import org.apache.stratos.common.util.CommonUtil; +import org.apache.stratos.manager.composite.application.beans.*; +import org.apache.stratos.manager.deploy.service.Service; +import org.apache.stratos.manager.grouping.definitions.DependencyDefinitions; +import org.apache.stratos.manager.grouping.definitions.ServiceGroupDefinition; +import org.apache.stratos.manager.subscription.SubscriptionDomain; +import org.apache.stratos.messaging.domain.applications.Application; +import org.apache.stratos.messaging.domain.applications.Group; +import org.apache.stratos.messaging.domain.instance.ApplicationInstance; +import org.apache.stratos.messaging.domain.instance.ClusterInstance; +import org.apache.stratos.messaging.domain.instance.GroupInstance; +import org.apache.stratos.messaging.domain.topology.Cluster; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.Enumeration; +import java.util.List; public class PojoConverter { @@ -136,7 +110,9 @@ public class PojoConverter { } if (cartridgeDefinitionBean.getExportingProperties() != null) { - cartridgeConfig.setExportingProperties(cartridgeDefinitionBean.getExportingProperties()); + List<String> propertiesList = cartridgeDefinitionBean.getExportingProperties(); + String[] propertiesArray = propertiesList.toArray(new String[propertiesList.size()]); + cartridgeConfig.setExportingProperties(propertiesArray); } if (cartridgeDefinitionBean.getContainer() != null) { @@ -1092,7 +1068,12 @@ public class PojoConverter { return applicationContext; } - public static ApplicationDefinition convertApplicationContextToApplicationDefinition(ApplicationContext applicationContext) { + public static ApplicationDefinition convertApplicationContextToApplicationDefinition( + ApplicationContext applicationContext) { + if(applicationContext == null) { + return null; + } + ApplicationDefinition applicationDefinition = new ApplicationDefinition(); applicationDefinition.setApplicationId(applicationContext.getApplicationId()); applicationDefinition.setName(applicationContext.getName()); @@ -1186,7 +1167,9 @@ public class PojoConverter { SubscribableInfo subscribableInfo = new SubscribableInfo(); subscribableInfo.setAlias(subscribableInfoContext.getAlias()); subscribableInfo.setAutoscalingPolicy(subscribableInfoContext.getAutoscalingPolicy()); - subscribableInfo.setDependencyAliases(subscribableInfoContext.getDependencyAliases()); + if(!CommonUtil.isEmptyArray(subscribableInfoContext.getDependencyAliases())) { + subscribableInfo.setDependencyAliases(subscribableInfoContext.getDependencyAliases()); + } subscribableInfo.setDeploymentPolicy(subscribableInfoContext.getDeploymentPolicy()); subscribableInfo.setMinMembers(subscribableInfoContext.getMinMembers()); subscribableInfo.setMaxMembers(subscribableInfoContext.getMaxMembers()); http://git-wip-us.apache.org/repos/asf/stratos/blob/dce73b03/components/org.apache.stratos.rest.endpoint/src/main/webapp/api/WEB-INF/cxf-servlet.xml ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.rest.endpoint/src/main/webapp/api/WEB-INF/cxf-servlet.xml b/components/org.apache.stratos.rest.endpoint/src/main/webapp/api/WEB-INF/cxf-servlet.xml index 002f034..7543f7c 100644 --- a/components/org.apache.stratos.rest.endpoint/src/main/webapp/api/WEB-INF/cxf-servlet.xml +++ b/components/org.apache.stratos.rest.endpoint/src/main/webapp/api/WEB-INF/cxf-servlet.xml @@ -128,6 +128,7 @@ <value>networkPartition</value> <value>partitions</value> <value>instances</value> + <value>dependencyAliases</value> </list> </property> </bean>
