From cc764ab040ec1c278d8619d2d92be638d8f585e8 Mon Sep 17 00:00:00 2001 From: MichaelMorris Date: Sat, 13 Aug 2022 09:06:08 +0100 Subject: Fix new data types not found in UI Also, fixed issue with data type sorting when there are mutliple layers in dependency hierarchy Signed-off-by: MichaelMorris Issue-ID: SDC-4129 Change-Id: I4d535420953237efd610a3fb1dd6b9d40883e514 --- .../org/openecomp/sdc/be/components/impl/DataTypeImportManager.java | 6 ++++-- .../main/java/org/openecomp/sdc/be/servlets/TypesFetchServlet.java | 1 + 2 files changed, 5 insertions(+), 2 deletions(-) (limited to 'catalog-be') diff --git a/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/DataTypeImportManager.java b/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/DataTypeImportManager.java index 60fdc0b3d5..943edb1b95 100644 --- a/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/DataTypeImportManager.java +++ b/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/DataTypeImportManager.java @@ -113,7 +113,7 @@ public class DataTypeImportManager { dataTypes.forEach(dataType -> { int highestDependencyIndex = -1; - for (final String dependencyName : getDependencyTypes(dataType)) { + for (final String dependencyName : getDependencyTypes(dataType, dataTypes)) { final DataTypeDefinition dependency = dataTypeDefinitionsMap.get(dependencyName); final int indexOfDependency = sortedDataTypeDefinitions.lastIndexOf(dependency); highestDependencyIndex = indexOfDependency > highestDependencyIndex ? indexOfDependency : highestDependencyIndex; @@ -126,7 +126,7 @@ public class DataTypeImportManager { return sortedDataTypeDefinitions; } - private Collection getDependencyTypes(final DataTypeDefinition dataType) { + private Collection getDependencyTypes(final DataTypeDefinition dataType, final List dataTypes) { final Set dependencies = new HashSet<>(); if (dataType.getDerivedFromName() != null) { dependencies.add(dataType.getDerivedFromName()); @@ -134,6 +134,8 @@ public class DataTypeImportManager { if (dataType.getProperties() != null) { dataType.getProperties().stream().forEach(property -> dependencies.add(property.getType())); } + dataTypes.stream().filter(dependencyCandidate -> dependencies.contains(dependencyCandidate.getName())) + .forEach(dependencyDataType -> dependencies.addAll(getDependencyTypes(dependencyDataType, dataTypes))); return dependencies; } diff --git a/catalog-be/src/main/java/org/openecomp/sdc/be/servlets/TypesFetchServlet.java b/catalog-be/src/main/java/org/openecomp/sdc/be/servlets/TypesFetchServlet.java index 7a229c88aa..f461378637 100644 --- a/catalog-be/src/main/java/org/openecomp/sdc/be/servlets/TypesFetchServlet.java +++ b/catalog-be/src/main/java/org/openecomp/sdc/be/servlets/TypesFetchServlet.java @@ -132,6 +132,7 @@ public class TypesFetchServlet extends AbstractValidationsServlet { if (responseWrapper.isEmpty()) { String url = request.getMethod() + " " + request.getRequestURI(); log.debug("Start handle request of {} - modifier id is {}", url, userId); + resourceBusinessLogic.getApplicationDataTypeCache().refreshDataTypesCacheIfStale(); final Map dataTypes = resourceBusinessLogic.getComponentsUtils() .getAllDataTypes(resourceBusinessLogic.getApplicationDataTypeCache(), modelName); String dataTypeJson = gson.toJson(dataTypes); -- cgit 1.2.3-korg