Add model to represent VfModuleModel and Artifact management 59/83559/3
authorliboNet <libo.zhu@intel.com>
Thu, 28 Mar 2019 23:29:51 +0000 (07:29 +0800)
committerliboNet <libo.zhu@intel.com>
Fri, 29 Mar 2019 00:47:20 +0000 (08:47 +0800)
. add VfModuleModel to represent content of VfModule
. add Gsonutil to support List which is the content of Vf
  Module meta json
. add CloudArtifact to deal with Artifact for subplug action
. Fix pom.xml typo

Change-Id: Ic459118323bf50939493b0f0feff7ba96dd9a64d
Issue-ID: MULTICLOUD-511
Signed-off-by: liboNet <libo.zhu@intel.com>
artifactbroker/model/src/main/java/org/onap/policy/distribution/model/CloudArtifact.java [new file with mode: 0644]
artifactbroker/model/src/main/java/org/onap/policy/distribution/model/GsonUtil.java [new file with mode: 0644]
artifactbroker/model/src/main/java/org/onap/policy/distribution/model/VfModuelModel.java [new file with mode: 0644]
artifactbroker/pom.xml

diff --git a/artifactbroker/model/src/main/java/org/onap/policy/distribution/model/CloudArtifact.java b/artifactbroker/model/src/main/java/org/onap/policy/distribution/model/CloudArtifact.java
new file mode 100644 (file)
index 0000000..2447c68
--- /dev/null
@@ -0,0 +1,57 @@
+/*-
+ * ============LICENSE_START=======================================================
+ *  Copyright (C) 2018 Ericsson. All rights reserved.
+ * ================================================================================
+ * 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.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.distribution.model;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Represents a CloudArtifact that a {@link Policy} can be decoded from.
+ */
+public class CloudArtifact implements PolicyInput {
+
+    List<VfModuelModel> vfModulePayload;
+    Map<String, String> artifactTypeMap;
+
+    public CloudArtifact(List<VfModuelModel> vfModulePayload, Map<String, String> artifactTypeMap) {
+        this.vfModulePayload = vfModulePayload;
+        this.artifactTypeMap = artifactTypeMap;
+    }
+
+    /**
+     * Get the path to the TOSCA file.
+     *
+     * @return the path of the TOSCA file
+     */
+    List<VfModuelModel> getVfModulePayload() {
+        return vfModulePayload;
+    }
+
+    /**
+     * Get the path to the TOSCA file.
+     *
+     * @return the path of the TOSCA file
+     */
+    Map<String, String> getArtifactTypeMap() {
+        return artifactTypeMap;
+    }
+
+}
diff --git a/artifactbroker/model/src/main/java/org/onap/policy/distribution/model/GsonUtil.java b/artifactbroker/model/src/main/java/org/onap/policy/distribution/model/GsonUtil.java
new file mode 100644 (file)
index 0000000..077c753
--- /dev/null
@@ -0,0 +1,46 @@
+/*-
+ * ============LICENSE_START=======================================================
+ *  Copyright (C) 2018 Ericsson. All rights reserved.
+ * ================================================================================
+ * 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.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.distribution.model;
+
+import com.google.gson.Gson;
+import com.google.gson.reflect.TypeToken;
+import java.util.List;
+/**
+ * A GsonUtil created by a {@link GsonUtil}.
+ */
+
+public class GsonUtil {
+    // 将Json数据解析成相应的映射对象
+    public static <T> T parseJsonWithGson(String jsonData, Class<T> type) {
+        Gson gson = new Gson();
+        T result = gson.fromJson(jsonData, type);
+        return result;
+    }
+
+    // 将Json数组解析成相应的映射对象列表
+    public static <T> List<T> parseJsonArrayWithGson(String jsonData,
+            Class<T> type) {
+        Gson gson = new Gson();
+        List<T> result = gson.fromJson(jsonData, new TypeToken<List<T>>() {}.getType());
+        return result;
+    }
+}
+
diff --git a/artifactbroker/model/src/main/java/org/onap/policy/distribution/model/VfModuelModel.java b/artifactbroker/model/src/main/java/org/onap/policy/distribution/model/VfModuelModel.java
new file mode 100644 (file)
index 0000000..e774b89
--- /dev/null
@@ -0,0 +1,62 @@
+/*-
+ * ============LICENSE_START=======================================================
+ *  Copyright (C) 2018 Ericsson. All rights reserved.
+ * ================================================================================
+ * 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.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.distribution.model;
+
+import java.util.List;
+import java.util.Map;
+
+
+/**
+ * Represents a VfModuleModel that a {@link VfModuleModel} can be parsed.
+ */
+
+public class VfModuelModel {
+
+    private String vfModuleModelName;
+    private String vfModuleModelInvariantUUID;
+    private String vfModuleModelVersion;
+    private String vfModuleModelUUID;
+    private String vfModuleModelCustomizationUUID;
+    private String vfModuleModelDescription;
+    private Boolean isBase;
+    private List<String> artifacts;
+    private Map<String, Object> properties;
+
+    public String getVfModuleModelName() {
+        return vfModuleModelName;
+    }
+
+    public String getVfModuleModelCustomizationUUID() {
+        return vfModuleModelCustomizationUUID;
+    }
+
+    public String getVfModuleModelDescription() {
+        return vfModuleModelDescription;
+    }
+
+    public List<String> getArtifacts() {
+        return artifacts;
+    }
+
+    public Map<String, Object> getProperties() {
+        return properties;
+    }
+}
index 6373a31..da6b1d3 100644 (file)
@@ -12,9 +12,8 @@
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 -->
-<project 
-    xmlns="http://maven.apache.org/POM/4.0.0" 
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <parent>
         <groupId>org.onap.multicloud.framework</groupId>
         <artifactId>multicloud-framework</artifactId>
