Migrate ccsdk/apps to ccsdk/cds
[ccsdk/cds.git] / ms / controllerblueprints / modules / service / src / main / java / org / onap / ccsdk / cds / controllerblueprints / service / common / SwaggerGenerator.java
-/*\r
- *  Copyright © 2017-2018 AT&T Intellectual Property.\r
- *  Modifications Copyright © 2018 IBM.\r
- *\r
- *  Licensed under the Apache License, Version 2.0 (the "License");\r
- *  you may not use this file except in compliance with the License.\r
- *  You may obtain a copy of the License at\r
- *\r
- *      http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- *  Unless required by applicable law or agreed to in writing, software\r
- *  distributed under the License is distributed on an "AS IS" BASIS,\r
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
- *  See the License for the specific language governing permissions and\r
- *  limitations under the License.\r
- */\r
-\r
-package org.onap.ccsdk.apps.controllerblueprints.service.common;\r
-\r
-import io.swagger.models.*;\r
-import io.swagger.models.parameters.BodyParameter;\r
-import io.swagger.models.parameters.Parameter;\r
-import io.swagger.models.properties.*;\r
-import org.apache.commons.collections.MapUtils;\r
-import org.apache.commons.lang3.BooleanUtils;\r
-import org.onap.ccsdk.apps.controllerblueprints.core.BluePrintConstants;\r
-import org.onap.ccsdk.apps.controllerblueprints.core.BluePrintTypes;\r
-import org.onap.ccsdk.apps.controllerblueprints.core.data.PropertyDefinition;\r
-import org.onap.ccsdk.apps.controllerblueprints.core.data.ServiceTemplate;\r
-\r
-import java.util.*;\r
-\r
-/**\r
- * SwaggerGenerator.java Purpose: Provide Service to generate service template input schema definition and Sample Json\r
- * generation.\r
- *\r
- * @author Brinda Santh\r
- * @version 1.0\r
- */\r
-@Deprecated\r
-public class SwaggerGenerator {\r
-\r
-    private ServiceTemplate serviceTemplate;\r
-    public static final String INPUTS="inputs";\r
-\r
-    /**\r
-     * This is a SwaggerGenerator constructor\r
-     */\r
-    public SwaggerGenerator(ServiceTemplate serviceTemplate) {\r
-        this.serviceTemplate = serviceTemplate;\r
-    }\r
-\r
-    /**\r
-     * This is a generateSwagger\r
-     *\r
-     * @return String\r
-     */\r
-    public String generateSwagger() {\r
-        \r
-        Swagger swagger = new Swagger().info(getInfo());\r
-\r
-        swagger.setPaths(getPaths());\r
-        swagger.setDefinitions(getDefinition());\r
-\r
-\r
-        return swagger.toString();\r
-    }\r
-\r
-    private Info getInfo() {\r
-        Info info = new Info();\r
-        Contact contact = new Contact();\r
-        contact.setName(serviceTemplate.getMetadata().get(BluePrintConstants.METADATA_TEMPLATE_AUTHOR));\r
-        info.setContact(contact);\r
-        info.setTitle(serviceTemplate.getMetadata().get(BluePrintConstants.METADATA_TEMPLATE_NAME));\r
-        info.setDescription(serviceTemplate.getDescription());\r
-        info.setVersion(serviceTemplate.getMetadata().get(BluePrintConstants.METADATA_TEMPLATE_VERSION));\r
-        return info;\r
-    }\r
-\r
-    private Map<String, Path> getPaths() {\r
-        Map<String, Path> paths = new HashMap<>();\r
-        Path path = new Path();\r
-        Operation post = new Operation();\r
-        post.setOperationId("configure");\r
-        post.setConsumes(Arrays.asList("application/json", "application/xml"));\r
-        post.setProduces(Arrays.asList("application/json", "application/xml"));\r
-        List<Parameter> parameters = new ArrayList<>();\r
-        Parameter in = new BodyParameter().schema(new RefModel("#/definitions/inputs"));\r
-        in.setRequired(true);\r
-        in.setName(INPUTS);\r
-        parameters.add(in);\r
-        post.setParameters(parameters);\r
-\r
-        Map<String, Response> responses = new HashMap<>();\r
-        Response response = new Response().description("Success");\r
-        responses.put("200", response);\r
-\r
-        Response failureResponse = new Response().description("Failure");\r
-        responses.put("400", failureResponse);\r
-        post.setResponses(responses);\r
-\r
-        path.setPost(post);\r
-        paths.put("/operations/config-selfservice-api:configure", path);\r
-        return paths;\r
-    }\r
-\r
-    private Map<String, Model> getDefinition() {\r
-        Map<String, Model> models = new HashMap<>();\r
-\r
-        ModelImpl inputmodel = new ModelImpl();\r
-        inputmodel.setTitle(INPUTS);\r
-        serviceTemplate.getTopologyTemplate().getInputs().forEach((propertyName, property) -> {\r
-            Property defProperty = getPropery(propertyName, property);\r
-            inputmodel.property(propertyName, defProperty);\r
-        });\r
-        models.put(INPUTS, inputmodel);\r
-\r
-        if (MapUtils.isNotEmpty(serviceTemplate.getDataTypes())) {\r
-            serviceTemplate.getDataTypes().forEach((name, dataType) -> {\r
-                ModelImpl model = new ModelImpl();\r
-                model.setDescription(dataType.getDescription());\r
-                if (dataType != null && MapUtils.isNotEmpty(dataType.getProperties())) {\r
-\r
-                    dataType.getProperties().forEach((propertyName, property) -> {\r
-                        Property defProperty = getPropery(propertyName, property);\r
-                        model.addProperty(propertyName, defProperty);\r
-                    });\r
-                }\r
-                models.put(name, model);\r
-            });\r
-        }\r
-        return models;\r
-\r
-    }\r
-\r
-    private Property getPropery(String name, PropertyDefinition propertyDefinition) {\r
-        Property defProperty = null;\r
-\r
-        if (BluePrintTypes.validPrimitiveTypes().contains(propertyDefinition.getType())) {\r
-            if (BluePrintConstants.DATA_TYPE_BOOLEAN.equals(propertyDefinition.getType())) {\r
-                defProperty = new BooleanProperty();\r
-            } else if (BluePrintConstants.DATA_TYPE_INTEGER.equals(propertyDefinition.getType())) {\r
-                StringProperty stringProperty = new StringProperty();\r
-                stringProperty.setType("integer");\r
-                defProperty = stringProperty;\r
-            } else if (BluePrintConstants.DATA_TYPE_FLOAT.equals(propertyDefinition.getType())) {\r
-                StringProperty stringProperty = new StringProperty();\r
-                stringProperty.setFormat("float");\r
-                defProperty = stringProperty;\r
-            } else if (BluePrintConstants.DATA_TYPE_TIMESTAMP.equals(propertyDefinition.getType())) {\r
-                DateTimeProperty dateTimeProperty = new DateTimeProperty();\r
-                dateTimeProperty.setFormat("date-time");\r
-                defProperty = dateTimeProperty;\r
-            } else {\r
-                defProperty = new StringProperty();\r
-            }\r
-        } else if (BluePrintTypes.validCollectionTypes().contains(propertyDefinition.getType())) {\r
-            ArrayProperty arrayProperty = new ArrayProperty();\r
-            if (propertyDefinition.getEntrySchema() != null) {\r
-                String entrySchema = propertyDefinition.getEntrySchema().getType();\r
-                if (!BluePrintTypes.validPrimitiveTypes().contains(entrySchema)) {\r
-                    Property innerType = new RefProperty("#/definitions/" + entrySchema);\r
-                    arrayProperty.setItems(innerType);\r
-                } else {\r
-                    Property innerType = new StringProperty();\r
-                    arrayProperty.setItems(innerType);\r
-                }\r
-                defProperty = arrayProperty;\r
-            }\r
-\r
-        } else {\r
-            defProperty = new RefProperty("#/definitions/" + propertyDefinition.getType());\r
-        }\r
-        defProperty.setName(name);\r
-        if (propertyDefinition.getDefaultValue() != null) {\r
-            defProperty.setDefault(String.valueOf(propertyDefinition.getDefaultValue()));\r
-        }\r
-\r
-        defProperty.setRequired(BooleanUtils.isTrue(propertyDefinition.getRequired()));\r
-        defProperty.setDescription(propertyDefinition.getDescription());\r
-        return defProperty;\r
-    }\r
-\r
-\r
-}\r
+/*
+ *  Copyright © 2017-2018 AT&T Intellectual Property.
+ *  Modifications Copyright © 2018 IBM.
+ *
+ *  Licensed 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.onap.ccsdk.cds.controllerblueprints.service.common;
+
+import io.swagger.models.*;
+import io.swagger.models.parameters.BodyParameter;
+import io.swagger.models.parameters.Parameter;
+import io.swagger.models.properties.*;
+import org.apache.commons.collections.MapUtils;
+import org.apache.commons.lang3.BooleanUtils;
+import org.onap.ccsdk.cds.controllerblueprints.core.BluePrintConstants;
+import org.onap.ccsdk.cds.controllerblueprints.core.BluePrintTypes;
+import org.onap.ccsdk.cds.controllerblueprints.core.data.PropertyDefinition;
+import org.onap.ccsdk.cds.controllerblueprints.core.data.ServiceTemplate;
+
+import java.util.*;
+
+/**
+ * SwaggerGenerator.java Purpose: Provide Service to generate service template input schema definition and Sample Json
+ * generation.
+ *
+ * @author Brinda Santh
+ * @version 1.0
+ */
+@Deprecated
+public class SwaggerGenerator {
+
+    private ServiceTemplate serviceTemplate;
+    public static final String INPUTS="inputs";
+
+    /**
+     * This is a SwaggerGenerator constructor
+     */
+    public SwaggerGenerator(ServiceTemplate serviceTemplate) {
+        this.serviceTemplate = serviceTemplate;
+    }
+
+    /**
+     * This is a generateSwagger
+     *
+     * @return String
+     */
+    public String generateSwagger() {
+        
+        Swagger swagger = new Swagger().info(getInfo());
+
+        swagger.setPaths(getPaths());
+        swagger.setDefinitions(getDefinition());
+
+
+        return swagger.toString();
+    }
+
+    private Info getInfo() {
+        Info info = new Info();
+        Contact contact = new Contact();
+        contact.setName(serviceTemplate.getMetadata().get(BluePrintConstants.METADATA_TEMPLATE_AUTHOR));
+        info.setContact(contact);
+        info.setTitle(serviceTemplate.getMetadata().get(BluePrintConstants.METADATA_TEMPLATE_NAME));
+        info.setDescription(serviceTemplate.getDescription());
+        info.setVersion(serviceTemplate.getMetadata().get(BluePrintConstants.METADATA_TEMPLATE_VERSION));
+        return info;
+    }
+
+    private Map<String, Path> getPaths() {
+        Map<String, Path> paths = new HashMap<>();
+        Path path = new Path();
+        Operation post = new Operation();
+        post.setOperationId("configure");
+        post.setConsumes(Arrays.asList("application/json", "application/xml"));
+        post.setProduces(Arrays.asList("application/json", "application/xml"));
+        List<Parameter> parameters = new ArrayList<>();
+        Parameter in = new BodyParameter().schema(new RefModel("#/definitions/inputs"));
+        in.setRequired(true);
+        in.setName(INPUTS);
+        parameters.add(in);
+        post.setParameters(parameters);
+
+        Map<String, Response> responses = new HashMap<>();
+        Response response = new Response().description("Success");
+        responses.put("200", response);
+
+        Response failureResponse = new Response().description("Failure");
+        responses.put("400", failureResponse);
+        post.setResponses(responses);
+
+        path.setPost(post);
+        paths.put("/operations/config-selfservice-api:configure", path);
+        return paths;
+    }
+
+    private Map<String, Model> getDefinition() {
+        Map<String, Model> models = new HashMap<>();
+
+        ModelImpl inputmodel = new ModelImpl();
+        inputmodel.setTitle(INPUTS);
+        serviceTemplate.getTopologyTemplate().getInputs().forEach((propertyName, property) -> {
+            Property defProperty = getPropery(propertyName, property);
+            inputmodel.property(propertyName, defProperty);
+        });
+        models.put(INPUTS, inputmodel);
+
+        if (MapUtils.isNotEmpty(serviceTemplate.getDataTypes())) {
+            serviceTemplate.getDataTypes().forEach((name, dataType) -> {
+                ModelImpl model = new ModelImpl();
+                model.setDescription(dataType.getDescription());
+                if (dataType != null && MapUtils.isNotEmpty(dataType.getProperties())) {
+
+                    dataType.getProperties().forEach((propertyName, property) -> {
+                        Property defProperty = getPropery(propertyName, property);
+                        model.addProperty(propertyName, defProperty);
+                    });
+                }
+                models.put(name, model);
+            });
+        }
+        return models;
+
+    }
+
+    private Property getPropery(String name, PropertyDefinition propertyDefinition) {
+        Property defProperty = null;
+
+        if (BluePrintTypes.validPrimitiveTypes().contains(propertyDefinition.getType())) {
+            if (BluePrintConstants.DATA_TYPE_BOOLEAN.equals(propertyDefinition.getType())) {
+                defProperty = new BooleanProperty();
+            } else if (BluePrintConstants.DATA_TYPE_INTEGER.equals(propertyDefinition.getType())) {
+                StringProperty stringProperty = new StringProperty();
+                stringProperty.setType("integer");
+                defProperty = stringProperty;
+            } else if (BluePrintConstants.DATA_TYPE_FLOAT.equals(propertyDefinition.getType())) {
+                StringProperty stringProperty = new StringProperty();
+                stringProperty.setFormat("float");
+                defProperty = stringProperty;
+            } else if (BluePrintConstants.DATA_TYPE_TIMESTAMP.equals(propertyDefinition.getType())) {
+                DateTimeProperty dateTimeProperty = new DateTimeProperty();
+                dateTimeProperty.setFormat("date-time");
+                defProperty = dateTimeProperty;
+            } else {
+                defProperty = new StringProperty();
+            }
+        } else if (BluePrintTypes.validCollectionTypes().contains(propertyDefinition.getType())) {
+            ArrayProperty arrayProperty = new ArrayProperty();
+            if (propertyDefinition.getEntrySchema() != null) {
+                String entrySchema = propertyDefinition.getEntrySchema().getType();
+                if (!BluePrintTypes.validPrimitiveTypes().contains(entrySchema)) {
+                    Property innerType = new RefProperty("#/definitions/" + entrySchema);
+                    arrayProperty.setItems(innerType);
+                } else {
+                    Property innerType = new StringProperty();
+                    arrayProperty.setItems(innerType);
+                }
+                defProperty = arrayProperty;
+            }
+
+        } else {
+            defProperty = new RefProperty("#/definitions/" + propertyDefinition.getType());
+        }
+        defProperty.setName(name);
+        if (propertyDefinition.getDefaultValue() != null) {
+            defProperty.setDefault(String.valueOf(propertyDefinition.getDefaultValue()));
+        }
+
+        defProperty.setRequired(BooleanUtils.isTrue(propertyDefinition.getRequired()));
+        defProperty.setDescription(propertyDefinition.getDescription());
+        return defProperty;
+    }
+
+
+}