You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm-commits@maven.apache.org by ev...@apache.org on 2005/12/07 22:35:32 UTC

svn commit: r354867 - in /maven/scm/trunk: maven-scm-api/src/main/java/org/apache/maven/scm/provider/ maven-scm-plugin/src/main/java/org/apache/maven/scm/plugin/ maven-scm-providers/maven-scm-provider-starteam/src/main/java/org/apache/maven/scm/provide...

Author: evenisse
Date: Wed Dec  7 13:34:56 2005
New Revision: 354867

URL: http://svn.apache.org/viewcvs?rev=354867&view=rev
Log:
PR: SCM-102
Submitted by: Dan Tran

Add scm:edit/unedit to plugin and starteam provider

Added:
    maven/scm/trunk/maven-scm-plugin/src/main/java/org/apache/maven/scm/plugin/EditMojo.java   (with props)
    maven/scm/trunk/maven-scm-plugin/src/main/java/org/apache/maven/scm/plugin/UnEditMojo.java   (with props)
    maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/main/java/org/apache/maven/scm/provider/starteam/command/edit/
    maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/main/java/org/apache/maven/scm/provider/starteam/command/edit/StarteamEditCommand.java   (with props)
    maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/main/java/org/apache/maven/scm/provider/starteam/command/edit/StarteamEditConsumer.java   (with props)
    maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/main/java/org/apache/maven/scm/provider/starteam/command/unedit/
    maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/main/java/org/apache/maven/scm/provider/starteam/command/unedit/StarteamUnEditCommand.java   (with props)
    maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/main/java/org/apache/maven/scm/provider/starteam/command/unedit/StarteamUnEditConsumer.java   (with props)
    maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/test/java/org/apache/maven/scm/provider/starteam/command/edit/
    maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/test/java/org/apache/maven/scm/provider/starteam/command/edit/StarteamEditCommandTest.java   (with props)
    maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/test/java/org/apache/maven/scm/provider/starteam/command/edit/StarteamEditConsumerTest.java   (with props)
    maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/test/java/org/apache/maven/scm/provider/starteam/command/unedit/
    maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/test/java/org/apache/maven/scm/provider/starteam/command/unedit/StarteamUnEditCommandTest.java   (with props)
    maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/test/java/org/apache/maven/scm/provider/starteam/command/unedit/StarteamUnEditConsumerTest.java   (with props)
Modified:
    maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/provider/AbstractScmProvider.java
    maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/main/java/org/apache/maven/scm/provider/starteam/StarteamScmProvider.java

Modified: maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/provider/AbstractScmProvider.java
URL: http://svn.apache.org/viewcvs/maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/provider/AbstractScmProvider.java?rev=354867&r1=354866&r2=354867&view=diff
==============================================================================
--- maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/provider/AbstractScmProvider.java (original)
+++ maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/provider/AbstractScmProvider.java Wed Dec  7 13:34:56 2005
@@ -330,7 +330,8 @@
 
     protected EditScmResult edit( ScmRepository repository, ScmFileSet fileSet, CommandParameters parameters ) throws ScmException
     {
-        System.out.println( "AbstractScmProvider.edit" );
+        this.getLogger().warn( "Provider " + repository.getProvider()+ " does not support edit operation." ) ;
+        
         return new EditScmResult( "", null, null, true );
     }
 
@@ -345,6 +346,8 @@
 
     protected UnEditScmResult unedit( ScmRepository repository, ScmFileSet fileSet, CommandParameters parameters ) throws ScmException
     {
+        this.getLogger().warn( "Provider " + repository.getProvider()+ " does not support unedit operation." ) ;
+        
         return new UnEditScmResult( "", null, null, true );
     }
 

Added: maven/scm/trunk/maven-scm-plugin/src/main/java/org/apache/maven/scm/plugin/EditMojo.java
URL: http://svn.apache.org/viewcvs/maven/scm/trunk/maven-scm-plugin/src/main/java/org/apache/maven/scm/plugin/EditMojo.java?rev=354867&view=auto
==============================================================================
--- maven/scm/trunk/maven-scm-plugin/src/main/java/org/apache/maven/scm/plugin/EditMojo.java (added)
+++ maven/scm/trunk/maven-scm-plugin/src/main/java/org/apache/maven/scm/plugin/EditMojo.java Wed Dec  7 13:34:56 2005
@@ -0,0 +1,58 @@
+package org.apache.maven.scm.plugin;
+
+/*
+ * Copyright 2001-2005 The Apache Software Foundation.
+ *
+ * Licensed 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.plugin.MojoExecutionException;
+import org.apache.maven.scm.ScmException;
+import org.apache.maven.scm.command.edit.EditScmResult;
+import org.apache.maven.scm.repository.ScmRepository;
+
+import java.io.IOException;
+
+/**
+ * Edit/lock a set of files
+ * @goal edit
+ *
+ * @author <a href="dantran@apache.org">Dan Tran</a>
+ * @version $Id$
+ */
+public class EditMojo
+    extends AbstractScmMojo
+{
+
+    public void execute()
+        throws MojoExecutionException
+    {
+        try
+        {
+            ScmRepository repository = getScmRepository();
+
+            EditScmResult result = getScmManager().getProviderByRepository( repository ).edit( repository, getFileSet() );
+                                                                                                      
+            checkResult( result );
+        }
+        catch ( IOException e )
+        {
+            throw new MojoExecutionException( "Cannot run edit command : ", e );
+        }
+        catch ( ScmException e )
+        {
+            throw new MojoExecutionException( "Cannot run edit command : ", e );
+        }
+    }
+    
+}

