package com.perforce.maven.mojo.unshelve; /** * Copyright (c) 2010 Perforce Software. All rights reserved. */ import java.io.IOException; import java.util.List; import org.apache.maven.plugin.MojoExecutionException; import org.apache.maven.scm.ScmException; import org.apache.maven.scm.ScmFileSet; import org.apache.maven.scm.ScmResult; import org.apache.maven.scm.provider.ScmProvider; import org.apache.maven.scm.provider.ScmProviderRepository; import org.apache.maven.scm.repository.ScmRepository; import com.perforce.maven.mojo.P4Mojo; import com.perforce.maven.scm.provider.p4.command.P4ClientExecutor; import com.perforce.maven.scm.provider.p4.command.P4Executor; import com.perforce.maven.scm.provider.p4.repository.P4ScmProviderRepository; import com.perforce.p4java.core.IChangelist; import com.perforce.p4java.core.file.IFileSpec; import com.perforce.p4java.exception.P4JavaException; import com.perforce.p4java.option.client.UnshelveFilesOptions; /** * Perforce unshelve command. * * @goal unshelve */ public class P4UnShelveMojo extends P4Mojo { /** The Constant command. */ public static final String command = "Perforce unshelve command"; @Override public ScmResult executeP4Command() throws MojoExecutionException { try { ScmRepository repository = getScmRepository(); P4ScmProviderRepository providerRepository = (P4ScmProviderRepository) repository .getProviderRepository(); ScmProvider scmProvider = scmManager .getProviderByRepository(repository); ScmFileSet fileSet = new ScmFileSet(scmDirectory, includes, excludes); ScmResult scmResult = executeUnShelveCommand(providerRepository, fileSet); return scmResult; } catch (ScmException e) { throw new MojoExecutionException("Couldn't unshelve files.", e); } catch (IOException e) { throw new MojoExecutionException( "Problem occurred while unshelving files.", e); } } protected ScmResult executeUnShelveCommand(ScmProviderRepository repo, ScmFileSet files) throws ScmException { P4UnShelveResult p4Result = new P4UnShelveResult(); P4ScmProviderRepository p4Repo = (P4ScmProviderRepository) repo; P4ClientExecutor executor = new P4ClientExecutor(p4Repo, files, getLogger()); int fromChangelistId = parseChangelist(System .getProperty(P4Executor.P4_FROM_CHANGELIST_PROPERTY)); if (fromChangelistId == IChangelist.UNKNOWN || fromChangelistId == IChangelist.DEFAULT) { throw new ScmException( "The required source pending changelist 'maven.scm.p4.fromchangelist' property is not set or invalid."); } int toChangelistId = parseChangelist(System .getProperty(P4Executor.P4_TO_CHANGELIST_PROPERTY)); if (toChangelistId == IChangelist.UNKNOWN) { toChangelistId = IChangelist.DEFAULT; } // Default to null - unshelve everything List<IFileSpec> fileSpecs = null; if (fromChangelistId != IChangelist.DEFAULT && fromChangelistId != IChangelist.UNKNOWN) { try { UnshelveFilesOptions unshelveFilesOptions = new UnshelveFilesOptions(); List<IFileSpec> retFileSpecs = executor.getClient() .unshelveFiles(fileSpecs, fromChangelistId, toChangelistId, unshelveFilesOptions); p4Result.process(retFileSpecs); } catch (P4JavaException e) { if (getLog().isErrorEnabled()) { getLog().error(e); } throw new ScmException(e.getLocalizedMessage(), e); } } if (getLog().isInfoEnabled()) { getLog().info(p4Result.getCommandOutput()); } return new ScmResult(command, p4Result.isSuccess() ? "Unshelve successful" : "Unable to Unshelve", p4Result.getCommandOutput(), p4Result.isSuccess()); } }
# | Change | User | Description | Committed | |
---|---|---|---|---|---|
#4 | 9520 | dantran | folder rename to match with its artifactId | ||
#3 | 9191 | dantran |
jobs,shelve, and unshelve should run as aggregate, there is no need to tranverse. Ensure extracting credential from settings.xml working |
||
#2 | 9190 | dantran | Migrate to java annotation, add loading credential from settings.xml if not given | ||
#1 | 9167 | dantran |
Populate //guest/dantran/p4maven/... from //guest/perforce_software/p4maven/main/.... |
||
//guest/perforce_software/p4maven/main/com.perforce.maven.mojo/src/main/java/com/perforce/maven/mojo/unshelve/P4UnShelveMojo.java | |||||
#1 | 8496 | Matt Attaway | Move P4Ant and P4Maven into their proper homes | ||
//public/perforce/p4maven/main/com.perforce.maven.mojo/src/main/java/com/perforce/maven/mojo/unshelve/P4UnShelveMojo.java | |||||
#1 | 8270 | Matt Attaway | Initial add of P4Maven source code |