package alien4cloud.utils; import java.util.regex.Matcher; import java.util.regex.Pattern; import org.apache.commons.lang.StringUtils; import org.alien4cloud.tosca.model.definitions.AbstractArtifact; import org.alien4cloud.tosca.model.definitions.DeploymentArtifact; public class InputArtifactUtil { public static final String INPUT_ARTIFACT_FN_NAME = "get_input_artifact"; private static final Pattern P = Pattern.compile("\\{\\s*" + INPUT_ARTIFACT_FN_NAME + ":\\s*(\\w+)\\s*\\}"); private InputArtifactUtil() { super(); } public static void updateInputArtifactIdIfNeeded(DeploymentArtifact dArtifact, String oldInputArtifactId, String newInputArtifactId) { Matcher m = P.matcher(dArtifact.getArtifactRef()); if (m.matches() && m.group(1).equals(oldInputArtifactId)) { dArtifact.setArtifactRef("{ " + INPUT_ARTIFACT_FN_NAME + ": " + newInputArtifactId + " }"); } } public static void setInputArtifact(DeploymentArtifact dArtifact, String artifactId) { dArtifact.setArtifactRef("{ " + INPUT_ARTIFACT_FN_NAME + ": " + artifactId + " }"); dArtifact.setArtifactName(null); dArtifact.setArtifactRepository(null); dArtifact.setRepositoryName(null); dArtifact.setRepositoryURL(null); } public static void unsetInputArtifact(DeploymentArtifact dArtifact) { dArtifact.setArtifactRef(null); dArtifact.setArtifactName(null); } /** * @return the id of the related input artifact or null if this {@link AbstractArtifact} (can be deployment or implementation artifact) is not related to an * input artifact. */ public static String getInputArtifactId(AbstractArtifact dArtifact) { if (StringUtils.isBlank(dArtifact.getArtifactRef())) { return null; } Matcher m = P.matcher(dArtifact.getArtifactRef()); if (m.matches()) { return m.group(1); } return null; } }