Propchange: maven/scm/trunk/maven-scm-plugin/src/main/java/org/apache/maven/scm/plugin/EditMojo.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/scm/trunk/maven-scm-plugin/src/main/java/org/apache/maven/scm/plugin/EditMojo.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/scm/trunk/maven-scm-plugin/src/main/java/org/apache/maven/scm/plugin/UnEditMojo.java
URL: http://svn.apache.org/viewcvs/maven/scm/trunk/maven-scm-plugin/src/main/java/org/apache/maven/scm/plugin/UnEditMojo.java?rev=354867&view=auto
==============================================================================
--- maven/scm/trunk/maven-scm-plugin/src/main/java/org/apache/maven/scm/plugin/UnEditMojo.java (added)
+++ maven/scm/trunk/maven-scm-plugin/src/main/java/org/apache/maven/scm/plugin/UnEditMojo.java Wed Dec  7 13:34:56 2005
@@ -0,0 +1,58 @@
+package org.apache.maven.scm.plugin;
+
+/*
+ * Copyright 2001-2005 The Apache Software Foundation.
+ *
+ * Licensed 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.plugin.MojoExecutionException;
+import org.apache.maven.scm.ScmException;
+import org.apache.maven.scm.command.unedit.UnEditScmResult;
+import org.apache.maven.scm.repository.ScmRepository;
+
+import java.io.IOException;
+
+/**
+ * Unedit/unlock a set of files
+ * @goal unedit
+ *
+ * @author <a href="dantran@apache.org">Dan Tran</a>
+ * @version $Id$
+ */
+public class UnEditMojo
+    extends AbstractScmMojo
+{
+    
+    public void execute()
+        throws MojoExecutionException
+    {
+        try
+        {
+            ScmRepository repository = getScmRepository();
+
+            UnEditScmResult result = getScmManager().getProviderByRepository( repository ).unedit( repository,
+                                                                                                 getFileSet() );
+
+            checkResult( result );
+        }
+        catch ( IOException e )
+        {
+            throw new MojoExecutionException( "Cannot run unedit command : ", e );
+        }
+        catch ( ScmException e )
+        {
+            throw new MojoExecutionException( "Cannot run unedit command : ", e );
+        }
+    }
+}

Propchange: maven/scm/trunk/maven-scm-plugin/src/main/java/org/apache/maven/scm/plugin/UnEditMojo.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/scm/trunk/maven-scm-plugin/src/main/java/org/apache/maven/scm/plugin/UnEditMojo.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Modified: maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/main/java/org/apache/maven/scm/provider/starteam/StarteamScmProvider.java
URL: http://svn.apache.org/viewcvs/maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/main/java/org/apache/maven/scm/provider/starteam/StarteamScmProvider.java?rev=354867&r1=354866&r2=354867&view=diff
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/main/java/org/apache/maven/scm/provider/starteam/StarteamScmProvider.java (original)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/main/java/org/apache/maven/scm/provider/starteam/StarteamScmProvider.java Wed Dec  7 13:34:56 2005
@@ -24,8 +24,10 @@
 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.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;
@@ -34,8 +36,10 @@
 import org.apache.maven.scm.provider.starteam.command.checkin.StarteamCheckInCommand;
 import org.apache.maven.scm.provider.starteam.command.checkout.StarteamCheckOutCommand;
 import org.apache.maven.scm.provider.starteam.command.diff.StarteamDiffCommand;
+import org.apache.maven.scm.provider.starteam.command.edit.StarteamEditCommand;
 import org.apache.maven.scm.provider.starteam.command.status.StarteamStatusCommand;
 import org.apache.maven.scm.provider.starteam.command.tag.StarteamTagCommand;
+import org.apache.maven.scm.provider.starteam.command.unedit.StarteamUnEditCommand;
 import org.apache.maven.scm.provider.starteam.command.update.StarteamUpdateCommand;
 import org.apache.maven.scm.provider.starteam.repository.StarteamScmProviderRepository;
 import org.apache.maven.scm.repository.ScmRepository;
@@ -243,4 +247,25 @@
 
         return (UpdateScmResult) command.execute( repository.getProviderRepository(), fileSet, parameters );
     }
