Details
diff --git a/jaxrs/src/main/java/org/killbill/billing/jaxrs/json/NodeCommandJson.java b/jaxrs/src/main/java/org/killbill/billing/jaxrs/json/NodeCommandJson.java
index fb6f43f..ca8ec1f 100644
--- a/jaxrs/src/main/java/org/killbill/billing/jaxrs/json/NodeCommandJson.java
+++ b/jaxrs/src/main/java/org/killbill/billing/jaxrs/json/NodeCommandJson.java
@@ -28,12 +28,12 @@ public class NodeCommandJson {
private final boolean systemCommandType;
private final String nodeCommandType;
- private final List<NodeCommandProperty> nodeCommandProperties;
+ private final List<NodeCommandPropertyJson> nodeCommandProperties;
@JsonCreator
public NodeCommandJson(@JsonProperty("systemCommandType") final boolean systemCommandType,
@JsonProperty("nodeCommandType") final String nodeCommandType,
- @JsonProperty("nodeCommandProperties") final List<NodeCommandProperty> nodeCommandProperties) {
+ @JsonProperty("nodeCommandProperties") final List<NodeCommandPropertyJson> nodeCommandProperties) {
this.systemCommandType = systemCommandType;
this.nodeCommandType = nodeCommandType;
this.nodeCommandProperties = nodeCommandProperties;
@@ -47,7 +47,7 @@ public class NodeCommandJson {
return nodeCommandType;
}
- public List<NodeCommandProperty> getNodeCommandProperties() {
+ public List<NodeCommandPropertyJson> getNodeCommandProperties() {
return nodeCommandProperties;
}
}
diff --git a/jaxrs/src/main/java/org/killbill/billing/jaxrs/json/NodeCommandPropertyJson.java b/jaxrs/src/main/java/org/killbill/billing/jaxrs/json/NodeCommandPropertyJson.java
new file mode 100644
index 0000000..ef0665b
--- /dev/null
+++ b/jaxrs/src/main/java/org/killbill/billing/jaxrs/json/NodeCommandPropertyJson.java
@@ -0,0 +1,33 @@
+/*
+ * Copyright 2014-2015 Groupon, Inc
+ * Copyright 2014-2015 The Billing Project, LLC
+ *
+ * The Billing Project 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.killbill.billing.jaxrs.json;
+
+import org.killbill.billing.util.nodes.NodeCommandProperty;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+public class NodeCommandPropertyJson extends NodeCommandProperty {
+
+
+ @JsonCreator
+ public NodeCommandPropertyJson(@JsonProperty("key") final String key,
+ @JsonProperty("value") final Object value) {
+ super(key, value);
+ }
+}
diff --git a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/NodesInfoResource.java b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/NodesInfoResource.java
index 4701262..cff110d 100644
--- a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/NodesInfoResource.java
+++ b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/NodesInfoResource.java
@@ -39,6 +39,7 @@ import org.killbill.billing.account.api.AccountApiException;
import org.killbill.billing.account.api.AccountUserApi;
import org.killbill.billing.entitlement.api.SubscriptionApiException;
import org.killbill.billing.jaxrs.json.NodeCommandJson;
+import org.killbill.billing.jaxrs.json.NodeCommandPropertyJson;
import org.killbill.billing.jaxrs.json.NodeInfoJson;
import org.killbill.billing.jaxrs.json.PluginInfoJson;
import org.killbill.billing.jaxrs.json.PluginInfoJson.PluginServiceInfoJson;
@@ -184,7 +185,7 @@ public class NodesInfoResource extends JaxRsResourceBase {
String pluginName = null;
String pluginVersion = null;
- final Iterator<NodeCommandProperty> it = input.getNodeCommandProperties().iterator();
+ final Iterator<NodeCommandPropertyJson> it = input.getNodeCommandProperties().iterator();
while (it.hasNext()) {
final NodeCommandProperty cur = it.next();
if (PluginNodeCommandMetadata.PLUGIN_NAME.equals(cur.getKey())) {
@@ -200,14 +201,23 @@ public class NodesInfoResource extends JaxRsResourceBase {
}
if (pluginName != null) {
- return new PluginNodeCommandMetadata(pluginName, pluginVersion, input.getNodeCommandProperties());
+ return new PluginNodeCommandMetadata(pluginName, pluginVersion, toNodeCommandProperties(input.getNodeCommandProperties()));
} else {
return new NodeCommandMetadata() {
@Override
public List<NodeCommandProperty> getProperties() {
- return input.getNodeCommandProperties();
+ return toNodeCommandProperties(input.getNodeCommandProperties());
}
};
}
}
+
+ private List<NodeCommandProperty> toNodeCommandProperties(final List<NodeCommandPropertyJson> input) {
+ return ImmutableList.copyOf(Iterables.transform(input, new Function<NodeCommandPropertyJson, NodeCommandProperty>() {
+ @Override
+ public NodeCommandProperty apply(final NodeCommandPropertyJson input) {
+ return (NodeCommandProperty) input;
+ }
+ }));
+ }
}