@@ -35,7 +34,6 @@
         <version.logback>1.2.3</version.logback>
         <policy.common.version>1.3.4</policy.common.version>
     </properties>
-
     <modules>
         <module>model</module>
         <module>main</module>
             <artifactId>capabilities</artifactId>
             <version>${policy.common.version}</version>
         </dependency>
-        <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
         <dependency>
             <groupId>com.fasterxml.jackson.core</groupId>
             <artifactId>jackson-databind</artifactId>
             <version>2.9.8</version>
         </dependency>
-        <!-- https://mvnrepository.com/artifact/org.json/json -->
         <dependency>
             <groupId>org.json</groupId>
             <artifactId>json</artifactId>
             <version>2.8.4</version>
         </dependency>
     </dependencies>
-
     <build>
         <plugins>
             <plugin>
                         </goals>
                         <phase>process-sources</phase>
                         <configuration>
-                            <!-- Use Google Java Style Guide:
-                            https://github.com/checkstyle/checkstyle/blob/master/src/main/resources/google_checks.xml
-                            with minor changes -->
                             <configLocation>onap-checkstyle/onap-java-style.xml</configLocation>
-                            <!-- <sourceDirectory> is needed so that checkstyle ignores the generated sources directory -->
                             <sourceDirectory>${project.build.sourceDirectory}</sourceDirectory>
                             <includeResources>true</includeResources>
                             <includeTestSourceDirectory>true</includeTestSourceDirectory>
                             </excludes>
                             <consoleOutput>true</consoleOutput>
                             <failOnViolation>true</failOnViolation>
-                            <violationSeverity>warning</violationSeverity>
+                            <violationSeverity>error</violationSeverity>
                         </configuration>
                     </execution>
                 </executions>
                     <artifactId>jacoco-maven-plugin</artifactId>
                     <version>${jacoco.version}</version>
                     <configuration>
-                        <!-- Note: This exclusion list should match <sonar.exclusions> property
-                            above -->
                         <excludes>
                             <exclude>**/gen/**</exclude>
                             <exclude>**/generated-sources/**</exclude>
                         </excludes>
                     </configuration>
                     <executions>
-                        <!-- Prepares the property pointing to the JaCoCo runtime agent which
-                            is passed as VM argument when Maven the Surefire plugin is executed. -->
                         <execution>
                             <id>pre-unit-test</id>
                             <goals>
                                 <destFile>${sonar.jacoco.reportPath}</destFile>
                             </configuration>
                         </execution>
-                        <!-- Ensures that the code coverage report for unit tests is created
-                            after unit tests have been run. -->
                         <execution>
                             <id>post-unit-test</id>
                             <phase>test</phase>
         </pluginManagement>
     </build>
 </project>
-</project>