+    
+    protected EditScmResult edit( ScmRepository repository, ScmFileSet fileSet, CommandParameters parameters )
+        throws ScmException
+    {
+        StarteamEditCommand command = new StarteamEditCommand();
+
+        command.setLogger( getLogger() );
+
+        return (EditScmResult) command.execute( repository.getProviderRepository(), fileSet, parameters );
+    }
+
+    protected UnEditScmResult unedit( ScmRepository repository, ScmFileSet fileSet, CommandParameters parameters )
+        throws ScmException
+    {
+        StarteamUnEditCommand command = new StarteamUnEditCommand();
+
+        command.setLogger( getLogger() );
+
+        return (UnEditScmResult) command.execute( repository.getProviderRepository(), fileSet, parameters );
+    }
+    
 }

Added: maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/main/java/org/apache/maven/scm/provider/starteam/command/edit/StarteamEditCommand.java
URL: http://svn.apache.org/viewcvs/maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/main/java/org/apache/maven/scm/provider/starteam/command/edit/StarteamEditCommand.java?rev=354867&view=auto
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/main/java/org/apache/maven/scm/provider/starteam/command/edit/StarteamEditCommand.java (added)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/main/java/org/apache/maven/scm/provider/starteam/command/edit/StarteamEditCommand.java Wed Dec  7 13:34:56 2005
@@ -0,0 +1,109 @@
+package org.apache.maven.scm.provider.starteam.command.edit;
+
+/*
+ * Copyright 2001-2005 The Apache Software Foundation.
+ *
+ * Licensed 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 org.apache.maven.scm.ScmException;
+import org.apache.maven.scm.ScmFileSet;
+import org.apache.maven.scm.ScmResult;
+
+import org.apache.maven.scm.command.edit.AbstractEditCommand;
+import org.apache.maven.scm.command.edit.EditScmResult;
+
+import org.apache.maven.scm.provider.ScmProviderRepository;
+import org.apache.maven.scm.provider.starteam.command.StarteamCommand;
+import org.apache.maven.scm.provider.starteam.command.StarteamCommandLineUtils;
+import org.apache.maven.scm.provider.starteam.repository.StarteamScmProviderRepository;
+
+import org.codehaus.plexus.util.cli.Commandline;
+import org.codehaus.plexus.util.cli.CommandLineUtils;
+
+/**
+ * @author <a href="mailto:dantran@gmail.com">Dan T. Tran</a>
+ * @version $Id$
+ */
+public class StarteamEditCommand
+    extends AbstractEditCommand
+    implements StarteamCommand
+{
+    // ----------------------------------------------------------------------
+    // AbstractEditCommand Implementation
+    // ----------------------------------------------------------------------
+
+    protected ScmResult executeEditCommand( ScmProviderRepository repo, ScmFileSet fileSet )
+        throws ScmException
+    {
+        getLogger().info( "Working directory: " + fileSet.getBasedir().getAbsolutePath() );
+
+        StarteamScmProviderRepository repository = (StarteamScmProviderRepository) repo;
+
+        StarteamEditConsumer consumer = new StarteamEditConsumer( getLogger(), fileSet.getBasedir() );
+
+        CommandLineUtils.StringStreamConsumer stderr = new CommandLineUtils.StringStreamConsumer();
+
+        File[] editFiles = fileSet.getFiles();
+
+        if ( editFiles.length == 0 )
+        {
+            Commandline cl = createCommandLine( repository, fileSet.getBasedir() );
+
+            int exitCode = StarteamCommandLineUtils.executeCommandline( cl, consumer, stderr, getLogger() );
+
+            if ( exitCode != 0 )
+            {
+                return new EditScmResult( cl.toString(), "The starteam command failed.", stderr.getOutput(), false );
+            }
+        }
+        else
+        {
+            //edit only interested files already on the local disk
+            for ( int i = 0; i < editFiles.length; ++i )
+            {
+                Commandline cl = createCommandLine( repository, editFiles[i] );
+
+                int exitCode = StarteamCommandLineUtils.executeCommandline( cl, consumer, stderr, getLogger() );
+
+                if ( exitCode != 0 )
+                {
+                    return new EditScmResult( cl.toString(), "The starteam command failed.", stderr.getOutput(), false );
+                }
+            }
+        }
+
+        return new EditScmResult( null , consumer.getEditedFiles() );
+
+    }
+
+    public static Commandline createCommandLine( StarteamScmProviderRepository repo, File dirOrFile )
+    {
+        Commandline cl = StarteamCommandLineUtils.createStarteamBaseCommandLine( "lck", dirOrFile, repo );
+
+        cl.createArgument().setValue( "-l" );
+
+        if ( dirOrFile.isDirectory() )
+        {
+            cl.createArgument().setValue( "-is" );
+        }
+        else
+        {
+            cl.createArgument().setValue( dirOrFile.getName() );
+        }
+
+        return cl;
+    }
+}

