@Override
protected void processServiceResourceReplacement(Topology topology, Map<String, NodeTemplate> topologyTemplateMap, String nodeId,
String serviceResourceId) {
ServiceResource serviceResource = getServiceResourceService().getOrFail(serviceResourceId);
NodeTemplate serviceNodeTemplate = serviceResource.getNodeInstance().getNodeTemplate();
ServiceNodeTemplate substitutionNodeTemplate = new ServiceNodeTemplate(serviceNodeTemplate.getType(), serviceNodeTemplate.getProperties(),
serviceNodeTemplate.getAttributes(), serviceNodeTemplate.getRelationships(), serviceNodeTemplate.getRequirements(),
serviceNodeTemplate.getCapabilities(), serviceNodeTemplate.getInterfaces(), serviceNodeTemplate.getArtifacts());
substitutionNodeTemplate.setServiceResourceId(serviceResource.getId());
substitutionNodeTemplate.setAttributeValues(serviceResource.getNodeInstance().getAttributeValues());
NodeTemplate abstractTopologyNode = topologyTemplateMap.put(nodeId, substitutionNodeTemplate);
substitutionNodeTemplate.setName(abstractTopologyNode.getName());
substitutionNodeTemplate.setRelationships(abstractTopologyNode.getRelationships());
Csar csar = getToscaTypeSearchService().getArchive(serviceResource.getDependency().getName(), serviceResource.getDependency().getVersion());
Set<CSARDependency> dependencies = Sets.newHashSet();
if (csar.getDependencies() != null) {
dependencies.addAll(csar.getDependencies());
}
dependencies.add(new CSARDependency(csar.getName(), csar.getVersion()));
topology.getDependencies().addAll(dependencies);
}
}