Author: ltheussl
Date: Wed Apr 5 13:29:13 2006
New Revision: 391790
URL: http://svn.apache.org/viewcvs?rev=391790&view=rev
Log:
Replace tabs
Modified:
maven/maven-1/plugins/trunk/xdoc/src/main/org/apache/maven/xdoc/util/ScmUtil.java
Modified:
maven/maven-1/plugins/trunk/xdoc/src/main/org/apache/maven/xdoc/util/ScmUtil.java
URL:
http://svn.apache.org/viewcvs/maven/maven-1/plugins/trunk/xdoc/src/main/org/apache/maven/xdoc/util/ScmUtil.java?rev=391790&r1=391789&r2=391790&view=diff
==============================================================================
---
maven/maven-1/plugins/trunk/xdoc/src/main/org/apache/maven/xdoc/util/ScmUtil.java
(original)
+++
maven/maven-1/plugins/trunk/xdoc/src/main/org/apache/maven/xdoc/util/ScmUtil.java
Wed Apr 5 13:29:13 2006
@@ -43,102 +43,102 @@
* @version $Id$
*/
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];
- }
-
- return null;
- }
-
- /**
- * Get cvs connection string. Used in
- * xdocs/src/plugin-resources/templates/scm/cvs.xml. If username == "",
- * assumes anonymous (pserver) connection. In this case, inserts a
separator
- * (':' 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);
-
- if (!tokens[1].equals("cvs")) {
- return "";
- }
-
- String separator = getSCMConnectionSeparator(conn);
-
- 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);
- }
-
- 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);
-
- if (!tokens[1].equals("cvs")) {
- return "";
- }
-
- return tokens[5];
- }
-
- return null;
- }
-
- /**
- * 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);
- return "";
- }
- }
+ /**
+ * 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];
+ }
+
+ return null;
+ }
+
+ /**
+ * Get cvs connection string. Used in
+ * xdocs/src/plugin-resources/templates/scm/cvs.xml. If username == "",
+ * assumes anonymous (pserver) connection. In this case, inserts a
separator
+ * (':' 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);
+
+ if (!tokens[1].equals("cvs")) {
+ return "";
+ }
+
+ String separator = getSCMConnectionSeparator(conn);
+
+ 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);
+ }
+
+ 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);
+
+ if (!tokens[1].equals("cvs")) {
+ return "";
+ }
+
+ return tokens[5];
+ }
+
+ return null;
+ }
+
+ /**
+ * 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);
+ return "";
+ }
+ }
/**
* Create the documentation to provide an anonymous access with a
<code>CVS</code> SCM.
@@ -290,262 +290,262 @@
}
- /**
- * Create the documentation to provide an developer access with a
- * <code>Perforce</code> SCM. For example, generate the following
command
- * line:
- * <p>
- * p4 -H hostname -p port -u username -P password path
- * </p>
- * <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) {
- StringBuffer command = new StringBuffer();
- char delim = getSCMConnectionSeparator(devConnection).charAt(0);
-
- PerforceScmProvider perforceProvider = new
PerforceScmProvider();
- PerforceScmProviderRepository perforceRepo;
-
- 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());
- return "";
- }
-
- command.append("p4");
- if (!StringUtils.isEmpty(perforceRepo.getHost())) {
- command.append(" -H ").append(perforceRepo.getHost());
- }
- 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\"");
-
- return command.toString();
- }
-
- // Starteam
-
- /**
- * Create the documentation to provide an developer access with a
- * <code>Starteam</code> SCM. For example, generate the following
command
- * line:
- * <p>
- * stcmd co -x -nologo -stop -p myusername:[EMAIL
PROTECTED]:1234/projecturl
- * -is
- * </p>
- * <p>
- * stcmd ci -x -nologo -stop -p myusername:[EMAIL
PROTECTED]:1234/projecturl
- * -f NCI -is
- * </p>
- *
- * @param devConnection
- */
- public String developerAccessStarteam(String devConnection) {
-
- StringBuffer command = new StringBuffer();
- char delim = getSCMConnectionSeparator(devConnection).charAt(0);
-
- StarteamScmProvider starteamProvider = new
StarteamScmProvider();
- StarteamScmProviderRepository starteamRepo;
-
- 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());
- return "";
- }
-
- // Safety: remove the username/password if present
- String fullUrl = StringUtils.replace(starteamRepo.getFullUrl(),
- starteamRepo.getUser(), "username");
- 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();
- }
-
- /**
- * Create the documentation to provide an developer access with a
- * <code>Clearcase</code> SCM. For example, generate the following
command
- * line:
- * <p>
- * cleartool checkout module
- * </p>
- *
- * @param devConnection
- */
- public String developerAccessClearCase(String devConnection) {
-
- StringBuffer command = new StringBuffer();
- char delim = getSCMConnectionSeparator(devConnection).charAt(0);
-
- ClearCaseScmProvider clearCaseProvider = new
ClearCaseScmProvider();
- ClearCaseScmProviderRepository clearCaseRepo;
-
- 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());
- return "";
- }
-
- 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");
- }
-
- if (connection.length() < 5) {
- throw new IllegalArgumentException(
- "repository connection is too short");
- }
-
- if (!connection.startsWith("scm:")) {
- throw new IllegalArgumentException(
- "repository connection must start with
scm:");
- }
-
- 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);
-
- EnhancedStringTokenizer tok = new EnhancedStringTokenizer(
- modifiedConnection, delimiter);
-
- 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")) {
- throw new
IllegalArgumentException(
- "cvs local
repository connection string must specify 5 tokens, or an empty 3rd token if
6");
- }
- } else if (tokens.length == 5) {
- String[] newTokens = new String[6];
-
- newTokens[0] = tokens[0];
- newTokens[1] = tokens[1];
- newTokens[2] = tokens[2];
- newTokens[3] = "";
- newTokens[4] = tokens[3];
- newTokens[5] = tokens[4];
- tokens = newTokens;
- } else {
- throw new IllegalArgumentException(
- "cvs local repository
connection string doesn't contain five tokens");
- }
- }
-
- if (tokens.length != 6) {
- throw new IllegalArgumentException(
- "cvs repository connection
string doesn't contain six tokens");
- }
- }
-
- return tokens;
- }
-
- /**
- * 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");
- }
-
- if (connection.indexOf("|") != -1) {
- return "|";
- } else {
- return ":";
- }
- }
-
- /**
- * 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) {
- List l = new ArrayList();
-
- while (tok.hasMoreTokens()) {
- l.add(tok.nextToken());
- }
-
- 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("")) {
- return true;
- }
+ /**
+ * Create the documentation to provide an developer access with a
+ * <code>Perforce</code> SCM. For example, generate the following command
+ * line:
+ * <p>
+ * p4 -H hostname -p port -u username -P password path
+ * </p>
+ * <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) {
+ StringBuffer command = new StringBuffer();
+ char delim = getSCMConnectionSeparator(devConnection).charAt(0);
+
+ PerforceScmProvider perforceProvider = new PerforceScmProvider();
+ PerforceScmProviderRepository perforceRepo;
+
+ 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());
+ return "";
+ }
+
+ command.append("p4");
+ if (!StringUtils.isEmpty(perforceRepo.getHost())) {
+ command.append(" -H ").append(perforceRepo.getHost());
+ }
+ 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\"");
+
+ return command.toString();
+ }
+
+ // Starteam
+
+ /**
+ * Create the documentation to provide an developer access with a
+ * <code>Starteam</code> SCM. For example, generate the following command
+ * line:
+ * <p>
+ * stcmd co -x -nologo -stop -p myusername:[EMAIL
PROTECTED]:1234/projecturl
+ * -is
+ * </p>
+ * <p>
+ * stcmd ci -x -nologo -stop -p myusername:[EMAIL
PROTECTED]:1234/projecturl
+ * -f NCI -is
+ * </p>
+ *
+ * @param devConnection
+ */
+ public String developerAccessStarteam(String devConnection) {
+
+ StringBuffer command = new StringBuffer();
+ char delim = getSCMConnectionSeparator(devConnection).charAt(0);
- return false;
- }
+ StarteamScmProvider starteamProvider = new StarteamScmProvider();
+ StarteamScmProviderRepository starteamRepo;
+
+ 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());
+ return "";
+ }
+
+ // Safety: remove the username/password if present
+ String fullUrl = StringUtils.replace(starteamRepo.getFullUrl(),
+ starteamRepo.getUser(), "username");
+ 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();
+ }
+
+ /**
+ * Create the documentation to provide an developer access with a
+ * <code>Clearcase</code> SCM. For example, generate the following command
+ * line:
+ * <p>
+ * cleartool checkout module
+ * </p>
+ *
+ * @param devConnection
+ */
+ public String developerAccessClearCase(String devConnection) {
+
+ StringBuffer command = new StringBuffer();
+ char delim = getSCMConnectionSeparator(devConnection).charAt(0);
+
+ ClearCaseScmProvider clearCaseProvider = new ClearCaseScmProvider();
+ ClearCaseScmProviderRepository clearCaseRepo;
+
+ 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());
+ return "";
+ }
+
+ 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");
+ }
+
+ if (connection.length() < 5) {
+ throw new IllegalArgumentException(
+ "repository connection is too short");
+ }
+
+ if (!connection.startsWith("scm:")) {
+ throw new IllegalArgumentException(
+ "repository connection must start with scm:");
+ }
+
+ 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);
+
+ EnhancedStringTokenizer tok = new EnhancedStringTokenizer(
+ modifiedConnection, delimiter);
+
+ 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")) {
+ throw new IllegalArgumentException(
+ "cvs local repository connection string must
specify 5 tokens, or an empty 3rd token if 6");
+ }
+ } else if (tokens.length == 5) {
+ String[] newTokens = new String[6];
+
+ newTokens[0] = tokens[0];
+ newTokens[1] = tokens[1];
+ newTokens[2] = tokens[2];
+ newTokens[3] = "";
+ newTokens[4] = tokens[3];
+ newTokens[5] = tokens[4];
+ tokens = newTokens;
+ } else {
+ throw new IllegalArgumentException(
+ "cvs local repository connection string doesn't
contain five tokens");
+ }
+ }
+
+ if (tokens.length != 6) {
+ throw new IllegalArgumentException(
+ "cvs repository connection string doesn't contain six
tokens");
+ }
+ }
+
+ return tokens;
+ }
+
+ /**
+ * 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");
+ }
+
+ if (connection.indexOf("|") != -1) {
+ return "|";
+ } else {
+ return ":";
+ }
+ }
+
+ /**
+ * 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) {
+ List l = new ArrayList();
+
+ while (tok.hasMoreTokens()) {
+ l.add(tok.nextToken());
+ }
+
+ 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("")) {
+ return true;
+ }
+
+ return false;
+ }
}