Updated Branches: refs/heads/master cd1510802 -> e178cc2b7
adding support to map marshalling/unmarshalling and annotating messaging component Project: http://git-wip-us.apache.org/repos/asf/incubator-stratos/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-stratos/commit/8ca73a34 Tree: http://git-wip-us.apache.org/repos/asf/incubator-stratos/tree/8ca73a34 Diff: http://git-wip-us.apache.org/repos/asf/incubator-stratos/diff/8ca73a34 Branch: refs/heads/master Commit: 8ca73a341aa7116390fe04cdac7be96b7f4bf7a8 Parents: d56fb76 Author: Isuru <[email protected]> Authored: Wed Dec 11 11:25:25 2013 +0530 Committer: Isuru <[email protected]> Committed: Wed Dec 11 11:25:25 2013 +0530 ---------------------------------------------------------------------- .../messaging/domain/topology/Cluster.java | 6 +++ .../messaging/domain/topology/Member.java | 7 +++ .../messaging/domain/topology/MemberStatus.java | 3 ++ .../util/bean/type/map/MapAdapter.java | 52 ++++++++++++++++++++ .../util/bean/type/map/MapEntryType.java | 32 ++++++++++++ .../messaging/util/bean/type/map/MapType.java | 28 +++++++++++ .../endpoint/bean/util/type/map/MapAdapter.java | 52 ++++++++++++++++++++ .../bean/util/type/map/MapEntryType.java | 32 ++++++++++++ .../endpoint/bean/util/type/map/MapType.java | 28 +++++++++++ 9 files changed, 240 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/8ca73a34/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/Cluster.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/Cluster.java b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/Cluster.java index f3bdf2a..7df2081 100644 --- a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/Cluster.java +++ b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/Cluster.java @@ -21,7 +21,10 @@ package org.apache.stratos.messaging.domain.topology; import org.apache.commons.lang3.StringUtils; import org.apache.stratos.messaging.util.Util; +import org.apache.stratos.messaging.util.bean.type.map.MapAdapter; +import javax.xml.bind.annotation.XmlRootElement; +import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; import java.io.Serializable; import java.util.*; @@ -29,6 +32,7 @@ import java.util.*; * Defines a cluster of a service. * Key: serviceName, clusterId */ +@XmlRootElement public class Cluster implements Serializable { private static final long serialVersionUID = -361960242360176077L; @@ -41,8 +45,10 @@ public class Cluster implements Serializable { private String deploymentPolicyName = "economy-deployment"; private boolean isLbCluster; // Key: Member.memberId + @XmlJavaTypeAdapter(MapAdapter.class) private Map<String, Member> memberMap; private String loadBalanceAlgorithmName; + @XmlJavaTypeAdapter(MapAdapter.class) private Properties properties; public Cluster(String serviceName, String clusterId, String autoscalePolicyName) { http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/8ca73a34/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/Member.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/Member.java b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/Member.java index dfe9ec5..a82b7a1 100644 --- a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/Member.java +++ b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/Member.java @@ -19,6 +19,10 @@ package org.apache.stratos.messaging.domain.topology; +import org.apache.stratos.messaging.util.bean.type.map.MapAdapter; + +import javax.xml.bind.annotation.XmlRootElement; +import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; import java.io.Serializable; import java.util.Collection; import java.util.HashMap; @@ -29,6 +33,7 @@ import java.util.Properties; * Defines a member node in a cluster. * Key: serviceName, clusterId, memberId */ +@XmlRootElement public class Member implements Serializable { private static final long serialVersionUID = 4179661867903664661L; private String serviceName; @@ -36,7 +41,9 @@ public class Member implements Serializable { private String memberId; private MemberStatus status; private String memberIp; + @XmlJavaTypeAdapter(MapAdapter.class) private Map<String, Port> portMap; + @XmlJavaTypeAdapter(MapAdapter.class) private Properties properties; private String partitionId; http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/8ca73a34/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/MemberStatus.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/MemberStatus.java b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/MemberStatus.java index b59b08c..2b9ce0c 100644 --- a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/MemberStatus.java +++ b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/MemberStatus.java @@ -19,9 +19,12 @@ package org.apache.stratos.messaging.domain.topology; +import javax.xml.bind.annotation.XmlRootElement; + /** * Represents status of a member during its lifecycle. */ +@XmlRootElement public enum MemberStatus { Created, Starting, Activated, Suspended, Terminated } http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/8ca73a34/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/util/bean/type/map/MapAdapter.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/util/bean/type/map/MapAdapter.java b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/util/bean/type/map/MapAdapter.java new file mode 100644 index 0000000..68e69d0 --- /dev/null +++ b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/util/bean/type/map/MapAdapter.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.util.bean.type.map; + +import javax.xml.bind.annotation.adapters.XmlAdapter; +import java.util.HashMap; +import java.util.Map; + +public class MapAdapter<S, T> extends XmlAdapter<MapType,Map<S, T>> { + + @Override + public MapType marshal(Map<S, T> v) throws Exception { + + MapType mapType = new MapType(); + + for(Map.Entry entry : v.entrySet()) { + MapEntryType myMapEntryType = new MapEntryType(); + myMapEntryType.key = entry.getKey(); + myMapEntryType.value = entry.getValue(); + mapType.entry.add(myMapEntryType); + } + return mapType; + } + + @Override + public Map<S, T> unmarshal(MapType v) throws Exception { + + Map hashMap = new HashMap(); + + for(MapEntryType mapEntryType : v.entry) { + hashMap.put(mapEntryType.key, mapEntryType.value); + } + return hashMap; + } +} http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/8ca73a34/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/util/bean/type/map/MapEntryType.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/util/bean/type/map/MapEntryType.java b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/util/bean/type/map/MapEntryType.java new file mode 100644 index 0000000..619be11 --- /dev/null +++ b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/util/bean/type/map/MapEntryType.java @@ -0,0 +1,32 @@ +/* + * 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.util.bean.type.map; + +import javax.xml.bind.annotation.XmlAttribute; +import javax.xml.bind.annotation.XmlValue; + +public class MapEntryType<S, T> { + + @XmlAttribute + public S key; + + @XmlValue + public T value; +} http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/8ca73a34/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/util/bean/type/map/MapType.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/util/bean/type/map/MapType.java b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/util/bean/type/map/MapType.java new file mode 100644 index 0000000..4006d5c --- /dev/null +++ b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/util/bean/type/map/MapType.java @@ -0,0 +1,28 @@ +/* + * 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.util.bean.type.map; + +import java.util.ArrayList; +import java.util.List; + +public class MapType { + + public List<MapEntryType> entry = new ArrayList<MapEntryType>(); +} http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/8ca73a34/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/util/type/map/MapAdapter.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/util/type/map/MapAdapter.java b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/util/type/map/MapAdapter.java new file mode 100644 index 0000000..9545a5a --- /dev/null +++ b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/util/type/map/MapAdapter.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.rest.endpoint.bean.util.type.map; + +import javax.xml.bind.annotation.adapters.XmlAdapter; +import java.util.HashMap; +import java.util.Map; + +public class MapAdapter<S, T> extends XmlAdapter<MapType,Map<S, T>> { + + @Override + public MapType marshal(Map<S, T> v) throws Exception { + + MapType mapType = new MapType(); + + for(Map.Entry entry : v.entrySet()) { + MapEntryType myMapEntryType = new MapEntryType(); + myMapEntryType.key = entry.getKey(); + myMapEntryType.value = entry.getValue(); + mapType.entry.add(myMapEntryType); + } + return mapType; + } + + @Override + public Map<S, T> unmarshal(MapType v) throws Exception { + + Map hashMap = new HashMap(); + + for(MapEntryType mapEntryType : v.entry) { + hashMap.put(mapEntryType.key, mapEntryType.value); + } + return hashMap; + } +} http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/8ca73a34/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/util/type/map/MapEntryType.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/util/type/map/MapEntryType.java b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/util/type/map/MapEntryType.java new file mode 100644 index 0000000..e9bb344 --- /dev/null +++ b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/util/type/map/MapEntryType.java @@ -0,0 +1,32 @@ +/* + * 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.rest.endpoint.bean.util.type.map; + +import javax.xml.bind.annotation.XmlAttribute; +import javax.xml.bind.annotation.XmlValue; + +public class MapEntryType <S,T> { + + @XmlAttribute + public S key; + + @XmlValue + public T value; +} http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/8ca73a34/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/util/type/map/MapType.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/util/type/map/MapType.java b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/util/type/map/MapType.java new file mode 100644 index 0000000..3fdd63f --- /dev/null +++ b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/util/type/map/MapType.java @@ -0,0 +1,28 @@ +/* + * 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.rest.endpoint.bean.util.type.map; + +import java.util.ArrayList; +import java.util.List; + +public class MapType { + + public List<MapEntryType> entry = new ArrayList<MapEntryType>(); +}