Propchange: maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/main/java/org/apache/maven/scm/provider/starteam/command/edit/StarteamEditCommand.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/main/java/org/apache/maven/scm/provider/starteam/command/edit/StarteamEditCommand.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/main/java/org/apache/maven/scm/provider/starteam/command/edit/StarteamEditConsumer.java
URL: http://svn.apache.org/viewcvs/maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/main/java/org/apache/maven/scm/provider/starteam/command/edit/StarteamEditConsumer.java?rev=354867&view=auto
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/main/java/org/apache/maven/scm/provider/starteam/command/edit/StarteamEditConsumer.java (added)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/main/java/org/apache/maven/scm/provider/starteam/command/edit/StarteamEditConsumer.java Wed Dec  7 13:34:56 2005
@@ -0,0 +1,113 @@
+package org.apache.maven.scm.provider.starteam.command.edit;
+
+/*
+ * Copyright 2001-2005 The Apache Software Foundation.
+ *
+ * Licensed 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.ScmFile;
+import org.apache.maven.scm.ScmFileStatus;
+import org.apache.maven.scm.log.ScmLogger;
+import org.codehaus.plexus.util.cli.StreamConsumer;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.io.File;
+
+/**
+ * @author <a href="mailto:dantran@apache.org">Dan T. Tran</a>
+ * @version $Id$
+ */
+public class StarteamEditConsumer
+    implements StreamConsumer
+{
+    private String workingDirectory;
+
+    private ScmLogger logger;
+
+    private List files = new ArrayList();
+
+    /**
+     * the current directory entry being processed by the parser
+     */
+    private String currentDir = "";
+
+    /**
+     * Marks current directory data
+     */
+    private static final String DIR_MARKER = "(working dir: ";
+
+    /**
+     * Marks current file data
+     */
+    private static final String LOCKED_MARKER = ": locked";
+
+
+    public StarteamEditConsumer( ScmLogger logger, File basedir )
+    {
+        this.logger = logger;
+        this.workingDirectory = basedir.getPath().replace( '\\', '/' );
+    }
+
+    public void consumeLine( String line )
+    {
+        logger.debug( line );
+        int pos = 0;
+
+        if ( ( pos = line.indexOf( DIR_MARKER ) ) != -1 )
+        {
+            processDirectory( line, pos );
+        }
+        else if ( ( pos = line.indexOf( LOCKED_MARKER ) ) != -1 )
+        {
+            processLockedFile( line, pos );
+        }
+        else
+        {
+            this.logger.warn( "Unknown edit ouput: " + line );
+        }
+    }
+
+    public List getEditedFiles()
+    {
+        return files;
+    }
+
+    private void processDirectory( String line, int pos )
+    {
+        String dirPath = line.substring( pos + DIR_MARKER.length(), line.length() - 1 ).replace( '\\', '/' );
+
+        if ( !dirPath.startsWith( workingDirectory ) )
+        {
+            logger.info( "Working directory: " + workingDirectory );
+
+            logger.info( "Edit directory: " + dirPath );
+
+            throw new IllegalStateException( "Working and edit directories are not on the same tree" );
+        }
+
+        this.currentDir = "." + dirPath.substring( workingDirectory.length() );
+    }
+
+    private void processLockedFile( String line, int pos )
+    {
+        String lockedFilePath = this.currentDir + "/" + line.substring( 0, pos );
+
+        this.files.add( new ScmFile( lockedFilePath, ScmFileStatus.UNKNOWN ) );
+
+        this.logger.info( "Locked: " + lockedFilePath );
+    }
+
+
+}

