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 2011/11/18 01:47:09 UTC

svn commit: r1203448 - in /maven/scm/trunk: ./ maven-scm-api/src/main/java/org/apache/maven/scm/command/remoteinfo/ maven-scm-api/src/main/java/org/apache/maven/scm/provider/ maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/ maven-...

Author: olamy
Date: Fri Nov 18 00:47:08 2011
New Revision: 1203448

URL: http://svn.apache.org/viewvc?rev=1203448&view=rev
Log:
[SCM-645] add a command to get various informations (branches, tag) from remote scm server
impl for svn.

Added:
    maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/command/remoteinfo/
    maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/command/remoteinfo/AbstractRemoteInfoCommand.java   (with props)
    maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/command/remoteinfo/RemoteInfoScmResult.java   (with props)
    maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/remoteinfo/
    maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/remoteinfo/SvnRemoteInfoCommand.java   (with props)
    maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/test/java/org/apache/maven/scm/provider/svn/svnexe/command/remoteinfo/
    maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/test/java/org/apache/maven/scm/provider/svn/svnexe/command/remoteinfo/RemoteInfoCommandTest.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-api/src/main/java/org/apache/maven/scm/provider/ScmProvider.java
    maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/pom.xml
    maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/SvnExeScmProvider.java
    maven/scm/trunk/maven-scm-test/src/main/java/org/apache/maven/scm/provider/ScmProviderStub.java
    maven/scm/trunk/pom.xml

Added: maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/command/remoteinfo/AbstractRemoteInfoCommand.java
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/command/remoteinfo/AbstractRemoteInfoCommand.java?rev=1203448&view=auto
==============================================================================
--- maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/command/remoteinfo/AbstractRemoteInfoCommand.java (added)
+++ maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/command/remoteinfo/AbstractRemoteInfoCommand.java Fri Nov 18 00:47:08 2011
@@ -0,0 +1,47 @@
+package org.apache.maven.scm.command.remoteinfo;
+/*
+ * 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.CommandParameters;
+import org.apache.maven.scm.ScmException;
+import org.apache.maven.scm.ScmFileSet;
+import org.apache.maven.scm.ScmResult;
+import org.apache.maven.scm.command.AbstractCommand;
+import org.apache.maven.scm.provider.ScmProviderRepository;
+
+/**
+ * @author Olivier Lamy
+ * @since 1.6
+ */
+public abstract class AbstractRemoteInfoCommand
+    extends AbstractCommand
+{
+
+    public abstract RemoteInfoScmResult executeRemoteInfoCommand( ScmProviderRepository repository, ScmFileSet fileSet,
+                                                                  CommandParameters parameters )
+        throws ScmException;
+
+    @Override
+    protected ScmResult executeCommand( ScmProviderRepository repository, ScmFileSet fileSet,
+                                        CommandParameters parameters )
+        throws ScmException
+    {
+        return executeRemoteInfoCommand( repository, fileSet, parameters );
+    }
+}

Propchange: maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/command/remoteinfo/AbstractRemoteInfoCommand.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/command/remoteinfo/AbstractRemoteInfoCommand.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Added: maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/command/remoteinfo/RemoteInfoScmResult.java
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/command/remoteinfo/RemoteInfoScmResult.java?rev=1203448&view=auto
==============================================================================
--- maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/command/remoteinfo/RemoteInfoScmResult.java (added)
+++ maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/command/remoteinfo/RemoteInfoScmResult.java Fri Nov 18 00:47:08 2011
@@ -0,0 +1,77 @@
+package org.apache.maven.scm.command.remoteinfo;
+/*
+ * 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.ScmResult;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * @author Olivier Lamy
+ * @since 1.6
+ */
+public class RemoteInfoScmResult
+    extends ScmResult
+{
+
+    /**
+     * depending on scm informations can be different
+     * svn: branch name / remote url
+     */
+    private Map<String, String> branches = new HashMap<String, String>();
+
+    /**
+     * depending on scm informations can be different
+     * svn: branch name / remote url
+     */
+    private Map<String, String> tags = new HashMap<String, String>();
+
+    public RemoteInfoScmResult( String commandLine, String providerMessage, String commandOutput, boolean success )
+    {
+        super( commandLine, providerMessage, commandOutput, success );
+    }
+
+    public RemoteInfoScmResult( String commandLine, Map<String, String> branches, Map<String, String> tags )
+    {
+        super( commandLine, null, null, true );
+        this.branches = branches;
+        this.tags = tags;
+    }
+
+    public Map<String, String> getBranches()
+    {
+        return branches;
+    }
+
+    public void setBranches( Map<String, String> branches )
+    {
+        this.branches = branches;
+    }
+
+    public Map<String, String> getTags()
+    {
+        return tags;
+    }
+
+    public void setTags( Map<String, String> tags )
+    {
+        this.tags = tags;
+    }
+}

Propchange: maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/command/remoteinfo/RemoteInfoScmResult.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/command/remoteinfo/RemoteInfoScmResult.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Modified: maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/provider/AbstractScmProvider.java
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/provider/AbstractScmProvider.java?rev=1203448&r1=1203447&r2=1203448&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 Fri Nov 18 00:47:08 2011
@@ -42,6 +42,7 @@ import org.apache.maven.scm.command.info
 import org.apache.maven.scm.command.list.ListScmResult;
 import org.apache.maven.scm.command.login.LoginScmResult;
 import org.apache.maven.scm.command.mkdir.MkdirScmResult;
+import org.apache.maven.scm.command.remoteinfo.RemoteInfoScmResult;
 import org.apache.maven.scm.command.remove.RemoveScmResult;
 import org.apache.maven.scm.command.status.StatusScmResult;
 import org.apache.maven.scm.command.tag.TagScmResult;
@@ -74,27 +75,35 @@ public abstract class AbstractScmProvide
     //
     // ----------------------------------------------------------------------
 
-    /** {@inheritDoc} */
+    /**
+     * {@inheritDoc}
+     */
     public String getScmSpecificFilename()
     {
         return null;
     }
 
-    /** {@inheritDoc} */
+    /**
+     * {@inheritDoc}
+     */
     public String sanitizeTagName( String tag )
     {
         /* by default, we assume all tags are valid. */
         return tag;
     }
 
-    /** {@inheritDoc} */
+    /**
+     * {@inheritDoc}
+     */
     public boolean validateTagName( String tag )
     {
         /* by default, we assume all tags are valid. */
         return true;
     }
 
-    /** {@inheritDoc} */
+    /**
+     * {@inheritDoc}
+     */
     public List<String> validateScmUrl( String scmSpecificUrl, char delimiter )
     {
         List<String> messages = new ArrayList<String>();
@@ -111,7 +120,9 @@ public abstract class AbstractScmProvide
         return messages;
     }
 
-    /** {@inheritDoc} */
+    /**
+     * {@inheritDoc}
+     */
     public boolean requiresEditMode()
     {
         return false;
@@ -121,14 +132,18 @@ public abstract class AbstractScmProvide
     // Scm Implementation
     // ----------------------------------------------------------------------
 
-    /** {@inheritDoc} */
+    /**
+     * {@inheritDoc}
+     */
     public AddScmResult add( ScmRepository repository, ScmFileSet fileSet )
         throws ScmException
     {
         return add( repository, fileSet, (String) null );
     }
 
-    /** {@inheritDoc} */
+    /**
+     * {@inheritDoc}
+     */
     public AddScmResult add( ScmRepository repository, ScmFileSet fileSet, String message )
         throws ScmException
     {
@@ -151,19 +166,23 @@ public abstract class AbstractScmProvide
         throw new NoSuchCommandScmException( "add" );
     }
 
-    /** {@inheritDoc} */
+    /**
+     * {@inheritDoc}
+     */
     public BranchScmResult branch( ScmRepository repository, ScmFileSet fileSet, String branchName )
         throws ScmException
     {
         return branch( repository, fileSet, branchName, new ScmBranchParameters() );
     }
 
-    /** {@inheritDoc} */
+    /**
+     * {@inheritDoc}
+     */
     public BranchScmResult branch( ScmRepository repository, ScmFileSet fileSet, String branchName, String message )
         throws ScmException
     {
         ScmBranchParameters scmBranchParameters = new ScmBranchParameters();
-        
+
         if ( StringUtils.isNotEmpty( message ) )
         {
             scmBranchParameters.setMessage( message );
@@ -171,7 +190,7 @@ public abstract class AbstractScmProvide
 
         return branch( repository, fileSet, branchName, scmBranchParameters );
     }
-    
+
     public BranchScmResult branch( ScmRepository repository, ScmFileSet fileSet, String branchName,
                                    ScmBranchParameters scmBranchParameters )
         throws ScmException
@@ -179,13 +198,13 @@ public abstract class AbstractScmProvide
         login( repository, fileSet );
 
         CommandParameters parameters = new CommandParameters();
-        
+
         parameters.setString( CommandParameter.BRANCH_NAME, branchName );
 
         parameters.setScmBranchParameters( CommandParameter.SCM_BRANCH_PARAMETERS, scmBranchParameters );
 
         return branch( repository.getProviderRepository(), fileSet, parameters );
-    }  
+    }
 
     protected BranchScmResult branch( ScmProviderRepository repository, ScmFileSet fileSet,
                                       CommandParameters parameters )
@@ -194,7 +213,9 @@ public abstract class AbstractScmProvide
         throw new NoSuchCommandScmException( "branch" );
     }
 
-    /** {@inheritDoc}
+    /**
+     * {@inheritDoc}
+     *
      * @deprecated
      */
     public ChangeLogScmResult changeLog( ScmRepository repository, ScmFileSet fileSet, Date startDate, Date endDate,
@@ -206,6 +227,7 @@ public abstract class AbstractScmProvide
 
     /**
      * {@inheritDoc}
+     *
      * @deprecated
      */
     public ChangeLogScmResult changeLog( ScmRepository repository, ScmFileSet fileSet, Date startDate, Date endDate,
@@ -222,7 +244,9 @@ public abstract class AbstractScmProvide
 
     }
 
-    /** {@inheritDoc} */
+    /**
+     * {@inheritDoc}
+     */
     public ChangeLogScmResult changeLog( ScmRepository repository, ScmFileSet fileSet, Date startDate, Date endDate,
                                          int numDays, ScmBranch branch )
         throws ScmException
@@ -230,7 +254,9 @@ public abstract class AbstractScmProvide
         return changeLog( repository, fileSet, startDate, endDate, numDays, branch, null );
     }
 
