diff options
author | mark.j.leonard <mark.j.leonard@gmail.com> | 2019-02-05 14:24:33 +0000 |
---|---|---|
committer | mark.j.leonard <mark.j.leonard@gmail.com> | 2019-02-05 14:24:33 +0000 |
commit | 1954294aed95c2db4eb2659dcef91248535de079 (patch) | |
tree | 05011d5cb74775e02e6b28f02150c9e2b0539708 /src/main/java | |
parent | 7fcc74469c941c1834cd02b54ff5ca88a53bf83b (diff) |
Replace Resource sub-classes with configuration
Delete the sub-classes of the Resource (internal Model class) and
replace the annotated properties of these classes with TOSCA-to-Model
mappping data loaded from the JSON configuration.
Change-Id: I56d5d9d4893be45eb42ae65099ea9abe5f4409b9
Issue-ID: AAI-2121
Signed-off-by: mark.j.leonard <mark.j.leonard@gmail.com>
Diffstat (limited to 'src/main/java')
17 files changed, 306 insertions, 502 deletions
diff --git a/src/main/java/org/onap/aai/babel/parser/ArtifactGeneratorToscaParser.java b/src/main/java/org/onap/aai/babel/parser/ArtifactGeneratorToscaParser.java index 505afbf..7dfc807 100644 --- a/src/main/java/org/onap/aai/babel/parser/ArtifactGeneratorToscaParser.java +++ b/src/main/java/org/onap/aai/babel/parser/ArtifactGeneratorToscaParser.java @@ -18,6 +18,7 @@ * limitations under the License. * ============LICENSE_END========================================================= */ + package org.onap.aai.babel.parser; import com.google.gson.Gson; @@ -38,14 +39,10 @@ import java.util.stream.Stream; import org.onap.aai.babel.logging.LogHelper; import org.onap.aai.babel.xml.generator.data.GroupConfiguration; import org.onap.aai.babel.xml.generator.data.WidgetConfigurationUtil; -import org.onap.aai.babel.xml.generator.model.AllotedResource; -import org.onap.aai.babel.xml.generator.model.InstanceGroup; -import org.onap.aai.babel.xml.generator.model.L3NetworkWidget; import org.onap.aai.babel.xml.generator.model.Model; -import org.onap.aai.babel.xml.generator.model.ProvidingService; import org.onap.aai.babel.xml.generator.model.Resource; -import org.onap.aai.babel.xml.generator.model.VfModule; import org.onap.aai.babel.xml.generator.model.Widget; +import org.onap.aai.babel.xml.generator.model.Widget.Type; import org.onap.aai.cl.api.Logger; import org.onap.sdc.tosca.parser.api.ISdcCsarHelper; import org.onap.sdc.toscaparser.api.Group; @@ -87,7 +84,7 @@ public class ArtifactGeneratorToscaParser { * Constructs using csarHelper * * @param csarHelper - * The csar helper + * The csar helper */ public ArtifactGeneratorToscaParser(ISdcCsarHelper csarHelper) { this.csarHelper = csarHelper; @@ -97,7 +94,7 @@ public class ArtifactGeneratorToscaParser { * Get or create the artifact description. * * @param model - * the artifact model + * the artifact model * @return the artifact model's description */ public static String getArtifactDescription(Model model) { @@ -152,11 +149,11 @@ public class ArtifactGeneratorToscaParser { if (!file.exists()) { throw new IllegalArgumentException(String.format(GENERATOR_AAI_CONFIGFILE_NOT_FOUND, configLocation)); } - + BufferedReader bufferedReader = new BufferedReader(new FileReader(configLocation)); GroupConfiguration config = new Gson().fromJson(bufferedReader, GroupConfiguration.class); WidgetConfigurationUtil.setSupportedInstanceGroups(config.getInstanceGroupTypes()); - WidgetConfigurationUtil.setTypeMappings(config.getToscaToWidgetMappings()); + WidgetConfigurationUtil.setWidgetMappings(config.getWidgetMappings()); } /** @@ -185,9 +182,9 @@ public class ArtifactGeneratorToscaParser { * duplicate keys then the TOSCA Property value takes precedence. * * @param stringProps - * initial Map of String property values (e.g. from the TOSCA YAML metadata section) + * initial Map of String property values (e.g. from the TOSCA YAML metadata section) * @param toscaProps - * Map of TOSCA Property Type Object values to merge in (or overwrite) + * Map of TOSCA Property Type Object values to merge in (or overwrite) * @return a Map of the property values converted to String */ public Map<String, String> mergeProperties(Map<String, String> stringProps, Map<String, Property> toscaProps) { @@ -198,7 +195,7 @@ public class ArtifactGeneratorToscaParser { } public Resource createInstanceGroupModel(Map<String, String> properties) { - Resource groupModel = new InstanceGroup(); + Resource groupModel = new Resource(Type.INSTANCE_GROUP, true); groupModel.populateModelIdentificationInformation(properties); return groupModel; } @@ -207,28 +204,14 @@ public class ArtifactGeneratorToscaParser { * @param model * @param relation */ - public void addRelatedModel(final Model model, final Model relation) { - if (relation instanceof Resource) { - model.addResource((Resource) relation); + public void addRelatedModel(final Model model, final Resource relation) { + if (relation.isResource()) { + model.addResource(relation); } else { - model.addWidget((Widget) relation); + model.addWidget(Widget.getWidget(relation.getWidgetType())); } } - public String normaliseNodeTypeName(NodeTemplate nodeType) { - String nodeTypeName = nodeType.getType(); - Metadata metadata = nodeType.getMetaData(); - if (metadata != null && hasAllottedResource(metadata.getAllProperties())) { - if (nodeType.getType().contains("org.openecomp.resource.vf.")) { - nodeTypeName = "org.openecomp.resource.vf.allottedResource"; - } - if (nodeType.getType().contains("org.openecomp.resource.vfc.")) { - nodeTypeName = "org.openecomp.resource.vfc.AllottedResource"; - } - } - return nodeTypeName; - } - public boolean hasAllottedResource(Map<String, String> metadata) { return ALLOTTED_RESOURCE.equals(metadata.get(CATEGORY)); } @@ -252,8 +235,8 @@ public class ArtifactGeneratorToscaParser { // Process each VF Group for (Group serviceGroup : serviceGroups) { Model groupModel = Model.getModelFor(serviceGroup.getType()); - if (groupModel instanceof VfModule) { - processVfModule(resources, resourceModel, serviceGroup, serviceNode, (VfModule) groupModel); + if (groupModel.getWidgetType() == Type.VFMODULE) { + processVfModule(resources, resourceModel, serviceGroup, serviceNode, (Resource) groupModel); } } } @@ -266,15 +249,24 @@ public class ArtifactGeneratorToscaParser { boolean foundProvidingService = false; for (NodeTemplate resourceNodeTemplate : resourceNodeTemplates) { - String nodeTypeName = normaliseNodeTypeName(resourceNodeTemplate); - Metadata metaData = resourceNodeTemplate.getMetaData(); - String metaDataType = Optional.ofNullable(metaData).map(m -> m.getValue("type")).orElse(nodeTypeName); - Model resourceNode = Model.getModelFor(nodeTypeName, metaDataType); - foundProvidingService |= - processModel(resourceModel, metaData, resourceNode, resourceNodeTemplate.getProperties()); + String nodeTypeName = resourceNodeTemplate.getType(); + Metadata metadata = resourceNodeTemplate.getMetaData(); + String metaDataType = Optional.ofNullable(metadata).map(m -> m.getValue("type")).orElse(nodeTypeName); + Resource model = Model.getModelFor(nodeTypeName, metaDataType); + + if (metadata != null && hasAllottedResource(metadata.getAllProperties())) { + if (model.getWidgetType() == Type.VSERVER) { + model = new Resource(Type.ALLOTTED_RESOURCE, false); + Map<String, Object> props = new HashMap<>(); + props.put("providingService", true); + model.setProperties(props); + } + } + + foundProvidingService |= processModel(resourceModel, metadata, model, resourceNodeTemplate.getProperties()); } - if (resourceModel instanceof AllotedResource && !foundProvidingService) { + if (resourceModel.getWidgetType() == Type.ALLOTTED_RESOURCE && !foundProvidingService) { final String modelInvariantId = resourceModel.getModelId(); throw new IllegalArgumentException(String.format(GENERATOR_AAI_PROVIDING_SERVICE_MISSING, modelInvariantId == null ? "<null ID>" : modelInvariantId)); @@ -285,13 +277,13 @@ public class ArtifactGeneratorToscaParser { * Create an Instance Group Model and populate it with the supplied data. * * @param resourceModel - * the Resource node template Model + * the Resource node template Model * @param memberNodes - * the Resources and Widgets belonging to the Group + * the Resources and Widgets belonging to the Group * @param metaProperties - * the metadata of the Group + * the metadata of the Group * @param properties - * the properties of the Group + * the properties of the Group * @return the Instance Group and Member resource models */ private List<Resource> processInstanceGroup(Model resourceModel, ArrayList<NodeTemplate> memberNodes, @@ -320,11 +312,11 @@ public class ArtifactGeneratorToscaParser { List<Resource> resources = new ArrayList<>(); for (NodeTemplate nodeTemplate : memberNodes) { - String nodeTypeName = normaliseNodeTypeName(nodeTemplate); + String nodeTypeName = nodeTemplate.getType(); final String metadataType = nodeTemplate.getMetaData().getValue("type"); log.debug(String.format("Get model for %s (metadata type %s)", nodeTypeName, metadataType)); - Model memberModel = Model.getModelFor(nodeTypeName, metadataType); + Resource memberModel = Model.getModelFor(nodeTypeName, metadataType); if (memberModel != null) { memberModel.populateModelIdentificationInformation(nodeTemplate.getMetaData().getAllProperties()); @@ -333,8 +325,8 @@ public class ArtifactGeneratorToscaParser { memberModel.getClass().getSuperclass().getSimpleName(), memberModel.getClass(), nodeTypeName)); addRelatedModel(groupModel, memberModel); - if (memberModel instanceof Resource) { - resources.add((Resource) memberModel); + if (memberModel.isResource()) { + resources.add(memberModel); } } } @@ -342,7 +334,7 @@ public class ArtifactGeneratorToscaParser { } private void processVfModule(List<Resource> resources, Model vfModel, Group groupDefinition, - NodeTemplate serviceNode, VfModule groupModel) { + NodeTemplate serviceNode, Resource groupModel) { groupModel.populateModelIdentificationInformation( mergeProperties(groupDefinition.getMetadata().getAllProperties(), groupDefinition.getProperties())); @@ -355,7 +347,7 @@ public class ArtifactGeneratorToscaParser { } } - private void processVfModuleGroup(VfModule groupModel, List<NodeTemplate> members) { + private void processVfModuleGroup(Resource groupModel, List<NodeTemplate> members) { if (members != null && !members.isEmpty()) { // Get names of the members of the service group List<String> memberNames = members.stream().map(NodeTemplate::getName).collect(Collectors.toList()); @@ -366,16 +358,22 @@ public class ArtifactGeneratorToscaParser { } } - private void processGroupMembers(Model group, NodeTemplate member) { - Model resourceNode; - // L3-network inside vf-module to be generated as Widget a special handling. - if (member.getType().contains("org.openecomp.resource.vl")) { - resourceNode = new L3NetworkWidget(); - } else { - resourceNode = Model.getModelFor(member.getType()); + /** + * Process the Widget members of a VF Module Group + * + * @param group + * @param member + */ + private void processGroupMembers(Resource group, NodeTemplate member) { + Resource resource = Model.getModelFor(member.getType()); + + if (resource.getWidgetType() == Type.L3_NET) { + // An l3-network inside a vf-module is treated as a Widget + resource.setIsResource(false); } - if (resourceNode != null && !(resourceNode instanceof Resource)) { - Widget widget = (Widget) resourceNode; + + if (!resource.isResource()) { + Widget widget = Widget.getWidget(resource.getWidgetType()); widget.addKey(member.getName()); // Add the widget element encountered to the Group model group.addWidget(widget); @@ -386,7 +384,7 @@ public class ArtifactGeneratorToscaParser { * Create a Map of property name against String property value from the input Map * * @param inputMap - * The input Map + * The input Map * @return Map of property name against String property value */ private Map<String, String> populateStringProperties(Map<String, Property> inputMap) { @@ -396,25 +394,27 @@ public class ArtifactGeneratorToscaParser { /** * If the specified resourceNode is a type of Resource, add it to the specified resourceModel. If the Resource type - * is ProvidingService return true, otherwise return false. + * is ProvidingService then return true, otherwise return false. * * @param resourceModel - * parent Resource + * parent Resource * @param metaData - * for populating the Resource IDs + * for populating the Resource IDs * @param resourceNode - * any Model (will be ignored if not a Resource) + * any Model (will be ignored if not a Resource) * @param nodeProperties - * the node properties - * @return whether or not a ProvidingService was prcoessed + * the node properties + * @return whether or not a ProvidingService was processed */ - private boolean processModel(Model resourceModel, Metadata metaData, Model resourceNode, + private boolean processModel(Model resourceModel, Metadata metaData, Resource resourceNode, Map<String, Property> nodeProperties) { - boolean foundProvidingService = false; - if (resourceNode instanceof ProvidingService) { - foundProvidingService = true; + boolean foundProvidingService = resourceNode != null + && (boolean) Optional.ofNullable(resourceNode.getProperties().get("providingService")).orElse(false); + + if (foundProvidingService) { processProvidingService(resourceModel, resourceNode, nodeProperties); - } else if (resourceNode instanceof Resource && !(resourceNode.getWidgetType().equals(Widget.Type.L3_NET))) { + } else if (resourceNode != null && resourceNode.isResource() + && resourceNode.getWidgetType() != Widget.Type.L3_NET) { if (metaData != null) { resourceNode.populateModelIdentificationInformation(metaData.getAllProperties()); } @@ -423,7 +423,7 @@ public class ArtifactGeneratorToscaParser { return foundProvidingService; } - private void processProvidingService(Model resourceModel, Model resourceNode, + private void processProvidingService(Model resourceModel, Resource resourceNode, Map<String, Property> nodeProperties) { if (nodeProperties == null || nodeProperties.get("providing_service_uuid") == null || nodeProperties.get("providing_service_invariant_uuid") == null) { @@ -433,6 +433,6 @@ public class ArtifactGeneratorToscaParser { Map<String, String> properties = populateStringProperties(nodeProperties); properties.put(VERSION, "1.0"); resourceNode.populateModelIdentificationInformation(properties); - resourceModel.addResource((Resource) resourceNode); + resourceModel.addResource(resourceNode); } } diff --git a/src/main/java/org/onap/aai/babel/xml/generator/api/AaiArtifactGenerator.java b/src/main/java/org/onap/aai/babel/xml/generator/api/AaiArtifactGenerator.java index d6d0a1e..fc5acda 100644 --- a/src/main/java/org/onap/aai/babel/xml/generator/api/AaiArtifactGenerator.java +++ b/src/main/java/org/onap/aai/babel/xml/generator/api/AaiArtifactGenerator.java @@ -2,8 +2,8 @@ * ============LICENSE_START======================================================= * org.onap.aai * ================================================================================ - * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved. - * Copyright © 2017-2018 European Software Marketing Ltd. + * Copyright © 2017-2019 AT&T Intellectual Property. All rights reserved. + * Copyright © 2017-2019 European Software Marketing Ltd. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -18,6 +18,7 @@ * limitations under the License. * ============LICENSE_END========================================================= */ + package org.onap.aai.babel.xml.generator.api; import java.io.IOException; @@ -26,6 +27,7 @@ import java.nio.file.Path; import java.util.ArrayList; import java.util.List; import java.util.Map; +import java.util.Optional; import org.apache.commons.io.FileUtils; import org.apache.commons.lang3.StringUtils; import org.onap.aai.babel.logging.ApplicationMsgs; @@ -39,15 +41,16 @@ import org.onap.aai.babel.xml.generator.data.GeneratorUtil; import org.onap.aai.babel.xml.generator.data.GroupType; import org.onap.aai.babel.xml.generator.data.WidgetConfigurationUtil; import org.onap.aai.babel.xml.generator.model.Model; -import org.onap.aai.babel.xml.generator.model.ProvidingService; import org.onap.aai.babel.xml.generator.model.Resource; import org.onap.aai.babel.xml.generator.model.Service; import org.onap.aai.babel.xml.generator.model.TunnelXconnectWidget; +import org.onap.aai.babel.xml.generator.model.Widget.Type; import org.onap.aai.cl.api.Logger; import org.onap.sdc.tosca.parser.api.ISdcCsarHelper; import org.onap.sdc.tosca.parser.impl.SdcToscaParserFactory; import org.onap.sdc.toscaparser.api.Group; import org.onap.sdc.toscaparser.api.NodeTemplate; +import org.onap.sdc.toscaparser.api.elements.Metadata; import org.slf4j.MDC; public class AaiArtifactGenerator implements ArtifactGenerator { @@ -128,7 +131,10 @@ public class AaiArtifactGenerator implements ArtifactGenerator { for (Resource resource : resources) { generateResourceArtifact(generationData, resource); for (Resource childResource : resource.getResources()) { - if (!(childResource instanceof ProvidingService)) { + boolean isProvidingService = + (boolean) Optional.ofNullable(childResource.getProperties().get("providingService")) // + .orElse(false); + if (!isProvidingService) { generateResourceArtifact(generationData, childResource); } } @@ -179,16 +185,16 @@ public class AaiArtifactGenerator implements ArtifactGenerator { private void generateModelFromNodeTemplate(ISdcCsarHelper csarHelper, Service serviceModel, List<Resource> resources, final List<Group> serviceGroups, ArtifactGeneratorToscaParser parser, NodeTemplate nodeTemplate) { - String nodeTypeName = parser.normaliseNodeTypeName(nodeTemplate); - Model model = Model.getModelFor(nodeTypeName, nodeTemplate.getMetaData().getValue("type")); + Resource model = getModelFor(parser, nodeTemplate); + if (model != null) { if (nodeTemplate.getMetaData() != null) { model.populateModelIdentificationInformation(nodeTemplate.getMetaData().getAllProperties()); } parser.addRelatedModel(serviceModel, model); - if (model instanceof Resource) { - generateResourceModel(csarHelper, resources, parser, nodeTemplate, nodeTypeName); + if (model.isResource()) { + generateResourceModel(csarHelper, resources, parser, nodeTemplate); } } else { for (Group group : serviceGroups) { @@ -206,11 +212,26 @@ public class AaiArtifactGenerator implements ArtifactGenerator { } } - private void generateResourceModel(ISdcCsarHelper csarHelper, List<Resource> resources, - ArtifactGeneratorToscaParser parser, NodeTemplate nodeTemplate, String nodeTypeName) { + private Resource getModelFor(ArtifactGeneratorToscaParser parser, NodeTemplate nodeTemplate) { + String nodeTypeName = nodeTemplate.getType(); + log.debug("Processing resource " + nodeTypeName + ": " + nodeTemplate.getMetaData().getValue("UUID")); - Model resourceModel = Model.getModelFor(nodeTypeName, nodeTemplate.getMetaData().getValue("type")); + Resource model = Model.getModelFor(nodeTypeName, nodeTemplate.getMetaData().getValue("type")); + + Metadata metadata = nodeTemplate.getMetaData(); + if (metadata != null && parser.hasAllottedResource(metadata.getAllProperties())) { + if (model.getWidgetType() == Type.VF) { + model = new Resource(Type.ALLOTTED_RESOURCE, true); + } + } + + return model; + } + + private void generateResourceModel(ISdcCsarHelper csarHelper, List<Resource> resources, + ArtifactGeneratorToscaParser parser, NodeTemplate nodeTemplate) { + Resource resourceModel = getModelFor(parser, nodeTemplate); Map<String, String> serviceMetadata = nodeTemplate.getMetaData().getAllProperties(); resourceModel.populateModelIdentificationInformation(serviceMetadata); diff --git a/src/main/java/org/onap/aai/babel/xml/generator/data/GroupConfiguration.java b/src/main/java/org/onap/aai/babel/xml/generator/data/GroupConfiguration.java index 9223f27..bbc7164 100644 --- a/src/main/java/org/onap/aai/babel/xml/generator/data/GroupConfiguration.java +++ b/src/main/java/org/onap/aai/babel/xml/generator/data/GroupConfiguration.java @@ -18,10 +18,10 @@ * limitations under the License. * ============LICENSE_END========================================================= */ + package org.onap.aai.babel.xml.generator.data; import java.util.List; -import java.util.Map; public class GroupConfiguration { @@ -29,17 +29,17 @@ public class GroupConfiguration { * Names of Instance Groups that will be processed (not filtered out). */ private List<String> instanceGroupTypes; - + /** - * Mapping from TOSCA type to Widget Model. + * Mapping from TOSCA type to Widget directly. */ - private Map<String, String> toscaToWidgetMappings; + private List<WidgetMapping> widgetMappings; public List<String> getInstanceGroupTypes() { return instanceGroupTypes; } - public Map<String, String> getToscaToWidgetMappings() { - return toscaToWidgetMappings; + public List<WidgetMapping> getWidgetMappings() { + return widgetMappings; } } diff --git a/src/main/java/org/onap/aai/babel/xml/generator/data/WidgetConfigurationUtil.java b/src/main/java/org/onap/aai/babel/xml/generator/data/WidgetConfigurationUtil.java index 30b6c8e..9af6e8d 100644 --- a/src/main/java/org/onap/aai/babel/xml/generator/data/WidgetConfigurationUtil.java +++ b/src/main/java/org/onap/aai/babel/xml/generator/data/WidgetConfigurationUtil.java @@ -24,15 +24,16 @@ import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.Map.Entry; +import java.util.Optional; import java.util.Properties; -import org.onap.aai.babel.xml.generator.model.Model; +import org.onap.aai.babel.xml.generator.model.Resource; +import org.onap.aai.babel.xml.generator.model.Widget; public class WidgetConfigurationUtil { private static Properties config; private static List<String> instanceGroups = Collections.emptyList(); - private static Map<String, Class<? extends Model>> typeToModel = new HashMap<>(); + private static Map<String, Resource> typeToWidget = new HashMap<>(); /* * Private constructor to prevent instantiation @@ -51,36 +52,21 @@ public class WidgetConfigurationUtil { public static void setSupportedInstanceGroups(List<String> supportedInstanceGroups) { instanceGroups = supportedInstanceGroups; - } + } public static boolean isSupportedInstanceGroup(String groupType) { return instanceGroups.contains(groupType); } - /** - * Create the mappings from TOSCA type to Widget type. The Properties store a set of TOSCA type prefix Strings. - * These keys take a single class name (String), which is used to map to a Widget Class in the Model. - * - * @param map - * the key/value pairs of TOSCA type and Class name - */ - @SuppressWarnings("unchecked") - public static void setTypeMappings(Map<String, String> map) { - for (Entry<String, String> entry : map.entrySet()) { - final String toscaType = entry.getKey(); - final String javaBean = entry.getValue(); - final String modelClassName = Model.class.getPackage().getName() + "." + javaBean; - try { - typeToModel.put(toscaType, (Class<? extends Model>) Class.forName(modelClassName)); - } catch (ClassNotFoundException e) { - throw new IllegalArgumentException( - String.format("Unsupported type \"%s\" for TOSCA mapping %s: no class found for %s", // - javaBean, toscaType, modelClassName)); - } - } + public static Optional<Resource> createModelFromType(String typePrefix) { + return Optional.ofNullable(typeToWidget.get(typePrefix)); } - public static Class<? extends Model> getModelFromType(String typePrefix) { - return typeToModel.get(typePrefix); + public static void setWidgetMappings(List<WidgetMapping> mappings) { + for (WidgetMapping mapping : mappings) { + Resource resource = new Resource(Widget.Type.valueOf(mapping.widget), mapping.deleteFlag); + resource.setIsResource(mapping.type.equalsIgnoreCase("resource")); + typeToWidget.put(mapping.prefix, resource); + } } } diff --git a/src/main/java/org/onap/aai/babel/xml/generator/logging/CategoryLogLevel.java b/src/main/java/org/onap/aai/babel/xml/generator/data/WidgetMapping.java index b6ca2d3..2157728 100644 --- a/src/main/java/org/onap/aai/babel/xml/generator/logging/CategoryLogLevel.java +++ b/src/main/java/org/onap/aai/babel/xml/generator/data/WidgetMapping.java @@ -2,8 +2,8 @@ * ============LICENSE_START======================================================= * org.onap.aai * ================================================================================ - * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved. - * Copyright © 2017-2018 European Software Marketing Ltd. + * Copyright © 2017-2019 AT&T Intellectual Property. All rights reserved. + * Copyright © 2017-2019 European Software Marketing Ltd. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -18,12 +18,16 @@ * limitations under the License. * ============LICENSE_END========================================================= */ -package org.onap.aai.babel.xml.generator.logging; -public enum CategoryLogLevel { - INFO, - WARN, - DEBUG, - ERROR, - FATAL +package org.onap.aai.babel.xml.generator.data; + +import java.util.Map; + +public class WidgetMapping { + + String prefix; + String type = "resource"; // Default type is Resource (not Widget) + String widget; + boolean deleteFlag; + Map<String, Object> properties; } diff --git a/src/main/java/org/onap/aai/babel/xml/generator/model/AllotedResource.java b/src/main/java/org/onap/aai/babel/xml/generator/model/AllotedResource.java deleted file mode 100644 index cecf7bd..0000000 --- a/src/main/java/org/onap/aai/babel/xml/generator/model/AllotedResource.java +++ /dev/null @@ -1,28 +0,0 @@ -/** - * ============LICENSE_START======================================================= - * org.onap.aai - * ================================================================================ - * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved. - * Copyright © 2017-2018 European Software Marketing Ltd. - * ================================================================================ - * 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. - * ============LICENSE_END========================================================= - */ -package org.onap.aai.babel.xml.generator.model; - -import org.onap.aai.babel.xml.generator.types.Cardinality; -import org.onap.aai.babel.xml.generator.types.Model; - -@Model(widget = Widget.Type.ALLOTTED_RESOURCE, cardinality = Cardinality.UNBOUNDED, dataDeleteFlag = true) -public class AllotedResource extends Resource { -} diff --git a/src/main/java/org/onap/aai/babel/xml/generator/model/CR.java b/src/main/java/org/onap/aai/babel/xml/generator/model/CR.java deleted file mode 100644 index 2c50a0f..0000000 --- a/src/main/java/org/onap/aai/babel/xml/generator/model/CR.java +++ /dev/null @@ -1,28 +0,0 @@ -/** - * ============LICENSE_START======================================================= - * org.onap.aai - * ================================================================================ - * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved. - * Copyright © 2017-2018 European Software Marketing Ltd. - * ================================================================================ - * 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. - * ============LICENSE_END========================================================= - */ -package org.onap.aai.babel.xml.generator.model; - -import org.onap.aai.babel.xml.generator.types.Cardinality; -import org.onap.aai.babel.xml.generator.types.Model; - -@Model(widget = Widget.Type.CR, cardinality = Cardinality.UNBOUNDED, dataDeleteFlag = true) -public class CR extends Resource { -}
\ No newline at end of file diff --git a/src/main/java/org/onap/aai/babel/xml/generator/model/Configuration.java b/src/main/java/org/onap/aai/babel/xml/generator/model/Configuration.java deleted file mode 100644 index 20dbea9..0000000 --- a/src/main/java/org/onap/aai/babel/xml/generator/model/Configuration.java +++ /dev/null @@ -1,28 +0,0 @@ -/** - * ============LICENSE_START======================================================= - * org.onap.aai - * ================================================================================ - * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved. - * Copyright © 2017-2018 European Software Marketing Ltd. - * ================================================================================ - * 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. - * ============LICENSE_END========================================================= - */ -package org.onap.aai.babel.xml.generator.model; - -import org.onap.aai.babel.xml.generator.types.Cardinality; -import org.onap.aai.babel.xml.generator.types.Model; - -@Model(widget = Widget.Type.CONFIGURATION, cardinality = Cardinality.UNBOUNDED, dataDeleteFlag = true) -public class Configuration extends Resource { -} diff --git a/src/main/java/org/onap/aai/babel/xml/generator/model/InstanceGroup.java b/src/main/java/org/onap/aai/babel/xml/generator/model/InstanceGroup.java deleted file mode 100644 index f312064..0000000 --- a/src/main/java/org/onap/aai/babel/xml/generator/model/InstanceGroup.java +++ /dev/null @@ -1,28 +0,0 @@ -/** - * ============LICENSE_START======================================================= - * org.onap.aai - * ================================================================================ - * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved. - * Copyright © 2017-2018 European Software Marketing Ltd. - * ================================================================================ - * 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. - * ============LICENSE_END========================================================= - */ -package org.onap.aai.babel.xml.generator.model; - -import org.onap.aai.babel.xml.generator.types.Cardinality; -import org.onap.aai.babel.xml.generator.types.Model; - -@Model(widget = Widget.Type.INSTANCE_GROUP, cardinality = Cardinality.UNBOUNDED, dataDeleteFlag = true) -public class InstanceGroup extends Resource { -} diff --git a/src/main/java/org/onap/aai/babel/xml/generator/model/L3Network.java b/src/main/java/org/onap/aai/babel/xml/generator/model/L3Network.java deleted file mode 100644 index 105c3a1..0000000 --- a/src/main/java/org/onap/aai/babel/xml/generator/model/L3Network.java +++ /dev/null @@ -1,28 +0,0 @@ -/** - * ============LICENSE_START======================================================= - * org.onap.aai - * ================================================================================ - * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved. - * Copyright © 2017-2018 European Software Marketing Ltd. - * ================================================================================ - * 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. - * ============LICENSE_END========================================================= - */ -package org.onap.aai.babel.xml.generator.model; - -import org.onap.aai.babel.xml.generator.types.Cardinality; - -@org.onap.aai.babel.xml.generator.types.Model(widget = Widget.Type.L3_NET, cardinality = Cardinality.UNBOUNDED, - dataDeleteFlag = false) -public class L3Network extends Resource { -} diff --git a/src/main/java/org/onap/aai/babel/xml/generator/model/Model.java b/src/main/java/org/onap/aai/babel/xml/generator/model/Model.java index 0e2b8d5..d4da6df 100644 --- a/src/main/java/org/onap/aai/babel/xml/generator/model/Model.java +++ b/src/main/java/org/onap/aai/babel/xml/generator/model/Model.java @@ -27,20 +27,15 @@ import java.util.Iterator; import java.util.Map; import java.util.Optional; import java.util.Set; -import org.onap.aai.babel.logging.ApplicationMsgs; -import org.onap.aai.babel.logging.LogHelper; import org.onap.aai.babel.xml.generator.data.WidgetConfigurationUtil; import org.onap.aai.babel.xml.generator.error.IllegalAccessException; -import org.onap.aai.babel.xml.generator.types.Cardinality; +import org.onap.aai.babel.xml.generator.model.Widget.Type; import org.onap.aai.babel.xml.generator.types.ModelType; -import org.onap.aai.cl.api.Logger; public abstract class Model { public static final String GENERATOR_AAI_ERROR_UNSUPPORTED_WIDGET_OPERATION = "Operation Not Supported for Widgets"; - private static Logger log = LogHelper.INSTANCE; - private enum ModelIdentification { ID("vfModuleModelInvariantUUID", "serviceInvariantUUID", "resourceInvariantUUID", "invariantUUID", "providing_service_invariant_uuid") { @@ -117,37 +112,28 @@ public abstract class Model { * Gets the object (model) corresponding to the supplied TOSCA type. * * @param toscaType - * the tosca type + * the tosca type * @return the model for the type, or null */ - public static Model getModelFor(String toscaType) { - Model model = null; + public static Resource getModelFor(String toscaType) { + Resource resource = null; if (toscaType != null && !toscaType.isEmpty()) { - model = getModelFromType(toscaType).orElseGet(() -> Model.getModelFromPrefix(toscaType)); + resource = getModelFromType(toscaType).orElseGet(() -> Model.getModelFromPrefix(toscaType)); } - return model; + return resource; } - private static Model getModelFromPrefix(String toscaType) { - Model model = null; + private static Resource getModelFromPrefix(String toscaType) { + Resource resource = null; int lastSeparator = toscaType.lastIndexOf('.'); if (lastSeparator != -1) { - model = getModelFor(toscaType.substring(0, lastSeparator)); + resource = getModelFor(toscaType.substring(0, lastSeparator)); } - return model; + return resource; } - private static Optional<Model> getModelFromType(String typePrefix) { - Optional<Model> modelToBeReturned = Optional.empty(); - Class<? extends Model> clazz = WidgetConfigurationUtil.getModelFromType(typePrefix); - if (clazz != null) { - try { - modelToBeReturned = Optional.ofNullable(clazz.getConstructor().newInstance()); - } catch (Exception e) { - log.error(ApplicationMsgs.INVALID_CSAR_FILE, e); - } - } - return modelToBeReturned; + private static Optional<Resource> getModelFromType(String typePrefix) { + return WidgetConfigurationUtil.createModelFromType(typePrefix); } /** @@ -155,16 +141,16 @@ public abstract class Model { * information. * * @param toscaType - * the TOSCA type + * the TOSCA type * @param metaDataType - * the type from the TOSCA metadata + * the type from the TOSCA metadata * @return the model for the type, or null */ - public static Model getModelFor(String toscaType, String metaDataType) { + public static Resource getModelFor(String toscaType, String metaDataType) { if ("Configuration".equals(metaDataType)) { - return new Configuration(); + return new Resource(Type.CONFIGURATION, true); } else if ("CR".equals(metaDataType)) { - return new CR(); + return new Resource(Type.CR, true); } else { return getModelFor(toscaType); } @@ -176,16 +162,9 @@ public abstract class Model { public abstract Widget.Type getWidgetType(); - /** - * Gets cardinality. - * - * @return the cardinality - */ - public Cardinality getCardinality() { - org.onap.aai.babel.xml.generator.types.Model model = - this.getClass().getAnnotation(org.onap.aai.babel.xml.generator.types.Model.class); - return model.cardinality(); - } + public abstract Map<String, Object> getProperties(); + + public abstract boolean isResource(); /** * Gets delete flag. @@ -263,7 +242,7 @@ public abstract class Model { * Populate model identification information. * * @param modelIdentInfo - * the model ident info + * the model ident info */ public void populateModelIdentificationInformation(Map<String, String> modelIdentInfo) { Iterator<String> iter = modelIdentInfo.keySet().iterator(); diff --git a/src/main/java/org/onap/aai/babel/xml/generator/model/ProvidingService.java b/src/main/java/org/onap/aai/babel/xml/generator/model/ProvidingService.java deleted file mode 100644 index e25274e..0000000 --- a/src/main/java/org/onap/aai/babel/xml/generator/model/ProvidingService.java +++ /dev/null @@ -1,28 +0,0 @@ -/** - * ============LICENSE_START======================================================= - * org.onap.aai - * ================================================================================ - * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved. - * Copyright © 2017-2018 European Software Marketing Ltd. - * ================================================================================ - * 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. - * ============LICENSE_END========================================================= - */ -package org.onap.aai.babel.xml.generator.model; - -import org.onap.aai.babel.xml.generator.types.Cardinality; - -@org.onap.aai.babel.xml.generator.types.Model(widget = Widget.Type.ALLOTTED_RESOURCE, - cardinality = Cardinality.UNBOUNDED, dataDeleteFlag = false) -public class ProvidingService extends Resource { -} diff --git a/src/main/java/org/onap/aai/babel/xml/generator/model/Resource.java b/src/main/java/org/onap/aai/babel/xml/generator/model/Resource.java index 1b64907..121bc19 100644 --- a/src/main/java/org/onap/aai/babel/xml/generator/model/Resource.java +++ b/src/main/java/org/onap/aai/babel/xml/generator/model/Resource.java @@ -2,8 +2,8 @@ * ============LICENSE_START======================================================= * org.onap.aai * ================================================================================ - * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved. - * Copyright © 2017-2018 European Software Marketing Ltd. + * Copyright © 2017-2019 AT&T Intellectual Property. All rights reserved. + * Copyright © 2017-2019 European Software Marketing Ltd. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -20,8 +20,28 @@ */ package org.onap.aai.babel.xml.generator.model; +import java.util.Collections; +import java.util.List; +import java.util.Map; +import org.onap.aai.babel.xml.generator.model.Widget.Type; + public class Resource extends Model { + private Type type; + private boolean deleteFlag; + private boolean isResource = true; + private Map<String, Object> properties = Collections.emptyMap(); + + Widget vserver = null; + boolean addlintf = false; + boolean addvolume = false; + List<String> members; + + public Resource(Type type, boolean deleteFlag) { + this.type = type; + this.deleteFlag = deleteFlag; + } + @Override public int hashCode() { final String uuid = getModelNameVersionId(); @@ -36,20 +56,109 @@ public class Resource extends Model { return false; } + public boolean getDeleteFlag() { + return deleteFlag; + } + + public String getWidgetInvariantId() { + return Widget.getWidget(getWidgetType()).getWidgetId(); + } + + public String getWidgetId() { + return Widget.getWidget(getWidgetType()).getId(); + } + + public void setProperties(Map<String, Object> properties) { + this.properties = properties; + } + + @Override + public Map<String, Object> getProperties() { + return properties; + } + + public void setIsResource(boolean isResource) { + this.isResource = isResource; + } + + @Override + public boolean isResource() { + return isResource; + } + + public void setMembers(List<String> members) { + this.members = members; + } + @Override public boolean addResource(Resource resource) { return resources.add(resource); } + /** + * Adds a Widget. + * + * @param widget + * the widget + * @return the boolean + */ @Override public boolean addWidget(Widget widget) { - return widgets.add(widget); + if (type == Type.VFMODULE) { + if (widget.memberOf(members)) { + if (vserver == null && widget.getId().equals(new VServerWidget().getId())) { + addVserverWidget(widget); + } else if (widget.getId().equals(new LIntfWidget().getId())) { + return addLIntfWidget(widget); + } else if (widget.getId().equals(new VolumeWidget().getId())) { + addVolumeWidget(widget); + return true; + } + if (widget.getId().equals(new OamNetwork().getId())) { + return false; + } + return widgets.add(widget); + } + return false; + } else { + return widgets.add(widget); + } } - @Override - public Widget.Type getWidgetType() { - org.onap.aai.babel.xml.generator.types.Model model = - this.getClass().getAnnotation(org.onap.aai.babel.xml.generator.types.Model.class); - return model.widget(); + public Type getWidgetType() { + return type; + } + + private void addVolumeWidget(Widget widget) { + if (vserver != null) { + vserver.addWidget(widget); + } else { + addvolume = true; + } } + + /** + * @param widget + * @return + */ + private boolean addLIntfWidget(Widget widget) { + if (vserver != null) { + vserver.addWidget(widget); + return true; + } else { + addlintf = true; + return false; + } + } + + private void addVserverWidget(Widget widget) { + vserver = widget; + if (addlintf) { + vserver.addWidget(new LIntfWidget()); + } + if (addvolume) { + vserver.addWidget(new VolumeWidget()); + } + } + } diff --git a/src/main/java/org/onap/aai/babel/xml/generator/model/Service.java b/src/main/java/org/onap/aai/babel/xml/generator/model/Service.java index 9d22e41..0815a61 100644 --- a/src/main/java/org/onap/aai/babel/xml/generator/model/Service.java +++ b/src/main/java/org/onap/aai/babel/xml/generator/model/Service.java @@ -20,6 +20,8 @@ */ package org.onap.aai.babel.xml.generator.model; +import java.util.Collections; +import java.util.Map; import org.onap.aai.babel.xml.generator.types.Cardinality; @org.onap.aai.babel.xml.generator.types.Model(widget = Widget.Type.SERVICE, cardinality = Cardinality.UNBOUNDED, @@ -40,4 +42,14 @@ public class Service extends Model { public Widget.Type getWidgetType() { return null; } + + @Override + public Map<String, Object> getProperties() { + return Collections.emptyMap(); + } + + @Override + public boolean isResource() { + return false; + } } diff --git a/src/main/java/org/onap/aai/babel/xml/generator/model/VfModule.java b/src/main/java/org/onap/aai/babel/xml/generator/model/VfModule.java deleted file mode 100644 index d6d3a2d..0000000 --- a/src/main/java/org/onap/aai/babel/xml/generator/model/VfModule.java +++ /dev/null @@ -1,109 +0,0 @@ -/** - * ============LICENSE_START======================================================= - * org.onap.aai - * ================================================================================ - * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved. - * Copyright © 2017-2018 European Software Marketing Ltd. - * ================================================================================ - * 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. - * ============LICENSE_END========================================================= - */ -package org.onap.aai.babel.xml.generator.model; - -import java.util.List; -import org.onap.aai.babel.xml.generator.types.Cardinality; -import org.onap.aai.babel.xml.generator.types.Model; - -@Model(widget = Widget.Type.VFMODULE, cardinality = Cardinality.UNBOUNDED, dataDeleteFlag = true) -public class VfModule extends Resource { - - Widget vserver = null; - boolean addlintf = false; - boolean addvolume = false; - - List<String> members; - - public void setMembers(List<String> members) { - this.members = members; - } - - /** - * Adds a Widget. - * - * @param widget the widget - * @return the boolean - */ - @Override - public boolean addWidget(Widget widget) { - if (widget.memberOf(members)) { - if (vserver == null && widget.getId().equals(new VServerWidget().getId())) { - addVserverWidget(widget); - } else if (widget.getId().equals(new LIntfWidget().getId())) { - return addLIntfWidget(widget); - } else if (widget.getId().equals(new VolumeWidget().getId())) { - addVolumeWidget(widget); - return true; - } - if (widget.getId().equals(new OamNetwork().getId())) { - return false; - } - return widgets.add(widget); - } - return false; - } - - private void addVolumeWidget(Widget widget) { - if (vserver != null) { - vserver.addWidget(widget); - } else { - addvolume = true; - } - } - - /** - * @param widget - * @return - */ - private boolean addLIntfWidget(Widget widget) { - if (vserver != null) { - vserver.addWidget(widget); - return true; - } else { - addlintf = true; - return false; - } - } - - private void addVserverWidget(Widget widget) { - vserver = widget; - if (addlintf) { - vserver.addWidget(new LIntfWidget()); - } - if (addvolume) { - vserver.addWidget(new VolumeWidget()); - } - } - - @Override - public int hashCode() { - return getModelNameVersionId().hashCode(); - } - - @Override - public boolean equals(Object obj) { - if (obj instanceof Resource) { - return getModelNameVersionId().equals(((Resource) obj).getModelNameVersionId()); - } - return false; - } -} diff --git a/src/main/java/org/onap/aai/babel/xml/generator/model/VirtualFunction.java b/src/main/java/org/onap/aai/babel/xml/generator/model/VirtualFunction.java deleted file mode 100644 index be75d65..0000000 --- a/src/main/java/org/onap/aai/babel/xml/generator/model/VirtualFunction.java +++ /dev/null @@ -1,28 +0,0 @@ -/** - * ============LICENSE_START======================================================= - * org.onap.aai - * ================================================================================ - * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved. - * Copyright © 2017-2018 European Software Marketing Ltd. - * ================================================================================ - * 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. - * ============LICENSE_END========================================================= - */ -package org.onap.aai.babel.xml.generator.model; - -import org.onap.aai.babel.xml.generator.types.Cardinality; -import org.onap.aai.babel.xml.generator.types.Model; - -@Model(widget = Widget.Type.VF, cardinality = Cardinality.UNBOUNDED, dataDeleteFlag = true) -public class VirtualFunction extends Resource { -} diff --git a/src/main/java/org/onap/aai/babel/xml/generator/model/Widget.java b/src/main/java/org/onap/aai/babel/xml/generator/model/Widget.java index 963d9e2..11a9612 100644 --- a/src/main/java/org/onap/aai/babel/xml/generator/model/Widget.java +++ b/src/main/java/org/onap/aai/babel/xml/generator/model/Widget.java @@ -25,6 +25,7 @@ import java.util.Collection; import java.util.Collections; import java.util.EnumMap; import java.util.HashSet; +import java.util.Map; import java.util.Properties; import java.util.Set; import org.onap.aai.babel.logging.ApplicationMsgs; @@ -42,24 +43,7 @@ public abstract class Widget extends Model { "Cannot generate artifacts. Widget configuration not found for %s"; public enum Type { - SERVICE, - VF, - VFC, - VSERVER, - VOLUME, - FLAVOR, - TENANT, - VOLUME_GROUP, - LINT, - L3_NET, - VFMODULE, - IMAGE, - OAM_NETWORK, - ALLOTTED_RESOURCE, - TUNNEL_XCONNECT, - CONFIGURATION, - CR, - INSTANCE_GROUP; + SERVICE, VF, VFC, VSERVER, VOLUME, FLAVOR, TENANT, VOLUME_GROUP, LINT, L3_NET, VFMODULE, IMAGE, OAM_NETWORK, ALLOTTED_RESOURCE, TUNNEL_XCONNECT, CONFIGURATION, CR, INSTANCE_GROUP; } private static Logger log = LogHelper.INSTANCE; @@ -91,7 +75,8 @@ public abstract class Widget extends Model { /** * Gets widget. * - * @param type the type + * @param type + * the type * @return the widget */ public static Widget getWidget(Type type) { @@ -108,8 +93,14 @@ public abstract class Widget extends Model { return widget; } + @Override + public boolean isResource() { + return false; + } + public String getId() { - String id = WidgetConfigurationUtil.getConfig().getProperty(ArtifactType.AAI.name() + ".model-version-id." + getName()); + String id = WidgetConfigurationUtil.getConfig() + .getProperty(ArtifactType.AAI.name() + ".model-version-id." + getName()); if (id == null) { throw new IllegalArgumentException(String.format(GENERATOR_AAI_CONFIGLPROP_NOT_FOUND, ArtifactType.AAI.name() + ".model-version-id." + getName())); @@ -156,7 +147,8 @@ public abstract class Widget extends Model { /** * Equals method that compares Widget IDs. * - * @param obj the Widget object to compare + * @param obj + * the Widget object to compare * @return whether or not obj is equal to this Widget */ @Override @@ -179,7 +171,8 @@ public abstract class Widget extends Model { /** * Determine whether one or more keys belonging to this Widget appear in the specified Collection. * - * @param keys the keys + * @param keys + * the keys * @return the boolean */ public boolean memberOf(Collection<String> keys) { @@ -198,4 +191,9 @@ public abstract class Widget extends Model { public boolean addWidget(Widget widget) { return true; } + + @Override + public Map<String, Object> getProperties() { + return Collections.emptyMap(); + } } |