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/07/25 15:15:24 UTC
svn commit: r225113 - in /maven/scm/trunk: ./
maven-scm-api/src/main/java/org/apache/maven/scm/manager/
maven-scm-managers/ maven-scm-managers/maven-scm-manager-plexus/
maven-scm-managers/maven-scm-manager-plexus/src/
maven-scm-managers/maven-scm-manag...
Author: evenisse
Date: Mon Jul 25 06:15:11 2005
New Revision: 225113
URL: http://svn.apache.org/viewcvs?rev=225113&view=rev
Log:
[SCM-49]. Bring ScmManager back to maven-scm proper.
Added:
maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/manager/
maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/manager/NoSuchScmProviderException.java (with props)
maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/manager/ScmManager.java (with props)
maven/scm/trunk/maven-scm-managers/
maven/scm/trunk/maven-scm-managers/maven-scm-manager-plexus/ (with props)
maven/scm/trunk/maven-scm-managers/maven-scm-manager-plexus/pom.xml (with props)
maven/scm/trunk/maven-scm-managers/maven-scm-manager-plexus/src/
maven/scm/trunk/maven-scm-managers/maven-scm-manager-plexus/src/main/
maven/scm/trunk/maven-scm-managers/maven-scm-manager-plexus/src/main/java/
maven/scm/trunk/maven-scm-managers/maven-scm-manager-plexus/src/main/java/org/
maven/scm/trunk/maven-scm-managers/maven-scm-manager-plexus/src/main/java/org/apache/
maven/scm/trunk/maven-scm-managers/maven-scm-manager-plexus/src/main/java/org/apache/maven/
maven/scm/trunk/maven-scm-managers/maven-scm-manager-plexus/src/main/java/org/apache/maven/scm/
maven/scm/trunk/maven-scm-managers/maven-scm-manager-plexus/src/main/java/org/apache/maven/scm/manager/
maven/scm/trunk/maven-scm-managers/maven-scm-manager-plexus/src/main/java/org/apache/maven/scm/manager/plexus/
maven/scm/trunk/maven-scm-managers/maven-scm-manager-plexus/src/main/java/org/apache/maven/scm/manager/plexus/DefaultScmManager.java (with props)
maven/scm/trunk/maven-scm-managers/pom.xml (with props)
Removed:
maven/scm/trunk/maven-scm-providers/.cvsignore
Modified:
maven/scm/trunk/pom.xml
Added: maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/manager/NoSuchScmProviderException.java
URL: http://svn.apache.org/viewcvs/maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/manager/NoSuchScmProviderException.java?rev=225113&view=auto
==============================================================================
--- maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/manager/NoSuchScmProviderException.java (added)
+++ maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/manager/NoSuchScmProviderException.java Mon Jul 25 06:15:11 2005
@@ -0,0 +1,42 @@
+package org.apache.maven.scm.manager;
+
+/*
+ * 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.ScmException;
+
+/**
+ * @author <a href="mailto:trygvis@inamo.no">Trygve Laugstøl</a>
+ * @author <a href="mailto:evenisse@apache.org">Emmanuel Venisse</a>
+ * @version $Id$
+ */
+public class NoSuchScmProviderException
+ extends ScmException
+{
+ private String providerName;
+
+ public NoSuchScmProviderException( String providerName )
+ {
+ super( "No such provider: '" + providerName + "'." );
+
+ this.providerName = providerName;
+ }
+
+ public String getProviderName()
+ {
+ return providerName;
+ }
+}
Propchange: maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/manager/NoSuchScmProviderException.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/manager/NoSuchScmProviderException.java
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Added: maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/manager/ScmManager.java
URL: http://svn.apache.org/viewcvs/maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/manager/ScmManager.java?rev=225113&view=auto
==============================================================================
--- maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/manager/ScmManager.java (added)
+++ maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/manager/ScmManager.java Mon Jul 25 06:15:11 2005
@@ -0,0 +1,91 @@
+package org.apache.maven.scm.manager;
+
+/*
+ * 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.ScmException;
+import org.apache.maven.scm.ScmFileSet;
+import org.apache.maven.scm.command.add.AddScmResult;
+import org.apache.maven.scm.command.changelog.ChangeLogScmResult;
+import org.apache.maven.scm.command.checkin.CheckInScmResult;
+import org.apache.maven.scm.command.checkout.CheckOutScmResult;
+import org.apache.maven.scm.command.diff.DiffScmResult;
+import org.apache.maven.scm.command.status.StatusScmResult;
+import org.apache.maven.scm.command.tag.TagScmResult;
+import org.apache.maven.scm.command.update.UpdateScmResult;
+import org.apache.maven.scm.log.ScmLogger;
+import org.apache.maven.scm.repository.ScmRepository;
+import org.apache.maven.scm.repository.ScmRepositoryException;
+import org.apache.maven.scm.repository.UnknownRepositoryStructure;
+
+import java.io.File;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @author <a href="mailto:trygvis@inamo.no">Trygve Laugstøl</a>
+ * @author <a href="mailto:brett@apache.org">Brett Porter</a>
+ * @author <a href="mailto:evenisse@apache.org">Emmanuel Venisse</a>
+ * @version $Id$
+ */
+public interface ScmManager
+{
+ String ROLE = ScmManager.class.getName();
+
+ // ----------------------------------------------------------------------
+ // Repository
+ // ----------------------------------------------------------------------
+
+ ScmRepository makeScmRepository( String scmUrl )
+ throws ScmRepositoryException, NoSuchScmProviderException;
+
+ ScmRepository makeProviderScmRepository( String providerType, File path )
+ throws ScmRepositoryException, UnknownRepositoryStructure, NoSuchScmProviderException;
+
+ List validateScmRepository( String scmUrl );
+
+ void addListener( ScmLogger logger )
+ throws NoSuchScmProviderException;
+
+ // ----------------------------------------------------------------------
+ // Scm Commands
+ // ----------------------------------------------------------------------
+
+ // TODO: not honouring includes/excludes, so replace fileSet with working directory again
+ CheckOutScmResult checkOut( ScmRepository repository, ScmFileSet fileSet, String tag )
+ throws ScmException;
+
+ CheckInScmResult checkIn( ScmRepository repository, ScmFileSet fileSet, String tag, String message )
+ throws ScmException;
+
+ UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, String tag )
+ throws ScmException;
+
+ TagScmResult tag( ScmRepository repository, ScmFileSet fileSet, String tag )
+ throws ScmException;
+
+ DiffScmResult diff( ScmRepository repository, ScmFileSet fileSet, String startRevision, String endRevision )
+ throws ScmException;
+
+ ChangeLogScmResult changeLog( ScmRepository repository, ScmFileSet fileSet, Date startDate, Date endDate, int numDays, String branch )
+ throws ScmException;
+
+ AddScmResult add( ScmRepository repository, ScmFileSet fileSet )
+ throws ScmException;
+
+ StatusScmResult status( ScmRepository repository, ScmFileSet fileSet )
+ throws ScmException;
+}
Propchange: maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/manager/ScmManager.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/manager/ScmManager.java
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Propchange: maven/scm/trunk/maven-scm-managers/maven-scm-manager-plexus/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Mon Jul 25 06:15:11 2005
@@ -0,0 +1,2 @@
+.classpath
+.project
Added: maven/scm/trunk/maven-scm-managers/maven-scm-manager-plexus/pom.xml
URL: http://svn.apache.org/viewcvs/maven/scm/trunk/maven-scm-managers/maven-scm-manager-plexus/pom.xml?rev=225113&view=auto
==============================================================================
--- maven/scm/trunk/maven-scm-managers/maven-scm-manager-plexus/pom.xml (added)
+++ maven/scm/trunk/maven-scm-managers/maven-scm-manager-plexus/pom.xml Mon Jul 25 06:15:11 2005
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<project>
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.maven.scm</groupId>
+ <artifactId>maven-scm-managers</artifactId>
+ <version>1.0-alpha-2-SNAPSHOT</version>
+ </parent>
+ <artifactId>maven-scm-manager-plexus</artifactId>
+ <name>Maven SCM Manager for Plexus</name>
+ <dependencies>
+ <dependency>
+ <groupId>plexus</groupId>
+ <artifactId>plexus-container-default</artifactId>
+ <version>1.0-alpha-5</version>
+ </dependency>
+ </dependencies>
+</project>
Propchange: maven/scm/trunk/maven-scm-managers/maven-scm-manager-plexus/pom.xml
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/scm/trunk/maven-scm-managers/maven-scm-manager-plexus/pom.xml
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Added: maven/scm/trunk/maven-scm-managers/maven-scm-manager-plexus/src/main/java/org/apache/maven/scm/manager/plexus/DefaultScmManager.java
URL: http://svn.apache.org/viewcvs/maven/scm/trunk/maven-scm-managers/maven-scm-manager-plexus/src/main/java/org/apache/maven/scm/manager/plexus/DefaultScmManager.java?rev=225113&view=auto
==============================================================================
--- maven/scm/trunk/maven-scm-managers/maven-scm-manager-plexus/src/main/java/org/apache/maven/scm/manager/plexus/DefaultScmManager.java (added)
+++ maven/scm/trunk/maven-scm-managers/maven-scm-manager-plexus/src/main/java/org/apache/maven/scm/manager/plexus/DefaultScmManager.java Mon Jul 25 06:15:11 2005
@@ -0,0 +1,399 @@
+package org.apache.maven.scm.manager.plexus;
+
+/*
+ * 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.CommandNameConstants;
+import org.apache.maven.scm.CommandParameter;
+import org.apache.maven.scm.CommandParameters;
+import org.apache.maven.scm.NoSuchCommandScmException;
+import org.apache.maven.scm.ScmException;
+import org.apache.maven.scm.ScmFileSet;
+import org.apache.maven.scm.ScmResult;
+import org.apache.maven.scm.command.add.AddScmResult;
+import org.apache.maven.scm.command.changelog.ChangeLogScmResult;
+import org.apache.maven.scm.command.checkin.CheckInScmResult;
+import org.apache.maven.scm.command.checkout.CheckOutScmResult;
+import org.apache.maven.scm.command.diff.DiffScmResult;
+import org.apache.maven.scm.command.status.StatusScmResult;
+import org.apache.maven.scm.command.tag.TagScmResult;
+import org.apache.maven.scm.command.update.UpdateScmResult;
+import org.apache.maven.scm.log.ScmLogger;
+import org.apache.maven.scm.manager.ScmManager;
+import org.apache.maven.scm.manager.NoSuchScmProviderException;
+import org.apache.maven.scm.provider.ScmProvider;
+import org.apache.maven.scm.provider.ScmProviderRepository;
+import org.apache.maven.scm.repository.ScmRepository;
+import org.apache.maven.scm.repository.ScmRepositoryException;
+import org.apache.maven.scm.repository.UnknownRepositoryStructure;
+import org.codehaus.plexus.logging.AbstractLogEnabled;
+import org.codehaus.plexus.personality.plexus.lifecycle.phase.Initializable;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author <a href="mailto:trygvis@inamo.no">Trygve Laugstøl</a>
+ * @author <a href="mailto:brett@apache.org">Brett Porter</a>
+ * @author <a href="mailto:evenisse@apache.org">Emmanuel Venisse</a>
+ * @version $Id$
+ */
+public class DefaultScmManager
+ extends AbstractLogEnabled
+ implements ScmManager, Initializable
+{
+ private Map scmProviders;
+
+ private List loggers = new ArrayList();
+
+ private final static String ILLEGAL_SCM_URL = "The scm url must be on the form " +
+ "'scm:<scm provider><delimiter><provider specific part>' " +
+ "where <delimiter> can be either ':' or '|'.";
+
+ // ----------------------------------------------------------------------
+ // Component Lifecycle
+ // ----------------------------------------------------------------------
+
+ public void initialize()
+ {
+ if ( scmProviders == null )
+ {
+ scmProviders = new HashMap();
+ }
+
+ if ( scmProviders.size() == 0 )
+ {
+ getLogger().warn( "No SCM providers configured." );
+ }
+ }
+
+ // ----------------------------------------------------------------------
+ // ScmManager Implementation
+ // ----------------------------------------------------------------------
+
+ // ----------------------------------------------------------------------
+ // Repository
+ // ----------------------------------------------------------------------
+
+ public ScmRepository makeScmRepository( String scmUrl )
+ throws ScmRepositoryException, NoSuchScmProviderException
+ {
+ if ( scmUrl == null )
+ {
+ throw new NullPointerException( "The scm url cannot be null." );
+ }
+
+ char delimiter = findDelimiter( scmUrl );
+
+ String providerType = scmUrl.substring( 4, scmUrl.indexOf( delimiter, 4 ) );
+
+ ScmProvider provider = getScmProvider( providerType );
+
+ String scmSpecificUrl = scmUrl.substring( providerType.length() + 5 );
+
+ ScmProviderRepository providerRepository = provider.makeProviderScmRepository( scmSpecificUrl, delimiter );
+
+ return new ScmRepository( providerType, providerRepository );
+ }
+
+ public ScmRepository makeProviderScmRepository( String providerType, File path )
+ throws ScmRepositoryException, UnknownRepositoryStructure, NoSuchScmProviderException
+ {
+ if ( providerType == null )
+ {
+ throw new NullPointerException( "The provider type cannot be null." );
+ }
+
+ ScmProvider provider = getScmProvider( providerType );
+
+ ScmProviderRepository providerRepository = provider.makeProviderScmRepository( path );
+
+ return new ScmRepository( providerType, providerRepository );
+ }
+
+ public List validateScmRepository( String scmUrl )
+ {
+ List messages = new ArrayList();
+
+ if ( scmUrl == null )
+ {
+ throw new NullPointerException( "The scm url cannot be null." );
+ }
+
+ if ( !scmUrl.startsWith( "scm:" ) )
+ {
+ messages.add( "The scm url must start with 'scm:'." );
+
+ return messages;
+ }
+
+ if ( scmUrl.length() < 6 )
+ {
+ messages.add( ILLEGAL_SCM_URL );
+
+ return messages;
+ }
+
+ // TODO: don't assume that the delimiter is eitgher ':' or '|' or
+ // require the scm delimiter to be ':' or '|'
+
+ char delimiter;
+
+ try
+ {
+ delimiter = findDelimiter( scmUrl );
+ }
+ catch ( ScmRepositoryException e )
+ {
+ messages.add( e.getMessage() );
+
+ return messages;
+ }
+
+ String providerType = scmUrl.substring( 4, scmUrl.indexOf( delimiter, 4 ) );
+
+ ScmProvider provider;
+
+ try
+ {
+ provider = getScmProvider( providerType );
+ }
+ catch ( NoSuchScmProviderException e )
+ {
+ messages.add( "No such provider installed '" + providerType + "'." );
+
+ return messages;
+ }
+
+ String scmSpecificUrl = scmUrl.substring( providerType.length() + 5 );
+
+ List providerMessages = provider.validateScmUrl( scmSpecificUrl, delimiter );
+
+ if ( providerMessages == null )
+ {
+ throw new RuntimeException( "The SCM provider cannot return null from validateScmUrl()." );
+ }
+
+ messages.addAll( providerMessages );
+
+ return messages;
+ }
+
+ // ----------------------------------------------------------------------
+ // Scm commands
+ // ----------------------------------------------------------------------
+
+ public CheckOutScmResult checkOut( ScmRepository repository, ScmFileSet fileSet, String tag )
+ throws ScmException
+ {
+ CommandParameters parameters = new CommandParameters();
+
+ parameters.setString( CommandParameter.TAG, tag );
+
+ ScmResult scmResult = execute( CommandNameConstants.CHECK_OUT, repository, fileSet, parameters );
+
+ return (CheckOutScmResult) checkScmResult( CheckOutScmResult.class, scmResult );
+ }
+
+ public CheckInScmResult checkIn( ScmRepository repository, ScmFileSet fileSet, String tag, String message )
+ throws ScmException
+ {
+ CommandParameters parameters = new CommandParameters();
+
+ parameters.setString( CommandParameter.TAG, tag );
+
+ parameters.setString( CommandParameter.MESSAGE, message );
+
+ ScmResult scmResult = execute( CommandNameConstants.CHECK_IN, repository, fileSet, parameters );
+
+ return (CheckInScmResult) checkScmResult( CheckInScmResult.class, scmResult );
+ }
+
+ public TagScmResult tag( ScmRepository repository, ScmFileSet fileSet, String tag )
+ throws ScmException
+ {
+ CommandParameters parameters = new CommandParameters();
+
+ parameters.setString( CommandParameter.TAG, tag );
+
+ ScmResult scmResult = execute( CommandNameConstants.TAG, repository, fileSet, parameters );
+
+ return (TagScmResult) checkScmResult( TagScmResult.class, scmResult );
+ }
+
+ public UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, String tag )
+ throws ScmException
+ {
+ CommandParameters parameters = new CommandParameters();
+
+ parameters.setString( CommandParameter.TAG, tag );
+
+ ScmResult scmResult = execute( CommandNameConstants.UPDATE, repository, fileSet, parameters );
+
+ return (UpdateScmResult) checkScmResult( UpdateScmResult.class, scmResult );
+ }
+
+ public DiffScmResult diff( ScmRepository repository, ScmFileSet fileSet, String startRevision, String endRevision )
+ throws ScmException
+ {
+ CommandParameters parameters = new CommandParameters();
+
+ parameters.setString( CommandParameter.START_REVISION, startRevision );
+
+ parameters.setString( CommandParameter.END_REVISION, endRevision );
+
+ ScmResult scmResult = execute( CommandNameConstants.DIFF, repository, fileSet, parameters );
+
+ return (DiffScmResult) checkScmResult( DiffScmResult.class, scmResult );
+ }
+
+ public ChangeLogScmResult changeLog( ScmRepository repository, ScmFileSet fileSet, Date startDate, Date endDate,
+ int numDays, String branch )
+ throws ScmException
+ {
+ CommandParameters parameters = new CommandParameters();
+
+ parameters.setDate( CommandParameter.START_DATE, startDate );
+
+ parameters.setDate( CommandParameter.END_DATE, endDate );
+
+ parameters.setString( CommandParameter.BRANCH, branch );
+
+ ScmResult scmResult = execute( CommandNameConstants.CHANGE_LOG, repository, fileSet, parameters );
+
+ return (ChangeLogScmResult) checkScmResult( ChangeLogScmResult.class, scmResult );
+ }
+
+ public StatusScmResult status( ScmRepository repository, ScmFileSet fileSet )
+ throws ScmException
+ {
+ CommandParameters parameters = new CommandParameters();
+
+ ScmResult scmResult = execute( CommandNameConstants.STATUS, repository, fileSet, parameters );
+
+ return (StatusScmResult) checkScmResult( StatusScmResult.class, scmResult );
+ }
+
+ public AddScmResult add( ScmRepository repository, ScmFileSet fileSet )
+ throws ScmException
+ {
+ CommandParameters parameters = new CommandParameters();
+
+ // TODO: is message reasonable?
+ parameters.setString( CommandParameter.MESSAGE, "" );
+
+ // TODO: binary may be dependant on particular files though
+ // TODO: set boolean?
+ parameters.setString( CommandParameter.BINARY, "false" );
+
+ ScmResult scmResult = execute( CommandNameConstants.ADD, repository, fileSet, parameters );
+
+ return (AddScmResult) checkScmResult( AddScmResult.class, scmResult );
+ }
+
+ public void addListener( ScmLogger logger )
+ throws NoSuchScmProviderException
+ {
+ loggers.add( logger );
+ }
+
+ // ----------------------------------------------------------------------
+ //
+ // ----------------------------------------------------------------------
+
+ private ScmResult execute( String commandName, ScmRepository repository, ScmFileSet fileSet,
+ CommandParameters parameters )
+ throws ScmException
+ {
+ if ( !CommandNameConstants.LOGIN.equals( commandName ) )
+ {
+ try
+ {
+ execute( CommandNameConstants.LOGIN, repository, fileSet, parameters );
+ }
+ catch ( NoSuchCommandScmException e )
+ {
+ // ignored : provider doesn't have a login command
+ }
+ }
+
+ ScmProvider scmProvider = getScmProvider( repository.getProvider() );
+
+ for ( Iterator i = loggers.iterator(); i.hasNext(); )
+ {
+ ScmLogger logger = (ScmLogger) i.next();
+
+ scmProvider.addListener( logger );
+ }
+
+ return scmProvider.execute( commandName, repository.getProviderRepository(), fileSet, parameters );
+ }
+
+ // ----------------------------------------------------------------------
+ //
+ // ----------------------------------------------------------------------
+
+ private char findDelimiter( String scmUrl )
+ throws ScmRepositoryException
+ {
+ scmUrl = scmUrl.substring( 4 );
+
+ int index = scmUrl.indexOf( '|' );
+
+ if ( index == -1 )
+ {
+ index = scmUrl.indexOf( ':' );
+
+ if ( index == -1 )
+ {
+ throw new ScmRepositoryException( ILLEGAL_SCM_URL );
+ }
+ }
+
+ return scmUrl.charAt( index );
+ }
+
+ private ScmProvider getScmProvider( String providerType )
+ throws NoSuchScmProviderException
+ {
+ ScmProvider scmProvider = (ScmProvider) scmProviders.get( providerType );
+
+ if ( scmProvider == null )
+ {
+ throw new NoSuchScmProviderException( providerType );
+ }
+
+ return scmProvider;
+ }
+
+ private ScmResult checkScmResult( Class clazz, ScmResult scmResult )
+ throws ScmException
+ {
+ if ( !clazz.isAssignableFrom( scmResult.getClass() ) )
+ {
+ throw new ScmException( "Internal error: Wrong ScmResult returned. " +
+ "Expected: " + clazz.getName() + ". " +
+ "Got: " + scmResult.getClass().getName() );
+ }
+
+ return scmResult;
+ }
+}
Propchange: maven/scm/trunk/maven-scm-managers/maven-scm-manager-plexus/src/main/java/org/apache/maven/scm/manager/plexus/DefaultScmManager.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/scm/trunk/maven-scm-managers/maven-scm-manager-plexus/src/main/java/org/apache/maven/scm/manager/plexus/DefaultScmManager.java
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Added: maven/scm/trunk/maven-scm-managers/pom.xml
URL: http://svn.apache.org/viewcvs/maven/scm/trunk/maven-scm-managers/pom.xml?rev=225113&view=auto
==============================================================================
--- maven/scm/trunk/maven-scm-managers/pom.xml (added)
+++ maven/scm/trunk/maven-scm-managers/pom.xml Mon Jul 25 06:15:11 2005
@@ -0,0 +1,21 @@
+<project>
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.maven.scm</groupId>
+ <artifactId>maven-scm</artifactId>
+ <version>1.0-alpha-2-SNAPSHOT</version>
+ </parent>
+ <artifactId>maven-scm-managers</artifactId>
+ <packaging>pom</packaging>
+ <name>Maven SCM Managers</name>
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.maven.scm</groupId>
+ <artifactId>maven-scm-api</artifactId>
+ <version>1.0-alpha-2-SNAPSHOT</version>
+ </dependency>
+ </dependencies>
+ <modules>
+ <module>maven-scm-manager-plexus</module>
+ </modules>
+</project>
Propchange: maven/scm/trunk/maven-scm-managers/pom.xml
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/scm/trunk/maven-scm-managers/pom.xml
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Modified: maven/scm/trunk/pom.xml
URL: http://svn.apache.org/viewcvs/maven/scm/trunk/pom.xml?rev=225113&r1=225112&r2=225113&view=diff
==============================================================================
--- maven/scm/trunk/pom.xml (original)
+++ maven/scm/trunk/pom.xml Mon Jul 25 06:15:11 2005
@@ -60,6 +60,7 @@
<modules>
<module>maven-scm-api</module>
<module>maven-scm-client</module>
+ <module>maven-scm-managers</module>
<module>maven-scm-plugin</module>
<module>maven-scm-providers</module>
<module>maven-scm-test</module>