-    /** {@inheritDoc} */
+    /**
+     * {@inheritDoc}
+     */
     public ChangeLogScmResult changeLog( ScmRepository repository, ScmFileSet fileSet, Date startDate, Date endDate,
                                          int numDays, ScmBranch branch, String datePattern )
         throws ScmException
@@ -253,7 +279,9 @@ public abstract class AbstractScmProvide
     }
 
 
-    /** {@inheritDoc}
+    /**
+     * {@inheritDoc}
+     *
      * @deprecated
      */
     public ChangeLogScmResult changeLog( ScmRepository repository, ScmFileSet fileSet, String startTag, String endTag )
@@ -262,7 +290,9 @@ public abstract class AbstractScmProvide
         return changeLog( repository, fileSet, startTag, endTag, null );
     }
 
-    /** {@inheritDoc}
+    /**
+     * {@inheritDoc}
+     *
      * @deprecated
      */
     public ChangeLogScmResult changeLog( ScmRepository repository, ScmFileSet fileSet, String startTag, String endTag,
@@ -285,7 +315,9 @@ public abstract class AbstractScmProvide
         return changeLog( repository, fileSet, startRevision, endRevision, null );
     }
 
-    /** {@inheritDoc} */
+    /**
+     * {@inheritDoc}
+     */
     public ChangeLogScmResult changeLog( ScmRepository repository, ScmFileSet fileSet, ScmVersion startVersion,
                                          ScmVersion endVersion )
         throws ScmException
@@ -293,7 +325,9 @@ public abstract class AbstractScmProvide
         return changeLog( repository, fileSet, startVersion, endVersion, null );
     }
 
-    /** {@inheritDoc} */
+    /**
+     * {@inheritDoc}
+     */
     public ChangeLogScmResult changeLog( ScmRepository repository, ScmFileSet fileSet, ScmVersion startVersion,
                                          ScmVersion endVersion, String datePattern )
         throws ScmException
@@ -319,7 +353,9 @@ public abstract class AbstractScmProvide
     }
 
 
-    /** {@inheritDoc}
+    /**
+     * {@inheritDoc}
+     *
      * @deprecated
      */
     public CheckInScmResult checkIn( ScmRepository repository, ScmFileSet fileSet, String tag, String message )
@@ -335,14 +371,18 @@ public abstract class AbstractScmProvide
         return checkIn( repository, fileSet, scmVersion, message );
     }
 
-    /** {@inheritDoc} */
+    /**
+     * {@inheritDoc}
+     */
     public CheckInScmResult checkIn( ScmRepository repository, ScmFileSet fileSet, String message )
         throws ScmException
     {
         return checkIn( repository, fileSet, (ScmVersion) null, message );
     }
 
-    /** {@inheritDoc} */
+    /**
+     * {@inheritDoc}
+     */
     public CheckInScmResult checkIn( ScmRepository repository, ScmFileSet fileSet, ScmVersion scmVersion,
                                      String message )
         throws ScmException
@@ -366,7 +406,9 @@ public abstract class AbstractScmProvide
     }
 
 
-    /** {@inheritDoc}
+    /**
+     * {@inheritDoc}
+     *
      * @deprecated
      */
     public CheckOutScmResult checkOut( ScmRepository repository, ScmFileSet fileSet, String tag )
@@ -375,7 +417,9 @@ public abstract class AbstractScmProvide
         return checkOut( repository, fileSet, tag, true );
     }
 
-    /** {@inheritDoc}
+    /**
+     * {@inheritDoc}
+     *
      * @deprecated
      */
     public CheckOutScmResult checkOut( ScmRepository repository, ScmFileSet fileSet, String tag, boolean recursive )
@@ -391,28 +435,36 @@ public abstract class AbstractScmProvide
         return checkOut( repository, fileSet, scmVersion, recursive );
     }
 
-     /** {@inheritDoc} */
+    /**
+     * {@inheritDoc}
+     */
     public CheckOutScmResult checkOut( ScmRepository repository, ScmFileSet fileSet )
         throws ScmException
     {
         return checkOut( repository, fileSet, (ScmVersion) null, true );
     }
 
-    /** {@inheritDoc} */
+    /**
+     * {@inheritDoc}
+     */
     public CheckOutScmResult checkOut( ScmRepository repository, ScmFileSet fileSet, ScmVersion scmVersion )
         throws ScmException
     {
         return checkOut( repository, fileSet, scmVersion, true );
     }
 
-    /** {@inheritDoc} */
+    /**
+     * {@inheritDoc}
+     */
     public CheckOutScmResult checkOut( ScmRepository repository, ScmFileSet fileSet, boolean recursive )
         throws ScmException
     {
         return checkOut( repository, fileSet, (ScmVersion) null, recursive );
     }
 
-    /** {@inheritDoc} */
+    /**
+     * {@inheritDoc}
+     */
     public CheckOutScmResult checkOut( ScmRepository repository, ScmFileSet fileSet, ScmVersion scmVersion,
                                        boolean recursive )
         throws ScmException
@@ -435,7 +487,9 @@ public abstract class AbstractScmProvide
         throw new NoSuchCommandScmException( "checkout" );
     }
 
-    /** {@inheritDoc}
+    /**
+     * {@inheritDoc}
+     *
      * @deprecated
      */
     public DiffScmResult diff( ScmRepository repository, ScmFileSet fileSet, String startRevision, String endRevision )
@@ -457,7 +511,9 @@ public abstract class AbstractScmProvide
         return diff( repository, fileSet, startVersion, endVersion );
     }
 
-    /** {@inheritDoc} */
+    /**
+     * {@inheritDoc}
+     */
     public DiffScmResult diff( ScmRepository repository, ScmFileSet fileSet, ScmVersion startVersion,
                                ScmVersion endVersion )
         throws ScmException
@@ -479,7 +535,9 @@ public abstract class AbstractScmProvide
         throw new NoSuchCommandScmException( "diff" );
     }
 
-    /** {@inheritDoc} */
+    /**
+     * {@inheritDoc}
+     */
     public EditScmResult edit( ScmRepository repository, ScmFileSet fileSet )
         throws ScmException
     {
@@ -501,7 +559,9 @@ public abstract class AbstractScmProvide
         return new EditScmResult( "", null, null, true );
     }
 
-    /** {@inheritDoc}
+    /**
+     * {@inheritDoc}
+     *
      * @deprecated
      */
     public ExportScmResult export( ScmRepository repository, ScmFileSet fileSet, String tag )
@@ -510,7 +570,9 @@ public abstract class AbstractScmProvide
         return export( repository, fileSet, tag, null );
     }
 
-    /** {@inheritDoc}
+    /**
+     * {@inheritDoc}
+     *
      * @deprecated
      */
     public ExportScmResult export( ScmRepository repository, ScmFileSet fileSet, String tag, String outputDirectory )
@@ -526,21 +588,27 @@ public abstract class AbstractScmProvide
         return export( repository, fileSet, scmVersion, outputDirectory );
     }
 
-    /** {@inheritDoc} */
+    /**
+     * {@inheritDoc}
+     */
     public ExportScmResult export( ScmRepository repository, ScmFileSet fileSet )
         throws ScmException
     {
         return export( repository, fileSet, (ScmVersion) null, null );
     }
 
-    /** {@inheritDoc} */
+    /**
+     * {@inheritDoc}
+     */
     public ExportScmResult export( ScmRepository repository, ScmFileSet fileSet, ScmVersion scmVersion )
         throws ScmException
     {
         return export( repository, fileSet, scmVersion, null );
     }
 
-    /** {@inheritDoc} */
+    /**
+     * {@inheritDoc}
+     */
     public ExportScmResult export( ScmRepository repository, ScmFileSet fileSet, ScmVersion scmVersion,
                                    String outputDirectory )
         throws ScmException
@@ -563,7 +631,9 @@ public abstract class AbstractScmProvide
         throw new NoSuchCommandScmException( "export" );
     }
 
-    /** {@inheritDoc} */
+    /**
+     * {@inheritDoc}
+     */
     public ListScmResult list( ScmRepository repository, ScmFileSet fileSet, boolean recursive, String tag )
         throws ScmException
     {
@@ -577,7 +647,9 @@ public abstract class AbstractScmProvide
         return list( repository, fileSet, recursive, scmVersion );
     }
 
-    /** {@inheritDoc} */
+    /**
+     * {@inheritDoc}
+     */
     public ListScmResult list( ScmRepository repository, ScmFileSet fileSet, boolean recursive, ScmVersion scmVersion )
         throws ScmException
     {
@@ -603,7 +675,7 @@ public abstract class AbstractScmProvide
      * @param parameters
      * @return The list of files in the repository
      * @throws NoSuchCommandScmException unless overriden by subclass
-     * @throws ScmException if any
+     * @throws ScmException              if any
      */
     protected ListScmResult list( ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters )
         throws ScmException
@@ -611,25 +683,27 @@ public abstract class AbstractScmProvide
         throw new NoSuchCommandScmException( "list" );
     }
 
