package alien4cloud.tosca.parser.postprocess;
import static alien4cloud.utils.AlienUtils.safe;
import java.util.Objects;
import javax.annotation.Resource;
import org.alien4cloud.tosca.model.definitions.Operation;
import org.alien4cloud.tosca.model.types.AbstractInstantiableToscaType;
import org.springframework.stereotype.Component;
/**
* Performs validation of a type with artifacts.
*/
@Component
public class ToscaArtifactTypePostProcessor implements IPostProcessor<AbstractInstantiableToscaType> {
@Resource
private TypeDeploymentArtifactPostProcessor typeDeploymentArtifactPostProcessor;
@Resource
private ImplementationArtifactPostProcessor implementationArtifactPostProcessor;
@Override
public void process(AbstractInstantiableToscaType instance) {
safe(instance.getArtifacts()).values().forEach(typeDeploymentArtifactPostProcessor);
// TODO Manage interfaces inputs to copy them to all operations.
safe(instance.getInterfaces()).values().stream().flatMap(anInterface -> safe(anInterface.getOperations()).values().stream())
.map(Operation::getImplementationArtifact).filter(Objects::nonNull).forEach(implementationArtifactPostProcessor);
}
}