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": {