-    /** {@inheritDoc} */
+    /**
+     * {@inheritDoc}
+     */
     public MkdirScmResult mkdir( ScmRepository repository, ScmFileSet fileSet, String message, boolean createInLocal )
         throws ScmException
     {
         login( repository, fileSet );
 
         CommandParameters parameters = new CommandParameters();
-                
-        if( message == null )
+
+        if ( message == null )
         {
             message = "";
-            if( !createInLocal )
+            if ( !createInLocal )
             {
                 getLogger().warn( "Commit message is empty!" );
             }
         }
-        
+
         parameters.setString( CommandParameter.MESSAGE, message );
-        
+
         parameters.setString( CommandParameter.SCM_MKDIR_CREATE_IN_LOCAL, Boolean.toString( createInLocal ) );
 
         return mkdir( repository.getProviderRepository(), fileSet, parameters );
@@ -637,7 +711,7 @@ public abstract class AbstractScmProvide
 
     /**
      * Create directory/directories in the repository.
-     * 
+     *
      * @param repository
      * @param fileSet
      * @param parameters
@@ -649,7 +723,7 @@ public abstract class AbstractScmProvide
     {
         throw new NoSuchCommandScmException( "mkdir" );
     }
-    
+
     private void login( ScmRepository repository, ScmFileSet fileSet )
         throws ScmException
     {
@@ -667,7 +741,9 @@ public abstract class AbstractScmProvide
         return new LoginScmResult( null, null, null, true );
     }
 
-    /** {@inheritDoc} */
+    /**
+     * {@inheritDoc}
+     */
     public RemoveScmResult remove( ScmRepository repository, ScmFileSet fileSet, String message )
         throws ScmException
     {
@@ -687,7 +763,9 @@ public abstract class AbstractScmProvide
         throw new NoSuchCommandScmException( "remove" );
     }
 
-    /** {@inheritDoc} */
+    /**
+     * {@inheritDoc}
+     */
     public StatusScmResult status( ScmRepository repository, ScmFileSet fileSet )
         throws ScmException
     {
@@ -705,14 +783,18 @@ public abstract class AbstractScmProvide
         throw new NoSuchCommandScmException( "status" );
     }
 
-    /** {@inheritDoc} */
+    /**
+     * {@inheritDoc}
+     */
     public TagScmResult tag( ScmRepository repository, ScmFileSet fileSet, String tagName )
         throws ScmException
     {
         return tag( repository, fileSet, tagName, new ScmTagParameters() );
     }
 
-    /** {@inheritDoc} */
+    /**
+     * {@inheritDoc}
+     */
     public TagScmResult tag( ScmRepository repository, ScmFileSet fileSet, String tagName, String message )
         throws ScmException
     {
@@ -727,15 +809,18 @@ public abstract class AbstractScmProvide
             parameters.setString( CommandParameter.MESSAGE, message );
         }
 
-        ScmTagParameters scmTagParameters =  new ScmTagParameters(message); 
-        
+        ScmTagParameters scmTagParameters = new ScmTagParameters( message );
+
         parameters.setScmTagParameters( CommandParameter.SCM_TAG_PARAMETERS, scmTagParameters );
-        
-        return tag( repository.getProviderRepository(), fileSet, parameters);
+
+        return tag( repository.getProviderRepository(), fileSet, parameters );
     }
-    
-    /** {@inheritDoc} */
-    public TagScmResult tag( ScmRepository repository, ScmFileSet fileSet, String tagName, ScmTagParameters scmTagParameters )
+
+    /**
+     * {@inheritDoc}
+     */
+    public TagScmResult tag( ScmRepository repository, ScmFileSet fileSet, String tagName,
+                             ScmTagParameters scmTagParameters )
         throws ScmException
     {
         login( repository, fileSet );
@@ -747,7 +832,7 @@ public abstract class AbstractScmProvide
         parameters.setScmTagParameters( CommandParameter.SCM_TAG_PARAMETERS, scmTagParameters );
 
         return tag( repository.getProviderRepository(), fileSet, parameters );
-    }    
+    }
 
     protected TagScmResult tag( ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters )
         throws ScmException
@@ -755,7 +840,9 @@ public abstract class AbstractScmProvide
         throw new NoSuchCommandScmException( "tag" );
     }
 
-    /** {@inheritDoc} */
+    /**
+     * {@inheritDoc}
+     */
     public UnEditScmResult unedit( ScmRepository repository, ScmFileSet fileSet )
         throws ScmException
     {
@@ -778,7 +865,9 @@ public abstract class AbstractScmProvide
         return new UnEditScmResult( "", null, null, true );
     }
 
-    /** {@inheritDoc}
+    /**
+     * {@inheritDoc}
+     *
      * @deprecated
      */
     public UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, String tag )
@@ -787,7 +876,9 @@ public abstract class AbstractScmProvide
         return update( repository, fileSet, tag, true );
     }
 
-    /** {@inheritDoc}
+    /**
+     * {@inheritDoc}
+     *
      * @deprecated
      */
     public UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, String tag, boolean runChangelog )
@@ -796,28 +887,36 @@ public abstract class AbstractScmProvide
         return update( repository, fileSet, tag, "", runChangelog );
     }
 
-    /** {@inheritDoc} */
+    /**
+     * {@inheritDoc}
+     */
     public UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet )
         throws ScmException
     {
         return update( repository, fileSet, (ScmVersion) null, true );
     }
 
-    /** {@inheritDoc} */
+    /**
+     * {@inheritDoc}
+     */
     public UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, ScmVersion scmVersion )
         throws ScmException
     {
         return update( repository, fileSet, scmVersion, true );
     }
 
-    /** {@inheritDoc} */
+    /**
+     * {@inheritDoc}
+     */
     public UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, boolean runChangelog )
         throws ScmException
     {
         return update( repository, fileSet, (ScmVersion) null, "", runChangelog );
     }
 
-    /** {@inheritDoc} */
+    /**
+     * {@inheritDoc}
+     */
     public UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, ScmVersion scmVersion,
                                    boolean runChangelog )
         throws ScmException
@@ -825,7 +924,9 @@ public abstract class AbstractScmProvide
         return update( repository, fileSet, scmVersion, "", runChangelog );
     }
 
-    /** {@inheritDoc}
+    /**
+     * {@inheritDoc}
+     *
      * @deprecated
      */
     public UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, String tag, String datePattern )
@@ -834,7 +935,9 @@ public abstract class AbstractScmProvide
         return update( repository, fileSet, tag, datePattern, true );
     }
 
-    /** {@inheritDoc} */
+    /**
+     * {@inheritDoc}
+     */
     public UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, ScmVersion scmVersion,
                                    String datePattern )
         throws ScmException
@@ -876,7 +979,9 @@ public abstract class AbstractScmProvide
         return update( repository.getProviderRepository(), fileSet, parameters );
     }
 
-    /** {@inheritDoc}
+    /**
+     * {@inheritDoc}
+     *
      * @deprecated
      */
     public UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, String tag, Date lastUpdate )
@@ -885,14 +990,19 @@ public abstract class AbstractScmProvide
         return update( repository, fileSet, tag, lastUpdate, null );
     }
 
-    /** {@inheritDoc} */
+    /**
+     * {@inheritDoc}
+     */
     public UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, ScmVersion scmVersion,
                                    Date lastUpdate )
         throws ScmException
     {
         return update( repository, fileSet, scmVersion, lastUpdate, null );
     }
-    /** {@inheritDoc}
+
+    /**
+     * {@inheritDoc}
+     *
      * @deprecated
      */
     public UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, String tag, Date lastUpdate,
@@ -909,7 +1019,9 @@ public abstract class AbstractScmProvide
         return update( repository, fileSet, scmBranch, lastUpdate, datePattern );
     }
 
-    /** {@inheritDoc} */
+    /**
+     * {@inheritDoc}
+     */
     public UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, ScmVersion scmVersion, Date lastUpdate,
                                    String datePattern )
         throws ScmException
@@ -939,7 +1051,9 @@ public abstract class AbstractScmProvide
         throw new NoSuchCommandScmException( "update" );
     }
 
-    /** {@inheritDoc} */
+    /**
+     * {@inheritDoc}
+     */
     public BlameScmResult blame( ScmRepository repository, ScmFileSet fileSet, String filename )
         throws ScmException
     {
@@ -947,29 +1061,37 @@ public abstract class AbstractScmProvide
 
         CommandParameters parameters = new CommandParameters();
 
-        parameters.setString( CommandParameter.FILE, filename);
-        
+        parameters.setString( CommandParameter.FILE, filename );
+
         return blame( repository.getProviderRepository(), fileSet, parameters );
     }
 
-    protected BlameScmResult blame( ScmProviderRepository repository, ScmFileSet fileSet,
-                                    CommandParameters parameters )
+    protected BlameScmResult blame( ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters )
         throws ScmException
     {
         throw new NoSuchCommandScmException( "blame" );
     }
-    
+
     public InfoScmResult info( ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters )
         throws ScmException
     {
         return null;
     }
 
+    public RemoteInfoScmResult remoteInfo( ScmProviderRepository repository, ScmFileSet fileSet,
+                                           CommandParameters parameters )
+        throws ScmException
+    {
+        return null;
+    }
+
     // ----------------------------------------------------------------------
     //
     // ----------------------------------------------------------------------
 
-    /** {@inheritDoc} */
+    /**
+     * {@inheritDoc}
+     */
     public void addListener( ScmLogger logger )
     {
         logDispatcher.addListener( logger );
@@ -980,7 +1102,9 @@ public abstract class AbstractScmProvide
         return logDispatcher;
     }
 
