Code reformatting

git-svn-id: https://svn.apache.org/repos/asf/maven/maven-1/plugins/trunk@392030 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
ltheussl 2006-04-06 18:44:01 +00:00
parent 1dd0ce2335
commit 22f65786e2

View File

@ -21,38 +21,41 @@ import java.util.ArrayList;
import java.util.List;
import org.apache.commons.lang.StringUtils;
import org.apache.maven.scm.provider.cvslib.CvsScmProvider;
import org.apache.maven.scm.provider.cvslib.repository.CvsScmProviderRepository;
import org.apache.maven.scm.provider.svn.SvnScmProvider;
import org.apache.maven.scm.provider.svn.repository.SvnScmProviderRepository;
import org.apache.maven.scm.provider.clearcase.ClearCaseScmProvider;
import org.apache.maven.scm.provider.clearcase.repository.ClearCaseScmProviderRepository;
import org.apache.maven.scm.provider.cvslib.CvsScmProvider;
import org.apache.maven.scm.provider.cvslib.repository.CvsScmProviderRepository;
import org.apache.maven.scm.provider.perforce.PerforceScmProvider;
import org.apache.maven.scm.provider.perforce.repository.PerforceScmProviderRepository;
import org.apache.maven.scm.provider.starteam.StarteamScmProvider;
import org.apache.maven.scm.provider.starteam.repository.StarteamScmProviderRepository;
import org.apache.maven.scm.provider.svn.SvnScmProvider;
import org.apache.maven.scm.provider.svn.repository.SvnScmProviderRepository;
import org.apache.maven.scm.repository.ScmRepositoryException;
import org.apache.maven.util.EnhancedStringTokenizer;
/**
* Utility class to manage SCM informations. NOTE: This is very CVS specific,
* but I would like to try additional SCM package like subversion ASAP.
*
*
* @author <a href="mailto:jvanzyl@apache.org">Jason van Zyl</a>
* @author <a href="mailto:aheritier@apache.org">Arnaud Heritier</a>
* @version $Id$
*/
public final class ScmUtil {
public final class ScmUtil
{
/**
* Get the SCM type.
*
*
* @param scmConnection
* the scm connection to analyse.
* @return the scm type : cvs, svn , ...
*/
public String getScmType(final String scmConnection) {
if (isValid(scmConnection)) {
return splitSCMConnection(scmConnection)[1];
public String getScmType( final String scmConnection )
{
if ( isValid( scmConnection ) )
{
return splitSCMConnection( scmConnection )[1];
}
return null;
@ -65,51 +68,60 @@ public final class ScmUtil {
* (':' or '|') between the username and '@' to indicate that there is a
* password and that it is empty. If username != "" it replaces username in
* conn.
*
*
* @param conn
* six token connection string
* @param username
* username override if non-empty.
* @return CVS root.
*/
public String getCvsConnection(String conn, String username) {
String[] tokens = splitSCMConnection(conn);
public String getCvsConnection( String conn, String username )
{
String[] tokens = splitSCMConnection( conn );
if (!tokens[1].equals("cvs")) {
if ( !tokens[1].equals( "cvs" ) )
{
return "";
}
String separator = getSCMConnectionSeparator(conn);
String separator = getSCMConnectionSeparator( conn );
if (tokens[3].indexOf('@') >= 0) {
if (username.length() == 0) {
username = tokens[3].substring(0, tokens[3].indexOf('@'))
+ separator;
if ( tokens[3].indexOf( '@' ) >= 0 )
{
if ( username.length() == 0 )
{
username =
tokens[3].substring( 0, tokens[3].indexOf( '@' ) )
+ separator;
}
tokens[3] = username + "@"
+ tokens[3].substring(tokens[3].indexOf('@') + 1);
tokens[3] =
username + "@"
+ tokens[3].substring( tokens[3].indexOf( '@' ) + 1 );
}
String result = tokens[0] + ":" + tokens[1] + separator + tokens[2]
+ separator + tokens[3] + separator + tokens[4] + separator
+ tokens[5];
String result =
tokens[0] + ":" + tokens[1] + separator + tokens[2] + separator
+ tokens[3] + separator + tokens[4] + separator + tokens[5];
return result;
}
/**
* Get cvs module. Used in xdocs/src/plugin-resources/templates/scm/cvs.xml.
*
*
* @param conn
* six token connection string
* @return CVS module.
*/
public String getCvsModule(String conn) {
if (isValid(conn)) {
String[] tokens = splitSCMConnection(conn);
public String getCvsModule( String conn )
{
if ( isValid( conn ) )
{
String[] tokens = splitSCMConnection( conn );
if (!tokens[1].equals("cvs")) {
if ( !tokens[1].equals( "cvs" ) )
{
return "";
}
@ -123,19 +135,23 @@ public final class ScmUtil {
* Get svn connection string. Used in
* xdocs/src/plugin-resources/templates/scm/svn.xml. It removes the first
* two elements (scm:svn:)
*
*
* @param conn
* the repository connection
* @return CVS root.
*/
public String getSvnConnection(String conn) {
if (conn != null && conn.length() > 8
&& "svn".equals(conn.substring(4, 7)))
return conn.substring(8);
else {
System.err
.println("Your subversion connection does not seem to be valid: "
+ conn);
public String getSvnConnection( String conn )
{
if ( ( conn != null ) && ( conn.length() > 8 )
&& "svn".equals( conn.substring( 4, 7 ) ) )
{
return conn.substring( 8 );
}
else
{
System.err.println(
"Your subversion connection does not seem to be valid: " + conn );
return "";
}
}
@ -151,25 +167,30 @@ public final class ScmUtil {
*/
public String anonymousAccessCVS( String connection )
{
char delim = getSCMConnectionSeparator(connection).charAt(0);
char delim = getSCMConnectionSeparator( connection ).charAt( 0 );
CvsScmProvider cvsProvider = new CvsScmProvider();
CvsScmProviderRepository cvsRepo;
String scmSpecificUrl = connection.substring(8);
String scmSpecificUrl = connection.substring( 8 );
try
{
cvsRepo =
(CvsScmProviderRepository) cvsProvider
.makeProviderScmRepository( scmSpecificUrl, delim );
}
catch ( ScmRepositoryException e )
{
System.err.println(
"Your developerConnection does not seem to be valid: "
+ e.getMessage() );
try {
cvsRepo = (CvsScmProviderRepository) cvsProvider
.makeProviderScmRepository(scmSpecificUrl, delim);
} catch (ScmRepositoryException e) {
System.err
.println("Your developerConnection does not seem to be valid: "
+ e.getMessage());
return "";
}
StringBuffer command = new StringBuffer();
command.append( "cvs -d " ).append( cvsRepo.getCvsRoot() ).append( " login" );
command.append( "\n" );
command.append( "cvs -z3 -d " ).append( cvsRepo.getCvsRoot() );
@ -189,32 +210,39 @@ public final class ScmUtil {
*/
public String developerAccessCVS( String devConnection )
{
char delim = getSCMConnectionSeparator(devConnection).charAt(0);
char delim = getSCMConnectionSeparator( devConnection ).charAt( 0 );
CvsScmProvider cvsProvider = new CvsScmProvider();
CvsScmProviderRepository cvsRepo;
String scmSpecificUrl = devConnection.substring(8);
String scmSpecificUrl = devConnection.substring( 8 );
try
{
cvsRepo =
(CvsScmProviderRepository) cvsProvider
.makeProviderScmRepository( scmSpecificUrl, delim );
}
catch ( ScmRepositoryException e )
{
System.err.println(
"Your developerConnection does not seem to be valid: "
+ e.getMessage() );
try {
cvsRepo = (CvsScmProviderRepository) cvsProvider
.makeProviderScmRepository(scmSpecificUrl, delim);
} catch (ScmRepositoryException e) {
System.err
.println("Your developerConnection does not seem to be valid: "
+ e.getMessage());
return "";
}
// Safety: remove the username if present
String cvsRoot = StringUtils.replace( cvsRepo.getCvsRoot(), cvsRepo.getUser(), "username" );
String cvsRoot =
StringUtils.replace( cvsRepo.getCvsRoot(), cvsRepo.getUser(),
"username" );
StringBuffer command = new StringBuffer();
command.append( "export CVS_RSH=ssh" );
command.append( "\n" );
command.append( "cvs -z3 -d " ).append( cvsRoot ).append( " co " ).append( cvsRepo.getModule() );
command.append( "cvs -z3 -d " ).append( cvsRoot ).append( " co " )
.append( cvsRepo.getModule() );
return command.toString();
}
@ -228,28 +256,35 @@ public final class ScmUtil {
* @param checkoutDirectoryName The checkout directory.
* @see <a href="http://svnbook.red-bean.com/">http://svnbook.red-bean.com/</a>
*/
public String anonymousAccessSVN( String connection, String checkoutDirectoryName )
public String anonymousAccessSVN( String connection,
String checkoutDirectoryName )
{
char delim = getSCMConnectionSeparator(connection).charAt(0);
char delim = getSCMConnectionSeparator( connection ).charAt( 0 );
SvnScmProvider svnProvider = new SvnScmProvider();
SvnScmProviderRepository svnRepo;
String scmSpecificUrl = connection.substring(8);
String scmSpecificUrl = connection.substring( 8 );
try
{
svnRepo =
(SvnScmProviderRepository) svnProvider
.makeProviderScmRepository( scmSpecificUrl, delim );
}
catch ( ScmRepositoryException e )
{
System.err.println(
"Your developerConnection does not seem to be valid: "
+ e.getMessage() );
try {
svnRepo = (SvnScmProviderRepository) svnProvider
.makeProviderScmRepository(scmSpecificUrl, delim);
} catch (ScmRepositoryException e) {
System.err
.println("Your developerConnection does not seem to be valid: "
+ e.getMessage());
return "";
}
StringBuffer command = new StringBuffer();
command.append( "svn checkout " ).append( svnRepo.getUrl() ).append( " " ).append( checkoutDirectoryName );
command.append( "svn checkout " ).append( svnRepo.getUrl() )
.append( " " ).append( checkoutDirectoryName );
return command.toString();
}
@ -264,34 +299,39 @@ public final class ScmUtil {
* @param checkoutDirectoryName The checkout directory.
* @see <a href="http://svnbook.red-bean.com/">http://svnbook.red-bean.com/</a>
*/
public String developerAccessSVN( String devConnection, String checkoutDirectoryName )
public String developerAccessSVN( String devConnection,
String checkoutDirectoryName )
{
char delim = getSCMConnectionSeparator(devConnection).charAt(0);
char delim = getSCMConnectionSeparator( devConnection ).charAt( 0 );
SvnScmProvider svnProvider = new SvnScmProvider();
SvnScmProviderRepository svnRepo;
String scmSpecificUrl = devConnection.substring(8);
String scmSpecificUrl = devConnection.substring( 8 );
try
{
svnRepo =
(SvnScmProviderRepository) svnProvider
.makeProviderScmRepository( scmSpecificUrl, delim );
}
catch ( ScmRepositoryException e )
{
System.err.println(
"Your developerConnection does not seem to be valid: "
+ e.getMessage() );
try {
svnRepo = (SvnScmProviderRepository) svnProvider
.makeProviderScmRepository(scmSpecificUrl, delim);
} catch (ScmRepositoryException e) {
System.err
.println("Your developerConnection does not seem to be valid: "
+ e.getMessage());
return "";
}
StringBuffer command = new StringBuffer();
command.append( "svn checkout " ).append( svnRepo.getUrl() ).append( " " ).append( checkoutDirectoryName );
command.append( "svn checkout " ).append( svnRepo.getUrl() )
.append( " " ).append( checkoutDirectoryName );
return command.toString();
}
/**
* Create the documentation to provide an developer access with a
* <code>Perforce</code> SCM. For example, generate the following command
@ -302,43 +342,54 @@ public final class ScmUtil {
* <p>
* p4 -H hostname -p port -u username -P password path submit -c changement
* </p>
*
*
* @param devConnection
* @see <a
* href="http://www.perforce.com/perforce/doc.051/manuals/cmdref/index.html">http://www.perforce.com/perforce/doc.051/manuals/cmdref/index.html</>
*/
public String developerAccessPerforce(String devConnection) {
public String developerAccessPerforce( String devConnection )
{
StringBuffer command = new StringBuffer();
char delim = getSCMConnectionSeparator(devConnection).charAt(0);
char delim = getSCMConnectionSeparator( devConnection ).charAt( 0 );
PerforceScmProvider perforceProvider = new PerforceScmProvider();
PerforceScmProviderRepository perforceRepo;
String scmSpecificUrl = devConnection.substring(13);
String scmSpecificUrl = devConnection.substring( 13 );
try
{
perforceRepo =
(PerforceScmProviderRepository) perforceProvider
.makeProviderScmRepository( scmSpecificUrl, delim );
}
catch ( ScmRepositoryException e )
{
System.err.println(
"Your developerConnection does not seem to be valid: "
+ e.getMessage() );
try {
perforceRepo = (PerforceScmProviderRepository) perforceProvider
.makeProviderScmRepository(scmSpecificUrl, delim);
} catch (ScmRepositoryException e) {
System.err
.println("Your developerConnection does not seem to be valid: "
+ e.getMessage());
return "";
}
command.append("p4");
if (!StringUtils.isEmpty(perforceRepo.getHost())) {
command.append(" -H ").append(perforceRepo.getHost());
command.append( "p4" );
if ( !StringUtils.isEmpty( perforceRepo.getHost() ) )
{
command.append( " -H " ).append( perforceRepo.getHost() );
}
if (perforceRepo.getPort() > 0) {
command.append(" -p " + perforceRepo.getPort());
if ( perforceRepo.getPort() > 0 )
{
command.append( " -p " + perforceRepo.getPort() );
}
command.append(" -u username");
command.append(" -P password");
command.append(" ");
command.append(perforceRepo.getPath());
command.append("\n");
command.append("p4 submit -c \"A comment\"");
command.append( " -u username" );
command.append( " -P password" );
command.append( " " );
command.append( perforceRepo.getPath() );
command.append( "\n" );
command.append( "p4 submit -c \"A comment\"" );
return command.toString();
}
@ -357,42 +408,50 @@ public final class ScmUtil {
* stcmd ci -x -nologo -stop -p myusername:mypassword@myhost:1234/projecturl
* -f NCI -is
* </p>
*
*
* @param devConnection
*/
public String developerAccessStarteam(String devConnection) {
public String developerAccessStarteam( String devConnection )
{
StringBuffer command = new StringBuffer();
char delim = getSCMConnectionSeparator(devConnection).charAt(0);
char delim = getSCMConnectionSeparator( devConnection ).charAt( 0 );
StarteamScmProvider starteamProvider = new StarteamScmProvider();
StarteamScmProviderRepository starteamRepo;
String scmSpecificUrl = devConnection.substring(13);
String scmSpecificUrl = devConnection.substring( 13 );
try
{
starteamRepo =
(StarteamScmProviderRepository) starteamProvider
.makeProviderScmRepository( scmSpecificUrl, delim );
}
catch ( ScmRepositoryException e )
{
System.err.println(
"Your developerConnection does not seem to be valid: "
+ e.getMessage() );
try {
starteamRepo = (StarteamScmProviderRepository) starteamProvider
.makeProviderScmRepository(scmSpecificUrl, delim);
} catch (ScmRepositoryException e) {
System.err
.println("Your developerConnection does not seem to be valid: "
+ e.getMessage());
return "";
}
// Safety: remove the username/password if present
String fullUrl = StringUtils.replace(starteamRepo.getFullUrl(),
starteamRepo.getUser(), "username");
fullUrl = StringUtils.replace(fullUrl, starteamRepo.getPassword(),
"password");
String fullUrl =
StringUtils.replace( starteamRepo.getFullUrl(),
starteamRepo.getUser(), "username" );
command.append("stcmd co -x -nologo -stop -p ");
command.append(fullUrl);
command.append(" -is");
command.append("\n");
command.append("stcmd ci -x -nologo -stop -p ");
command.append(fullUrl);
command.append(" -f NCI -is");
fullUrl =
StringUtils.replace( fullUrl, starteamRepo.getPassword(),
"password" );
command.append( "stcmd co -x -nologo -stop -p " );
command.append( fullUrl );
command.append( " -is" );
command.append( "\n" );
command.append( "stcmd ci -x -nologo -stop -p " );
command.append( fullUrl );
command.append( " -f NCI -is" );
return command.toString();
}
@ -404,77 +463,94 @@ public final class ScmUtil {
* <p>
* cleartool checkout module
* </p>
*
*
* @param devConnection
*/
public String developerAccessClearCase(String devConnection) {
public String developerAccessClearCase( String devConnection )
{
StringBuffer command = new StringBuffer();
char delim = getSCMConnectionSeparator(devConnection).charAt(0);
char delim = getSCMConnectionSeparator( devConnection ).charAt( 0 );
ClearCaseScmProvider clearCaseProvider = new ClearCaseScmProvider();
ClearCaseScmProviderRepository clearCaseRepo;
String scmSpecificUrl = devConnection.substring(14);
String scmSpecificUrl = devConnection.substring( 14 );
try
{
clearCaseRepo =
(ClearCaseScmProviderRepository) clearCaseProvider
.makeProviderScmRepository( scmSpecificUrl, delim );
}
catch ( ScmRepositoryException e )
{
System.err.println(
"Your developerConnection does not seem to be valid: "
+ e.getMessage() );
try {
clearCaseRepo = (ClearCaseScmProviderRepository) clearCaseProvider
.makeProviderScmRepository(scmSpecificUrl, delim);
} catch (ScmRepositoryException e) {
System.err
.println("Your developerConnection does not seem to be valid: "
+ e.getMessage());
return "";
}
command.append("cleartool checkout ").append(
clearCaseRepo.getViewName("id"));
command.append( "cleartool checkout " ).append( clearCaseRepo
.getViewName( "id" ) );
return command.toString();
}
/**
* Splits an SCM string into parts.
*
*
* @param connection
* @return A string array of SCM parts
*/
public String[] splitSCMConnection(String connection) {
if (connection == null) {
throw new NullPointerException("repository connection is null");
public String[] splitSCMConnection( String connection )
{
if ( connection == null )
{
throw new NullPointerException( "repository connection is null" );
}
if (connection.length() < 5) {
if ( connection.length() < 5 )
{
throw new IllegalArgumentException(
"repository connection is too short");
"repository connection is too short" );
}
if (!connection.startsWith("scm:")) {
if ( !connection.startsWith( "scm:" ) )
{
throw new IllegalArgumentException(
"repository connection must start with scm:");
"repository connection must start with scm:" );
}
String delimiter = getSCMConnectionSeparator(connection);
String delimiter = getSCMConnectionSeparator( connection );
// If the tokenizer is going to work correctly then the character
// following "scm" must be the same as the delimiter, which is not
// always the case. Therefor we give it a modified connection.
String modifiedConnection = "scm" + delimiter + connection.substring(4);
String modifiedConnection =
"scm" + delimiter + connection.substring( 4 );
EnhancedStringTokenizer tok = new EnhancedStringTokenizer(
modifiedConnection, delimiter);
EnhancedStringTokenizer tok =
new EnhancedStringTokenizer( modifiedConnection, delimiter );
String[] tokens = tokenizerToArray(tok);
String[] tokens = tokenizerToArray( tok );
// for a valid repository, it should be scm:<provider> at least
if ((tokens.length >= 1) && tokens[1].equals("cvs")) {
if ((tokens.length >= 2) && tokens[2].equals("local")) {
if (tokens.length == 6) {
if ((tokens[3].length() > 0) && !tokens[3].equals("local")) {
if ( ( tokens.length >= 1 ) && tokens[1].equals( "cvs" ) )
{
if ( ( tokens.length >= 2 ) && tokens[2].equals( "local" ) )
{
if ( tokens.length == 6 )
{
if ( ( tokens[3].length() > 0 )
&& !tokens[3].equals( "local" ) )
{
throw new IllegalArgumentException(
"cvs local repository connection string must specify 5 tokens, or an empty 3rd token if 6");
"cvs local repository connection string must specify 5 tokens, or an empty 3rd token if 6" );
}
} else if (tokens.length == 5) {
}
else if ( tokens.length == 5 )
{
String[] newTokens = new String[6];
newTokens[0] = tokens[0];
@ -484,15 +560,18 @@ public final class ScmUtil {
newTokens[4] = tokens[3];
newTokens[5] = tokens[4];
tokens = newTokens;
} else {
}
else
{
throw new IllegalArgumentException(
"cvs local repository connection string doesn't contain five tokens");
"cvs local repository connection string doesn't contain five tokens" );
}
}
if (tokens.length != 6) {
if ( tokens.length != 6 )
{
throw new IllegalArgumentException(
"cvs repository connection string doesn't contain six tokens");
"cvs repository connection string doesn't contain six tokens" );
}
}
@ -501,18 +580,23 @@ public final class ScmUtil {
/**
* Get the separator used in an SCM string
*
*
* @param connection
* @return String that can be either ":" or "|"
*/
public String getSCMConnectionSeparator(String connection) {
if (connection == null) {
throw new NullPointerException("repository connection is null");
public String getSCMConnectionSeparator( String connection )
{
if ( connection == null )
{
throw new NullPointerException( "repository connection is null" );
}
if (connection.indexOf("|") != -1) {
if ( connection.indexOf( "|" ) != -1 )
{
return "|";
} else {
}
else
{
return ":";
}
}
@ -520,31 +604,35 @@ public final class ScmUtil {
/**
* Converts a tokenizer to an array of strings FIXME: This should be in a
* string util class.
*
*
* @param tok
* @return String[]
*/
public String[] tokenizerToArray(EnhancedStringTokenizer tok) {
public String[] tokenizerToArray( EnhancedStringTokenizer tok )
{
List l = new ArrayList();
while (tok.hasMoreTokens()) {
l.add(tok.nextToken());
while ( tok.hasMoreTokens() )
{
l.add( tok.nextToken() );
}
return (String[]) l.toArray(new String[l.size()]);
return (String[]) l.toArray( new String[l.size()] );
}
/**
* Simple check for a value in the POM. Due to the Jelly swizzling fields
* that aren't set come out as empty strings. This will not be required when
* the new lazy evaluation mechanism is put in place.
*
*
* @param value
* POM value to test.
* @return Is the value valid.
*/
protected boolean isValid(String value) {
if ((value != null) && !value.trim().equals("")) {
protected boolean isValid( String value )
{
if ( ( value != null ) && !value.trim().equals( "" ) )
{
return true;
}