/*- * ============LICENSE_START======================================================= * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved. * ================================================================================ * 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.dcae.runtime.core.blueprint_creator; import org.onap.blueprintgenerator.core.Fixes; import org.onap.dcae.runtime.core.Node; import org.onap.blueprintgenerator.models.blueprint.Blueprint; import org.onap.blueprintgenerator.models.componentspec.ComponentSpec; import org.yaml.snakeyaml.DumperOptions; import org.yaml.snakeyaml.Yaml; import java.util.LinkedHashMap; import java.util.Map; public class BlueprintCreatorOnap implements BlueprintCreator{ private String topicUrl; private String importFilePath; public void setTopicUrl(String topicUrl) { this.topicUrl = topicUrl; } public void setImportFilePath(String importFilePath) { this.importFilePath = importFilePath; } @Override public String createBlueprint(String componentSpecString) { ComponentSpec componentSpec = new ComponentSpec(); componentSpec.createComponentSpecFromString(componentSpecString); Blueprint blueprint = new Blueprint().createBlueprint(componentSpec,"",'o',importFilePath,""); return blueprint.blueprintToString(); } @Override public void resolveDmaapConnection(Node node, String locationPort, String dmaapEntityName) { if(node == null || locationPort == null){ return; } String blueprintContent = node.getBlueprintData().getBlueprint_content(); locationPort = locationPort.replaceAll("-","_"); Yaml yaml = getYamlInstance(); Map obj = yaml.load(blueprintContent); Map inputsObj = (Map) obj.get("inputs"); for(Map.Entry entry: inputsObj.entrySet()){ LinkedHashMap modified = retainQuotesForDefault(entry.getValue()); entry.setValue(modified); if(entry.getKey().matches(locationPort+".*url")) { Map inputValue = (Map) entry.getValue(); inputValue.put("default",topicUrl + "/" + dmaapEntityName); } } node.getBlueprintData().setBlueprint_content(Fixes.applyFixes(yaml.dump(obj))); } private LinkedHashMap retainQuotesForDefault(Object valueOfInputObject) { LinkedHashMap temp = (LinkedHashMap) valueOfInputObject; if(temp.containsKey("type") && temp.get("type").equals("string")) { String def = (String) temp.get("default"); if(def != null){ def = def.replaceAll("\"$", "").replaceAll("^\"", ""); } def = '"' + def + '"'; temp.replace("default", def); } return temp; } private Yaml getYamlInstance() { DumperOptions options = new DumperOptions(); options.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK); options.setPrettyFlow(true); return new Yaml(options); } // private String attachSingleQoutes(String str) { // return "'" + str + "'"; // } }