-    /** {@inheritDoc} */
+    /**
+     * {@inheritDoc}
+     */
     public ScmProviderRepository makeProviderScmRepository( File path )
         throws ScmRepositoryException, UnknownRepositoryStructure
     {

Modified: maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/provider/ScmProvider.java
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/provider/ScmProvider.java?rev=1203448&r1=1203447&r2=1203448&view=diff
==============================================================================
--- maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/provider/ScmProvider.java (original)
+++ maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/provider/ScmProvider.java Fri Nov 18 00:47:08 2011
@@ -38,6 +38,7 @@ import org.apache.maven.scm.command.expo
 import org.apache.maven.scm.command.info.InfoScmResult;
 import org.apache.maven.scm.command.list.ListScmResult;
 import org.apache.maven.scm.command.mkdir.MkdirScmResult;
+import org.apache.maven.scm.command.remoteinfo.RemoteInfoScmResult;
 import org.apache.maven.scm.command.remove.RemoveScmResult;
 import org.apache.maven.scm.command.status.StatusScmResult;
 import org.apache.maven.scm.command.tag.TagScmResult;
@@ -139,9 +140,9 @@ public interface ScmProvider
      * @param fileSet    the files to branch. Implementations can also give the changes
      *                   from the {@link org.apache.maven.scm.ScmFileSet#getBasedir()} downwards.
      * @param branchName the branch name to apply to the files
-     * @deprecated use {@link #branch(ScmRepository, ScmFileSet, String, String, ScmBranchParameters)}
      * @return
      * @throws ScmException if any
+     * @deprecated use {@link #branch(ScmRepository, ScmFileSet, String, String, ScmBranchParameters)}
      */
     BranchScmResult branch( ScmRepository repository, ScmFileSet fileSet, String branchName )
         throws ScmException;
@@ -154,9 +155,9 @@ public interface ScmProvider
      *                   from the {@link org.apache.maven.scm.ScmFileSet#getBasedir()} downwards.
      * @param branchName the branch name to apply to the files
      * @param message    the commit message used for the tag creation
-     * @deprecated use {@link #branch(ScmRepository, ScmFileSet, String, String, ScmBranchParameters)}
      * @return
      * @throws ScmException if any
+     * @deprecated use {@link #branch(ScmRepository, ScmFileSet, String, String, ScmBranchParameters)}
      */
     BranchScmResult branch( ScmRepository repository, ScmFileSet fileSet, String branchName, String message )
         throws ScmException;
@@ -166,15 +167,16 @@ public interface ScmProvider
      * branch name
      *
      * @param repository the source control system
-     * @param fileSet the files to branch. Implementations can also give the changes from the
-     *            {@link org.apache.maven.scm.ScmFileSet#getBasedir()} downwards.
+     * @param fileSet    the files to branch. Implementations can also give the changes from the
+     *                   {@link org.apache.maven.scm.ScmFileSet#getBasedir()} downwards.
      * @param branchName the branch name to apply to the files
-     * @param message the commit message used for the tag creation
-     * @since 1.3
+     * @param message    the commit message used for the tag creation
      * @return
      * @throws ScmException if any
+     * @since 1.3
      */
-    BranchScmResult branch( ScmRepository repository, ScmFileSet fileSet, String branchName, ScmBranchParameters scmBranchParameters )
+    BranchScmResult branch( ScmRepository repository, ScmFileSet fileSet, String branchName,
+                            ScmBranchParameters scmBranchParameters )
         throws ScmException;
 
     /**
@@ -191,7 +193,7 @@ public interface ScmProvider
      * @return The SCM result of the changelog command
      * @throws ScmException if any
      * @deprecated you must use {@link ScmProvider#changeLog(org.apache.maven.scm.repository.ScmRepository,
-     * org.apache.maven.scm.ScmFileSet,java.util.Date,java.util.Date,int,org.apache.maven.scm.ScmBranch)}
+     *             org.apache.maven.scm.ScmFileSet, java.util.Date, java.util.Date, int, org.apache.maven.scm.ScmBranch)}
      */
     ChangeLogScmResult changeLog( ScmRepository repository, ScmFileSet fileSet, Date startDate, Date endDate,
                                   int numDays, String branch )
@@ -230,7 +232,7 @@ public interface ScmProvider
      * @return The SCM result of the changelog command
      * @throws ScmException if any
      * @deprecated you must use {@link ScmProvider#changeLog(org.apache.maven.scm.repository.ScmRepository,
-     * org.apache.maven.scm.ScmFileSet,java.util.Date,java.util.Date,int,org.apache.maven.scm.ScmBranch,String)}
+     *             org.apache.maven.scm.ScmFileSet, java.util.Date, java.util.Date, int, org.apache.maven.scm.ScmBranch, String)}
      */
     ChangeLogScmResult changeLog( ScmRepository repository, ScmFileSet fileSet, Date startDate, Date endDate,
                                   int numDays, String branch, String datePattern )
@@ -267,7 +269,7 @@ public interface ScmProvider
      * @return The SCM result of the changelog command
      * @throws ScmException if any
      * @deprecated you must use {@link ScmProvider#changeLog(org.apache.maven.scm.repository.ScmRepository,
-     * org.apache.maven.scm.ScmFileSet,org.apache.maven.scm.ScmVersion,org.apache.maven.scm.ScmVersion)}
+     *             org.apache.maven.scm.ScmFileSet, org.apache.maven.scm.ScmVersion, org.apache.maven.scm.ScmVersion)}
      */
     ChangeLogScmResult changeLog( ScmRepository repository, ScmFileSet fileSet, String startTag, String endTag )
         throws ScmException;
@@ -301,7 +303,7 @@ public interface ScmProvider
      * @return
      * @throws ScmException if any
      * @deprecated you must use {@link ScmProvider#changeLog(org.apache.maven.scm.repository.ScmRepository,
-     * org.apache.maven.scm.ScmFileSet,org.apache.maven.scm.ScmVersion,org.apache.maven.scm.ScmVersion,String)}
+     *             org.apache.maven.scm.ScmFileSet, org.apache.maven.scm.ScmVersion, org.apache.maven.scm.ScmVersion, String)}
      */
     ChangeLogScmResult changeLog( ScmRepository repository, ScmFileSet fileSet, String startTag, String endTag,
                                   String datePattern )
@@ -339,7 +341,7 @@ public interface ScmProvider
      * @return
      * @throws ScmException if any
      * @deprecated you must use {@link ScmProvider#checkIn(org.apache.maven.scm.repository.ScmRepository,
-     * org.apache.maven.scm.ScmFileSet,org.apache.maven.scm.ScmVersion,String)}
+     *             org.apache.maven.scm.ScmFileSet, org.apache.maven.scm.ScmVersion, String)}
      */
     CheckInScmResult checkIn( ScmRepository repository, ScmFileSet fileSet, String tag, String message )
         throws ScmException;
@@ -388,7 +390,7 @@ public interface ScmProvider
      * @return
      * @throws ScmException if any
      * @deprecated you must use {@link ScmProvider#checkOut(org.apache.maven.scm.repository.ScmRepository,
-     * org.apache.maven.scm.ScmFileSet,org.apache.maven.scm.ScmVersion)}
+     *             org.apache.maven.scm.ScmFileSet, org.apache.maven.scm.ScmVersion)}
      */
     CheckOutScmResult checkOut( ScmRepository repository, ScmFileSet fileSet, String tag )
         throws ScmException;
@@ -426,7 +428,7 @@ public interface ScmProvider
      * @return
      * @throws ScmException if any
      * @deprecated you must use {@link ScmProvider#checkOut(org.apache.maven.scm.repository.ScmRepository,
-     * org.apache.maven.scm.ScmFileSet,org.apache.maven.scm.ScmVersion,boolean)}
+     *             org.apache.maven.scm.ScmFileSet, org.apache.maven.scm.ScmVersion, boolean)}
      */
     CheckOutScmResult checkOut( ScmRepository scmRepository, ScmFileSet scmFileSet, String tag, boolean recursive )
         throws ScmException;
@@ -467,7 +469,7 @@ public interface ScmProvider
      * @return
      * @throws ScmException if any
      * @deprecated you must use {@link ScmProvider#diff(org.apache.maven.scm.repository.ScmRepository,
-     * org.apache.maven.scm.ScmFileSet,org.apache.maven.scm.ScmVersion,org.apache.maven.scm.ScmVersion)}
+     *             org.apache.maven.scm.ScmFileSet, org.apache.maven.scm.ScmVersion, org.apache.maven.scm.ScmVersion)}
      */
     DiffScmResult diff( ScmRepository scmRepository, ScmFileSet scmFileSet, String startRevision, String endRevision )
         throws ScmException;
@@ -495,7 +497,7 @@ public interface ScmProvider
      * @return
      * @throws ScmException if any
      * @deprecated you must use {@link ScmProvider#export(org.apache.maven.scm.repository.ScmRepository,
-     * org.apache.maven.scm.ScmFileSet,org.apache.maven.scm.ScmVersion)}
+     *             org.apache.maven.scm.ScmFileSet, org.apache.maven.scm.ScmVersion)}
      */
     ExportScmResult export( ScmRepository repository, ScmFileSet fileSet, String tag )
         throws ScmException;
@@ -533,7 +535,7 @@ public interface ScmProvider
      * @return
      * @throws ScmException if any
      * @deprecated you must use {@link ScmProvider#export(org.apache.maven.scm.repository.ScmRepository,
-     * org.apache.maven.scm.ScmFileSet,org.apache.maven.scm.ScmVersion,String)}
+     *             org.apache.maven.scm.ScmFileSet, org.apache.maven.scm.ScmVersion, String)}
      */
     ExportScmResult export( ScmRepository repository, ScmFileSet fileSet, String tag, String outputDirectory )
         throws ScmException;
@@ -583,9 +585,9 @@ public interface ScmProvider
      * @param fileSet    the files to tag. Implementations can also give the changes
      *                   from the {@link org.apache.maven.scm.ScmFileSet#getBasedir()} downwards.
      * @param tagName    the tag name to apply to the files
-     * @deprecated use {@link #tag(ScmRepository, ScmFileSet, String, ScmTagParameters)}
      * @return
      * @throws ScmException if any
+     * @deprecated use {@link #tag(ScmRepository, ScmFileSet, String, ScmTagParameters)}
      */
     TagScmResult tag( ScmRepository repository, ScmFileSet fileSet, String tagName )
         throws ScmException;
@@ -598,9 +600,9 @@ public interface ScmProvider
      *                   from the {@link org.apache.maven.scm.ScmFileSet#getBasedir()} downwards.
      * @param tagName    the tag name to apply to the files
      * @param message    the commit message used for the tag creation
-     * @deprecated use {@link #tag(ScmRepository, ScmFileSet, String, ScmTagParameters)}
      * @return
      * @throws ScmException if any
+     * @deprecated use {@link #tag(ScmRepository, ScmFileSet, String, ScmTagParameters)}
      */
     TagScmResult tag( ScmRepository repository, ScmFileSet fileSet, String tagName, String message )
         throws ScmException;
@@ -608,14 +610,14 @@ public interface ScmProvider
     /**
      * Tag (or label in some systems) will tag the source file with a certain tag
      *
-     * @param repository         the source control system
-     * @param fileSet            the files to tag. Implementations can also give the changes
-     *                           from the {@link org.apache.maven.scm.ScmFileSet#getBasedir()} downwards.
-     * @param tagName            the tag name to apply to the files
-     * @param scmTagParameters   bean to pass some paramters for tagging {@link ScmTagParameters}
+     * @param repository       the source control system
+     * @param fileSet          the files to tag. Implementations can also give the changes
+     *                         from the {@link org.apache.maven.scm.ScmFileSet#getBasedir()} downwards.
+     * @param tagName          the tag name to apply to the files
+     * @param scmTagParameters bean to pass some paramters for tagging {@link ScmTagParameters}
      * @return
-     * @since 1.2
      * @throws ScmException if any
+     * @since 1.2
      */
     TagScmResult tag( ScmRepository repository, ScmFileSet fileSet, String tagName, ScmTagParameters scmTagParameters )
         throws ScmException;
@@ -640,7 +642,7 @@ public interface ScmProvider
      * @return
      * @throws ScmException if any
      * @deprecated you must use {@link ScmProvider#update(org.apache.maven.scm.repository.ScmRepository,
-     * org.apache.maven.scm.ScmFileSet,org.apache.maven.scm.ScmVersion)}
+     *             org.apache.maven.scm.ScmFileSet, org.apache.maven.scm.ScmVersion)}
      */
     UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, String tag )
         throws ScmException;
@@ -667,7 +669,7 @@ public interface ScmProvider
      * @return
      * @throws ScmException if any
      * @deprecated you must use {@link ScmProvider#update(org.apache.maven.scm.repository.ScmRepository,
-     * org.apache.maven.scm.ScmFileSet,org.apache.maven.scm.ScmVersion,boolean)}
+     *             org.apache.maven.scm.ScmFileSet, org.apache.maven.scm.ScmVersion, boolean)}
      */
     UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, String tag, boolean runChangelog )
         throws ScmException;