Propchange: maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/main/java/org/apache/maven/scm/provider/starteam/command/edit/StarteamEditConsumer.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/main/java/org/apache/maven/scm/provider/starteam/command/edit/StarteamEditConsumer.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/main/java/org/apache/maven/scm/provider/starteam/command/unedit/StarteamUnEditCommand.java
URL: http://svn.apache.org/viewcvs/maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/main/java/org/apache/maven/scm/provider/starteam/command/unedit/StarteamUnEditCommand.java?rev=354867&view=auto
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/main/java/org/apache/maven/scm/provider/starteam/command/unedit/StarteamUnEditCommand.java (added)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/main/java/org/apache/maven/scm/provider/starteam/command/unedit/StarteamUnEditCommand.java Wed Dec  7 13:34:56 2005
@@ -0,0 +1,109 @@
+package org.apache.maven.scm.provider.starteam.command.unedit;
+
+/*
+ * Copyright 2001-2005 The Apache Software Foundation.
+ *
+ * Licensed 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 org.apache.maven.scm.ScmException;
+import org.apache.maven.scm.ScmFileSet;
+import org.apache.maven.scm.ScmResult;
+
+import org.apache.maven.scm.command.unedit.AbstractUnEditCommand;
+import org.apache.maven.scm.command.unedit.UnEditScmResult;
+
+import org.apache.maven.scm.provider.ScmProviderRepository;
+import org.apache.maven.scm.provider.starteam.command.StarteamCommand;
+import org.apache.maven.scm.provider.starteam.command.StarteamCommandLineUtils;
+import org.apache.maven.scm.provider.starteam.repository.StarteamScmProviderRepository;
+
+import org.codehaus.plexus.util.cli.Commandline;
+import org.codehaus.plexus.util.cli.CommandLineUtils;
+
+/**
+ * @author <a href="mailto:dantran@gmail.com">Dan T. Tran</a>
+ * @version $Id$
+ */
+public class StarteamUnEditCommand
+    extends AbstractUnEditCommand
+    implements StarteamCommand
+{
+    // ----------------------------------------------------------------------
+    // AbstractEditCommand Implementation
+    // ----------------------------------------------------------------------
+
+    protected ScmResult executeUnEditCommand( ScmProviderRepository repo, ScmFileSet fileSet )
+        throws ScmException
+    {
+        getLogger().info( "Working directory: " + fileSet.getBasedir().getAbsolutePath() );
+
+        StarteamScmProviderRepository repository = (StarteamScmProviderRepository) repo;
+
+        StarteamUnEditConsumer consumer = new StarteamUnEditConsumer( getLogger(), fileSet.getBasedir() );
+
+        CommandLineUtils.StringStreamConsumer stderr = new CommandLineUtils.StringStreamConsumer();
+
+        File[] editFiles = fileSet.getFiles();
+
+        if ( editFiles.length == 0 )
+        {
+            Commandline cl = createCommandLine( repository, fileSet.getBasedir() );
+
+            int exitCode = StarteamCommandLineUtils.executeCommandline( cl, consumer, stderr, getLogger() );
+
+            if ( exitCode != 0 )
+            {
+                return new UnEditScmResult( cl.toString(), "The starteam command failed.", stderr.getOutput(), false );
+            }
+        }
+        else
+        {
+            //edit only interested files already on the local disk
+            for ( int i = 0; i < editFiles.length; ++i )
+            {
+                Commandline cl = createCommandLine( repository, editFiles[i] );
+
+                int exitCode = StarteamCommandLineUtils.executeCommandline( cl, consumer, stderr, getLogger() );
+
+                if ( exitCode != 0 )
+                {
+                    return new UnEditScmResult( cl.toString(), "The starteam command failed.", stderr.getOutput(), false );
+                }
+            }
+        }
+
+        return new UnEditScmResult( null, consumer.getUnEditFiles() );
+
+    }
+
+    public static Commandline createCommandLine( StarteamScmProviderRepository repo, File dirOrFile )
+    {
+        Commandline cl = StarteamCommandLineUtils.createStarteamBaseCommandLine( "lck", dirOrFile, repo );
+
+        cl.createArgument().setValue( "-u" );
+
+        if ( dirOrFile.isDirectory() )
+        {
+            cl.createArgument().setValue( "-is" );
+        }
+        else
+        {
+            cl.createArgument().setValue( dirOrFile.getName() );
+        }
+
+        return cl;
+    }
+}

