package org.alien4cloud.tosca.editor.processors.relationshiptemplate;
import org.alien4cloud.tosca.editor.EditionContextManager;
import org.alien4cloud.tosca.editor.operations.relationshiptemplate.AbstractRelationshipOperation;
import org.alien4cloud.tosca.editor.processors.nodetemplate.AbstractNodeProcessor;
import alien4cloud.exception.NotFoundException;
import org.alien4cloud.tosca.model.templates.NodeTemplate;
import org.alien4cloud.tosca.model.templates.RelationshipTemplate;
import static alien4cloud.utils.AlienUtils.safe;
/**
* Abstract operation to get a required node template.
*/
public abstract class AbstractRelationshipProcessor<T extends AbstractRelationshipOperation> extends AbstractNodeProcessor<T> {
@Override
protected void processNodeOperation(T operation, NodeTemplate nodeTemplate) {
RelationshipTemplate relationshipTemplate = safe(nodeTemplate.getRelationships()).get(operation.getRelationshipName());
if (relationshipTemplate == null) {
throw new NotFoundException("The relationship with name [" + operation.getRelationshipName() + "] do not exist for the node ["
+ operation.getNodeName() + "] of the topology [" + EditionContextManager.getTopology().getId() + "]");
}
processRelationshipOperation(operation, nodeTemplate, relationshipTemplate);
}
protected abstract void processRelationshipOperation(T operation, NodeTemplate nodeTemplate, RelationshipTemplate relationshipTemplate);
}