@@ -707,7 +709,7 @@ public interface ScmProvider
      * @return
      * @throws ScmException if any
      * @deprecated you must use {@link ScmProvider#update(org.apache.maven.scm.repository.ScmRepository,
-     * org.apache.maven.scm.ScmFileSet,org.apache.maven.scm.ScmVersion,String)}
+     *             org.apache.maven.scm.ScmFileSet, org.apache.maven.scm.ScmVersion, String)}
      */
     UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, String tag, String datePattern )
         throws ScmException;
@@ -735,7 +737,7 @@ public interface ScmProvider
      * @return
      * @throws ScmException if any
      * @deprecated you must use {@link ScmProvider#update(org.apache.maven.scm.repository.ScmRepository,
-     * org.apache.maven.scm.ScmFileSet,org.apache.maven.scm.ScmVersion,java.util.Date)}
+     *             org.apache.maven.scm.ScmFileSet, org.apache.maven.scm.ScmVersion, java.util.Date)}
      */
     UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, String tag, Date lastUpdate )
         throws ScmException;
@@ -764,7 +766,7 @@ public interface ScmProvider
      * @return
      * @throws ScmException if any
      * @deprecated you must use {@link ScmProvider#update(org.apache.maven.scm.repository.ScmRepository,
-     * org.apache.maven.scm.ScmFileSet,org.apache.maven.scm.ScmVersion,java.util.Date,String)}
+     *             org.apache.maven.scm.ScmFileSet, org.apache.maven.scm.ScmVersion, java.util.Date, String)}
      */
     UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, String tag, Date lastUpdate,
                             String datePattern )
@@ -800,7 +802,7 @@ public interface ScmProvider
 
     /**
      * Make a file no longer editable. This is the conterpart of {@link #edit(
-     * org.apache.maven.scm.repository.ScmRepository,org.apache.maven.scm.ScmFileSet)}.
+     *org.apache.maven.scm.repository.ScmRepository, org.apache.maven.scm.ScmFileSet)}.
      * It makes the file read-only again.
      *
      * @param repository the source control system
@@ -820,7 +822,7 @@ public interface ScmProvider
      * @param tag        use the version defined by the tag
      * @return the list of files in the repository
      * @deprecated you must use {@link ScmProvider#list(org.apache.maven.scm.repository.ScmRepository,
-     * org.apache.maven.scm.ScmFileSet,boolean,org.apache.maven.scm.ScmVersion)}
+     *             org.apache.maven.scm.ScmFileSet, boolean, org.apache.maven.scm.ScmVersion)}
      */
     ListScmResult list( ScmRepository repository, ScmFileSet fileSet, boolean recursive, String tag )
         throws ScmException;
@@ -844,16 +846,16 @@ public interface ScmProvider
      * @param repository the source control system
      * @param fileSet    location of your local copy
      * @param filename   file
-     * @since 1.4
      * @return blame for specified file
      * @throws ScmException
+     * @since 1.4
      */
     BlameScmResult blame( ScmRepository repository, ScmFileSet fileSet, String filename )
         throws ScmException;
-    
+
     /**
      * Create directory/directories in the repository.
-     * 
+     *
      * @param repository
      * @param fileSet
      * @param createInLocal
@@ -863,15 +865,27 @@ public interface ScmProvider
      */
     MkdirScmResult mkdir( ScmRepository repository, ScmFileSet fileSet, String message, boolean createInLocal )
         throws ScmException;
-    
+
     /**
-     * @param repository the source control system 
+     * @param repository the source control system
      * @param fileSet    location of your local copy
      * @param parameters some parameters (not use currently but for future use)
-     * @since 1.5 
-     * @return if the scm implementation doesn't support "info" result will <code>null</code> 
+     * @return if the scm implementation doesn't support "info" result will <code>null</code>
      * @throws ScmException
+     * @since 1.5
      */
     InfoScmResult info( ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters )
         throws ScmException;
+
+    /**
+     *
+     * @param repository the source control system
+     * @param fileSet    not use currently but for future use
+     * @param parameters some parameters (not use currently but for future use)
+     * @return if the scm implementation doesn't support "info" result will <code>null</code>
+     * @throws ScmException
+     * @since 1.6
+     */
+    RemoteInfoScmResult remoteInfo( ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters )
+        throws ScmException;
 }

Modified: maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/pom.xml
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/pom.xml?rev=1203448&r1=1203447&r2=1203448&view=diff
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/pom.xml (original)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/pom.xml Fri Nov 18 00:47:08 2011
@@ -42,6 +42,10 @@
       <groupId>regexp</groupId>
       <artifactId>regexp</artifactId>
     </dependency>
+    <dependency>
+      <groupId>commons-lang</groupId>
+      <artifactId>commons-lang</artifactId>
+    </dependency>
 
     <!-- Test -->
     <dependency>

Modified: maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/SvnExeScmProvider.java
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/SvnExeScmProvider.java?rev=1203448&r1=1203447&r2=1203448&view=diff
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/SvnExeScmProvider.java (original)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/SvnExeScmProvider.java Fri Nov 18 00:47:08 2011
@@ -19,11 +19,12 @@ package org.apache.maven.scm.provider.sv
  * under the License.
  */
 
-import java.io.File;
-
+import org.apache.maven.scm.CommandParameters;
 import org.apache.maven.scm.ScmException;
 import org.apache.maven.scm.ScmFileSet;
 import org.apache.maven.scm.command.info.InfoScmResult;
+import org.apache.maven.scm.command.remoteinfo.RemoteInfoScmResult;
+import org.apache.maven.scm.provider.ScmProviderRepository;
 import org.apache.maven.scm.provider.svn.AbstractSvnScmProvider;
 import org.apache.maven.scm.provider.svn.command.SvnCommand;
 import org.apache.maven.scm.provider.svn.svnexe.command.add.SvnAddCommand;
@@ -37,12 +38,15 @@ import org.apache.maven.scm.provider.svn
 import org.apache.maven.scm.provider.svn.svnexe.command.info.SvnInfoCommand;
 import org.apache.maven.scm.provider.svn.svnexe.command.list.SvnListCommand;
 import org.apache.maven.scm.provider.svn.svnexe.command.mkdir.SvnMkdirCommand;
+import org.apache.maven.scm.provider.svn.svnexe.command.remoteinfo.SvnRemoteInfoCommand;
 import org.apache.maven.scm.provider.svn.svnexe.command.remove.SvnRemoveCommand;
 import org.apache.maven.scm.provider.svn.svnexe.command.status.SvnStatusCommand;
 import org.apache.maven.scm.provider.svn.svnexe.command.tag.SvnTagCommand;
 import org.apache.maven.scm.provider.svn.svnexe.command.update.SvnUpdateCommand;
 import org.apache.maven.scm.repository.ScmRepositoryException;
 
+import java.io.File;
+
 /**
  * @author <a href="mailto:evenisse@apache.org">Emmanuel Venisse</a>
  * @version $Id$
@@ -51,73 +55,97 @@ import org.apache.maven.scm.repository.S
 public class SvnExeScmProvider
     extends AbstractSvnScmProvider
 {
-    /** {@inheritDoc} */
+    /**
+     * {@inheritDoc}
+     */
     protected SvnCommand getAddCommand()
     {
         return new SvnAddCommand();
     }
 
-    /** {@inheritDoc} */
+    /**
+     * {@inheritDoc}
+     */
     protected SvnCommand getBranchCommand()
     {
         return new SvnBranchCommand();
     }
 
-    /** {@inheritDoc} */
+    /**
+     * {@inheritDoc}
+     */
     protected SvnCommand getChangeLogCommand()
     {
         return new SvnChangeLogCommand();
     }
 
-    /** {@inheritDoc} */
+    /**
+     * {@inheritDoc}
+     */
     protected SvnCommand getCheckInCommand()
     {
         return new SvnCheckInCommand();
     }
 
-    /** {@inheritDoc} */
+    /**
+     * {@inheritDoc}
+     */
     protected SvnCommand getCheckOutCommand()
     {
         return new SvnCheckOutCommand();
     }
 
-    /** {@inheritDoc} */
+    /**
+     * {@inheritDoc}
+     */
     protected SvnCommand getDiffCommand()
     {
         return new SvnDiffCommand();
     }
 
-    /** {@inheritDoc} */
+    /**
+     * {@inheritDoc}
+     */
     protected SvnCommand getExportCommand()
     {
         return new SvnExeExportCommand();
     }
 
-    /** {@inheritDoc} */
+    /**
+     * {@inheritDoc}
+     */
     protected SvnCommand getRemoveCommand()
     {
         return new SvnRemoveCommand();
     }
 
-    /** {@inheritDoc} */
+    /**
+     * {@inheritDoc}
+     */
     protected SvnCommand getStatusCommand()
     {
         return new SvnStatusCommand();
     }
 
-    /** {@inheritDoc} */
+    /**
+     * {@inheritDoc}
+     */
     protected SvnCommand getTagCommand()
     {
         return new SvnTagCommand();
     }
 
