diff --git a/xdoc/src/main/org/apache/maven/xdoc/util/ScmUtil.java b/xdoc/src/main/org/apache/maven/xdoc/util/ScmUtil.java
index 5fdd23c4..318113e2 100644
--- a/xdoc/src/main/org/apache/maven/xdoc/util/ScmUtil.java
+++ b/xdoc/src/main/org/apache/maven/xdoc/util/ScmUtil.java
@@ -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 Jason van Zyl
* @author Arnaud Heritier
* @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 http://svnbook.red-bean.com/
*/
- 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 http://svnbook.red-bean.com/
*/
- 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
* Perforce SCM. For example, generate the following command
@@ -302,43 +342,54 @@ public final class ScmUtil {
*
* p4 -H hostname -p port -u username -P password path submit -c changement *
- * + * * @param devConnection * @see 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 * - * + * * @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 { ** cleartool checkout module *
- * + * * @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: