* ============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.
*/
package org.onap.aai.babel.xml.generator.model;
-import java.lang.reflect.InvocationTargetException;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
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.types.ModelType;
private static Logger log = LogHelper.INSTANCE;
- private static Map<String, Class<? extends Model>> typeToModel = new HashMap<>();
- static {
- typeToModel.put("org.openecomp.resource.vf.allottedResource", AllotedResource.class);
- typeToModel.put("org.openecomp.resource.vfc.AllottedResource", ProvidingService.class);
- typeToModel.put("org.openecomp.resource.vfc", VServerWidget.class);
- typeToModel.put("org.openecomp.resource.cp", LIntfWidget.class);
- typeToModel.put("org.openecomp.cp", LIntfWidget.class);
- typeToModel.put("org.openecomp.resource.vl", L3Network.class);
- typeToModel.put("org.openecomp.resource.vf", VirtualFunction.class);
- typeToModel.put("org.openecomp.groups.vfmodule", VfModule.class);
- typeToModel.put("org.openecomp.groups.VfModule", VfModule.class);
- typeToModel.put("org.openecomp.resource.vfc.nodes.heat.cinder", VolumeWidget.class);
- typeToModel.put("org.openecomp.nodes.PortMirroringConfiguration", Configuration.class);
- }
-
private enum ModelIdentification {
ID("vfModuleModelInvariantUUID", "serviceInvariantUUID", "resourceInvariantUUID", "invariantUUID",
"providing_service_invariant_uuid") {
private static Optional<Model> getModelFromType(String typePrefix) {
Optional<Model> modelToBeReturned = Optional.empty();
- Class<? extends Model> clazz = typeToModel.get(typePrefix);
+ Class<? extends Model> clazz = WidgetConfigurationUtil.getModelFromType(typePrefix);
if (clazz != null) {
try {
modelToBeReturned = Optional.ofNullable(clazz.getConstructor().newInstance());
- } catch (InstantiationException | java.lang.IllegalAccessException | IllegalArgumentException
- | InvocationTargetException | NoSuchMethodException | SecurityException e) {
+ } catch (Exception e) {
log.error(ApplicationMsgs.INVALID_CSAR_FILE, e);
}
}
return modelToBeReturned;
}
+ /**
+ * Gets the object (model) corresponding to the supplied TOSCA type information, prioritising the metadata
+ * information.
+ *
+ * @param toscaType
+ * the TOSCA type
+ * @param metaDataType
+ * the type from the TOSCA metadata
+ * @return the model for the type, or null
+ */
+ public static Model getModelFor(String toscaType, String metaDataType) {
+ if ("Configuration".equals(metaDataType)) {
+ return new Configuration();
+ } else if ("CR".equals(metaDataType)) {
+ return new CR();
+ } else {
+ return getModelFor(toscaType);
+ }
+ }
+
public abstract boolean addResource(Resource resource);
public abstract boolean addWidget(Widget resource);
* @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);
+ org.onap.aai.babel.xml.generator.types.Model model =
+ this.getClass().getAnnotation(org.onap.aai.babel.xml.generator.types.Model.class);
return model.cardinality();
}
* @return the delete flag
*/
public boolean getDeleteFlag() {
- org.onap.aai.babel.xml.generator.types.Model model = this.getClass()
- .getAnnotation(org.onap.aai.babel.xml.generator.types.Model.class);
+ org.onap.aai.babel.xml.generator.types.Model model =
+ this.getClass().getAnnotation(org.onap.aai.babel.xml.generator.types.Model.class);
return model.dataDeleteFlag();
}
* @return the widget version id
*/
public String getWidgetId() {
- org.onap.aai.babel.xml.generator.types.Model model = this.getClass()
- .getAnnotation(org.onap.aai.babel.xml.generator.types.Model.class);
+ org.onap.aai.babel.xml.generator.types.Model model =
+ this.getClass().getAnnotation(org.onap.aai.babel.xml.generator.types.Model.class);
return Widget.getWidget(model.widget()).getId();
}
* @return the invariant id
*/
public String getWidgetInvariantId() {
- org.onap.aai.babel.xml.generator.types.Model model = this.getClass()
- .getAnnotation(org.onap.aai.babel.xml.generator.types.Model.class);
+ org.onap.aai.babel.xml.generator.types.Model model =
+ this.getClass().getAnnotation(org.onap.aai.babel.xml.generator.types.Model.class);
return Widget.getWidget(model.widget()).getWidgetId();
}
throw new IllegalAccessException(GENERATOR_AAI_ERROR_UNSUPPORTED_WIDGET_OPERATION);
}
}
+
}