-    /** {@inheritDoc} */
+    /**
+     * {@inheritDoc}
+     */
     protected SvnCommand getUpdateCommand()
     {
         return new SvnUpdateCommand();
     }
 
-    /** {@inheritDoc} */
+    /**
+     * {@inheritDoc}
+     */
     protected SvnCommand getListCommand()
     {
         return new SvnListCommand();
@@ -128,19 +156,25 @@ public class SvnExeScmProvider
         return new SvnInfoCommand();
     }
 
-    /** {@inheritDoc} */
+    /**
+     * {@inheritDoc}
+     */
     protected SvnCommand getBlameCommand()
     {
         return new SvnBlameCommand();
     }
-    
-    /** {@inheritDoc} */
+
+    /**
+     * {@inheritDoc}
+     */
     protected SvnCommand getMkdirCommand()
-    {   
+    {
         return new SvnMkdirCommand();
     }
 
-    /** {@inheritDoc} */
+    /**
+     * {@inheritDoc}
+     */
     protected String getRepositoryURL( File path )
         throws ScmException
     {
@@ -150,10 +184,20 @@ public class SvnExeScmProvider
 
         if ( result.getInfoItems().size() != 1 )
         {
-            throw new ScmRepositoryException( "Cannot find URL: "
-                + ( result.getInfoItems().size() == 0 ? "no" : "multiple" ) + " items returned by the info command" );
+            throw new ScmRepositoryException(
+                "Cannot find URL: " + ( result.getInfoItems().size() == 0 ? "no" : "multiple" )
+                    + " items returned by the info command" );
         }
 
         return result.getInfoItems().get( 0 ).getURL();
-    }    
+    }
+
+    @Override
+    public RemoteInfoScmResult remoteInfo( ScmProviderRepository repository, ScmFileSet fileSet,
+                                           CommandParameters parameters )
+        throws ScmException
+    {
+        SvnRemoteInfoCommand svnRemoteInfoCommand = new SvnRemoteInfoCommand();
+        return svnRemoteInfoCommand.executeRemoteInfoCommand( repository, fileSet, parameters );
+    }
 }

Added: maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/remoteinfo/SvnRemoteInfoCommand.java
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/remoteinfo/SvnRemoteInfoCommand.java?rev=1203448&view=auto
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/remoteinfo/SvnRemoteInfoCommand.java (added)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/remoteinfo/SvnRemoteInfoCommand.java Fri Nov 18 00:47:08 2011
@@ -0,0 +1,148 @@
+package org.apache.maven.scm.provider.svn.svnexe.command.remoteinfo;
+/*
+ * 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.commons.lang.StringUtils;
+import org.apache.maven.scm.CommandParameters;
+import org.apache.maven.scm.ScmException;
+import org.apache.maven.scm.ScmFileSet;
+import org.apache.maven.scm.command.remoteinfo.AbstractRemoteInfoCommand;
+import org.apache.maven.scm.command.remoteinfo.RemoteInfoScmResult;
+import org.apache.maven.scm.log.ScmLogger;
+import org.apache.maven.scm.provider.ScmProviderRepository;
+import org.apache.maven.scm.provider.svn.command.SvnCommand;
+import org.apache.maven.scm.provider.svn.repository.SvnScmProviderRepository;
+import org.apache.maven.scm.provider.svn.svnexe.command.SvnCommandLineUtils;
+import org.apache.maven.scm.util.AbstractConsumer;
+import org.codehaus.plexus.util.cli.CommandLineException;
+import org.codehaus.plexus.util.cli.CommandLineUtils;
+import org.codehaus.plexus.util.cli.Commandline;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * @author Olivier Lamy
+ * @since 1.6
+ */
+public class SvnRemoteInfoCommand
+    extends AbstractRemoteInfoCommand
+    implements SvnCommand
+{
+    @Override
+    public RemoteInfoScmResult executeRemoteInfoCommand( ScmProviderRepository repository, ScmFileSet fileSet,
+                                                         CommandParameters parameters )
+        throws ScmException
+    {
+
+        String url = ( (SvnScmProviderRepository) repository ).getUrl();
+        // use a default svn layout, url is here http://svn.apache.org/repos/asf/maven/maven-3/trunk
+        // so as we presume we have good users using standard svn layout, we calculate tags and branches url
+        String baseUrl = StringUtils.endsWith( url, "/" )
+            ? StringUtils.substringAfter( StringUtils.removeEnd( url, "/" ), "/" )
+            : StringUtils.substringBeforeLast( url, "/" );
+
+        Commandline cl = SvnCommandLineUtils.getBaseSvnCommandLine( fileSet == null ? null : fileSet.getBasedir(),
+                                                                    (SvnScmProviderRepository) repository );
+
+        cl.createArg().setValue( "ls" );
+
+        cl.createArg().setValue( baseUrl + "/tags" );
+
+        CommandLineUtils.StringStreamConsumer stderr = new CommandLineUtils.StringStreamConsumer();
+
+        LsConsumer consumer = new LsConsumer( getLogger(), baseUrl );
+
+        int exitCode = 0;
+
+        Map<String, String> tagsInfos = null;
+
+        try
+        {
+            exitCode = SvnCommandLineUtils.execute( cl, consumer, stderr, getLogger() );
+            tagsInfos = consumer.infos;
+
+        }
+        catch ( CommandLineException ex )
+        {
+            throw new ScmException( "Error while executing svn command.", ex );
+        }
+
+        if ( exitCode != 0 )
+        {
+            return new RemoteInfoScmResult( cl.toString(), "The svn command failed.", stderr.getOutput(), false );
+        }
+
+        cl = SvnCommandLineUtils.getBaseSvnCommandLine( fileSet == null ? null : fileSet.getBasedir(),
+                                                        (SvnScmProviderRepository) repository );
+
+        cl.createArg().setValue( "ls" );
+
+        cl.createArg().setValue( baseUrl + "/tags" );
+
+        stderr = new CommandLineUtils.StringStreamConsumer();
+
+        consumer = new LsConsumer( getLogger(), baseUrl );
+
+        Map<String, String> branchesInfos = null;
+
+        try
+        {
+            exitCode = SvnCommandLineUtils.execute( cl, consumer, stderr, getLogger() );
+            branchesInfos = consumer.infos;
+
+        }
+        catch ( CommandLineException ex )
+        {
+            throw new ScmException( "Error while executing svn command.", ex );
+        }
+
+        if ( exitCode != 0 )
+        {
+            return new RemoteInfoScmResult( cl.toString(), "The svn command failed.", stderr.getOutput(), false );
+        }
+
+        return new RemoteInfoScmResult( cl.toString(), branchesInfos, tagsInfos );
+    }
+
+
+    private static class LsConsumer
+        extends AbstractConsumer
+    {
+        Map<String, String> infos = new HashMap<String, String>();
+
+        String url;
+
+        LsConsumer( ScmLogger logger, String url )
+        {
+            super( logger );
+            this.url = url;
+        }
+
+        public void consumeLine( String s )
+        {
+            infos.put( StringUtils.removeEnd( s, "/" ), url + "/" + s );
+        }
+
+        Map<String, String> getInfos()
+        {
+            return infos;
+        }
+    }
+}

Propchange: maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/remoteinfo/SvnRemoteInfoCommand.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/command/remoteinfo/SvnRemoteInfoCommand.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Added: maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/test/java/org/apache/maven/scm/provider/svn/svnexe/command/remoteinfo/RemoteInfoCommandTest.java
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/test/java/org/apache/maven/scm/provider/svn/svnexe/command/remoteinfo/RemoteInfoCommandTest.java?rev=1203448&view=auto
==============================================================================
--- maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/test/java/org/apache/maven/scm/provider/svn/svnexe/command/remoteinfo/RemoteInfoCommandTest.java (added)
+++ maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/test/java/org/apache/maven/scm/provider/svn/svnexe/command/remoteinfo/RemoteInfoCommandTest.java Fri Nov 18 00:47:08 2011
@@ -0,0 +1,43 @@
+package org.apache.maven.scm.provider.svn.svnexe.command.remoteinfo;
+/*
+ * 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.command.remoteinfo.RemoteInfoScmResult;
+import org.apache.maven.scm.provider.ScmProvider;
+import org.apache.maven.scm.provider.svn.repository.SvnScmProviderRepository;
+import org.codehaus.plexus.PlexusTestCase;
+
+/**
+ * @author Olivier Lamy
+ */
+public class RemoteInfoCommandTest
+    extends PlexusTestCase
+{
+
+    public void testRemoteInfoCommand()
+        throws Exception
+    {
+        ScmProvider svnProvider = (ScmProvider) lookup( ScmProvider.ROLE, "svn" );
+        SvnScmProviderRepository repository =
+            new SvnScmProviderRepository( "http://svn.apache.org/repos/asf/maven/maven-3/trunk" );
+        RemoteInfoScmResult remoteInfoScmResult = svnProvider.remoteInfo( repository, null, null );
+        assertTrue( remoteInfoScmResult.getTags().keySet().contains( "maven-3.0" ) );
+        // no test on branches as can be removed
+    }
+}

Propchange: maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/test/java/org/apache/maven/scm/provider/svn/svnexe/command/remoteinfo/RemoteInfoCommandTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/scm/trunk/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/test/java/org/apache/maven/scm/provider/svn/svnexe/command/remoteinfo/RemoteInfoCommandTest.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Modified: maven/scm/trunk/maven-scm-test/src/main/java/org/apache/maven/scm/provider/ScmProviderStub.java
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-test/src/main/java/org/apache/maven/scm/provider/ScmProviderStub.java?rev=1203448&r1=1203447&r2=1203448&view=diff
==============================================================================
--- maven/scm/trunk/maven-scm-test/src/main/java/org/apache/maven/scm/provider/ScmProviderStub.java (original)
+++ maven/scm/trunk/maven-scm-test/src/main/java/org/apache/maven/scm/provider/ScmProviderStub.java Fri Nov 18 00:47:08 2011
@@ -19,12 +19,6 @@ package org.apache.maven.scm.provider;
  * under the License.
  */
 
