You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by ol...@apache.org on 2012/04/23 09:45:38 UTC
svn commit: r1329106 [1/6] - in /maven/scm/trunk: ./ maven-scm-client/
maven-scm-client/src/main/resources/META-INF/plexus/ maven-scm-providers/
maven-scm-providers/maven-scm-provider-accurev/src/test/java/org/apache/maven/scm/provider/accurev/command/...
Author: olamy
Date: Mon Apr 23 07:45:33 2012
New Revision: 1329106
URL: http://svn.apache.org/viewvc?rev=1329106&view=rev
Log:
[SCM-670] Support Jazz SCM.
Submitted by Chris Graham.
Added:
maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/
maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/pom.xml (with props)
maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/
maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/main/
maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/main/java/
maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/
maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/
maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/
maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/
maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/
maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/
maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/JazzScmProvider.java (with props)
maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/
maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/JazzConstants.java (with props)
maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/JazzScmCommand.java (with props)
maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/add/
maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/add/JazzAddCommand.java (with props)
maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/add/JazzAddConsumer.java (with props)
maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/blame/
maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/blame/JazzBlameCommand.java (with props)
maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/blame/JazzBlameConsumer.java (with props)
maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/branch/
maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/branch/JazzBranchCommand.java (with props)
maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/changelog/
maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/changelog/JazzChangeLogCommand.java (with props)
maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/changelog/JazzHistoryConsumer.java (with props)
maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/changelog/JazzListChangesetConsumer.java (with props)
maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/checkin/
maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/checkin/JazzCheckInCommand.java (with props)
maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/checkin/JazzCheckInConsumer.java (with props)
maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/checkout/
maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/checkout/JazzCheckOutCommand.java (with props)
maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/checkout/JazzCheckOutConsumer.java (with props)
maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/consumer/
maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/consumer/AbstractRepositoryConsumer.java (with props)
maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/consumer/DebugLoggerConsumer.java (with props)
maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/consumer/ErrorConsumer.java (with props)
maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/diff/
maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/diff/JazzDiffCommand.java (with props)
maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/edit/
maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/edit/JazzEditCommand.java (with props)
maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/list/
maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/list/JazzListCommand.java (with props)
maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/list/JazzListConsumer.java (with props)
maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/status/
maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/status/JazzStatusCommand.java (with props)
maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/status/JazzStatusConsumer.java (with props)
maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/tag/
maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/tag/JazzTagCommand.java (with props)
maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/unedit/
maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/unedit/JazzUnEditCommand.java (with props)
maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/update/
maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/update/JazzUpdateCommand.java (with props)
maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/update/JazzUpdateConsumer.java (with props)
maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/repository/
maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/repository/JazzScmProviderRepository.java (with props)
maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/site/
maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/site/apt/
maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/site/apt/index.apt (with props)
maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/site/apt/releases.apt (with props)
maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/site/apt/tcktests.apt (with props)
maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/site/site.xml (with props)
maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/test/
maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/test/java/
maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/test/java/org/
maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/test/java/org/apache/
maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/test/java/org/apache/maven/
maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/test/java/org/apache/maven/scm/
maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/test/java/org/apache/maven/scm/provider/
maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/test/java/org/apache/maven/scm/provider/jazz/
maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/test/java/org/apache/maven/scm/provider/jazz/JazzScmTestCase.java (with props)
maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/test/java/org/apache/maven/scm/provider/jazz/command/
maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/test/java/org/apache/maven/scm/provider/jazz/command/JazzScmCommandTest.java (with props)
maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/test/java/org/apache/maven/scm/provider/jazz/command/JazzTckUtil.java (with props)
maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/test/java/org/apache/maven/scm/provider/jazz/command/add/
maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/test/java/org/apache/maven/scm/provider/jazz/command/add/JazzAddCommandTest.java (with props)
maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/test/java/org/apache/maven/scm/provider/jazz/command/blame/
maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/test/java/org/apache/maven/scm/provider/jazz/command/blame/JazzBlameCommandTckTest.java (with props)
maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/test/java/org/apache/maven/scm/provider/jazz/command/blame/JazzBlameCommandTest.java (with props)
maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/test/java/org/apache/maven/scm/provider/jazz/command/branch/
maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/test/java/org/apache/maven/scm/provider/jazz/command/branch/JazzBranchCommandTest.java (with props)
maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/test/java/org/apache/maven/scm/provider/jazz/command/changelog/
maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/test/java/org/apache/maven/scm/provider/jazz/command/changelog/JazzChangeLogCommandTckTest.java (with props)
maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/test/java/org/apache/maven/scm/provider/jazz/command/changelog/JazzChangeLogCommandTest.java (with props)
maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/test/java/org/apache/maven/scm/provider/jazz/command/checkin/
maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/test/java/org/apache/maven/scm/provider/jazz/command/checkin/JazzCheckInCommandTckTest.java (with props)
maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/test/java/org/apache/maven/scm/provider/jazz/command/checkin/JazzCheckInCommandTest.java (with props)
maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/test/java/org/apache/maven/scm/provider/jazz/command/checkout/
maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/test/java/org/apache/maven/scm/provider/jazz/command/checkout/JazzCheckOutCommandTckTest.java (with props)
maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/test/java/org/apache/maven/scm/provider/jazz/command/checkout/JazzCheckOutCommandTest.java (with props)
maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/test/java/org/apache/maven/scm/provider/jazz/command/consumer/
maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/test/java/org/apache/maven/scm/provider/jazz/command/consumer/DebugLoggerConsumerTest.java (with props)
maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/test/java/org/apache/maven/scm/provider/jazz/command/consumer/ErrorConsumerTest.java (with props)
maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/test/java/org/apache/maven/scm/provider/jazz/command/diff/
maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/test/java/org/apache/maven/scm/provider/jazz/command/diff/JazzDiffCommandTckTest.java (with props)
maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/test/java/org/apache/maven/scm/provider/jazz/command/diff/JazzDiffCommandTest.java (with props)
maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/test/java/org/apache/maven/scm/provider/jazz/command/edit/
maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/test/java/org/apache/maven/scm/provider/jazz/command/edit/JazzEditCommandTest.java (with props)
maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/test/java/org/apache/maven/scm/provider/jazz/command/list/
maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/test/java/org/apache/maven/scm/provider/jazz/command/list/JazzListCommandTest.java (with props)
maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/test/java/org/apache/maven/scm/provider/jazz/command/status/
maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/test/java/org/apache/maven/scm/provider/jazz/command/status/JazzStatusCommandTckTest.java (with props)
maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/test/java/org/apache/maven/scm/provider/jazz/command/status/JazzStatusCommandTest.java (with props)
maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/test/java/org/apache/maven/scm/provider/jazz/command/tag/
maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/test/java/org/apache/maven/scm/provider/jazz/command/tag/JazzTagCommandTckTest.java (with props)
maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/test/java/org/apache/maven/scm/provider/jazz/command/tag/JazzTagCommandTest.java (with props)
maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/test/java/org/apache/maven/scm/provider/jazz/command/unedit/
maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/test/java/org/apache/maven/scm/provider/jazz/command/unedit/JazzUnEditCommandTest.java (with props)
maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/test/java/org/apache/maven/scm/provider/jazz/command/update/
maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/test/java/org/apache/maven/scm/provider/jazz/command/update/JazzUpdateCommandTckTest.java (with props)
maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/test/java/org/apache/maven/scm/provider/jazz/command/update/JazzUpdateCommandTest.java (with props)
maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/test/java/org/apache/maven/scm/provider/jazz/repository/
maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/test/java/org/apache/maven/scm/provider/jazz/repository/JazzScmProviderRepositoryTest.java (with props)
maven/scm/trunk/src/site/apt/jazz.apt (with props)
Modified:
maven/scm/trunk/maven-scm-client/pom.xml
maven/scm/trunk/maven-scm-client/src/main/resources/META-INF/plexus/components.xml
maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/test/java/org/apache/maven/scm/provider/accurev/command/AccuRevTckUtil.java
maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gittest/pom.xml
maven/scm/trunk/maven-scm-providers/maven-scm-providers-standard/pom.xml
maven/scm/trunk/maven-scm-providers/pom.xml
maven/scm/trunk/maven-scm-test/src/main/java/org/apache/maven/scm/ScmTckTestCase.java
maven/scm/trunk/maven-scm-test/src/main/java/org/apache/maven/scm/ScmTestCase.java
maven/scm/trunk/pom.xml
maven/scm/trunk/src/site/site.xml
maven/scm/trunk/src/site/xdoc/matrix.xml
Modified: maven/scm/trunk/maven-scm-client/pom.xml
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-client/pom.xml?rev=1329106&r1=1329105&r2=1329106&view=diff
==============================================================================
--- maven/scm/trunk/maven-scm-client/pom.xml (original)
+++ maven/scm/trunk/maven-scm-client/pom.xml Mon Apr 23 07:45:33 2012
@@ -70,6 +70,10 @@
</dependency>
<dependency>
<groupId>org.apache.maven.scm</groupId>
+ <artifactId>maven-scm-provider-jazz</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven.scm</groupId>
<artifactId>maven-scm-provider-local</artifactId>
</dependency>
<dependency>
Modified: maven/scm/trunk/maven-scm-client/src/main/resources/META-INF/plexus/components.xml
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-client/src/main/resources/META-INF/plexus/components.xml?rev=1329106&r1=1329105&r2=1329106&view=diff
==============================================================================
--- maven/scm/trunk/maven-scm-client/src/main/resources/META-INF/plexus/components.xml (original)
+++ maven/scm/trunk/maven-scm-client/src/main/resources/META-INF/plexus/components.xml Mon Apr 23 07:45:33 2012
@@ -99,5 +99,11 @@ under the License.
<role-hint>vss</role-hint>
<implementation>org.apache.maven.scm.provider.vss.VssScmProvider</implementation>
</component>
+ <component>
+ <role>org.apache.maven.scm.provider.ScmProvider</role>
+ <role-hint>jazz</role-hint>
+ <implementation>org.apache.maven.scm.provider.jazz.JazzScmProvider</implementation>
+ <description>A Maven SCM Provider for IBM Jazz SCM (http://jazz.net/).</description>
+ </component>
</components>
</component-set>
Modified: maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/test/java/org/apache/maven/scm/provider/accurev/command/AccuRevTckUtil.java
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/test/java/org/apache/maven/scm/provider/accurev/command/AccuRevTckUtil.java?rev=1329106&r1=1329105&r2=1329106&view=diff
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/test/java/org/apache/maven/scm/provider/accurev/command/AccuRevTckUtil.java (original)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-accurev/src/test/java/org/apache/maven/scm/provider/accurev/command/AccuRevTckUtil.java Mon Apr 23 07:45:33 2012
@@ -130,8 +130,9 @@ public class AccuRevTckUtil
getAccuRevCL().mkstream( getDepotName(), newStreamName );
/*
- * Since scmFileNames is not populated before this is called... we get to duplicate some code here. TODO raise
- * patch to fix this.
+ * Since scmFileNames is not populated before this is called... we get to duplicate some code here.
+ * ChrisGWarp: It is now! :-)
+ * TODO raise patch to fix this. (still)
*/
List<String> scmFileNames = new ArrayList<String>( 4 );
@@ -173,7 +174,6 @@ public class AccuRevTckUtil
tckBaseDir = ScmTestCase.getBasedir();
}
getLogger().debug( "tckBaseDir=" + tckBaseDir );
-
}
return tckBaseDir;
Added: maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/pom.xml
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/pom.xml?rev=1329106&view=auto
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/pom.xml (added)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/pom.xml Mon Apr 23 07:45:33 2012
@@ -0,0 +1,122 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+ <!--
+ ~ Licensed to the Apache Software Foundation (ASF) under one ~
+ or more contributor license agreements. See the NOTICE file ~
+ distributed with this work for additional information ~
+ regarding copyright ownership. The ASF licenses this file ~ to
+ you under the Apache License, Version 2.0 (the ~ "License"); you
+ may not use this file except in compliance ~ with the License.
+ You may obtain a copy of the License at ~ ~
+ http://www.apache.org/licenses/LICENSE-2.0 ~ ~ Unless required
+ by applicable law or agreed to in writing, ~ software
+ distributed under the License is distributed on an ~ "AS IS"
+ BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY ~ KIND, either
+ express or implied. See the License for the ~ specific language
+ governing permissions and limitations ~ under the License.
+ -->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.apache.maven.scm</groupId>
+ <artifactId>maven-scm-providers</artifactId>
+ <version>1.7-SNAPSHOT</version>
+ </parent>
+
+ <artifactId>maven-scm-provider-jazz</artifactId>
+
+ <name>Maven SCM Jazz/Rational Team Concert Provider</name>
+ <description>A Maven SCM Provider for IBM Jazz SCM (http://jazz.net/).</description>
+
+ <developers>
+ <developer>
+ <id>ChrisGWarp</id>
+ <name>Chris Graham</name>
+ <email>ChrisGWarp@gmail.com</email>
+ <organization>WarpSpeed Computers</organization>
+ <roles>
+ <role>developer</role>
+ </roles>
+ <timezone>10</timezone>
+ </developer>
+ </developers>
+
+ <dependencies>
+ <!-- For the RE's used to parse command line output -->
+ <dependency>
+ <groupId>regexp</groupId>
+ <artifactId>regexp</artifactId>
+ </dependency>
+ <!-- For the tck tests -->
+ <dependency>
+ <groupId>org.apache.maven.scm</groupId>
+ <artifactId>maven-scm-test</artifactId>
+ <scope>test</scope>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.codehaus.plexus</groupId>
+ <artifactId>plexus-maven-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>create-component-descriptor</id>
+ <phase>generate-resources</phase>
+ <goals>
+ <goal>descriptor</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <artifactId>maven-surefire-plugin</artifactId>
+ <configuration>
+ <forkMode>never</forkMode>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+
+ <profiles>
+ <profile>
+ <id>tck-jazz</id>
+ <activation>
+ <activeByDefault>false</activeByDefault>
+ </activation>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-surefire-plugin</artifactId>
+ <configuration>
+ <forkMode>never</forkMode>
+ <excludes>
+ <exclude>nothing</exclude>
+ </excludes>
+ <systemProperties>
+ <property>
+ <name>tckBaseDir</name>
+ <value>${tckBaseDir}</value>
+ </property>
+ <property>
+ <name>tckUrl</name>
+ <value>${tckUrl}</value>
+ </property>
+ <property>
+ <name>tckSnapshotName</name>
+ <value>${tckSnapshotName}</value>
+ </property>
+ </systemProperties>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+ </profiles>
+
+</project>
Propchange: maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/pom.xml
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/pom.xml
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Added: maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/JazzScmProvider.java
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/JazzScmProvider.java?rev=1329106&view=auto
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/JazzScmProvider.java (added)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/JazzScmProvider.java Mon Apr 23 07:45:33 2012
@@ -0,0 +1,402 @@
+package org.apache.maven.scm.provider.jazz;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import java.net.URI;
+
+import org.apache.maven.scm.CommandParameters;
+import org.apache.maven.scm.ScmException;
+import org.apache.maven.scm.ScmFileSet;
+import org.apache.maven.scm.command.add.AddScmResult;
+import org.apache.maven.scm.command.blame.BlameScmResult;
+import org.apache.maven.scm.command.branch.BranchScmResult;
+import org.apache.maven.scm.command.changelog.ChangeLogScmResult;
+import org.apache.maven.scm.command.checkin.CheckInScmResult;
+import org.apache.maven.scm.command.checkout.CheckOutScmResult;
+import org.apache.maven.scm.command.diff.DiffScmResult;
+import org.apache.maven.scm.command.edit.EditScmResult;
+import org.apache.maven.scm.command.export.ExportScmResult;
+import org.apache.maven.scm.command.list.ListScmResult;
+import org.apache.maven.scm.command.status.StatusScmResult;
+import org.apache.maven.scm.command.tag.TagScmResult;
+import org.apache.maven.scm.command.unedit.UnEditScmResult;
+import org.apache.maven.scm.command.update.UpdateScmResult;
+import org.apache.maven.scm.provider.AbstractScmProvider;
+import org.apache.maven.scm.provider.ScmProviderRepository;
+import org.apache.maven.scm.provider.jazz.command.JazzConstants;
+import org.apache.maven.scm.provider.jazz.command.add.JazzAddCommand;
+import org.apache.maven.scm.provider.jazz.command.blame.JazzBlameCommand;
+import org.apache.maven.scm.provider.jazz.command.branch.JazzBranchCommand;
+import org.apache.maven.scm.provider.jazz.command.changelog.JazzChangeLogCommand;
+import org.apache.maven.scm.provider.jazz.command.checkin.JazzCheckInCommand;
+import org.apache.maven.scm.provider.jazz.command.checkout.JazzCheckOutCommand;
+import org.apache.maven.scm.provider.jazz.command.diff.JazzDiffCommand;
+import org.apache.maven.scm.provider.jazz.command.edit.JazzEditCommand;
+import org.apache.maven.scm.provider.jazz.command.list.JazzListCommand;
+import org.apache.maven.scm.provider.jazz.command.status.JazzStatusCommand;
+import org.apache.maven.scm.provider.jazz.command.tag.JazzTagCommand;
+import org.apache.maven.scm.provider.jazz.command.unedit.JazzUnEditCommand;
+import org.apache.maven.scm.provider.jazz.command.update.JazzUpdateCommand;
+import org.apache.maven.scm.provider.jazz.repository.JazzScmProviderRepository;
+import org.apache.maven.scm.repository.ScmRepositoryException;
+
+/**
+ * The maven scm provider for Jazz.
+ * <P>
+ * This provider is a wrapper for the command line tool, "scm.sh" or "scm.exe" is that is
+ * part of the Jazz SCM Server.
+ * <P>
+ * This provider does not use a native API to communicate with the Jazz SCM server.
+ * <P>
+ * The scm tool itself is documented at:
+ * V2.0.0 - http://publib.boulder.ibm.com/infocenter/rtc/v2r0m0/topic/com.ibm.team.scm.doc/topics/r_scm_cli_scm.html
+ * V3.0 - http://publib.boulder.ibm.com/infocenter/clmhelp/v3r0/topic/com.ibm.team.scm.doc/topics/r_scm_cli_scm.html
+ * V3.0.1 - http://publib.boulder.ibm.com/infocenter/clmhelp/v3r0m1/topic/com.ibm.team.scm.doc/topics/r_scm_cli_scm.html
+ *
+ * @author <a href="mailto:ChrisGWarp@gmail.com">Chris Graham</a>
+ *
+ * @plexus.component role="org.apache.maven.scm.provider.ScmProvider" role-hint="jazz"
+ */
+public class JazzScmProvider
+ extends AbstractScmProvider
+{
+ // Example: scm:jazz:daviddl;passw0rd123@https://localhost:9443/jazz:Dave's Repository Workspace
+ // If the username or password is supplied, then the @ must be used to delimit them.
+ public static final String JAZZ_URL_FORMAT =
+ "scm:jazz:[username[;password]@]http[s]://server_name[:port]/contextRoot:repositoryWorkspace";
+
+ // ----------------------------------------------------------------------
+ // ScmProvider Implementation
+ // ----------------------------------------------------------------------
+
+ public String getScmType()
+ {
+ return JazzConstants.SCM_TYPE;
+ }
+
+ /**
+ * This method parses the scm URL and returns a SCM provider repository.
+ * At this point, the scmUrl is the part after scm:provider_name: in your SCM URL.
+ * <P>
+ * The basic url parsing approach is to be as loose as possible.
+ * If you specify as per the docs you'll get what you expect.
+ * If you do something else the result is undefined.
+ * Don't use "/" "\" or "@" as the delimiter.
+ * <P>
+ * Parse the scmUrl, which will be of the form:
+ * [username[;password]@]http[s]://server_name[:port]/contextRoot:repositoryWorkspace
+ * eg:
+ * Deb;Deb@https://rtc:9444/jazz:BogusRepositoryWorkspace
+ * {@inheritDoc}
+ */
+ public ScmProviderRepository makeProviderScmRepository( String scmUrl, char delimiter )
+ throws ScmRepositoryException
+ {
+ // Called from:
+ // AbstractScmProvider.makeScmRepository()
+ // AbstractScmProvider.validateScmUrl()
+ getLogger().debug( "JazzScmProvider:makeProviderScmRepository" );
+ getLogger().debug( "Provided scm url - " + scmUrl );
+ getLogger().debug( "Provided delimiter - '" + delimiter + "'" );
+
+ String jazzUrlAndWorkspace = null;
+ String usernameAndPassword = null;
+
+ // Look for the Jazz URL after any '@' delimiter used to pass
+ // username/password etc (which may not have been specified)
+ int lastAtPosition = scmUrl.lastIndexOf( '@' );
+ if ( lastAtPosition == -1)
+ {
+ // The username;password@ was not supplied.
+ jazzUrlAndWorkspace = scmUrl;
+ }
+ else
+ {
+ // The username@ or username;password@ was supplied.
+ jazzUrlAndWorkspace = ( lastAtPosition < 0 ) ? scmUrl : scmUrl.substring( lastAtPosition + 1 );
+ usernameAndPassword = ( lastAtPosition < 0 ) ? null : scmUrl.substring( 0, lastAtPosition );
+ }
+
+ // jazzUrlAndWorkspace should be: http[s]://server_name:port/contextRoot:repositoryWorkspace
+ // usernameAndPassword should be: username;password or null
+
+
+ // username and password may not be supplied, and so may remain null.
+ String username = null;
+ String password = null;
+
+ if (usernameAndPassword != null)
+ {
+ // Can be:
+ // username
+ // username;password
+ int delimPosition = usernameAndPassword.indexOf(';');
+ username = delimPosition >= 0 ? usernameAndPassword.substring(0, delimPosition) : usernameAndPassword;
+ password = delimPosition >= 0 ? usernameAndPassword.substring(delimPosition + 1) : null;
+ }
+
+
+ // We will now validate the jazzUrlAndWorkspace for right number of colons.
+ // This has been observed in the wild, where the contextRoot:repositoryWorkspace was not properly formed
+ // and this resulted in very strange results in the way in which things were parsed.
+ int colonsCounted = 0;
+ int colonIndex = 0;
+ while (colonIndex != -1)
+ {
+ colonIndex = jazzUrlAndWorkspace.indexOf( ":", colonIndex + 1 );
+ if (colonIndex != -1)
+ {
+ colonsCounted++;
+ }
+ }
+ // havePort may also be true when port is supplied, but otherwise have a malformed URL.
+ boolean havePort = colonsCounted == 3;
+
+ // Look for workspace after the end of the Jazz URL
+ int repositoryWorkspacePosition = jazzUrlAndWorkspace.lastIndexOf( delimiter );
+ String repositoryWorkspace = jazzUrlAndWorkspace.substring( repositoryWorkspacePosition + 1 );
+ String jazzUrl = jazzUrlAndWorkspace.substring( 0, repositoryWorkspacePosition );
+
+ // Validate the protocols.
+ try
+ {
+ // Determine if it is a valid URI.
+ URI jazzUri = URI.create( jazzUrl );
+ String scheme = jazzUri.getScheme();
+ getLogger().debug( "Scheme - " + scheme );
+ if ( scheme == null || !( scheme.equalsIgnoreCase( "http" ) || scheme.equalsIgnoreCase( "https" ) ) )
+ {
+ throw new ScmRepositoryException( "Jazz Url \"" + jazzUrl
+ + "\" is not a valid URL. The Jazz Url syntax is " + JAZZ_URL_FORMAT );
+ }
+ }
+ catch ( IllegalArgumentException e )
+ {
+ throw new ScmRepositoryException( "Jazz Url \"" + jazzUrl
+ + "\" is not a valid URL. The Jazz Url syntax is " + JAZZ_URL_FORMAT );
+ }
+
+ // At this point, jazzUrl is guaranteed to start with either http:// or https://
+ // Further process the jazzUrl to extract the server name and port.
+ String hostname = null;
+ int port = 0;
+
+ if (havePort)
+ {
+ // jazzUrlAndWorkspace should be: http[s]://server_name:port/contextRoot:repositoryWorkspace
+ // jazzUrl should be : http[s]://server_name:port/contextRoot
+ int protocolIndex = jazzUrl.indexOf( ":" ) + 3; // The +3 accounts for the "://"
+ int portIndex = jazzUrl.indexOf( ":", protocolIndex + 1 );
+ hostname = jazzUrl.substring( protocolIndex, portIndex );
+ int pathIndex = jazzUrl.indexOf( "/", portIndex + 1 );
+ String portNo = jazzUrl.substring( portIndex + 1, pathIndex );
+ try
+ {
+ port = Integer.parseInt( portNo );
+ }
+ catch (NumberFormatException nfe)
+ {
+ throw new ScmRepositoryException( "Jazz Url \"" + jazzUrl
+ + "\" is not a valid URL. The Jazz Url syntax is " + JAZZ_URL_FORMAT );
+ }
+ }
+ else
+ {
+ // jazzUrlAndWorkspace should be: http[s]://server_name/contextRoot:repositoryWorkspace
+ // jazzUrl should be : http[s]://server_name/contextRoot
+ // So we will set port to zero.
+ int protocolIndex = jazzUrl.indexOf( ":" ) + 3; // The +3 accounts for the "://"
+ int pathIndex = jazzUrl.indexOf( "/", protocolIndex + 1 );
+ if ( (protocolIndex != -1) && (pathIndex != -1) )
+ {
+ hostname = jazzUrl.substring( protocolIndex, pathIndex );
+ }
+ else
+ {
+ throw new ScmRepositoryException( "Jazz Url \"" + jazzUrl
+ + "\" is not a valid URL. The Jazz Url syntax is " + JAZZ_URL_FORMAT );
+ }
+ }
+
+ getLogger().debug( "Creating JazzScmProviderRepository with the following values:" );
+ getLogger().debug( "jazzUrl - " + jazzUrl );
+ getLogger().debug( "username - " + username );
+ getLogger().debug( "password - " + password );
+ getLogger().debug( "hostname - " + hostname );
+ getLogger().debug( "port - " + port );
+ getLogger().debug( "repositoryWorkspace - " + repositoryWorkspace );
+
+ return new JazzScmProviderRepository( jazzUrl, username, password, hostname, port, repositoryWorkspace );
+ }
+
+ /** {@inheritDoc} */
+ public AddScmResult add( ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters )
+ throws ScmException
+ {
+ JazzAddCommand command = new JazzAddCommand();
+ command.setLogger( getLogger() );
+ return (AddScmResult) command.execute( repository, fileSet, parameters );
+ }
+
+ /** {@inheritDoc} */
+ protected BranchScmResult branch( ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters )
+ throws ScmException
+ {
+ JazzBranchCommand command = new JazzBranchCommand();
+ command.setLogger( getLogger() );
+ return (BranchScmResult) command.execute( repository, fileSet, parameters );
+ }
+
+ /** {@inheritDoc} */
+ protected BlameScmResult blame( ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters )
+ throws ScmException
+ {
+ JazzBlameCommand command = new JazzBlameCommand();
+ command.setLogger( getLogger() );
+ return (BlameScmResult) command.execute( repository, fileSet, parameters );
+ }
+
+ /** {@inheritDoc} */
+ protected ChangeLogScmResult changelog( ScmProviderRepository repository, ScmFileSet fileSet,
+ CommandParameters parameters )
+ throws ScmException
+ {
+ // We need to call the status command first, so that we can get the details of the workspace.
+ // This is needed for the list changesets command.
+ // We could also 'trust' the value in the pom.
+ JazzStatusCommand statusCommand = new JazzStatusCommand();
+ statusCommand.setLogger( getLogger() );
+ statusCommand.execute( repository, fileSet, parameters );
+
+ JazzChangeLogCommand command = new JazzChangeLogCommand();
+ command.setLogger( getLogger() );
+ return (ChangeLogScmResult) command.execute( repository, fileSet, parameters );
+ }
+
+ /** {@inheritDoc} */
+ protected CheckInScmResult checkin( ScmProviderRepository repository, ScmFileSet fileSet,
+ CommandParameters parameters )
+ throws ScmException
+ {
+ JazzCheckInCommand command = new JazzCheckInCommand();
+ command.setLogger( getLogger() );
+ return (CheckInScmResult) command.execute( repository, fileSet, parameters );
+ }
+
+ /** {@inheritDoc} */
+ protected CheckOutScmResult checkout( ScmProviderRepository repository, ScmFileSet fileSet,
+ CommandParameters parameters )
+ throws ScmException
+ {
+ JazzCheckOutCommand command = new JazzCheckOutCommand();
+ command.setLogger( getLogger() );
+ return (CheckOutScmResult) command.execute( repository, fileSet, parameters );
+ }
+
+ /** {@inheritDoc} */
+ protected DiffScmResult diff( ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters )
+ throws ScmException
+ {
+ JazzDiffCommand command = new JazzDiffCommand();
+ command.setLogger( getLogger() );
+ return (DiffScmResult) command.execute( repository, fileSet, parameters );
+ }
+
+ /** {@inheritDoc} */
+ protected EditScmResult edit( ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters )
+ throws ScmException
+ {
+ JazzEditCommand command = new JazzEditCommand();
+ command.setLogger( getLogger() );
+ return (EditScmResult) command.execute( repository, fileSet, parameters );
+ }
+
+ /** {@inheritDoc} */
+ protected ExportScmResult export( ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters )
+ throws ScmException
+ {
+ // Use checkout instead
+ return super.export( repository, fileSet, parameters );
+ }
+
+ /** {@inheritDoc} */
+ protected ListScmResult list( ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters )
+ throws ScmException
+ {
+ // We need to call the status command first, so that we can get the details of the stream etc.
+ // This is needed for workspace deliveries and snapshot promotions.
+ JazzStatusCommand statusCommand = new JazzStatusCommand();
+ statusCommand.setLogger( getLogger() );
+ statusCommand.execute( repository, fileSet, parameters );
+
+ JazzListCommand command = new JazzListCommand();
+ command.setLogger( getLogger() );
+ return (ListScmResult) command.execute( repository, fileSet, parameters );
+ }
+
+ /** {@inheritDoc} */
+ protected StatusScmResult status( ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters )
+ throws ScmException
+ {
+ JazzStatusCommand command = new JazzStatusCommand();
+ command.setLogger( getLogger() );
+ return (StatusScmResult) command.execute( repository, fileSet, parameters );
+ }
+
+ /** {@inheritDoc} */
+ protected TagScmResult tag( ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters )
+ throws ScmException
+ {
+ // We need to call the status command first, so that we can get the details of the stream etc.
+ // This is needed for workspace deliveries and snapshot promotions.
+ JazzStatusCommand statusCommand = new JazzStatusCommand();
+ statusCommand.setLogger( getLogger() );
+ statusCommand.execute( repository, fileSet, parameters );
+
+ JazzTagCommand command = new JazzTagCommand();
+ command.setLogger( getLogger() );
+ return (TagScmResult) command.execute( repository, fileSet, parameters );
+ }
+
+ /** {@inheritDoc} */
+ protected UpdateScmResult update( ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters )
+ throws ScmException
+ {
+ JazzUpdateCommand command = new JazzUpdateCommand();
+ command.setLogger( getLogger() );
+ return (UpdateScmResult) command.execute( repository, fileSet, parameters );
+ }
+
+ /** {@inheritDoc} */
+ protected UnEditScmResult unedit( ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters )
+ throws ScmException
+ {
+ JazzUnEditCommand command = new JazzUnEditCommand();
+ command.setLogger( getLogger() );
+ return (UnEditScmResult) command.execute( repository, fileSet, parameters );
+ }
+
+ /** {@inheritDoc} */
+ public String getScmSpecificFilename()
+ {
+ return JazzConstants.SCM_META_DATA_FOLDER;
+ }
+
+}
\ No newline at end of file
Propchange: maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/JazzScmProvider.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/JazzScmProvider.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Added: maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/JazzConstants.java
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/JazzConstants.java?rev=1329106&view=auto
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/JazzConstants.java (added)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/JazzConstants.java Mon Apr 23 07:45:33 2012
@@ -0,0 +1,259 @@
+package org.apache.maven.scm.provider.jazz.command;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/**
+ * @author <a href="mailto:ChrisGWarp@gmail.com">Chris Graham</a>
+ */
+public class JazzConstants
+{
+ // -------------------------------------------------------------------------------------------------
+ // MISC.
+ // -------------------------------------------------------------------------------------------------
+
+ /**
+ * Executable for Jazz SCM (Rational Team Concert).
+ */
+ public static final String SCM_EXECUTABLE = "scm";
+
+ /**
+ * Folder created by the SCM to store metadata.
+ */
+ public static final String SCM_META_DATA_FOLDER = ".jazz5";
+
+ /**
+ * SCM type identifier
+ */
+ public static final String SCM_TYPE = "jazz";
+
+ // -------------------------------------------------------------------------------------------------
+ // COMMANDS
+ // -------------------------------------------------------------------------------------------------
+
+ /**
+ * Accept command - Accept change sets into a repository workspace and load them into the local workspace.
+ */
+ public static final String CMD_ACCEPT = "accept";
+
+ /**
+ * Annotate command - Show line-by-line revision information for a file.
+ */
+ public static final String CMD_ANNOTATE = "annotate";
+
+ /**
+ * Checkin command - Check in locally modified files, adding them to the current change set.
+ */
+ public static final String CMD_CHECKIN = "checkin";
+
+ /**
+ * Create command - Can be used with a sub command to create a snapshot (tag) or repository workspace (branch).
+ */
+ public static final String CMD_CREATE = "create";
+
+ /**
+ * Deliver command - Deliver to a target.
+ */
+ public static final String CMD_DELIVER = "deliver";
+
+ /**
+ * Diff command - Compare two states of a file.
+ */
+ public static final String CMD_DIFF = "diff";
+
+ /**
+ * History command - Show the history of a file or component.
+ */
+ public static final String CMD_HISTORY = "history";
+
+ /**
+ * List command - List repository objects.
+ */
+ public static final String CMD_LIST = "list";
+
+ /**
+ * Load command - Load components from a repository workspace into a local workspace.
+ */
+ public static final String CMD_LOAD = "load";
+
+ /**
+ * Lock command - Used to lock or revoke locks on files in a stream. (requires 'acquire' or 'release' sub commands).
+ */
+ public static final String CMD_LOCK = "lock";
+
+ /**
+ * Snapshot command - Used to promote snapshots. Requires the 'promote' sub command.
+ */
+ public static final String CMD_SNAPSHOT = "snapshot";
+
+ /**
+ * Status command - Show modification status of items in a workspace.
+ */
+ public static final String CMD_STATUS = "status";
+
+ // -------------------------------------------------------------------------------------------------
+ // SUB-COMMANDS
+ // -------------------------------------------------------------------------------------------------
+
+ // CREATE sub commands
+ /**
+ * The 'type' (snapshot) of the create command.
+ */
+ public static final String CMD_SUB_SNAPSHOT = "snapshot";
+
+ /**
+ * The 'type' (workspace) of the create command.
+ */
+ public static final String CMD_SUB_WORKSPACE = "workspace";
+
+ /**
+ * The 'type' (changeset) of the create command.
+ */
+ public static final String CMD_SUB_CHANGESET = "changeset";
+
+ // LIST sub commands
+ /**
+ * List files in a remote workspace.
+ */
+ public static final String CMD_SUB_REMOTEFILES = "remotefiles";
+
+ /**
+ * List files in a remote workspace.
+ */
+ public static final String CMD_SUB_CHANGESETS = "changesets";
+
+ // LOCK sub commands
+ /**
+ * Locks files in a stream.
+ */
+ public static final String CMD_SUB_ACQUIRE = "acquire";
+
+ /**
+ * Revoke locks on files in a stream.
+ */
+ public static final String CMD_SUB_RELEASE = "release";
+
+ // SNAPSHOT sub commands
+ /**
+ * Promotes a snapshot to a stream or workspace.
+ */
+ public static final String CMD_SUB_PROMOTE = "promote";
+
+ // -------------------------------------------------------------------------------------------------
+ // ARGUMENTS
+ // -------------------------------------------------------------------------------------------------
+
+ /**
+ * Accept component additions and deletions (used with "accept" command).
+ */
+ public static final String ARG_FLOW_COMPONENTS = "--flow-components";
+
+ /**
+ * Overwrite existing files when loading (used with "load" command).
+ */
+ public static final String ARG_FORCE = "--force";
+
+ /**
+ * Local workspace path.
+ */
+ public static final String ARG_LOCAL_WORKSPACE_PATH = "--dir";
+
+ /**
+ * Load Root Directory.
+ */
+ public static final String ARG_LOAD_ROOT_DIRECTORY = "--directory";
+
+ /**
+ * The repository name.
+ */
+ public static final String ARG_REPOSITORY_URI = "--repository-uri";
+
+ /**
+ * Description for the snapshot (used with "create snapshot" command).
+ */
+ public static final String ARG_SNAPSHOT_DESCRIPTION = "--description";
+
+ /**
+ * Name of the snapshot (used with "create snapshot" command).
+ */
+ public static final String ARG_SNAPSHOT_NAME = "--name";
+
+ /**
+ * Forces the output to not shorten, otherwise the width will be based on the COLUMNS environment variable, or if
+ * that is not set, to 80 characters. (used with the "status" command).
+ */
+ public static final String ARG_STATUS_WIDE_PRINT_OUT = "--wide";
+
+ /**
+ * The user ID in the repository.
+ */
+ public static final String ARG_USER_NAME = "--username";
+
+ /**
+ * The user password in the repository.
+ */
+ public static final String ARG_USER_PASSWORD = "--password";
+
+ /**
+ * Description for the repository workspace (used with "create workspace" command).
+ */
+ public static final String ARG_WORKSPACE_DESCRIPTION = "--description";
+
+ /**
+ * Name of the repository workspace (used with "create workspace" command).
+ */
+ public static final String ARG_WORKSPACE_NAME = "--name";
+
+ /**
+ * Name of the repository workspace (used with "create workspace" command).
+ */
+ public static final String ARG_WORKSPACE_SNAPSHOT = "--snapshot";
+
+ /**
+ * Name of the source repository workspace (used with "deliver" command).
+ */
+ public static final String ARG_DELIVER_SOURCE = "--source";
+
+ /**
+ * Name of the target repository workspace or stream (used with "deliver" command).
+ */
+ public static final String ARG_DELIVER_TARGET = "--target";
+
+ /**
+ * Ignore uncommitted changes and deliver (used with "deliver" command).
+ */
+ public static final String ARG_OVERWRITE_UNCOMMITTED = "--overwrite-uncommitted";
+
+ /**
+ * Perform a file base diff (aftertype = file) (used with "diff" command).
+ */
+ public static final String ARG_FILE = "file";
+
+ /**
+ * Specify the maximum number of results to return, must be greater than zero.
+ * Used by numerous commands.
+ */
+ public static final String ARG_MAXIMUM = "--maximum";
+
+ /**
+ * Name of the repository workspace (used with "list changesets" command).
+ */
+ public static final String ARG_WORKSPACE = "--workspace";
+
+}
\ No newline at end of file
Propchange: maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/JazzConstants.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/JazzConstants.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Added: maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/JazzScmCommand.java
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/JazzScmCommand.java?rev=1329106&view=auto
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/JazzScmCommand.java (added)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/JazzScmCommand.java Mon Apr 23 07:45:33 2012
@@ -0,0 +1,264 @@
+package org.apache.maven.scm.provider.jazz.command;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import java.io.File;
+import java.util.Iterator;
+
+import org.apache.maven.scm.ScmException;
+import org.apache.maven.scm.ScmFileSet;
+import org.apache.maven.scm.log.ScmLogger;
+import org.apache.maven.scm.provider.ScmProviderRepository;
+import org.apache.maven.scm.provider.jazz.command.consumer.ErrorConsumer;
+import org.apache.maven.scm.provider.jazz.repository.JazzScmProviderRepository;
+import org.codehaus.plexus.util.Os;
+import org.codehaus.plexus.util.StringUtils;
+import org.codehaus.plexus.util.cli.CommandLineException;
+import org.codehaus.plexus.util.cli.CommandLineUtils;
+import org.codehaus.plexus.util.cli.Commandline;
+import org.codehaus.plexus.util.cli.StreamConsumer;
+
+/**
+ * The base class for the underlying jazz "scm.sh"/"scm.exe" command.
+ *
+ * The SCM command is documented here:
+ *
+ * V2.0.2: http://publib.boulder.ibm.com/infocenter/rtc/v2r0m0/topic/com.ibm.team.scm.doc/topics/r_scm_cli_scm.html
+ * V3.0: http://publib.boulder.ibm.com/infocenter/clmhelp/v3r0/topic/com.ibm.team.scm.doc/topics/r_scm_cli_scm.html
+ * V3.0.1: http://publib.boulder.ibm.com/infocenter/clmhelp/v3r0m1/topic/com.ibm.team.scm.doc/topics/r_scm_cli_scm.html
+ *
+ * @author <a href="mailto:ChrisGWarp@gmail.com">Chris Graham</a>
+ */
+public class JazzScmCommand
+{
+ // The logger to use.
+ private ScmLogger fLogger;
+
+ // The Commandline that we build up and execute.
+ private Commandline fCommand;
+
+ /**
+ * Create a JazzScmCommand when no sub-command is needed.
+ * @throws ScmException
+ */
+ public JazzScmCommand( String cmd, ScmProviderRepository repo, ScmFileSet fileSet, ScmLogger logger )
+ {
+ this( cmd, null, repo, true, fileSet, logger );
+ }
+
+ /**
+ * Create a JazzScmCommand when a sub-command is needed.
+ * eg: "create snapshot ..."
+ */
+ public JazzScmCommand( String cmd, String subCmd, ScmProviderRepository repo, ScmFileSet fileSet, ScmLogger logger )
+ {
+ this( cmd, subCmd, repo, true, fileSet, logger );
+ }
+
+ /**
+ * Create a JazzScmCommand, adding the repository-uri as needed.
+ */
+ public JazzScmCommand( String cmd, String subCmd, ScmProviderRepository repo, boolean addRepositoryWorkspaceArg,
+ ScmFileSet fileSet, ScmLogger logger )
+ {
+ fLogger = logger;
+ fCommand = new Commandline();
+
+ // TODO This was developed and tested in Windows (in which scm (scm.exe) was the valid executable)
+ // Verify that the executable is valid in other operating systems.
+ fCommand.setExecutable( JazzConstants.SCM_EXECUTABLE );
+
+ if ( fileSet != null )
+ {
+ fCommand.setWorkingDirectory( fileSet.getBasedir().getAbsolutePath() );
+
+ // Make the directory, if need be.
+ if ( !fCommand.getWorkingDirectory().exists() )
+ {
+ boolean success = fCommand.getWorkingDirectory().mkdirs();
+ if ( !success )
+ {
+ // Just log the error, don't throw an error, as it is going to fail anyway.
+ logErrorMessage( "Working directory did not exist" + " and it couldn't be created: " + fCommand.getWorkingDirectory() );
+ }
+ }
+ }
+
+ // Add the main command
+ if ( !StringUtils.isEmpty( cmd ) )
+ {
+ addArgument( cmd );
+ }
+
+ // Add the sub-command if present
+ if ( !StringUtils.isEmpty( subCmd ) )
+ {
+ addArgument( subCmd );
+ }
+
+ JazzScmProviderRepository jazzRepo = (JazzScmProviderRepository) repo;
+
+ // Add the repository argument if needed (most commands need this, but not all)
+ if ( addRepositoryWorkspaceArg )
+ {
+ String repositoryWorkspace = jazzRepo.getRepositoryURI();
+ if ( !StringUtils.isEmpty( repositoryWorkspace ) )
+ {
+ addArgument( JazzConstants.ARG_REPOSITORY_URI );
+ addArgument( jazzRepo.getRepositoryURI() );
+ }
+ }
+
+ // Add the username argument
+ // TODO Figure out how we would use the login command / username caching so this is not required on each
+ // command.
+ String user = jazzRepo.getUser();
+ if ( !StringUtils.isEmpty( user ) )
+ {
+ addArgument( JazzConstants.ARG_USER_NAME );
+ addArgument( jazzRepo.getUser() );
+ }
+
+ // Add the password argument
+ // TODO Figure out how we would use the login command / password caching so this is not required on each
+ // command.
+ String password = jazzRepo.getPassword();
+ if ( !StringUtils.isEmpty( password ) )
+ {
+ addArgument( JazzConstants.ARG_USER_PASSWORD );
+ addArgument( jazzRepo.getPassword() );
+ }
+ }
+
+ public void addArgument( ScmFileSet fileSet )
+ {
+ logInfoMessage( "files: " + fileSet.getBasedir().getAbsolutePath() );
+ Iterator<File> iter = fileSet.getFileList().iterator();
+ while ( iter.hasNext() )
+ {
+ fCommand.createArg().setValue( ( (File) iter.next() ).getPath() );
+ }
+ }
+
+ public void addArgument( String arg )
+ {
+ fCommand.createArg().setValue( arg );
+ }
+
+ public int execute( StreamConsumer out, ErrorConsumer err )
+ throws ScmException
+ {
+ logInfoMessage( "Executing: " + cryptPassword( fCommand ) );
+ if ( fCommand.getWorkingDirectory() != null )
+ {
+ logInfoMessage( "Working directory: " + fCommand.getWorkingDirectory().getAbsolutePath() );
+ }
+
+ int status = 0;
+ try
+ {
+ status = CommandLineUtils.executeCommandLine( fCommand, out, err );
+ }
+ catch ( CommandLineException e )
+ {
+ String errorOutput = err.getOutput();
+ if (errorOutput.length() > 0)
+ {
+ logErrorMessage( "Error: " + err.getOutput() );
+ }
+ throw new ScmException( "Error while executing Jazz SCM command line - " + getCommandString(), e );
+ }
+ String errorOutput = err.getOutput();
+ if (errorOutput.length() > 0)
+ {
+ logErrorMessage( "Error: " + err.getOutput() );
+ }
+ return status;
+ }
+
+ public String getCommandString()
+ {
+ return fCommand.toString();
+ }
+
+ public Commandline getCommandline()
+ {
+ return fCommand;
+ }
+
+ private void logErrorMessage( String message )
+ {
+ if ( fLogger != null )
+ {
+ fLogger.error( message );
+ }
+ }
+
+ private void logInfoMessage( String message )
+ {
+ if ( fLogger != null )
+ {
+ fLogger.info( message );
+ }
+ }
+
+ private void logDebugMessage( String message )
+ {
+ if ( fLogger != null )
+ {
+ fLogger.debug( message );
+ }
+ }
+
+ // Unashamedly 'borrowed' from SvnCommandLineUtils
+ // (but fixed for cases where the line ends in the password (no trailing space or further input).
+ public static String cryptPassword( Commandline cl )
+ {
+ String clString = cl.toString();
+
+ int pos = clString.indexOf( "--password" );
+
+ if ( pos > 0 )
+ {
+ String beforePassword = clString.substring( 0, pos + "--password ".length() );
+ String afterPassword = clString.substring( pos + "--password ".length() );
+ pos = afterPassword.indexOf( ' ' );
+ if (pos > 0)
+ {
+ afterPassword = afterPassword.substring( pos );
+ }
+ else
+ {
+ afterPassword = "\"";
+ }
+ if ( Os.isFamily( Os.FAMILY_WINDOWS ) )
+ {
+ clString = beforePassword + "*****" + afterPassword;
+ }
+ else
+ {
+ clString = beforePassword + "'*****'" + afterPassword;
+ }
+ }
+
+ return clString;
+ }
+
+}
Propchange: maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/JazzScmCommand.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/JazzScmCommand.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Added: maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/add/JazzAddCommand.java
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/add/JazzAddCommand.java?rev=1329106&view=auto
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/add/JazzAddCommand.java (added)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/add/JazzAddCommand.java Mon Apr 23 07:45:33 2012
@@ -0,0 +1,209 @@
+package org.apache.maven.scm.provider.jazz.command.add;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import org.apache.maven.scm.ScmException;
+import org.apache.maven.scm.ScmFile;
+import org.apache.maven.scm.ScmFileSet;
+import org.apache.maven.scm.ScmFileStatus;
+import org.apache.maven.scm.ScmResult;
+import org.apache.maven.scm.command.add.AbstractAddCommand;
+import org.apache.maven.scm.command.add.AddScmResult;
+import org.apache.maven.scm.command.status.StatusScmResult;
+import org.apache.maven.scm.provider.ScmProviderRepository;
+import org.apache.maven.scm.provider.jazz.command.JazzConstants;
+import org.apache.maven.scm.provider.jazz.command.JazzScmCommand;
+import org.apache.maven.scm.provider.jazz.command.consumer.ErrorConsumer;
+import org.apache.maven.scm.provider.jazz.command.status.JazzStatusCommand;
+
+// RTC does not have the equivalent of the "add" goal. The closest we have is the "share" command, however
+// that only shares directories (not individual or specific files), and it is recursive (which can not be
+// switched off!).
+//
+// The Maven SCM plugin "add" goal's job is to add files to source control, but not commit them.
+// The SVN equivalent of this is "svn add", which places a file under source control (Working Copy in svn terms)
+// but does not commit them (svn commit).
+// So, this provider will use the RTC "checkin" command for the implementation of the "add" goal.
+// This will checkin the code into a remote repository workspace. It will not deliver.
+//
+// Additionally, "svn add" does not take a message, whereas commit does. Under RTC, the only way we can preserve
+// the message, is to create a changeset. So we do that in the "checkin" goal, not the "add" goal.
+//
+// The Maven SCM plugin "add" goal is roughly equivalent to the RTC "checkin" command.
+//
+// See the following links for additional information on the RTC "checkin" command.
+// RTC 2.0.0.2:
+// http://publib.boulder.ibm.com/infocenter/rtc/v2r0m0/topic/com.ibm.team.scm.doc/topics/r_scm_cli_checkin.html
+// RTC 3.0:
+// http://publib.boulder.ibm.com/infocenter/clmhelp/v3r0/topic/com.ibm.team.scm.doc/topics/r_scm_cli_checkin.html
+// RTC 3.0.1:
+// http://publib.boulder.ibm.com/infocenter/clmhelp/v3r0m1/topic/com.ibm.team.scm.doc/topics/r_scm_cli_checkin.html
+//
+// Currently this implementation does not use the comment message.
+// Perhaps in the future this method can be used to deliver a change-set with the given comment message.
+// However some users may want the checkin goal to only check in to the desired repository workspace.
+// While some users may want the checkin goal to both check in to the desired repository workspace and deliver it to a
+// stream.
+// Currently this implementation only checks in the unresolved changes to the repository workspace.
+//
+// See the following links for additional information on the RTC "deliver" command.
+// RTC 2.0.0.2:
+// http://publib.boulder.ibm.com/infocenter/rtc/v2r0m0/topic/com.ibm.team.scm.doc/topics/r_scm_cli_deliver.html
+// RTC 3.0:
+// http://publib.boulder.ibm.com/infocenter/clmhelp/v3r0/topic/com.ibm.team.scm.doc/topics/r_scm_cli_deliver.html
+// RTC 3.0.1:
+// http://publib.boulder.ibm.com/infocenter/clmhelp/v3r0m1/topic/com.ibm.team.scm.doc/topics/r_scm_cli_deliver.html
+//
+
+/**
+ * @author <a href="mailto:ChrisGWarp@gmail.com">Chris Graham</a>
+ */
+public class JazzAddCommand
+ extends AbstractAddCommand
+{
+ /**
+ * {@inheritDoc}
+ */
+ protected ScmResult executeAddCommand( ScmProviderRepository repo, ScmFileSet fileSet, String message,
+ boolean binary )
+ throws ScmException
+ {
+ if ( getLogger().isDebugEnabled() )
+ {
+ getLogger().debug( "Executing add command..." );
+ }
+
+ // The message can only be used when we create a change set, which is only done on the checkin command.
+ // So that can be ignored.
+ // The binary flag, is not needed for RTC.
+ return executeAddCommand( repo, fileSet );
+ }
+
+ public AddScmResult executeAddCommand( ScmProviderRepository repo, ScmFileSet fileSet )
+ throws ScmException
+ {
+ // NOTE: THIS IS ALSO CALLED DIRECTLY FROM THE CHECKIN COMMAND.
+ //
+ // The "checkin" command does not produce consumable output as to which individual files were checked in. (in
+ // 2.0.0.2 at least). Since only "locally modified" changes get checked in, we call a "status" command to
+ // generate a list of these files.
+ File baseDir = fileSet.getBasedir();
+ File parentFolder = ( baseDir.getParentFile() != null ) ? baseDir.getParentFile() : baseDir;
+
+ List<ScmFile> changedScmFiles = new ArrayList<ScmFile>();
+ List<File> changedFiles = new ArrayList<File>();
+ List<ScmFile> commitedFiles = new ArrayList<ScmFile>();
+
+ JazzStatusCommand statusCmd = new JazzStatusCommand();
+ statusCmd.setLogger( getLogger() );
+ StatusScmResult statusCmdResult = statusCmd.executeStatusCommand( repo, fileSet );
+ List<ScmFile> statusScmFiles = statusCmdResult.getChangedFiles();
+
+ for ( Iterator<ScmFile> it = statusScmFiles.iterator(); it.hasNext(); )
+ {
+ ScmFile file = (ScmFile) it.next();
+ getLogger().debug( "Iterating over statusScmFiles: " + file );
+ if ( file.getStatus() == ScmFileStatus.ADDED ||
+ file.getStatus() == ScmFileStatus.DELETED ||
+ file.getStatus() == ScmFileStatus.MODIFIED )
+ {
+ changedScmFiles.add( new ScmFile( file.getPath(), ScmFileStatus.CHECKED_IN ) );
+ changedFiles.add( new File( parentFolder, file.getPath() ) );
+ }
+ }
+
+ List<File> files = fileSet.getFileList();
+ if ( files.size() == 0 )
+ {
+ // Either commit all local changes
+ commitedFiles = changedScmFiles;
+ }
+ else
+ {
+ // Or commit specific files
+ for ( int i = 0; i < files.size(); i++ )
+ {
+ if ( fileExistsInFileList( (File) ( files.get( i ) ), changedFiles ) )
+ {
+ commitedFiles.add( new ScmFile( ( (File) files.get( i ) ).getPath(), ScmFileStatus.CHECKED_IN ) );
+ }
+ }
+ }
+
+ // Now that we have a list of files to process, we can "add" (scm checkin) them.
+ JazzAddConsumer addConsumer = new JazzAddConsumer( repo, getLogger() );
+ ErrorConsumer errConsumer = new ErrorConsumer( getLogger() );
+ JazzScmCommand command = createAddCommand( repo, fileSet );
+
+ int status = command.execute( addConsumer, errConsumer );
+ if ( status != 0 || errConsumer.hasBeenFed() )
+ {
+ return new AddScmResult( command.getCommandString(),
+ "Error code for Jazz SCM add (checkin) command - " + status,
+ errConsumer.getOutput(), false );
+ }
+
+ return new AddScmResult( command.getCommandString(), addConsumer.getFiles() );
+ }
+
+ public JazzScmCommand createAddCommand( ScmProviderRepository repo, ScmFileSet fileSet )
+ {
+ JazzScmCommand command =
+ new JazzScmCommand( JazzConstants.CMD_CHECKIN, null, repo, false, fileSet, getLogger() );
+
+ List<File> files = fileSet.getFileList();
+ if ( files != null && !files.isEmpty() )
+ {
+ Iterator<File> it = files.iterator();
+ while ( it.hasNext() )
+ {
+ File file = (File) it.next();
+ command.addArgument( file.getPath() ); // Check in only the files specified
+ }
+ }
+ else
+ {
+ command.addArgument( "." ); // This will check in all local changes
+ }
+
+ return command;
+ }
+
+ private boolean fileExistsInFileList( File file, List<File> fileList )
+ {
+ boolean exists = false;
+ for ( Iterator<File> it = fileList.iterator(); it.hasNext(); )
+ {
+ File changedFile = (File) it.next();
+ if ( changedFile.compareTo( file ) == 0 )
+ {
+ exists = true;
+ break;
+ }
+ }
+ return exists;
+ }
+
+}
Propchange: maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/add/JazzAddCommand.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/add/JazzAddCommand.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Added: maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/add/JazzAddConsumer.java
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/add/JazzAddConsumer.java?rev=1329106&view=auto
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/add/JazzAddConsumer.java (added)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/add/JazzAddConsumer.java Mon Apr 23 07:45:33 2012
@@ -0,0 +1,120 @@
+package org.apache.maven.scm.provider.jazz.command.add;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.maven.scm.ScmFile;
+import org.apache.maven.scm.ScmFileStatus;
+import org.apache.maven.scm.log.ScmLogger;
+import org.apache.maven.scm.provider.ScmProviderRepository;
+import org.apache.maven.scm.provider.jazz.command.consumer.AbstractRepositoryConsumer;
+
+/**
+ * Consume the output of the scm command for the "add" operation.
+ *
+ * @author <a href="mailto:ChrisGWarp@gmail.com">Chris Graham</a>
+ */
+public class JazzAddConsumer
+ extends AbstractRepositoryConsumer
+{
+ // A flag to indicate that we have seen the "Changes:" line in the output.
+ // After that, we have the files themselves.
+ private boolean haveSeenChanges = false;
+
+ protected String fCurrentDir = "";
+
+ // The list of files that we have checked in.
+ private ArrayList<ScmFile> fCheckedInFiles = new ArrayList<ScmFile>();
+
+ /**
+ * Construct the JazzAddCommand consumer.
+ * @param repository The repository we are working with.
+ * @param logger The logger to use.
+ */
+ public JazzAddConsumer( ScmProviderRepository repository, ScmLogger logger )
+ {
+ super( repository, logger );
+ }
+
+ /**
+ * Process one line of output from the execution of the "scm xxxx" command.
+ * @param line The line of output from the external command that has been pumped to us.
+ * @see org.codehaus.plexus.util.cli.StreamConsumer#consumeLine(java.lang.String)
+ */
+ public void consumeLine( String line )
+ {
+ super.consumeLine( line );
+ // The Jazz SCM "checkin" command does not output a list of each file that was checked in.
+ // An example output is shown below, perhaps in the future we may need to
+ // consume the "Workspace", "Component", Stream or "Change sets"
+
+ /*
+ Committing...
+ Workspace: (1004) "Release Repository Workspace" <-> (1005) "Maven Release Plugin Stream"
+ Component: (1006) "Release Component"
+ Outgoing:
+ Change sets:
+ (1008) --@ <No comment>
+
+ Or:
+
+ Committing...
+ Workspace: (1903) "MavenSCMTestWorkspace_1332908068770" <-> (1903) "MavenSCMTestWorkspace_1332908068770"
+ Component: (1768) "MavenSCMTestComponent"
+ Outgoing:
+ Change sets:
+ (1907) *--@ "Commit message"
+ Changes:
+ --a-- \src\main\java\Me.java
+ --a-- \src\main\java\Me1.java
+ --a-- \src\main\java\Me2.java
+ */
+
+ if ( haveSeenChanges )
+ {
+ // We have already seen the "Changes:" line, so we must now be processing files.
+ String trimmed = line.trim();
+ int spacePos = trimmed.indexOf( " " );
+ // NOTE: The second + 1 is to remove the leading slash
+ String path = trimmed.substring( spacePos + 1 + 1 );
+ fCheckedInFiles.add( new ScmFile( path, ScmFileStatus.CHECKED_OUT ) );
+ }
+ else
+ {
+ if ( "Changes:".equals(line.trim()) )
+ {
+ haveSeenChanges = true;
+ }
+ }
+ }
+
+ protected ScmFile getScmFile( String filename )
+ {
+ return new ScmFile( new File( fCurrentDir, filename ).getAbsolutePath(), ScmFileStatus.CHECKED_OUT );
+ }
+
+ public List<ScmFile> getFiles()
+ {
+ return fCheckedInFiles;
+ }
+}
\ No newline at end of file
Propchange: maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/add/JazzAddConsumer.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/add/JazzAddConsumer.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Added: maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/blame/JazzBlameCommand.java
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/blame/JazzBlameCommand.java?rev=1329106&view=auto
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/blame/JazzBlameCommand.java (added)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/blame/JazzBlameCommand.java Mon Apr 23 07:45:33 2012
@@ -0,0 +1,93 @@
+package org.apache.maven.scm.provider.jazz.command.blame;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import org.apache.maven.scm.ScmException;
+import org.apache.maven.scm.ScmFileSet;
+import org.apache.maven.scm.command.blame.AbstractBlameCommand;
+import org.apache.maven.scm.command.blame.BlameScmResult;
+import org.apache.maven.scm.provider.ScmProviderRepository;
+import org.apache.maven.scm.provider.jazz.command.JazzConstants;
+import org.apache.maven.scm.provider.jazz.command.JazzScmCommand;
+import org.apache.maven.scm.provider.jazz.command.consumer.ErrorConsumer;
+
+// The Maven SCM plugin "blame" goal is equivalent to the RTC "annotate" command.
+//
+// See the following links for additional information on the RTC "annotate" command:
+// RTC 2.0.0.2:
+// http://publib.boulder.ibm.com/infocenter/rtc/v2r0m0/topic/com.ibm.team.scm.doc/topics/r_scm_cli_annotate.html
+// RTC 3.0:
+// http://publib.boulder.ibm.com/infocenter/clmhelp/v3r0/topic/com.ibm.team.scm.doc/topics/r_scm_cli_annotate.html
+// RTC 3.0.1:
+// http://publib.boulder.ibm.com/infocenter/clmhelp/v3r0m1/topic/com.ibm.team.scm.doc/topics/r_scm_cli_annotate.html
+//
+// The RTC "history" command also provides similar information that might be needed for the "blame" goal.
+// See the following links for additional information on the RTC "history" command:
+// RTC 2.0.0.2:
+// http://publib.boulder.ibm.com/infocenter/rtc/v2r0m0/topic/com.ibm.team.scm.doc/topics/r_scm_cli_history.html
+// RTC 3.0:
+// http://publib.boulder.ibm.com/infocenter/clmhelp/v3r0/topic/com.ibm.team.scm.doc/topics/r_scm_cli_history.html
+// RTC 3.0.1:
+// http://publib.boulder.ibm.com/infocenter/clmhelp/v3r0m1/topic/com.ibm.team.scm.doc/topics/r_scm_cli_history.html
+//
+
+/**
+ * @author <a href="mailto:ChrisGWarp@gmail.com">Chris Graham</a>
+ */
+public class JazzBlameCommand
+ extends AbstractBlameCommand
+{
+ /**
+ * {@inheritDoc}
+ */
+ public BlameScmResult executeBlameCommand( ScmProviderRepository repo, ScmFileSet fileSet, String filename )
+ throws ScmException
+ {
+ if ( getLogger().isDebugEnabled() )
+ {
+ getLogger().debug( "Executing blame command..." );
+ }
+
+ JazzScmCommand blameCmd = createBlameCommand( repo, fileSet, filename );
+
+ JazzBlameConsumer blameConsumer = new JazzBlameConsumer(repo, getLogger());
+ ErrorConsumer errConsumer = new ErrorConsumer( getLogger() );
+
+ int status = blameCmd.execute( blameConsumer, errConsumer );
+ if ( status != 0 || errConsumer.hasBeenFed() )
+ {
+ return new BlameScmResult( blameCmd.getCommandString(),
+ "Error code for Jazz SCM blame command - " + status,
+ errConsumer.getOutput(), false );
+ }
+
+ return new BlameScmResult( blameCmd.getCommandString(), blameConsumer.getLines() );
+ }
+
+ public JazzScmCommand createBlameCommand( ScmProviderRepository repo, ScmFileSet fileSet, String filename )
+ {
+ JazzScmCommand command =
+ new JazzScmCommand( JazzConstants.CMD_ANNOTATE, null, repo, false, fileSet, getLogger() );
+ command.addArgument( filename );
+
+ return command;
+ }
+
+}
Propchange: maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/blame/JazzBlameCommand.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/scm/trunk/maven-scm-providers/maven-scm-provider-jazz/src/main/java/org/apache/maven/scm/provider/jazz/command/blame/JazzBlameCommand.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision