From c67ca3cf7a2e4e6042782d11a288f95f74a76afc Mon Sep 17 00:00:00 2001 From: Jian Li Date: Thu, 21 Jan 2016 13:42:19 -0800 Subject: [PATCH] Make results of application codec and swagger doc desc consistent Application codec returns permissions, requiredApps and features in string format. However, based on swagger doc, the codec is supposed to return array. This commit fixes the type inconsistent issue raised in application rest api. Change-Id: If47338b287518a981c98ff89ca543802579c7610 --- .../codec/impl/ApplicationCodec.java | 21 +++++++++++++++---- .../resources/definitions/Application.json | 2 +- .../definitions/ApplicationPost.json | 2 +- .../resources/definitions/Applications.json | 2 +- 4 files changed, 20 insertions(+), 7 deletions(-) diff --git a/core/common/src/main/java/org/onosproject/codec/impl/ApplicationCodec.java b/core/common/src/main/java/org/onosproject/codec/impl/ApplicationCodec.java index 3c6f37c102..4886e604c5 100644 --- a/core/common/src/main/java/org/onosproject/codec/impl/ApplicationCodec.java +++ b/core/common/src/main/java/org/onosproject/codec/impl/ApplicationCodec.java @@ -15,6 +15,7 @@ */ package org.onosproject.codec.impl; +import com.fasterxml.jackson.databind.node.ArrayNode; import com.fasterxml.jackson.databind.node.ObjectNode; import org.apache.commons.lang3.StringEscapeUtils; import org.onosproject.app.ApplicationService; @@ -33,7 +34,16 @@ public final class ApplicationCodec extends JsonCodec { public ObjectNode encode(Application app, CodecContext context) { checkNotNull(app, "Application cannot be null"); ApplicationService service = context.getService(ApplicationService.class); - return context.mapper().createObjectNode() + + ArrayNode permissions = context.mapper().createArrayNode(); + ArrayNode features = context.mapper().createArrayNode(); + ArrayNode requiredApps = context.mapper().createArrayNode(); + + app.permissions().forEach(p -> permissions.add(p.toString())); + app.features().forEach(f -> features.add(f)); + app.requiredApps().forEach(a -> requiredApps.add(a)); + + ObjectNode result = context.mapper().createObjectNode() .put("name", app.id().name()) .put("id", app.id().id()) .put("version", app.version().toString()) @@ -42,11 +52,14 @@ public final class ApplicationCodec extends JsonCodec { .put("readme", StringEscapeUtils.escapeJson(app.readme())) .put("origin", app.origin()) .put("url", app.url()) - .put("permissions", app.permissions().toString()) // FIXME: change to an array .put("featuresRepo", app.featuresRepo().isPresent() ? app.featuresRepo().get().toString() : "") - .put("features", app.features().toString()) // FIXME: change to an array - .put("requiredApps", app.requiredApps().toString()) // FIXME: change to an array .put("state", service.getState(app.id()).toString()); + + result.set("features", features); + result.set("permissions", permissions); + result.set("requiredApps", requiredApps); + + return result; } } diff --git a/web/api/src/main/resources/definitions/Application.json b/web/api/src/main/resources/definitions/Application.json index 9be4fe44a6..d55f7b966d 100644 --- a/web/api/src/main/resources/definitions/Application.json +++ b/web/api/src/main/resources/definitions/Application.json @@ -53,7 +53,7 @@ "permissions": { "type": "array", "xml": { - "name": "hosts", + "name": "permissions", "wrapped": true }, "items": { diff --git a/web/api/src/main/resources/definitions/ApplicationPost.json b/web/api/src/main/resources/definitions/ApplicationPost.json index 9be4fe44a6..d55f7b966d 100644 --- a/web/api/src/main/resources/definitions/ApplicationPost.json +++ b/web/api/src/main/resources/definitions/ApplicationPost.json @@ -53,7 +53,7 @@ "permissions": { "type": "array", "xml": { - "name": "hosts", + "name": "permissions", "wrapped": true }, "items": { diff --git a/web/api/src/main/resources/definitions/Applications.json b/web/api/src/main/resources/definitions/Applications.json index 32a225d84a..9e4f2ebcda 100644 --- a/web/api/src/main/resources/definitions/Applications.json +++ b/web/api/src/main/resources/definitions/Applications.json @@ -66,7 +66,7 @@ "permissions": { "type": "array", "xml": { - "name": "hosts", + "name": "permissions", "wrapped": true }, "items": {