+ private CapabilityModel buildCapabilitiesModel(String inputJson) throws IOException, APPCException {
+ logger.info("Entering buildCapabilitiesModel");
+
+ ObjectMapper objectMapper = new ObjectMapper();
+ JsonNode jsonNode = objectMapper.readTree(inputJson);
+ JsonNode capabilitiesNode = jsonNode.get("capabilities");
+ if (capabilitiesNode == null) {
+ return null;
+ }
+
+ List<String> vnfCapabilities = new ArrayList<>();
+ List<String> vfModuleCapabilities = new ArrayList<>();
+ Map<String, List<String>> vmCapabilities = new HashMap<>();
+ List<String> vnfcCapabilities = new ArrayList<>();
+
+ JsonNode vnfNode = capabilitiesNode.get(ActionLevel.VNF.getAction());
+ JsonNode vfModuleNode = capabilitiesNode.get(ActionLevel.VF_MODULE.getAction());
+ JsonNode vmNode = capabilitiesNode.get(ActionLevel.VM.getAction());
+ JsonNode vnfcNode = capabilitiesNode.get(ActionLevel.VNFC.getAction());
+
+ if (vnfNode != null && vnfNode.isArray() ) {
+ for (JsonNode nodes : vnfNode) {
+ vnfCapabilities.add(nodes.asText());
+ }
+ }
+ if (vfModuleNode != null && vfModuleNode.isArray() ){
+ for (JsonNode nodes : vfModuleNode) {
+ vfModuleCapabilities.add(nodes.asText());
+ }
+ }
+ if (vmNode != null && vmNode.isArray() ){
+ for (JsonNode jNode : vmNode) {
+ logger.debug("jNode=" + jNode);
+ Iterator<Map.Entry<String,JsonNode>> fldIter = jNode.fields();
+ while (fldIter.hasNext()) {
+ Map.Entry<String,JsonNode> currentEntry = fldIter.next();
+ logger.debug("currentEntry.getKey()=" + currentEntry.getKey());
+ logger.debug("currentEntry.getValue()=" + currentEntry.getValue());
+ if (currentEntry.getValue().isArray()) {
+ logger.debug("currentEntry.getValue().isArray() is true");
+ List<String> ls = new ArrayList<String>();
+ for (JsonNode node: currentEntry.getValue()) {
+ ls.add(node.asText());
+ }
+ vmCapabilities.put(currentEntry.getKey(), ls);
+ }
+ }
+ }
+ }
+ if (vnfcNode != null && vnfcNode.isArray() ){
+ for (JsonNode nodes : vnfcNode) {
+ vnfcCapabilities.add(nodes.asText());
+ }
+ }
+ logger.info("vnfCapabilities=" + vnfCapabilities);
+ logger.info("vfModuleCapabilities=" + vfModuleCapabilities);
+ logger.info("vmCapabilities=" + vmCapabilities);
+ logger.info("vnfcCapabilities=" + vnfcCapabilities);
+
+ return new CapabilityModel(vnfCapabilities, vfModuleCapabilities, vmCapabilities, vnfcCapabilities);
+ }