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 |
|
#2
|
10055 |
Matt Attaway |
Pull over numerous changes from @dantran's branch. |
|
|
#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 |
|
|