From 958788d75fd2110d7bce01dcc829d47f99c887e5 Mon Sep 17 00:00:00 2001 From: Kostis Trantzas Date: Tue, 26 May 2026 12:51:10 +0300 Subject: [PATCH] fix for #11 - NPE when vnfprofile map is null --- Dockerfile | 4 +- .../org/etsi/osl/mano/MANOController.java | 107 ++++++++++-------- 2 files changed, 64 insertions(+), 47 deletions(-) diff --git a/Dockerfile b/Dockerfile index dea6001..b73e373 100644 --- a/Dockerfile +++ b/Dockerfile @@ -2,5 +2,5 @@ FROM ibm-semeru-runtimes:open-17.0.7_7-jdk MAINTAINER openslice.io RUN mkdir /opt/shareclasses RUN mkdir -p /opt/openslice/lib/ -COPY target/org.etsi.osl.manoclient-1.0.4-SNAPSHOT.jar /opt/openslice/lib/ -CMD ["java", "-Xshareclasses:cacheDir=/opt/shareclasses","-jar", "/opt/openslice/lib/org.etsi.osl.manoclient-1.0.4-SNAPSHOT.jar"] \ No newline at end of file +COPY target/org.etsi.osl.manoclient-1.1.0-SNAPSHOT.jar /opt/openslice/lib/ +CMD ["java", "-Xshareclasses:cacheDir=/opt/shareclasses","-jar", "/opt/openslice/lib/org.etsi.osl.manoclient-1.1.0-SNAPSHOT.jar"] \ No newline at end of file diff --git a/src/main/java/org/etsi/osl/mano/MANOController.java b/src/main/java/org/etsi/osl/mano/MANOController.java index a0cfb3f..dfcaec2 100644 --- a/src/main/java/org/etsi/osl/mano/MANOController.java +++ b/src/main/java/org/etsi/osl/mano/MANOController.java @@ -1462,23 +1462,28 @@ JSONArray array = new JSONArray(vnfds_list_entity.getBody()); // Store the YAML file newExperimentMetadata.setDescriptor( jobj.toString() ); - for (Df v : nsd.getDf().values()) { - for( VnfProfile q : v.getVnfProfile().values()) - { - ConstituentVxF cvxf = new ConstituentVxF(); - try { - cvxf.setMembervnfIndex(q.getId()); - - } catch ( NumberFormatException e) { - cvxf.setMembervnfIndex( "0" ); + if (nsd.getDf() != null) { + for (Df v : nsd.getDf().values()) { + if (v != null && v.getVnfProfile() != null) { + for (VnfProfile q : v.getVnfProfile().values()) { + ConstituentVxF cvxf = new ConstituentVxF(); + try { + cvxf.setMembervnfIndex(q.getId()); + + } catch (NumberFormatException e) { + cvxf.setMembervnfIndex("0"); + } + cvxf.setVnfdidRef((String) q.getVnfdId()); + String vxfuuid = aMANOClient.getVxFOnBoardedDescriptorByVxFAndMP(q.getVnfdId(), + mp.getId()); + VxFMetadata vxf = (VxFMetadata) aMANOClient.getVxFByUUid(vxfuuid); + cvxf.setVxfref(vxf); + ((ExperimentMetadata) newExperimentMetadata).getConstituentVxF().add(cvxf); + } } - cvxf.setVnfdidRef((String) q.getVnfdId()); - String vxfuuid = aMANOClient.getVxFOnBoardedDescriptorByVxFAndMP(q.getVnfdId(), mp.getId()); - VxFMetadata vxf = (VxFMetadata) aMANOClient.getVxFByUUid(vxfuuid); - cvxf.setVxfref(vxf); - ((ExperimentMetadata) newExperimentMetadata).getConstituentVxF().add(cvxf); } - } + } + //Add VxFMetadata object to db and get the generated object newExperimentMetadata = aMANOClient.addExperimentMetadata(newExperimentMetadata); logger.info("Experiment " + nsd.getId() + " added with ExperimentMetadata id="+newExperimentMetadata.getId()); @@ -1595,23 +1600,28 @@ JSONArray array = new JSONArray(vnfds_list_entity.getBody()); // Store the YAML file newExperimentMetadata.setDescriptor( jobj.toString() ); - for (Df v : nsd.getDf().values()) { - for( VnfProfile q : v.getVnfProfile().values()) - { - ConstituentVxF cvxf = new ConstituentVxF(); - try { - cvxf.setMembervnfIndex(q.getId()); - - } catch ( NumberFormatException e) { - cvxf.setMembervnfIndex( "0" ); + if (nsd.getDf() != null) { + for (Df v : nsd.getDf().values()) { + if (v != null && v.getVnfProfile() != null) { + for( VnfProfile q : v.getVnfProfile().values()) + { + ConstituentVxF cvxf = new ConstituentVxF(); + try { + cvxf.setMembervnfIndex(q.getId()); + + } catch ( NumberFormatException e) { + cvxf.setMembervnfIndex( "0" ); + } + cvxf.setVnfdidRef((String) q.getVnfdId()); + String vxfuuid = aMANOClient.getVxFOnBoardedDescriptorByVxFAndMP(q.getVnfdId(), mp.getId()); + VxFMetadata vxf = (VxFMetadata) aMANOClient.getVxFByUUid(vxfuuid); + cvxf.setVxfref(vxf); + ((ExperimentMetadata) newExperimentMetadata).getConstituentVxF().add(cvxf); + } } - cvxf.setVnfdidRef((String) q.getVnfdId()); - String vxfuuid = aMANOClient.getVxFOnBoardedDescriptorByVxFAndMP(q.getVnfdId(), mp.getId()); - VxFMetadata vxf = (VxFMetadata) aMANOClient.getVxFByUUid(vxfuuid); - cvxf.setVxfref(vxf); - ((ExperimentMetadata) newExperimentMetadata).getConstituentVxF().add(cvxf); } - } + } + // Add VxFMetadata object to db and get the generated object newExperimentMetadata = aMANOClient.addExperimentMetadata(newExperimentMetadata); logger.info("Experiment " + nsd.getId() + " added with ExperimentMetadata id="+newExperimentMetadata.getId()); @@ -1730,23 +1740,30 @@ JSONArray array = new JSONArray(vnfds_list_entity.getBody()); // Store the YAML file newExperimentMetadata.setDescriptor( jobj.toString() ); - for (Df v : nsd.getDf().values()) { - for( VnfProfile q : v.getVnfProfile().values()) - { - ConstituentVxF cvxf = new ConstituentVxF(); - try { - cvxf.setMembervnfIndex(q.getId()); - - } catch ( NumberFormatException e) { - cvxf.setMembervnfIndex( "0" ); + + if (nsd.getDf() != null) { + for (Df v : nsd.getDf().values()) { + if (v != null && v.getVnfProfile() != null) { + + for (VnfProfile q : v.getVnfProfile().values()) { + ConstituentVxF cvxf = new ConstituentVxF(); + try { + cvxf.setMembervnfIndex(q.getId()); + + } catch (NumberFormatException e) { + cvxf.setMembervnfIndex("0"); + } + cvxf.setVnfdidRef((String) q.getVnfdId()); + String vxfuuid = aMANOClient.getVxFOnBoardedDescriptorByVxFAndMP(q.getVnfdId(), + mp.getId()); + VxFMetadata vxf = (VxFMetadata) aMANOClient.getVxFByUUid(vxfuuid); + cvxf.setVxfref(vxf); + ((ExperimentMetadata) newExperimentMetadata).getConstituentVxF().add(cvxf); + } } - cvxf.setVnfdidRef((String) q.getVnfdId()); - String vxfuuid = aMANOClient.getVxFOnBoardedDescriptorByVxFAndMP(q.getVnfdId(), mp.getId()); - VxFMetadata vxf = (VxFMetadata) aMANOClient.getVxFByUUid(vxfuuid); - cvxf.setVxfref(vxf); - ((ExperimentMetadata) newExperimentMetadata).getConstituentVxF().add(cvxf); } - } + } + // Add VxFMetadata object to db and get the generated object newExperimentMetadata = aMANOClient.addExperimentMetadata(newExperimentMetadata); logger.info("Experiment " + nsd.getId() + " added with ExperimentMetadata id="+newExperimentMetadata.getId()); -- GitLab