Propchange: maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/main/java/org/apache/maven/scm/provider/starteam/command/unedit/StarteamUnEditCommand.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/main/java/org/apache/maven/scm/provider/starteam/command/unedit/StarteamUnEditCommand.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/main/java/org/apache/maven/scm/provider/starteam/command/unedit/StarteamUnEditConsumer.java
URL: http://svn.apache.org/viewcvs/maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/main/java/org/apache/maven/scm/provider/starteam/command/unedit/StarteamUnEditConsumer.java?rev=354867&view=auto
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/main/java/org/apache/maven/scm/provider/starteam/command/unedit/StarteamUnEditConsumer.java (added)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/main/java/org/apache/maven/scm/provider/starteam/command/unedit/StarteamUnEditConsumer.java Wed Dec  7 13:34:56 2005
@@ -0,0 +1,114 @@
+package org.apache.maven.scm.provider.starteam.command.unedit;
+
+/*
+ * Copyright 2001-2005 The Apache Software Foundation.
+ *
+ * Licensed 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.ScmFile;
+import org.apache.maven.scm.ScmFileStatus;
+import org.apache.maven.scm.log.ScmLogger;
+import org.codehaus.plexus.util.cli.StreamConsumer;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.io.File;
+
+/**
+ * @author <a href="mailto:dantran@apache.org">Dan T. Tran</a>
+ * @version $Id$
+ */
+public class StarteamUnEditConsumer
+    implements StreamConsumer
+{
+    private String workingDirectory;
+
+    private ScmLogger logger;
+
+    private List files = new ArrayList();
+
+    /**
+     * the current directory entry being processed by the parser
+     */
+    private String currentDir = "";
+
+    /**
+     * Marks current directory data
+     */
+    private static final String DIR_MARKER = "(working dir: ";
+
+    /**
+     * Marks current file data
+     */
+    private static final String UNLOCKED_MARKER = ": unlocked";
+
+
+    public StarteamUnEditConsumer( ScmLogger logger, File basedir )
+    {
+        this.logger = logger;
+        this.workingDirectory = basedir.getPath().replace( '\\', '/' );
+    }
+
+    public void consumeLine( String line )
+    {
+        logger.debug( line );
+        
+        int pos = 0;
+
+        if ( ( pos = line.indexOf( DIR_MARKER ) ) != -1 )
+        {
+            processDirectory( line, pos );
+        }
+        else if ( ( pos = line.indexOf( UNLOCKED_MARKER ) ) != -1 )
+        {
+            processUnLockedFile( line, pos );
+        }
+        else
+        {
+            this.logger.warn( "Unknown unedit ouput: " + line );
+        }
+    }
+
+    public List getUnEditFiles()
+    {
+        return files;
+    }
+
+    private void processDirectory( String line, int pos )
+    {
+        String dirPath = line.substring( pos + DIR_MARKER.length(), line.length() - 1 ).replace( '\\', '/' );
+
+        if ( !dirPath.startsWith( workingDirectory ) )
+        {
+            logger.info( "Working directory: " + workingDirectory );
+
+            logger.info( "unedit directory: " + dirPath );
+
+            throw new IllegalStateException( "Working and unedit directories are not on the same tree" );
+        }
+
+        this.currentDir = "." + dirPath.substring( workingDirectory.length() );
+    }
+
+    private void processUnLockedFile( String line, int pos )
+    {
+        String lockedFilePath = this.currentDir + "/" + line.substring( 0, pos );
+
+        this.files.add( new ScmFile( lockedFilePath, ScmFileStatus.UNKNOWN) );
+
+        this.logger.info( "Locked: " + lockedFilePath );
+    }
+
+
+}

Propchange: maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/main/java/org/apache/maven/scm/provider/starteam/command/unedit/StarteamUnEditConsumer.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/main/java/org/apache/maven/scm/provider/starteam/command/unedit/StarteamUnEditConsumer.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/test/java/org/apache/maven/scm/provider/starteam/command/edit/StarteamEditCommandTest.java
URL: http://svn.apache.org/viewcvs/maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/test/java/org/apache/maven/scm/provider/starteam/command/edit/StarteamEditCommandTest.java?rev=354867&view=auto
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/test/java/org/apache/maven/scm/provider/starteam/command/edit/StarteamEditCommandTest.java (added)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/test/java/org/apache/maven/scm/provider/starteam/command/edit/StarteamEditCommandTest.java Wed Dec  7 13:34:56 2005
@@ -0,0 +1,91 @@
+package org.apache.maven.scm.provider.starteam.command.edit;
+
+/*
+ * Copyright 2001-2005 The Apache Software Foundation.
+ *
+ * Licensed 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 org.apache.maven.scm.ScmTestCase;
+import org.apache.maven.scm.provider.starteam.command.StarteamCommandLineUtils;
+import org.apache.maven.scm.provider.starteam.repository.StarteamScmProviderRepository;
+import org.apache.maven.scm.repository.ScmRepository;
+
+import org.codehaus.plexus.util.cli.Commandline;
+
+/**
+ * @author <a href="mailto:dantran@gmail.com">Dan T. Tran</a>
+ * @version
+ */
+public class StarteamEditCommandTest
+    extends ScmTestCase
+{
+    
+    public void testGetCommandLineWithFileOnRoot()
+        throws Exception
+    {
+
+	    File testFile = new File( "testfile" );
+
+		File testFileDir= testFile.getAbsoluteFile().getParentFile();
+
+		String testFileDirAbsolutePath = StarteamCommandLineUtils.toJavaPath( testFileDir.getAbsolutePath() );
+		
+	    String expectedCmd = "stcmd lck -x -nologo -stop -p myusername:mypassword@myhost:1234/projecturl" +
+                          " -fp " + testFileDirAbsolutePath + " -l testfile" ;
+
+        testCommandLine( "scm:starteam:myusername:mypassword@myhost:1234/projecturl",
+                     testFile,
+                     expectedCmd );
+    }
+
+
+    public void testGetCommandLineWithFileInSubDir()
+        throws Exception
+    {
+
+	    File testFile = new File( "target/testfile" );
+
+		File testFileDir= testFile.getAbsoluteFile().getParentFile();
+
+		String testFileDirAbsolutePath = StarteamCommandLineUtils.toJavaPath( testFileDir.getAbsolutePath() );
+		
+	    String expectedCmd = "stcmd lck -x -nologo -stop -p myusername:mypassword@myhost:1234/projecturl/target" +
+                          " -fp " + testFileDirAbsolutePath +
+                          " -l" +
+                          " testfile" ;
+
+        testCommandLine( "scm:starteam:myusername:mypassword@myhost:1234/projecturl",
+                     testFile,
+                     expectedCmd );
+
+    }
+
+    // ----------------------------------------------------------------------
+    //
+    // ----------------------------------------------------------------------
+
+    private void testCommandLine( String scmUrl, File fileName, String commandLine )
+        throws Exception
+    {
+        ScmRepository repo = getScmManager().makeScmRepository( scmUrl );
+
+        StarteamScmProviderRepository repository = (StarteamScmProviderRepository) repo.getProviderRepository();
+
+        Commandline cl = StarteamEditCommand.createCommandLine( repository, fileName );
+
+        assertEquals( commandLine, cl.toString() );
+    }
+ }

