package com.atlassian.maven.plugins.jgitflow.extension.command.external; import com.atlassian.jgitflow.core.GitFlowConfiguration; import com.atlassian.jgitflow.core.JGitFlow; import com.atlassian.jgitflow.core.JGitFlowInfo; import com.atlassian.jgitflow.core.command.JGitFlowCommand; import com.atlassian.jgitflow.core.exception.JGitFlowExtensionException; import com.atlassian.jgitflow.core.extension.ExtensionCommand; import com.atlassian.jgitflow.core.extension.ExtensionFailStrategy; import com.atlassian.maven.jgitflow.api.MavenJGitFlowExtension; import com.atlassian.maven.plugins.jgitflow.extension.ExternalInitializingExtension; import com.atlassian.maven.plugins.jgitflow.provider.JGitFlowProvider; import org.codehaus.plexus.component.annotations.Requirement; import org.eclipse.jgit.api.Git; public abstract class ExternalCommandExecutor implements ExtensionCommand, ExternalInitializingExtension, ExternalCommand { @Requirement private JGitFlowProvider jGitFlowProvider; private MavenJGitFlowExtension externalExtension; @Override public void execute(GitFlowConfiguration configuration, Git git, JGitFlowCommand gitFlowCommand) throws JGitFlowExtensionException { if (null == externalExtension) { return; } try { JGitFlow flow = jGitFlowProvider.gitFlow(); execute(externalExtension, getNewVersion(), getOldVersion(), new JGitFlowInfo(flow.git(), configuration)); } catch (Exception e) { throw new JGitFlowExtensionException("Error running external extension for branch change", e); } } @Override public void init(MavenJGitFlowExtension externalExtension) { this.externalExtension = externalExtension; } @Override public ExtensionFailStrategy failStrategy() { return ExtensionFailStrategy.ERROR; } }