-import java.io.File;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Date;
-import java.util.List;
-
 import org.apache.maven.scm.CommandParameters;
 import org.apache.maven.scm.ScmBranch;
 import org.apache.maven.scm.ScmBranchParameters;
@@ -45,6 +39,7 @@ import org.apache.maven.scm.command.expo
 import org.apache.maven.scm.command.info.InfoScmResult;
 import org.apache.maven.scm.command.list.ListScmResult;
 import org.apache.maven.scm.command.mkdir.MkdirScmResult;
+import org.apache.maven.scm.command.remoteinfo.RemoteInfoScmResult;
 import org.apache.maven.scm.command.remove.RemoveScmResult;
 import org.apache.maven.scm.command.status.StatusScmResult;
 import org.apache.maven.scm.command.tag.TagScmResult;
@@ -55,8 +50,14 @@ import org.apache.maven.scm.repository.S
 import org.apache.maven.scm.repository.ScmRepositoryException;
 import org.apache.maven.scm.repository.UnknownRepositoryStructure;
 
+import java.io.File;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Date;
+import java.util.List;
+
 /**
- * Stub implementation of ScmProvider for unit testing purposes. 
+ * Stub implementation of ScmProvider for unit testing purposes.
  * It allows setting the expected results that the different methods will return.
  * More information about Stubs on <a href="http://martinfowler.com/bliki/TestDouble.html">Martin Fowler's TestDouble</a>
  *
@@ -106,7 +107,7 @@ public class ScmProviderStub
     private ExportScmResult exportScmResult;
 
     private BlameScmResult blameScmResult;
-    
+
     private MkdirScmResult mkdirScmResult;
 
     /**
@@ -116,7 +117,7 @@ public class ScmProviderStub
     {
         setScmSpecificFilename( "" );
         setAddScmResult( new AddScmResult( "", Collections.<ScmFile>emptyList() ) );
-        setBranchScmResult( new BranchScmResult( "",  Collections.<ScmFile>emptyList() ) );
+        setBranchScmResult( new BranchScmResult( "", Collections.<ScmFile>emptyList() ) );
         setChangeLogScmResult( new ChangeLogScmResult( "", "", "", true ) );
         setCheckInScmResult( new CheckInScmResult( "", "", "", true ) );
         setCheckOutScmResult( new CheckOutScmResult( "", "", "", true ) );
@@ -132,19 +133,25 @@ public class ScmProviderStub
         setMkdirScmResult( new MkdirScmResult( "", "", "", true ) );
     }
 
-    /** {@inheritDoc} */
+    /**
+     * {@inheritDoc}
+     */
     public String sanitizeTagName( String tag )
     {
         return tag;
     }
 
-    /** {@inheritDoc} */
+    /**
+     * {@inheritDoc}
+     */
     public boolean validateTagName( String tag )
     {
         return true;
     }
 
-    /** {@inheritDoc} */
+    /**
+     * {@inheritDoc}
+     */
     public String getScmType()
     {
         return scmType;
@@ -155,7 +162,9 @@ public class ScmProviderStub
         this.scmSpecificFilename = scmSpecificFilename;
     }
 
-    /** {@inheritDoc} */
+    /**
+     * {@inheritDoc}
+     */
     public void addListener( ScmLogger logger )
     {
         loggers.add( logger );
@@ -306,7 +315,8 @@ public class ScmProviderStub
         return listScmResult;
     }
 
-    public void setBlameScmResult( BlameScmResult blameScmResult ) {
+    public void setBlameScmResult( BlameScmResult blameScmResult )
+    {
         this.blameScmResult = blameScmResult;
     }
 
@@ -314,7 +324,7 @@ public class ScmProviderStub
     {
         return blameScmResult;
     }
-    
+
     public MkdirScmResult getMkdirScmResult()
     {
         return mkdirScmResult;
@@ -325,68 +335,89 @@ public class ScmProviderStub
         this.mkdirScmResult = mkdirScmResult;
     }
 
-    /** {@inheritDoc} */
+    /**
+     * {@inheritDoc}
+     */
     public ScmProviderRepository makeProviderScmRepository( String scmSpecificUrl, char delimiter )
         throws ScmRepositoryException
     {
         return scmProviderRepository;
     }
 
-    /** {@inheritDoc} */
+    /**
+     * {@inheritDoc}
+     */
     public ScmProviderRepository makeProviderScmRepository( File path )
         throws ScmRepositoryException, UnknownRepositoryStructure
     {
         return scmProviderRepository;
     }
 
-    /** {@inheritDoc} */
+    /**
+     * {@inheritDoc}
+     */
     public List<String> validateScmUrl( String scmSpecificUrl, char delimiter )
     {
         return errors;
     }
 
-    /** {@inheritDoc} */
+    /**
+     * {@inheritDoc}
+     */
     public String getScmSpecificFilename()
     {
         return scmSpecificFilename;
     }
 
-    /** {@inheritDoc} */
+    /**
+     * {@inheritDoc}
+     */
     public AddScmResult add( ScmRepository repository, ScmFileSet fileSet )
         throws ScmException
     {
         return getAddScmResult();
     }
 
-    /** {@inheritDoc} */
+    /**
+     * {@inheritDoc}
+     */
     public AddScmResult add( ScmRepository repository, ScmFileSet fileSet, String message )
         throws ScmException
     {
         return getAddScmResult();
     }
 
-    /** {@inheritDoc} */
+    /**
+     * {@inheritDoc}
+     */
     public BranchScmResult branch( ScmRepository repository, ScmFileSet fileSet, String branchName )
         throws ScmException
     {
         return getBranchScmResult();
     }
 
-    /** {@inheritDoc} */
+    /**
+     * {@inheritDoc}
+     */
     public BranchScmResult branch( ScmRepository repository, ScmFileSet fileSet, String branchName, String message )
         throws ScmException
     {
         return getBranchScmResult();
     }
 
-    /** {@inheritDoc} */
-    public BranchScmResult branch( ScmRepository repository, ScmFileSet fileSet, String branchName, ScmBranchParameters scmBranchParameters )
+    /**
+     * {@inheritDoc}
+     */
+    public BranchScmResult branch( ScmRepository repository, ScmFileSet fileSet, String branchName,
+                                   ScmBranchParameters scmBranchParameters )
         throws ScmException
     {
         return getBranchScmResult();
-    }    
-    
-    /** {@inheritDoc} */
+    }
+
+    /**
+     * {@inheritDoc}
+     */
     public ChangeLogScmResult changeLog( ScmRepository repository, ScmFileSet fileSet, Date startDate, Date endDate,
                                          int numDays, String branch )
         throws ScmException
@@ -394,7 +425,9 @@ public class ScmProviderStub
         return getChangeLogScmResult();
     }
 
-    /** {@inheritDoc} */
+    /**
+     * {@inheritDoc}
+     */
     public ChangeLogScmResult changeLog( ScmRepository repository, ScmFileSet fileSet, Date startDate, Date endDate,
                                          int numDays, String branch, String datePattern )
         throws ScmException
@@ -402,14 +435,18 @@ public class ScmProviderStub
         return getChangeLogScmResult();
     }
 
-    /** {@inheritDoc} */
+    /**
+     * {@inheritDoc}
+     */
     public ChangeLogScmResult changeLog( ScmRepository repository, ScmFileSet fileSet, String startTag, String endTag )
         throws ScmException
     {
         return getChangeLogScmResult();
     }
 
-    /** {@inheritDoc} */
+    /**
+     * {@inheritDoc}
+     */
     public ChangeLogScmResult changeLog( ScmRepository repository, ScmFileSet fileSet, String startTag, String endTag,
                                          String datePattern )
         throws ScmException
@@ -417,7 +454,9 @@ public class ScmProviderStub
         return getChangeLogScmResult();
     }
 
-    /** {@inheritDoc} */
+    /**
+     * {@inheritDoc}
+     */
     public ChangeLogScmResult changeLog( ScmRepository repository, ScmFileSet fileSet, Date startDate, Date endDate,
                                          int numDays, ScmBranch branch )
         throws ScmException
@@ -425,7 +464,9 @@ public class ScmProviderStub
         return getChangeLogScmResult();
     }
 
-    /** {@inheritDoc} */
+    /**
+     * {@inheritDoc}
+     */
     public ChangeLogScmResult changeLog( ScmRepository repository, ScmFileSet fileSet, Date startDate, Date endDate,
                                          int numDays, ScmBranch branch, String datePattern )
         throws ScmException
@@ -433,7 +474,9 @@ public class ScmProviderStub
         return getChangeLogScmResult();
     }
 
-    /** {@inheritDoc} */
+    /**
+     * {@inheritDoc}
+     */
     public ChangeLogScmResult changeLog( ScmRepository repository, ScmFileSet fileSet, ScmVersion startVersion,
                                          ScmVersion endVersion )
         throws ScmException
@@ -441,7 +484,9 @@ public class ScmProviderStub
         return getChangeLogScmResult();
     }
 
-    /** {@inheritDoc} */
+    /**
+     * {@inheritDoc}
+     */
     public ChangeLogScmResult changeLog( ScmRepository repository, ScmFileSet fileSet, ScmVersion startRevision,
                                          ScmVersion endRevision, String datePattern )
         throws ScmException
@@ -449,28 +494,36 @@ public class ScmProviderStub
         return getChangeLogScmResult();
     }
 
-    /** {@inheritDoc} */
+    /**
+     * {@inheritDoc}
+     */
     public CheckInScmResult checkIn( ScmRepository repository, ScmFileSet fileSet, String tag, String message )
         throws ScmException
     {
         return getCheckInScmResult();
     }
 
-    /** {@inheritDoc} */
+    /**
+     * {@inheritDoc}
+     */
     public CheckInScmResult checkIn( ScmRepository repository, ScmFileSet fileSet, String message )
         throws ScmException
     {
         return getCheckInScmResult();
     }
 
-    /** {@inheritDoc} */
+    /**
+     * {@inheritDoc}
+     */
     public CheckInScmResult checkIn( ScmRepository repository, ScmFileSet fileSet, ScmVersion revision, String message )
         throws ScmException
     {
         return getCheckInScmResult();
     }
 
-    /** {@inheritDoc} */
+    /**
+     * {@inheritDoc}
+     */
     public CheckOutScmResult checkOut( ScmRepository scmRepository, ScmFileSet scmFileSet, String tag,
                                        boolean recursive )
         throws ScmException