Propchange: maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/test/java/org/apache/maven/scm/provider/starteam/command/edit/StarteamEditCommandTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/test/java/org/apache/maven/scm/provider/starteam/command/edit/StarteamEditCommandTest.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/test/java/org/apache/maven/scm/provider/starteam/command/edit/StarteamEditConsumerTest.java
URL: http://svn.apache.org/viewcvs/maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/test/java/org/apache/maven/scm/provider/starteam/command/edit/StarteamEditConsumerTest.java?rev=354867&view=auto
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/test/java/org/apache/maven/scm/provider/starteam/command/edit/StarteamEditConsumerTest.java (added)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/test/java/org/apache/maven/scm/provider/starteam/command/edit/StarteamEditConsumerTest.java Wed Dec  7 13:34:56 2005
@@ -0,0 +1,65 @@
+package org.apache.maven.scm.provider.starteam.command.edit;
+
+/*
+ * Copyright 2001-2005 The Apache Software Foundation.
+ *
+ * Licensed 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.Collection;
+
+import org.apache.maven.scm.ScmTestCase;
+import org.apache.maven.scm.log.DefaultLog;
+
+/**
+ * @author <a href="mailto:dantran@gmail.com">Dan T. Tran</a>
+ * @version
+ */
+public class StarteamEditConsumerTest
+    extends ScmTestCase
+{
+    private static String [] TEST_OUTPUT =
+    {
+        "Folder: driver  (working dir: /usr/scm-starteam/driver)",
+  		"maven.xml: locked",
+        "Folder: driver  (working dir: /usr/scm-starteam/driver/target/checkout)",
+		"maven.xml: locked",
+		"project.properties: locked",
+		"project.xml: locked",
+        "Folder: bootstrap  (working dir: /usr/scm-starteam/driver/target/checkout/bootstrap)",
+		"maven.xml: locked",
+		"project.properties: locked",
+		"project.xml: locked"
+    };
+
+    public void testParse()
+        throws Exception
+    {
+        
+		File basedir = new File( "/usr/scm-starteam/driver" );
+        
+        StarteamEditConsumer consumer = new StarteamEditConsumer( new DefaultLog(), basedir );
+
+        for ( int i = 0; i < TEST_OUTPUT.length; ++ i )
+        {
+            consumer.consumeLine( TEST_OUTPUT[i] );
+        }
+
+        Collection entries = consumer.getEditedFiles();
+
+        assertEquals( "Wrong number of entries returned", 7, entries.size() );
+        
+    }
+    
+}

