From 83c78b6db3ed57692c5e11dae3b80941e02f81ed Mon Sep 17 00:00:00 2001 From: Pete Ahearn Date: Tue, 15 Jul 2014 15:38:01 -0400 Subject: [PATCH 1/2] Added support for optional payload parameters. --- .../java/com/comcast/tvx/cloud/MetaData.java | 21 ++++++++++++++++ .../comcast/tvx/cloud/RegistrationClient.java | 24 ++++++++++++++++++- .../com/comcast/tvx/cloud/ServiceUtil.java | 15 ++++++++---- 3 files changed, 54 insertions(+), 6 deletions(-) diff --git a/discovery-client/src/main/java/com/comcast/tvx/cloud/MetaData.java b/discovery-client/src/main/java/com/comcast/tvx/cloud/MetaData.java index 0482e39..b60e727 100644 --- a/discovery-client/src/main/java/com/comcast/tvx/cloud/MetaData.java +++ b/discovery-client/src/main/java/com/comcast/tvx/cloud/MetaData.java @@ -16,6 +16,7 @@ package com.comcast.tvx.cloud; +import java.util.Map; import java.util.UUID; import org.codehaus.jackson.annotate.JsonProperty; @@ -43,6 +44,10 @@ public final class MetaData { @JsonProperty private String serviceName; + /** The parameter map. */ + @JsonProperty + private Map parameters; + /** * Instantiates a new worker metadata. */ @@ -106,4 +111,20 @@ public int getListenPort() { public String getServiceName() { return serviceName; } + + /** + * Gets the parameter map. + * + * @return the parameter map + */ + @JsonProperty + public Map getParameters() { return parameters; } + + /** + * Sets the parameter map. + * @param parameters - The parameter map + * @return void + */ + @JsonProperty + public void setParameters(Map parameters) { this.parameters = parameters; } } diff --git a/discovery-client/src/main/java/com/comcast/tvx/cloud/RegistrationClient.java b/discovery-client/src/main/java/com/comcast/tvx/cloud/RegistrationClient.java index e012eff..4fd6b5c 100644 --- a/discovery-client/src/main/java/com/comcast/tvx/cloud/RegistrationClient.java +++ b/discovery-client/src/main/java/com/comcast/tvx/cloud/RegistrationClient.java @@ -65,6 +65,27 @@ public final class RegistrationClient { /** The log. */ private Logger log = LoggerFactory.getLogger(this.getClass()); + /** Payload parameters." */ + private Map parameters; + + /** + * Instantiates a new registration client. + * + * @param curatorFramework the curator framework + * @param basePath Zookeeper registration path + * @param flavor Application flavor of this client. + * @param listenAddress Local IP address + * @param serviceSpec A list of services and corresponding ports. + * @param parameters A map of optional payload parameters. + */ + public RegistrationClient(CuratorFramework curatorFramework, String basePath, + String flavor, String listenAddress, + String serviceSpec, + Map parameters) { + this(curatorFramework, basePath, flavor, listenAddress, serviceSpec); + this.parameters = parameters; + } + /** * Instantiates a new registration client. * @@ -80,6 +101,7 @@ public RegistrationClient(CuratorFramework curatorFramework, String basePath, this(curatorFramework, basePath, flavor, listenAddress, ServiceUtil.parseServiceSpec(serviceSpec)); } + /** * Instantiates a new registration client. * @@ -120,7 +142,7 @@ public RegistrationClient advertiseAvailability() { String regPath = constructRegistrationPath(basePath, flavor); int port = entry.getValue().intValue(); ServiceDiscovery discovery = ServiceUtil.getDiscovery(regPath, curatorFramework); - ServiceInstance service = ServiceUtil.getServiceInstance(serviceName, port, listenAddress); + ServiceInstance service = ServiceUtil.getServiceInstance(serviceName, port, listenAddress, parameters); /* * Having >1 instance with of the same name with same listenAddress + listPort is diff --git a/discovery-client/src/main/java/com/comcast/tvx/cloud/ServiceUtil.java b/discovery-client/src/main/java/com/comcast/tvx/cloud/ServiceUtil.java index 52d7d74..6826145 100644 --- a/discovery-client/src/main/java/com/comcast/tvx/cloud/ServiceUtil.java +++ b/discovery-client/src/main/java/com/comcast/tvx/cloud/ServiceUtil.java @@ -73,8 +73,11 @@ protected static Map parseServiceSpec(String serviceSpec) { * @return single instance of RegistrationClient * @throws Exception the exception */ - protected static ServiceInstance getServiceInstance(String serviceName, int servicePort, - String serviceAddress) throws Exception { + protected static ServiceInstance getServiceInstance( + String serviceName, + int servicePort, + String serviceAddress, + Map parameters) throws Exception { ServiceInstanceBuilder builder = ServiceInstance.builder(); @@ -82,9 +85,11 @@ protected static ServiceInstance getServiceInstance(String serviceName // ethernet device String registerAddress = (serviceAddress == null) ? builder.build().getAddress() : serviceAddress; - builder.name(serviceName).payload(new MetaData(UUID.randomUUID(), registerAddress, servicePort, serviceName)).id( - registerAddress + ":" + String.valueOf(servicePort)).serviceType(ServiceType.DYNAMIC).address( - registerAddress).port(servicePort); + MetaData metadata = new MetaData(UUID.randomUUID(), registerAddress, servicePort, serviceName); + metadata.setParameters(parameters); + + builder.name(serviceName).payload(metadata).id(registerAddress + ":" + + String.valueOf(servicePort)).serviceType(ServiceType.DYNAMIC).address(registerAddress).port(servicePort); return builder.build(); } From 2b5feefdd7a94c719cbbf50a52c7cce7ff167543 Mon Sep 17 00:00:00 2001 From: Pete Ahearn Date: Tue, 15 Jul 2014 15:43:28 -0400 Subject: [PATCH 2/2] Unfolded methods. --- .../src/main/java/com/comcast/tvx/cloud/MetaData.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/discovery-client/src/main/java/com/comcast/tvx/cloud/MetaData.java b/discovery-client/src/main/java/com/comcast/tvx/cloud/MetaData.java index b60e727..efafe3b 100644 --- a/discovery-client/src/main/java/com/comcast/tvx/cloud/MetaData.java +++ b/discovery-client/src/main/java/com/comcast/tvx/cloud/MetaData.java @@ -118,7 +118,9 @@ public String getServiceName() { * @return the parameter map */ @JsonProperty - public Map getParameters() { return parameters; } + public Map getParameters() { + return parameters; + } /** * Sets the parameter map. @@ -126,5 +128,7 @@ public String getServiceName() { * @return void */ @JsonProperty - public void setParameters(Map parameters) { this.parameters = parameters; } + public void setParameters(Map parameters) { + this.parameters = parameters; + } }