@@ -478,35 +531,45 @@ public class ScmProviderStub
         return getCheckOutScmResult();
     }
 
-    /** {@inheritDoc} */
+    /**
+     * {@inheritDoc}
+     */
     public CheckOutScmResult checkOut( ScmRepository repository, ScmFileSet fileSet, String tag )
         throws ScmException
     {
         return getCheckOutScmResult();
     }
 
-    /** {@inheritDoc} */
+    /**
+     * {@inheritDoc}
+     */
     public CheckOutScmResult checkOut( ScmRepository repository, ScmFileSet fileSet )
         throws ScmException
     {
         return getCheckOutScmResult();
     }
 
-    /** {@inheritDoc} */
+    /**
+     * {@inheritDoc}
+     */
     public CheckOutScmResult checkOut( ScmRepository repository, ScmFileSet fileSet, ScmVersion version )
         throws ScmException
     {
         return getCheckOutScmResult();
     }
 
-    /** {@inheritDoc} */
+    /**
+     * {@inheritDoc}
+     */
     public CheckOutScmResult checkOut( ScmRepository scmRepository, ScmFileSet scmFileSet, boolean recursive )
         throws ScmException
     {
         return getCheckOutScmResult();
     }
 
-    /** {@inheritDoc} */
+    /**
+     * {@inheritDoc}
+     */
     public CheckOutScmResult checkOut( ScmRepository scmRepository, ScmFileSet scmFileSet, ScmVersion version,
                                        boolean recursive )
         throws ScmException
@@ -514,14 +577,18 @@ public class ScmProviderStub
         return getCheckOutScmResult();
     }
 
-    /** {@inheritDoc} */
+    /**
+     * {@inheritDoc}
+     */
     public DiffScmResult diff( ScmRepository repository, ScmFileSet fileSet, String startRevision, String endRevision )
         throws ScmException
     {
         return getDiffScmResult();
     }
 
-    /** {@inheritDoc} */
+    /**
+     * {@inheritDoc}
+     */
     public DiffScmResult diff( ScmRepository scmRepository, ScmFileSet scmFileSet, ScmVersion startVersion,
                                ScmVersion endVersion )
         throws ScmException
@@ -539,42 +606,54 @@ public class ScmProviderStub
         return getUpdateScmResult();
     }
 
-    /** {@inheritDoc} */
+    /**
+     * {@inheritDoc}
+     */
     public EditScmResult edit( ScmRepository repository, ScmFileSet fileSet )
         throws ScmException
     {
         return getEditScmResult();
     }
 
-    /** {@inheritDoc} */
+    /**
+     * {@inheritDoc}
+     */
     public ExportScmResult export( ScmRepository repository, ScmFileSet fileSet, String tag )
         throws ScmException
     {
         return getExportScmResult();
     }
 
-    /** {@inheritDoc} */
+    /**
+     * {@inheritDoc}
+     */
     public ExportScmResult export( ScmRepository repository, ScmFileSet fileSet, String tag, String outputDirectory )
         throws ScmException
     {
         return getExportScmResult();
     }
 
-    /** {@inheritDoc} */
+    /**
+     * {@inheritDoc}
+     */
     public ExportScmResult export( ScmRepository repository, ScmFileSet fileSet )
         throws ScmException
     {
         return getExportScmResult();
     }
 
-    /** {@inheritDoc} */
+    /**
+     * {@inheritDoc}
+     */
     public ExportScmResult export( ScmRepository repository, ScmFileSet fileSet, ScmVersion version )
         throws ScmException
     {
         return getExportScmResult();
     }
 
-    /** {@inheritDoc} */
+    /**
+     * {@inheritDoc}
+     */
     public ExportScmResult export( ScmRepository repository, ScmFileSet fileSet, ScmVersion version,
                                    String outputDirectory )
         throws ScmException
@@ -582,42 +661,54 @@ public class ScmProviderStub
         return getExportScmResult();
     }
 
-    /** {@inheritDoc} */
+    /**
+     * {@inheritDoc}
+     */
     public ListScmResult list( ScmRepository repository, ScmFileSet fileSet, boolean recursive, String tag )
         throws ScmException
     {
         return getListScmResult();
     }
 
-    /** {@inheritDoc} */
+    /**
+     * {@inheritDoc}
+     */
     public ListScmResult list( ScmRepository repository, ScmFileSet fileSet, boolean recursive, ScmVersion version )
         throws ScmException
     {
         return getListScmResult();
     }
 
-    /** {@inheritDoc} */
+    /**
+     * {@inheritDoc}
+     */
     public RemoveScmResult remove( ScmRepository repository, ScmFileSet fileSet, String message )
         throws ScmException
     {
         return getRemoveScmResult();
     }
 
-    /** {@inheritDoc} */
+    /**
+     * {@inheritDoc}
+     */
     public StatusScmResult status( ScmRepository repository, ScmFileSet fileSet )
         throws ScmException
     {
         return getStatusScmResult();
     }
 
-    /** {@inheritDoc} */
+    /**
+     * {@inheritDoc}
+     */
     public TagScmResult tag( ScmRepository repository, ScmFileSet fileSet, String tag )
         throws ScmException
     {
         return getTagScmResult();
     }
 
-    /** {@inheritDoc} */
+    /**
+     * {@inheritDoc}
+     */
     public TagScmResult tag( ScmRepository repository, ScmFileSet fileSet, String tag, String message )
         throws ScmException
     {
@@ -631,35 +722,45 @@ public class ScmProviderStub
         return getTagScmResult();
     }
 
-    /** {@inheritDoc} */
+    /**
+     * {@inheritDoc}
+     */
     public UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, String tag )
         throws ScmException
     {
         return getUpdateScmResult();
     }
 
-    /** {@inheritDoc} */
+    /**
+     * {@inheritDoc}
+     */
     public UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, String tag, boolean runChangelog )
         throws ScmException
     {
         return getUpdateScmResult();
     }
 
-    /** {@inheritDoc} */
+    /**
+     * {@inheritDoc}
+     */
     public UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, String tag, String datePattern )
         throws ScmException
     {
         return getUpdateScmResult();
     }
 
-    /** {@inheritDoc} */
+    /**
+     * {@inheritDoc}
+     */
     public UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, String tag, Date lastUpdate )
         throws ScmException
     {
         return getUpdateScmResult();
     }
 
-    /** {@inheritDoc} */
+    /**
+     * {@inheritDoc}
+     */
     public UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, String tag, Date lastUpdate,
                                    String datePattern )
         throws ScmException
@@ -667,28 +768,36 @@ public class ScmProviderStub
         return getUpdateScmResult();
     }
 
-    /** {@inheritDoc} */
+    /**
+     * {@inheritDoc}
+     */
     public UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet )
         throws ScmException
     {
         return getUpdateScmResult();
     }
 
-    /** {@inheritDoc} */
+    /**
+     * {@inheritDoc}
+     */
     public UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, ScmVersion version )
         throws ScmException
     {
         return getUpdateScmResult();
     }
 
-    /** {@inheritDoc} */
+    /**
+     * {@inheritDoc}
+     */
     public UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, boolean runChangelog )
         throws ScmException
     {
         return getUpdateScmResult();
     }
 
-    /** {@inheritDoc} */
+    /**
+     * {@inheritDoc}
+     */
     public UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, ScmVersion version,
                                    boolean runChangelog )
         throws ScmException
@@ -696,7 +805,9 @@ public class ScmProviderStub
         return getUpdateScmResult();
     }
 
-    /** {@inheritDoc} */
+    /**
+     * {@inheritDoc}
+     */
     public UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, ScmVersion version,
                                    String datePattern )
         throws ScmException
@@ -704,14 +815,18 @@ public class ScmProviderStub
         return getUpdateScmResult();
     }
 
-    /** {@inheritDoc} */
+    /**
+     * {@inheritDoc}
+     */
     public UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, ScmVersion version, Date lastUpdate )
         throws ScmException
     {
         return getUpdateScmResult();
     }
 
-    /** {@inheritDoc} */
+    /**
+     * {@inheritDoc}
+     */
     public UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, ScmVersion version, Date lastUpdate,
                                    String datePattern )
         throws ScmException
@@ -719,24 +834,30 @@ public class ScmProviderStub
         return getUpdateScmResult();
     }
 
-    /** {@inheritDoc} */
+    /**
+     * {@inheritDoc}
+     */
     public UnEditScmResult unedit( ScmRepository repository, ScmFileSet fileSet )
         throws ScmException
     {
         return getUnEditScmResult();
     }
 
-    /** {@inheritDoc} */
+    /**
+     * {@inheritDoc}
+     */
     public BlameScmResult blame( ScmRepository repository, ScmFileSet fileSet, String filename )
         throws ScmException
     {
         return getBlameScmResult();
     }
 
-    /** {@inheritDoc} */
+    /**
+     * {@inheritDoc}
+     */
     public MkdirScmResult mkdir( ScmRepository repository, ScmFileSet fileSet, String message, boolean createInLocal )
         throws ScmException
-    {   
+    {
         return getMkdirScmResult();
     }
 
@@ -745,6 +866,11 @@ public class ScmProviderStub
     {
         return new InfoScmResult( "", "", "", true );
     }
-    
-    
+
+    public RemoteInfoScmResult remoteInfo( ScmProviderRepository repository, ScmFileSet fileSet,
+                                           CommandParameters parameters )
+        throws ScmException
+    {
+        return new RemoteInfoScmResult( "", null, null );
+    }
 }

Modified: maven/scm/trunk/pom.xml
URL: http://svn.apache.org/viewvc/maven/scm/trunk/pom.xml?rev=1203448&r1=1203447&r2=1203448&view=diff
==============================================================================
--- maven/scm/trunk/pom.xml (original)
+++ maven/scm/trunk/pom.xml Fri Nov 18 00:47:08 2011
@@ -251,6 +251,12 @@
         <version>2.0.5</version>
       </dependency>
 
+      <dependency>
+        <groupId>commons-lang</groupId>
+        <artifactId>commons-lang</artifactId>
+        <version>2.6</version>
+      </dependency>
+
       <!-- Test -->
       <dependency>
         <groupId>junit</groupId>