Propchange: maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/test/java/org/apache/maven/scm/provider/starteam/command/edit/StarteamEditConsumerTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/test/java/org/apache/maven/scm/provider/starteam/command/edit/StarteamEditConsumerTest.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/test/java/org/apache/maven/scm/provider/starteam/command/unedit/StarteamUnEditCommandTest.java
URL: http://svn.apache.org/viewcvs/maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/test/java/org/apache/maven/scm/provider/starteam/command/unedit/StarteamUnEditCommandTest.java?rev=354867&view=auto
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/test/java/org/apache/maven/scm/provider/starteam/command/unedit/StarteamUnEditCommandTest.java (added)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/test/java/org/apache/maven/scm/provider/starteam/command/unedit/StarteamUnEditCommandTest.java Wed Dec  7 13:34:56 2005
@@ -0,0 +1,91 @@
+package org.apache.maven.scm.provider.starteam.command.unedit;
+
+/*
+ * Copyright 2001-2005 The Apache Software Foundation.
+ *
+ * Licensed 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 org.apache.maven.scm.ScmTestCase;
+import org.apache.maven.scm.provider.starteam.command.StarteamCommandLineUtils;
+import org.apache.maven.scm.provider.starteam.repository.StarteamScmProviderRepository;
+import org.apache.maven.scm.repository.ScmRepository;
+
+import org.codehaus.plexus.util.cli.Commandline;
+
+/**
+ * @author <a href="mailto:dantran@gmail.com">Dan T. Tran</a>
+ * @version
+ */
+public class StarteamUnEditCommandTest
+    extends ScmTestCase
+{
+    
+    public void testGetCommandLineWithFileOnRoot()
+        throws Exception
+    {
+
+	    File testFile = new File( "testfile" );
+
+		File testFileDir= testFile.getAbsoluteFile().getParentFile();
+
+		String testFileDirAbsolutePath = StarteamCommandLineUtils.toJavaPath( testFileDir.getAbsolutePath() );
+		
+	    String expectedCmd = "stcmd lck -x -nologo -stop -p myusername:mypassword@myhost:1234/projecturl" +
+                          " -fp " + testFileDirAbsolutePath + " -u testfile" ;
+
+        testCommandLine( "scm:starteam:myusername:mypassword@myhost:1234/projecturl",
+                     testFile,
+                     expectedCmd );
+    }
+
+
+    public void testGetCommandLineWithFileInSubDir()
+        throws Exception
+    {
+
+	    File testFile = new File( "target/testfile" );
+
+		File testFileDir= testFile.getAbsoluteFile().getParentFile();
+
+		String testFileDirAbsolutePath = StarteamCommandLineUtils.toJavaPath( testFileDir.getAbsolutePath() );
+		
+	    String expectedCmd = "stcmd lck -x -nologo -stop -p myusername:mypassword@myhost:1234/projecturl/target" +
+                          " -fp " + testFileDirAbsolutePath +
+                          " -u" +
+                          " testfile" ;
+
+        testCommandLine( "scm:starteam:myusername:mypassword@myhost:1234/projecturl",
+                     testFile,
+                     expectedCmd );
+
+    }
+
+    // ----------------------------------------------------------------------
+    //
+    // ----------------------------------------------------------------------
+
+    private void testCommandLine( String scmUrl, File fileName, String commandLine )
+        throws Exception
+    {
+        ScmRepository repo = getScmManager().makeScmRepository( scmUrl );
+
+        StarteamScmProviderRepository repository = (StarteamScmProviderRepository) repo.getProviderRepository();
+
+        Commandline cl = StarteamUnEditCommand.createCommandLine( repository, fileName );
+
+        assertEquals( commandLine, cl.toString() );
+    }
+ }

Propchange: maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/test/java/org/apache/maven/scm/provider/starteam/command/unedit/StarteamUnEditCommandTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/test/java/org/apache/maven/scm/provider/starteam/command/unedit/StarteamUnEditCommandTest.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/test/java/org/apache/maven/scm/provider/starteam/command/unedit/StarteamUnEditConsumerTest.java
URL: http://svn.apache.org/viewcvs/maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/test/java/org/apache/maven/scm/provider/starteam/command/unedit/StarteamUnEditConsumerTest.java?rev=354867&view=auto
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/test/java/org/apache/maven/scm/provider/starteam/command/unedit/StarteamUnEditConsumerTest.java (added)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/test/java/org/apache/maven/scm/provider/starteam/command/unedit/StarteamUnEditConsumerTest.java Wed Dec  7 13:34:56 2005
@@ -0,0 +1,65 @@
+package org.apache.maven.scm.provider.starteam.command.unedit;
+
+/*
+ * Copyright 2001-2005 The Apache Software Foundation.
+ *
+ * Licensed 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.Collection;
+
+import org.apache.maven.scm.ScmTestCase;
+import org.apache.maven.scm.log.DefaultLog;
+
+/**
+ * @author <a href="mailto:dantran@gmail.com">Dan T. Tran</a>
+ * @version
+ */
+public class StarteamUnEditConsumerTest
+    extends ScmTestCase
+{
+    private static String [] TEST_OUTPUT =
+    {
+        "Folder: driver  (working dir: /usr/scm-starteam/driver)",
+  		"maven.xml: unlocked",
+        "Folder: driver  (working dir: /usr/scm-starteam/driver/target/checkout)",
+		"maven.xml: unlocked",
+		"project.properties: unlocked",
+		"project.xml: unlocked",
+        "Folder: bootstrap  (working dir: /usr/scm-starteam/driver/target/checkout/bootstrap)",
+		"maven.xml: unlocked",
+		"project.properties: unlocked",
+		"project.xml: unlocked"
+    };
+
+    public void testParse()
+        throws Exception
+    {
+        
+		File basedir = new File( "/usr/scm-starteam/driver" );
+        
+        StarteamUnEditConsumer consumer = new StarteamUnEditConsumer( new DefaultLog(), basedir );
+
+        for ( int i = 0; i < TEST_OUTPUT.length; ++ i )
+        {
+            consumer.consumeLine( TEST_OUTPUT[i] );
+        }
+
+        Collection entries = consumer.getUnEditFiles();
+
+        assertEquals( "Wrong number of entries returned", 7, entries.size() );
+        
+    }
+    
+}

Propchange: maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/test/java/org/apache/maven/scm/provider/starteam/command/unedit/StarteamUnEditConsumerTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/scm/trunk/maven-scm-providers/maven-scm-provider-starteam/src/test/java/org/apache/maven/scm/provider/starteam/command/unedit/StarteamUnEditConsumerTest.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"