This is an automated email from the ASF dual-hosted git repository. cstamas pushed a commit to branch scm-979-deplexus in repository https://gitbox.apache.org/repos/asf/maven-scm.git
commit 1310aabf7578aaf1c275e827f8ab225d4234cd37 Author: Tamas Cservenak <[email protected]> AuthorDate: Fri May 20 12:20:58 2022 +0200 [SCM-979] De-Plexus, Java8 Changes: * make project Java8 * update dependencies accordingly * remove any uses of deprecated Plexus APIs * replace plexus-container-default with plexus-shim --- maven-scm-api/pom.xml | 4 + .../org/apache/maven/scm/log/ScmLogDispatcher.java | 20 +- .../org/apache/maven/scm/log/Slf4jScmLogger.java | 195 ++++++++++++++++ .../maven/scm/manager/AbstractScmManager.java | 250 +++++++++++---------- .../apache/maven/scm/manager/BasicScmManager.java | 9 - .../scm/manager/NoSuchScmProviderException.java | 7 +- .../org/apache/maven/scm/manager/ScmManager.java | 2 - .../maven/scm/provider/AbstractScmProvider.java | 84 ++++++- .../org/apache/maven/scm/provider/ScmProvider.java | 3 - .../apache/maven/scm/util/AbstractConsumer.java | 11 +- maven-scm-client/pom.xml | 38 ++-- .../apache/maven/scm/client/cli/MavenScmCli.java | 43 +++- .../main/resources/META-INF/plexus/components.xml | 56 ----- .../maven-scm-manager-plexus/pom.xml | 42 ++-- .../scm/manager/plexus/DefaultScmManager.java | 86 ++----- .../maven/scm/manager/plexus/PlexusLogger.java | 135 ----------- maven-scm-plugin/pom.xml | 21 +- maven-scm-providers/maven-scm-provider-hg/pom.xml | 24 +- .../maven/scm/provider/hg/HgScmProvider.java | 10 +- .../maven-scm-provider-local/pom.xml | 20 +- .../maven/scm/provider/local/LocalScmProvider.java | 18 +- .../maven/scm/provider/git/TestGitScmProvider.java | 5 + .../test/resources/META-INF/plexus/components.xml | 28 --- .../maven-scm-provider-gitexe/pom.xml | 21 +- .../scm/provider/git/gitexe/GitExeScmProvider.java | 7 +- .../maven-scm-provider-jgit/pom.xml | 42 ++-- .../scm/provider/git/jgit/JGitScmProvider.java | 25 ++- .../maven-scm-provider-svn-commons/pom.xml | 7 + .../maven/scm/provider/svn/TestSvnScmProvider.java | 5 + .../test/resources/META-INF/plexus/components.xml | 28 --- .../maven-scm-provider-svnexe/pom.xml | 38 ++-- .../scm/provider/svn/svnexe/SvnExeScmProvider.java | 24 +- .../changelog/SvnChangeLogConsumerTest.java | 7 +- maven-scm-test/pom.xml | 25 ++- .../java/org/apache/maven/scm/ScmTestCase.java | 12 +- .../maven/scm/manager/ScmManagerStubTest.java | 2 +- pom.xml | 82 ++++--- src/site/apt/guide/new_provider.apt | 22 +- 38 files changed, 795 insertions(+), 663 deletions(-) diff --git a/maven-scm-api/pom.xml b/maven-scm-api/pom.xml index a3d92db0a..ff0b9a3e8 100644 --- a/maven-scm-api/pom.xml +++ b/maven-scm-api/pom.xml @@ -34,6 +34,10 @@ <description>The SCM API provides mechanisms to manage all SCM tools.</description> <dependencies> + <dependency> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-api</artifactId> + </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> diff --git a/maven-scm-api/src/main/java/org/apache/maven/scm/log/ScmLogDispatcher.java b/maven-scm-api/src/main/java/org/apache/maven/scm/log/ScmLogDispatcher.java index 6ef200ef5..fba4fa46e 100644 --- a/maven-scm-api/src/main/java/org/apache/maven/scm/log/ScmLogDispatcher.java +++ b/maven-scm-api/src/main/java/org/apache/maven/scm/log/ScmLogDispatcher.java @@ -19,8 +19,8 @@ package org.apache.maven.scm.log; * under the License. */ -import java.util.ArrayList; import java.util.List; +import java.util.concurrent.CopyOnWriteArrayList; /** * @author <a href="mailto:[email protected]">Emmanuel Venisse</a> @@ -30,7 +30,7 @@ import java.util.List; public class ScmLogDispatcher implements ScmLogger { - private List<ScmLogger> listeners = new ArrayList<ScmLogger>(); + private final List<ScmLogger> listeners = new CopyOnWriteArrayList<>(); public void addListener( ScmLogger logger ) { @@ -38,6 +38,7 @@ public class ScmLogDispatcher } /** {@inheritDoc} */ + @Override public void debug( String content, Throwable error ) { for ( ScmLogger logger : listeners ) @@ -47,6 +48,7 @@ public class ScmLogDispatcher } /** {@inheritDoc} */ + @Override public void debug( String content ) { for ( ScmLogger logger : listeners ) @@ -56,6 +58,7 @@ public class ScmLogDispatcher } /** {@inheritDoc} */ + @Override public void debug( Throwable error ) { for ( ScmLogger logger : listeners ) @@ -65,6 +68,7 @@ public class ScmLogDispatcher } /** {@inheritDoc} */ + @Override public void error( String content, Throwable error ) { for ( ScmLogger logger : listeners ) @@ -74,6 +78,7 @@ public class ScmLogDispatcher } /** {@inheritDoc} */ + @Override public void error( String content ) { for ( ScmLogger logger : listeners ) @@ -83,6 +88,7 @@ public class ScmLogDispatcher } /** {@inheritDoc} */ + @Override public void error( Throwable error ) { for ( ScmLogger logger : listeners ) @@ -92,6 +98,7 @@ public class ScmLogDispatcher } /** {@inheritDoc} */ + @Override public void info( String content, Throwable error ) { for ( ScmLogger logger : listeners ) @@ -104,6 +111,7 @@ public class ScmLogDispatcher } /** {@inheritDoc} */ + @Override public void info( String content ) { for ( ScmLogger logger : listeners ) @@ -116,6 +124,7 @@ public class ScmLogDispatcher } /** {@inheritDoc} */ + @Override public void info( Throwable error ) { for ( ScmLogger logger : listeners ) @@ -128,6 +137,7 @@ public class ScmLogDispatcher } /** {@inheritDoc} */ + @Override public boolean isDebugEnabled() { for ( ScmLogger logger : listeners ) @@ -142,6 +152,7 @@ public class ScmLogDispatcher } /** {@inheritDoc} */ + @Override public boolean isErrorEnabled() { for ( ScmLogger logger : listeners ) @@ -156,6 +167,7 @@ public class ScmLogDispatcher } /** {@inheritDoc} */ + @Override public boolean isInfoEnabled() { for ( ScmLogger logger : listeners ) @@ -170,6 +182,7 @@ public class ScmLogDispatcher } /** {@inheritDoc} */ + @Override public boolean isWarnEnabled() { for ( ScmLogger logger : listeners ) @@ -184,6 +197,7 @@ public class ScmLogDispatcher } /** {@inheritDoc} */ + @Override public void warn( String content, Throwable error ) { for ( ScmLogger logger : listeners ) @@ -193,6 +207,7 @@ public class ScmLogDispatcher } /** {@inheritDoc} */ + @Override public void warn( String content ) { for ( ScmLogger logger : listeners ) @@ -202,6 +217,7 @@ public class ScmLogDispatcher } /** {@inheritDoc} */ + @Override public void warn( Throwable error ) { for ( ScmLogger logger : listeners ) diff --git a/maven-scm-api/src/main/java/org/apache/maven/scm/log/Slf4jScmLogger.java b/maven-scm-api/src/main/java/org/apache/maven/scm/log/Slf4jScmLogger.java new file mode 100644 index 000000000..7212a6d4e --- /dev/null +++ b/maven-scm-api/src/main/java/org/apache/maven/scm/log/Slf4jScmLogger.java @@ -0,0 +1,195 @@ +package org.apache.maven.scm.log; + +/* + * 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.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import static java.util.Objects.requireNonNull; + +/** + * {@link ScmLogger} backed by Slf4j. + * + * @since TBD + */ +public class Slf4jScmLogger + implements ScmLogger +{ + private final Logger logger; + + public Slf4jScmLogger() + { + this( Slf4jScmLogger.class ); + } + + public Slf4jScmLogger( final Class<?> owner ) + { + this( LoggerFactory.getLogger( owner ) ); + } + + public Slf4jScmLogger( final Logger logger ) + { + this.logger = requireNonNull( logger ); + } + + /** + * {@inheritDoc} + */ + @Override + public boolean isDebugEnabled() + { + return this.logger.isDebugEnabled(); + } + + /** + * {@inheritDoc} + */ + @Override + public void debug( String content ) + { + this.logger.debug( content ); + } + + /** + * {@inheritDoc} + */ + @Override + public void debug( String content, Throwable error ) + { + this.logger.debug( content, error ); + } + + /** + * {@inheritDoc} + */ + @Override + public void debug( Throwable error ) + { + this.logger.debug( "", error ); + } + + /** + * {@inheritDoc} + */ + @Override + public boolean isInfoEnabled() + { + return this.logger.isInfoEnabled(); + } + + /** + * {@inheritDoc} + */ + @Override + public void info( String content ) + { + this.logger.info( content ); + } + + /** + * {@inheritDoc} + */ + @Override + public void info( String content, Throwable error ) + { + this.logger.info( content, error ); + } + + /** + * {@inheritDoc} + */ + @Override + public void info( Throwable error ) + { + this.logger.info( "", error ); + } + + /** + * {@inheritDoc} + */ + @Override + public boolean isWarnEnabled() + { + return this.logger.isWarnEnabled(); + } + + /** + * {@inheritDoc} + */ + @Override + public void warn( String content ) + { + this.logger.warn( content ); + } + + /** + * {@inheritDoc} + */ + @Override + public void warn( String content, Throwable error ) + { + this.logger.warn( content, error ); + } + + /** + * {@inheritDoc} + */ + @Override + public void warn( Throwable error ) + { + this.logger.warn( "", error ); + } + + /** + * {@inheritDoc} + */ + @Override + public boolean isErrorEnabled() + { + return this.logger.isErrorEnabled(); + } + + /** + * {@inheritDoc} + */ + @Override + public void error( String content ) + { + this.logger.error( content ); + } + + /** + * {@inheritDoc} + */ + @Override + public void error( String content, Throwable error ) + { + this.logger.error( content, error ); + } + + /** + * {@inheritDoc} + */ + @Override + public void error( Throwable error ) + { + this.logger.error( "", error ); + } +} diff --git a/maven-scm-api/src/main/java/org/apache/maven/scm/manager/AbstractScmManager.java b/maven-scm-api/src/main/java/org/apache/maven/scm/manager/AbstractScmManager.java index 7e06bcdbc..67783ff1e 100644 --- a/maven-scm-api/src/main/java/org/apache/maven/scm/manager/AbstractScmManager.java +++ b/maven-scm-api/src/main/java/org/apache/maven/scm/manager/AbstractScmManager.java @@ -19,6 +19,13 @@ package org.apache.maven.scm.manager; * under the License. */ +import java.io.File; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + import org.apache.maven.scm.ScmBranch; import org.apache.maven.scm.ScmBranchParameters; import org.apache.maven.scm.ScmException; @@ -44,47 +51,44 @@ import org.apache.maven.scm.command.tag.TagScmResult; import org.apache.maven.scm.command.unedit.UnEditScmResult; import org.apache.maven.scm.command.update.UpdateScmResult; import org.apache.maven.scm.log.ScmLogger; +import org.apache.maven.scm.log.Slf4jScmLogger; import org.apache.maven.scm.provider.ScmProvider; import org.apache.maven.scm.provider.ScmProviderRepository; import org.apache.maven.scm.provider.ScmUrlUtils; import org.apache.maven.scm.repository.ScmRepository; import org.apache.maven.scm.repository.ScmRepositoryException; import org.apache.maven.scm.repository.UnknownRepositoryStructure; +import org.slf4j.LoggerFactory; -import java.io.File; -import java.util.ArrayList; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; +import static java.util.Objects.requireNonNull; /** * @author <a href="mailto:[email protected]">Trygve Laugstøl</a> * @author <a href="mailto:[email protected]">Brett Porter</a> * @author <a href="mailto:[email protected]">Emmanuel Venisse</a> - * */ public abstract class AbstractScmManager - implements ScmManager + implements ScmManager { - private Map<String, ScmProvider> scmProviders = new HashMap<String, ScmProvider>(); + private final ScmLogger logger = new Slf4jScmLogger( LoggerFactory.getLogger( getClass() ) ); - private ScmLogger logger; + private final Map<String, ScmProvider> scmProviders = new ConcurrentHashMap<>(); - private Map<String, String> userProviderTypes = new HashMap<String, String>(); + private final Map<String, String> userProviderTypes = new ConcurrentHashMap<>(); protected void setScmProviders( Map<String, ScmProvider> providers ) { - this.scmProviders = providers; + requireNonNull( providers ); + this.scmProviders.clear(); + providers.forEach( this::setScmProvider ); } /** - * @deprecated use {@link #setScmProvider(String, ScmProvider)} instead - * @param providerType the type of SCM, eg. <code>svn</code>, <code>git</code> * @param provider the provider that will be used for that SCM type + * @deprecated use {@link #setScmProvider(String, ScmProvider)} instead */ + @Deprecated protected void addScmProvider( String providerType, ScmProvider provider ) { setScmProvider( providerType, provider ); @@ -97,12 +101,19 @@ public abstract class AbstractScmManager * @param providerType the type of SCM, eg. <code>svn</code>, <code>git</code> * @param provider the provider that will be used for that SCM type */ + @Override public void setScmProvider( String providerType, ScmProvider provider ) { + requireNonNull( providerType ); + requireNonNull( provider ); + provider.addListener( logger ); scmProviders.put( providerType, provider ); } - protected abstract ScmLogger getScmLogger(); + protected ScmLogger getScmLogger() + { + return logger; + } // ---------------------------------------------------------------------- // ScmManager Implementation @@ -111,13 +122,11 @@ public abstract class AbstractScmManager /** * {@inheritDoc} */ + @Override public ScmProvider getProviderByUrl( String scmUrl ) - throws ScmRepositoryException, NoSuchScmProviderException + throws ScmRepositoryException, NoSuchScmProviderException { - if ( scmUrl == null ) - { - throw new NullPointerException( "The scm url cannot be null." ); - } + requireNonNull( scmUrl, "The scm url cannot be null." ); String providerType = ScmUrlUtils.getProvider( scmUrl ); @@ -127,41 +136,26 @@ public abstract class AbstractScmManager /** * {@inheritDoc} */ + @Override public void setScmProviderImplementation( String providerType, String providerImplementation ) { + requireNonNull( providerType ); + requireNonNull( providerImplementation ); userProviderTypes.put( providerType, providerImplementation ); } /** * {@inheritDoc} */ + @Override public ScmProvider getProviderByType( String providerType ) - throws NoSuchScmProviderException + throws NoSuchScmProviderException { - if ( logger == null ) - { - logger = getScmLogger(); - - for ( Entry<String, ScmProvider> entry : scmProviders.entrySet() ) - { - ScmProvider p = entry.getValue(); - - p.addListener( logger ); - } - } - String usedProviderType = System.getProperty( "maven.scm.provider." + providerType + ".implementation" ); if ( usedProviderType == null ) { - if ( userProviderTypes.containsKey( providerType ) ) - { - usedProviderType = userProviderTypes.get( providerType ); - } - else - { - usedProviderType = providerType; - } + usedProviderType = userProviderTypes.getOrDefault( providerType, providerType ); } ScmProvider scmProvider = scmProviders.get( usedProviderType ); @@ -177,8 +171,9 @@ public abstract class AbstractScmManager /** * {@inheritDoc} */ + @Override public ScmProvider getProviderByRepository( ScmRepository repository ) - throws NoSuchScmProviderException + throws NoSuchScmProviderException { return getProviderByType( repository.getProvider() ); } @@ -190,13 +185,11 @@ public abstract class AbstractScmManager /** * {@inheritDoc} */ + @Override public ScmRepository makeScmRepository( String scmUrl ) - throws ScmRepositoryException, NoSuchScmProviderException + throws ScmRepositoryException, NoSuchScmProviderException { - if ( scmUrl == null ) - { - throw new NullPointerException( "The scm url cannot be null." ); - } + requireNonNull( scmUrl, "The scm url cannot be null." ); char delimiter = ScmUrlUtils.getDelimiter( scmUrl ).charAt( 0 ); @@ -219,10 +212,7 @@ public abstract class AbstractScmManager */ protected String cleanScmUrl( String scmUrl ) { - if ( scmUrl == null ) - { - throw new NullPointerException( "The scm url cannot be null." ); - } + requireNonNull( scmUrl, "The scm url cannot be null." ); String pathSeparator = ""; @@ -271,13 +261,11 @@ public abstract class AbstractScmManager /** * {@inheritDoc} */ + @Override public ScmRepository makeProviderScmRepository( String providerType, File path ) - throws ScmRepositoryException, UnknownRepositoryStructure, NoSuchScmProviderException + throws ScmRepositoryException, UnknownRepositoryStructure, NoSuchScmProviderException { - if ( providerType == null ) - { - throw new NullPointerException( "The provider type cannot be null." ); - } + requireNonNull( providerType, "The provider type cannot be null." ); ScmProvider provider = getProviderByType( providerType ); @@ -289,11 +277,10 @@ public abstract class AbstractScmManager /** * {@inheritDoc} */ + @Override public List<String> validateScmRepository( String scmUrl ) { - List<String> messages = new ArrayList<String>(); - - messages.addAll( ScmUrlUtils.validate( scmUrl ) ); + List<String> messages = new ArrayList<>( ScmUrlUtils.validate( scmUrl ) ); String providerType = ScmUrlUtils.getProvider( scmUrl ); @@ -313,12 +300,9 @@ public abstract class AbstractScmManager String scmSpecificUrl = cleanScmUrl( scmUrl.substring( providerType.length() + 5 ) ); List<String> providerMessages = - provider.validateScmUrl( scmSpecificUrl, ScmUrlUtils.getDelimiter( scmUrl ).charAt( 0 ) ); + provider.validateScmUrl( scmSpecificUrl, ScmUrlUtils.getDelimiter( scmUrl ).charAt( 0 ) ); - if ( providerMessages == null ) - { - throw new RuntimeException( "The SCM provider cannot return null from validateScmUrl()." ); - } + requireNonNull( providerMessages, "The SCM provider cannot return null from validateScmUrl()." ); messages.addAll( providerMessages ); @@ -328,8 +312,9 @@ public abstract class AbstractScmManager /** * {@inheritDoc} */ + @Override public AddScmResult add( ScmRepository repository, ScmFileSet fileSet ) - throws ScmException + throws ScmException { return this.getProviderByRepository( repository ).add( repository, fileSet ); } @@ -337,8 +322,9 @@ public abstract class AbstractScmManager /** * {@inheritDoc} */ + @Override public AddScmResult add( ScmRepository repository, ScmFileSet fileSet, String message ) - throws ScmException + throws ScmException { return this.getProviderByRepository( repository ).add( repository, fileSet, message ); } @@ -346,52 +332,57 @@ public abstract class AbstractScmManager /** * {@inheritDoc} */ + @Override public BranchScmResult branch( ScmRepository repository, ScmFileSet fileSet, String branchName ) - throws ScmException + throws ScmException { ScmBranchParameters scmBranchParameters = new ScmBranchParameters( "" ); return this.getProviderByRepository( repository ).branch( repository, fileSet, branchName, - scmBranchParameters ); + scmBranchParameters ); } /** * {@inheritDoc} */ + @Override public BranchScmResult branch( ScmRepository repository, ScmFileSet fileSet, String branchName, String message ) - throws ScmException + throws ScmException { ScmBranchParameters scmBranchParameters = new ScmBranchParameters( message ); return this.getProviderByRepository( repository ).branch( repository, fileSet, branchName, - scmBranchParameters ); + scmBranchParameters ); } /** * {@inheritDoc} */ + @Override public ChangeLogScmResult changeLog( ScmRepository repository, ScmFileSet fileSet, Date startDate, Date endDate, int numDays, ScmBranch branch ) - throws ScmException + throws ScmException { return this.getProviderByRepository( repository ).changeLog( repository, fileSet, startDate, endDate, numDays, - branch ); + branch ); } /** * {@inheritDoc} */ + @Override public ChangeLogScmResult changeLog( ScmRepository repository, ScmFileSet fileSet, Date startDate, Date endDate, int numDays, ScmBranch branch, String datePattern ) - throws ScmException + throws ScmException { return this.getProviderByRepository( repository ).changeLog( repository, fileSet, startDate, endDate, numDays, - branch, datePattern ); + branch, datePattern ); } /** * {@inheritDoc} */ + @Override public ChangeLogScmResult changeLog( ChangeLogScmRequest scmRequest ) - throws ScmException + throws ScmException { return this.getProviderByRepository( scmRequest.getScmRepository() ).changeLog( scmRequest ); } @@ -399,9 +390,10 @@ public abstract class AbstractScmManager /** * {@inheritDoc} */ + @Override public ChangeLogScmResult changeLog( ScmRepository repository, ScmFileSet fileSet, ScmVersion startVersion, ScmVersion endVersion ) - throws ScmException + throws ScmException { return this.getProviderByRepository( repository ).changeLog( repository, fileSet, startVersion, endVersion ); } @@ -409,19 +401,21 @@ public abstract class AbstractScmManager /** * {@inheritDoc} */ + @Override public ChangeLogScmResult changeLog( ScmRepository repository, ScmFileSet fileSet, ScmVersion startRevision, ScmVersion endRevision, String datePattern ) - throws ScmException + throws ScmException { return this.getProviderByRepository( repository ).changeLog( repository, fileSet, startRevision, endRevision, - datePattern ); + datePattern ); } /** * {@inheritDoc} */ + @Override public CheckInScmResult checkIn( ScmRepository repository, ScmFileSet fileSet, String message ) - throws ScmException + throws ScmException { return this.getProviderByRepository( repository ).checkIn( repository, fileSet, message ); } @@ -429,8 +423,9 @@ public abstract class AbstractScmManager /** * {@inheritDoc} */ + @Override public CheckInScmResult checkIn( ScmRepository repository, ScmFileSet fileSet, ScmVersion revision, String message ) - throws ScmException + throws ScmException { return this.getProviderByRepository( repository ).checkIn( repository, fileSet, revision, message ); } @@ -438,8 +433,9 @@ public abstract class AbstractScmManager /** * {@inheritDoc} */ + @Override public CheckOutScmResult checkOut( ScmRepository repository, ScmFileSet fileSet ) - throws ScmException + throws ScmException { return this.getProviderByRepository( repository ).checkOut( repository, fileSet ); } @@ -447,8 +443,9 @@ public abstract class AbstractScmManager /** * {@inheritDoc} */ + @Override public CheckOutScmResult checkOut( ScmRepository repository, ScmFileSet fileSet, ScmVersion version ) - throws ScmException + throws ScmException { return this.getProviderByRepository( repository ).checkOut( repository, fileSet, version ); } @@ -456,8 +453,9 @@ public abstract class AbstractScmManager /** * {@inheritDoc} */ + @Override public CheckOutScmResult checkOut( ScmRepository repository, ScmFileSet fileSet, boolean recursive ) - throws ScmException + throws ScmException { return this.getProviderByRepository( repository ).checkOut( repository, fileSet, recursive ); } @@ -465,9 +463,10 @@ public abstract class AbstractScmManager /** * {@inheritDoc} */ + @Override public CheckOutScmResult checkOut( ScmRepository repository, ScmFileSet fileSet, ScmVersion version, boolean recursive ) - throws ScmException + throws ScmException { return this.getProviderByRepository( repository ).checkOut( repository, fileSet, version, recursive ); } @@ -475,9 +474,10 @@ public abstract class AbstractScmManager /** * {@inheritDoc} */ + @Override public DiffScmResult diff( ScmRepository repository, ScmFileSet fileSet, ScmVersion startVersion, ScmVersion endVersion ) - throws ScmException + throws ScmException { return this.getProviderByRepository( repository ).diff( repository, fileSet, startVersion, endVersion ); } @@ -485,8 +485,9 @@ public abstract class AbstractScmManager /** * {@inheritDoc} */ + @Override public EditScmResult edit( ScmRepository repository, ScmFileSet fileSet ) - throws ScmException + throws ScmException { return this.getProviderByRepository( repository ).edit( repository, fileSet ); } @@ -494,8 +495,9 @@ public abstract class AbstractScmManager /** * {@inheritDoc} */ + @Override public ExportScmResult export( ScmRepository repository, ScmFileSet fileSet ) - throws ScmException + throws ScmException { return this.getProviderByRepository( repository ).export( repository, fileSet ); } @@ -503,8 +505,9 @@ public abstract class AbstractScmManager /** * {@inheritDoc} */ + @Override public ExportScmResult export( ScmRepository repository, ScmFileSet fileSet, ScmVersion version ) - throws ScmException + throws ScmException { return this.getProviderByRepository( repository ).export( repository, fileSet, version ); } @@ -512,19 +515,21 @@ public abstract class AbstractScmManager /** * {@inheritDoc} */ + @Override public ExportScmResult export( ScmRepository repository, ScmFileSet fileSet, String outputDirectory ) - throws ScmException + throws ScmException { return this.getProviderByRepository( repository ).export( repository, fileSet, (ScmVersion) null, - outputDirectory ); + outputDirectory ); } /** * {@inheritDoc} */ + @Override public ExportScmResult export( ScmRepository repository, ScmFileSet fileSet, ScmVersion version, String outputDirectory ) - throws ScmException + throws ScmException { return this.getProviderByRepository( repository ).export( repository, fileSet, version, outputDirectory ); } @@ -532,8 +537,9 @@ public abstract class AbstractScmManager /** * {@inheritDoc} */ + @Override public ListScmResult list( ScmRepository repository, ScmFileSet fileSet, boolean recursive, ScmVersion version ) - throws ScmException + throws ScmException { return this.getProviderByRepository( repository ).list( repository, fileSet, recursive, version ); } @@ -541,8 +547,9 @@ public abstract class AbstractScmManager /** * {@inheritDoc} */ + @Override public MkdirScmResult mkdir( ScmRepository repository, ScmFileSet fileSet, String message, boolean createInLocal ) - throws ScmException + throws ScmException { return this.getProviderByRepository( repository ).mkdir( repository, fileSet, message, createInLocal ); } @@ -550,8 +557,9 @@ public abstract class AbstractScmManager /** * {@inheritDoc} */ + @Override public RemoveScmResult remove( ScmRepository repository, ScmFileSet fileSet, String message ) - throws ScmException + throws ScmException { return this.getProviderByRepository( repository ).remove( repository, fileSet, message ); } @@ -559,8 +567,9 @@ public abstract class AbstractScmManager /** * {@inheritDoc} */ + @Override public StatusScmResult status( ScmRepository repository, ScmFileSet fileSet ) - throws ScmException + throws ScmException { return this.getProviderByRepository( repository ).status( repository, fileSet ); } @@ -568,8 +577,9 @@ public abstract class AbstractScmManager /** * {@inheritDoc} */ + @Override public TagScmResult tag( ScmRepository repository, ScmFileSet fileSet, String tagName ) - throws ScmException + throws ScmException { return this.tag( repository, fileSet, tagName, "" ); } @@ -577,8 +587,9 @@ public abstract class AbstractScmManager /** * {@inheritDoc} */ + @Override public TagScmResult tag( ScmRepository repository, ScmFileSet fileSet, String tagName, String message ) - throws ScmException + throws ScmException { ScmTagParameters scmTagParameters = new ScmTagParameters( message ); return this.getProviderByRepository( repository ).tag( repository, fileSet, tagName, scmTagParameters ); @@ -587,8 +598,9 @@ public abstract class AbstractScmManager /** * {@inheritDoc} */ + @Override public UnEditScmResult unedit( ScmRepository repository, ScmFileSet fileSet ) - throws ScmException + throws ScmException { return this.getProviderByRepository( repository ).unedit( repository, fileSet ); } @@ -596,8 +608,9 @@ public abstract class AbstractScmManager /** * {@inheritDoc} */ + @Override public UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet ) - throws ScmException + throws ScmException { return this.getProviderByRepository( repository ).update( repository, fileSet ); } @@ -605,8 +618,9 @@ public abstract class AbstractScmManager /** * {@inheritDoc} */ + @Override public UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, ScmVersion version ) - throws ScmException + throws ScmException { return this.getProviderByRepository( repository ).update( repository, fileSet, version ); } @@ -614,8 +628,9 @@ public abstract class AbstractScmManager /** * {@inheritDoc} */ + @Override public UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, boolean runChangelog ) - throws ScmException + throws ScmException { return this.getProviderByRepository( repository ).update( repository, fileSet, runChangelog ); } @@ -623,9 +638,10 @@ public abstract class AbstractScmManager /** * {@inheritDoc} */ + @Override public UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, ScmVersion version, boolean runChangelog ) - throws ScmException + throws ScmException { return this.getProviderByRepository( repository ).update( repository, fileSet, version, runChangelog ); } @@ -633,8 +649,9 @@ public abstract class AbstractScmManager /** * {@inheritDoc} */ + @Override public UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, String datePattern ) - throws ScmException + throws ScmException { return this.getProviderByRepository( repository ).update( repository, fileSet, (ScmVersion) null, datePattern ); } @@ -642,9 +659,10 @@ public abstract class AbstractScmManager /** * {@inheritDoc} */ + @Override public UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, ScmVersion version, String datePattern ) - throws ScmException + throws ScmException { return this.getProviderByRepository( repository ).update( repository, fileSet, version, datePattern ); } @@ -652,8 +670,9 @@ public abstract class AbstractScmManager /** * {@inheritDoc} */ + @Override public UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, Date lastUpdate ) - throws ScmException + throws ScmException { return this.getProviderByRepository( repository ).update( repository, fileSet, (ScmVersion) null, lastUpdate ); } @@ -661,8 +680,9 @@ public abstract class AbstractScmManager /** * {@inheritDoc} */ + @Override public UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, ScmVersion version, Date lastUpdate ) - throws ScmException + throws ScmException { return this.getProviderByRepository( repository ).update( repository, fileSet, version, lastUpdate ); } @@ -670,35 +690,39 @@ public abstract class AbstractScmManager /** * {@inheritDoc} */ + @Override public UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, Date lastUpdate, String datePattern ) - throws ScmException + throws ScmException { return this.getProviderByRepository( repository ).update( repository, fileSet, (ScmVersion) null, lastUpdate, - datePattern ); + datePattern ); } /** * {@inheritDoc} */ + @Override public UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, ScmVersion version, Date lastUpdate, String datePattern ) - throws ScmException + throws ScmException { return this.getProviderByRepository( repository ).update( repository, fileSet, version, lastUpdate, - datePattern ); + datePattern ); } /** * {@inheritDoc} */ + @Override public BlameScmResult blame( ScmRepository repository, ScmFileSet fileSet, String filename ) - throws ScmException + throws ScmException { return this.getProviderByRepository( repository ).blame( repository, fileSet, filename ); } + @Override public BlameScmResult blame( BlameScmRequest blameScmRequest ) - throws ScmException + throws ScmException { return this.getProviderByRepository( blameScmRequest.getScmRepository() ).blame( blameScmRequest ); } diff --git a/maven-scm-api/src/main/java/org/apache/maven/scm/manager/BasicScmManager.java b/maven-scm-api/src/main/java/org/apache/maven/scm/manager/BasicScmManager.java index 2af520462..31eef8ecf 100644 --- a/maven-scm-api/src/main/java/org/apache/maven/scm/manager/BasicScmManager.java +++ b/maven-scm-api/src/main/java/org/apache/maven/scm/manager/BasicScmManager.java @@ -19,9 +19,6 @@ package org.apache.maven.scm.manager; * under the License. */ -import org.apache.maven.scm.log.DefaultLog; -import org.apache.maven.scm.log.ScmLogger; - /** * @author <a href="mailto:[email protected]">Emmanuel Venisse</a> * @@ -29,10 +26,4 @@ import org.apache.maven.scm.log.ScmLogger; public class BasicScmManager extends AbstractScmManager { - /** {@inheritDoc} */ - @Deprecated - protected ScmLogger getScmLogger() - { - return new DefaultLog(); - } } diff --git a/maven-scm-api/src/main/java/org/apache/maven/scm/manager/NoSuchScmProviderException.java b/maven-scm-api/src/main/java/org/apache/maven/scm/manager/NoSuchScmProviderException.java index c2ed2be5a..9b1ad888f 100644 --- a/maven-scm-api/src/main/java/org/apache/maven/scm/manager/NoSuchScmProviderException.java +++ b/maven-scm-api/src/main/java/org/apache/maven/scm/manager/NoSuchScmProviderException.java @@ -21,6 +21,8 @@ package org.apache.maven.scm.manager; import org.apache.maven.scm.ScmException; +import static java.util.Objects.requireNonNull; + /** * @author <a href="mailto:[email protected]">Trygve Laugstøl</a> * @author <a href="mailto:[email protected]">Emmanuel Venisse</a> @@ -31,13 +33,12 @@ public class NoSuchScmProviderException { static final long serialVersionUID = 4770645185214496323L; - private String providerName; + private final String providerName; public NoSuchScmProviderException( String providerName ) { super( "No such provider: '" + providerName + "'." ); - - this.providerName = providerName; + this.providerName = requireNonNull( providerName ); } public String getProviderName() diff --git a/maven-scm-api/src/main/java/org/apache/maven/scm/manager/ScmManager.java b/maven-scm-api/src/main/java/org/apache/maven/scm/manager/ScmManager.java index f125b9a74..518e44235 100644 --- a/maven-scm-api/src/main/java/org/apache/maven/scm/manager/ScmManager.java +++ b/maven-scm-api/src/main/java/org/apache/maven/scm/manager/ScmManager.java @@ -59,8 +59,6 @@ import java.util.List; */ public interface ScmManager { - String ROLE = ScmManager.class.getName(); - // ---------------------------------------------------------------------- // Repository // ---------------------------------------------------------------------- diff --git a/maven-scm-api/src/main/java/org/apache/maven/scm/provider/AbstractScmProvider.java b/maven-scm-api/src/main/java/org/apache/maven/scm/provider/AbstractScmProvider.java index de30c6f4a..fffcad4ee 100644 --- a/maven-scm-api/src/main/java/org/apache/maven/scm/provider/AbstractScmProvider.java +++ b/maven-scm-api/src/main/java/org/apache/maven/scm/provider/AbstractScmProvider.java @@ -72,7 +72,7 @@ import java.util.List; public abstract class AbstractScmProvider implements ScmProvider { - private ScmLogDispatcher logDispatcher = new ScmLogDispatcher(); + private final ScmLogDispatcher logDispatcher = new ScmLogDispatcher(); // ---------------------------------------------------------------------- // @@ -81,6 +81,7 @@ public abstract class AbstractScmProvider /** * {@inheritDoc} */ + @Override public String getScmSpecificFilename() { return null; @@ -89,6 +90,7 @@ public abstract class AbstractScmProvider /** * {@inheritDoc} */ + @Override public String sanitizeTagName( String tag ) { /* by default, we assume all tags are valid. */ @@ -98,6 +100,7 @@ public abstract class AbstractScmProvider /** * {@inheritDoc} */ + @Override public boolean validateTagName( String tag ) { /* by default, we assume all tags are valid. */ @@ -107,6 +110,7 @@ public abstract class AbstractScmProvider /** * {@inheritDoc} */ + @Override public List<String> validateScmUrl( String scmSpecificUrl, char delimiter ) { List<String> messages = new ArrayList<String>(); @@ -126,6 +130,7 @@ public abstract class AbstractScmProvider /** * {@inheritDoc} */ + @Override public boolean requiresEditMode() { return false; @@ -138,6 +143,7 @@ public abstract class AbstractScmProvider /** * {@inheritDoc} */ + @Override public AddScmResult add( ScmRepository repository, ScmFileSet fileSet ) throws ScmException { @@ -147,6 +153,7 @@ public abstract class AbstractScmProvider /** * {@inheritDoc} */ + @Override public AddScmResult add( ScmRepository repository, ScmFileSet fileSet, String message ) throws ScmException { @@ -163,6 +170,7 @@ public abstract class AbstractScmProvider return add( repository.getProviderRepository(), fileSet, parameters ); } + @Override public AddScmResult add( ScmRepository repository, ScmFileSet fileSet, CommandParameters parameters ) throws ScmException { @@ -178,6 +186,9 @@ public abstract class AbstractScmProvider return add( repository.getProviderRepository(), fileSet, parameters ); } + /** + * TODO: why public? This should be protected, no? + */ public AddScmResult add( ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters ) throws ScmException { @@ -187,6 +198,7 @@ public abstract class AbstractScmProvider /** * {@inheritDoc} */ + @Override public BranchScmResult branch( ScmRepository repository, ScmFileSet fileSet, String branchName ) throws ScmException { @@ -196,6 +208,7 @@ public abstract class AbstractScmProvider /** * {@inheritDoc} */ + @Override public BranchScmResult branch( ScmRepository repository, ScmFileSet fileSet, String branchName, String message ) throws ScmException { @@ -209,6 +222,7 @@ public abstract class AbstractScmProvider return branch( repository, fileSet, branchName, scmBranchParameters ); } + @Override public BranchScmResult branch( ScmRepository repository, ScmFileSet fileSet, String branchName, ScmBranchParameters scmBranchParameters ) throws ScmException @@ -236,6 +250,8 @@ public abstract class AbstractScmProvider * * @deprecated */ + @Deprecated + @Override public ChangeLogScmResult changeLog( ScmRepository repository, ScmFileSet fileSet, Date startDate, Date endDate, int numDays, String branch ) throws ScmException @@ -248,6 +264,8 @@ public abstract class AbstractScmProvider * * @deprecated */ + @Deprecated + @Override public ChangeLogScmResult changeLog( ScmRepository repository, ScmFileSet fileSet, Date startDate, Date endDate, int numDays, String branch, String datePattern ) throws ScmException @@ -265,6 +283,7 @@ public abstract class AbstractScmProvider /** * {@inheritDoc} */ + @Override public ChangeLogScmResult changeLog( ScmRepository repository, ScmFileSet fileSet, Date startDate, Date endDate, int numDays, ScmBranch branch ) throws ScmException @@ -275,6 +294,7 @@ public abstract class AbstractScmProvider /** * {@inheritDoc} */ + @Override public ChangeLogScmResult changeLog( ScmRepository repository, ScmFileSet fileSet, Date startDate, Date endDate, int numDays, ScmBranch branch, String datePattern ) throws ScmException @@ -290,6 +310,7 @@ public abstract class AbstractScmProvider /** * {@inheritDoc} */ + @Override public ChangeLogScmResult changeLog( ChangeLogScmRequest request ) throws ScmException { @@ -305,6 +326,8 @@ public abstract class AbstractScmProvider * * @deprecated */ + @Deprecated + @Override public ChangeLogScmResult changeLog( ScmRepository repository, ScmFileSet fileSet, String startTag, String endTag ) throws ScmException { @@ -316,6 +339,8 @@ public abstract class AbstractScmProvider * * @deprecated */ + @Deprecated + @Override public ChangeLogScmResult changeLog( ScmRepository repository, ScmFileSet fileSet, String startTag, String endTag, String datePattern ) throws ScmException @@ -339,6 +364,7 @@ public abstract class AbstractScmProvider /** * {@inheritDoc} */ + @Override public ChangeLogScmResult changeLog( ScmRepository repository, ScmFileSet fileSet, ScmVersion startVersion, ScmVersion endVersion ) throws ScmException @@ -349,6 +375,7 @@ public abstract class AbstractScmProvider /** * {@inheritDoc} */ + @Override public ChangeLogScmResult changeLog( ScmRepository repository, ScmFileSet fileSet, ScmVersion startVersion, ScmVersion endVersion, String datePattern ) throws ScmException @@ -379,6 +406,8 @@ public abstract class AbstractScmProvider * * @deprecated */ + @Deprecated + @Override public CheckInScmResult checkIn( ScmRepository repository, ScmFileSet fileSet, String tag, String message ) throws ScmException { @@ -395,6 +424,7 @@ public abstract class AbstractScmProvider /** * {@inheritDoc} */ + @Override public CheckInScmResult checkIn( ScmRepository repository, ScmFileSet fileSet, String message ) throws ScmException { @@ -404,6 +434,7 @@ public abstract class AbstractScmProvider /** * {@inheritDoc} */ + @Override public CheckInScmResult checkIn( ScmRepository repository, ScmFileSet fileSet, ScmVersion scmVersion, String message ) throws ScmException @@ -432,6 +463,8 @@ public abstract class AbstractScmProvider * * @deprecated */ + @Deprecated + @Override public CheckOutScmResult checkOut( ScmRepository repository, ScmFileSet fileSet, String tag ) throws ScmException { @@ -443,6 +476,8 @@ public abstract class AbstractScmProvider * * @deprecated */ + @Deprecated + @Override public CheckOutScmResult checkOut( ScmRepository repository, ScmFileSet fileSet, String tag, boolean recursive ) throws ScmException { @@ -459,6 +494,7 @@ public abstract class AbstractScmProvider /** * {@inheritDoc} */ + @Override public CheckOutScmResult checkOut( ScmRepository repository, ScmFileSet fileSet ) throws ScmException { @@ -468,6 +504,7 @@ public abstract class AbstractScmProvider /** * {@inheritDoc} */ + @Override public CheckOutScmResult checkOut( ScmRepository repository, ScmFileSet fileSet, ScmVersion scmVersion ) throws ScmException { @@ -477,6 +514,7 @@ public abstract class AbstractScmProvider /** * {@inheritDoc} */ + @Override public CheckOutScmResult checkOut( ScmRepository repository, ScmFileSet fileSet, boolean recursive ) throws ScmException { @@ -486,6 +524,7 @@ public abstract class AbstractScmProvider /** * {@inheritDoc} */ + @Override public CheckOutScmResult checkOut( ScmRepository repository, ScmFileSet fileSet, ScmVersion scmVersion, boolean recursive ) throws ScmException @@ -527,6 +566,8 @@ public abstract class AbstractScmProvider * * @deprecated */ + @Deprecated + @Override public DiffScmResult diff( ScmRepository repository, ScmFileSet fileSet, String startRevision, String endRevision ) throws ScmException { @@ -549,6 +590,7 @@ public abstract class AbstractScmProvider /** * {@inheritDoc} */ + @Override public DiffScmResult diff( ScmRepository repository, ScmFileSet fileSet, ScmVersion startVersion, ScmVersion endVersion ) throws ScmException @@ -573,6 +615,7 @@ public abstract class AbstractScmProvider /** * {@inheritDoc} */ + @Override public EditScmResult edit( ScmRepository repository, ScmFileSet fileSet ) throws ScmException { @@ -599,6 +642,8 @@ public abstract class AbstractScmProvider * * @deprecated */ + @Deprecated + @Override public ExportScmResult export( ScmRepository repository, ScmFileSet fileSet, String tag ) throws ScmException { @@ -610,6 +655,8 @@ public abstract class AbstractScmProvider * * @deprecated */ + @Deprecated + @Override public ExportScmResult export( ScmRepository repository, ScmFileSet fileSet, String tag, String outputDirectory ) throws ScmException { @@ -626,6 +673,7 @@ public abstract class AbstractScmProvider /** * {@inheritDoc} */ + @Override public ExportScmResult export( ScmRepository repository, ScmFileSet fileSet ) throws ScmException { @@ -635,6 +683,7 @@ public abstract class AbstractScmProvider /** * {@inheritDoc} */ + @Override public ExportScmResult export( ScmRepository repository, ScmFileSet fileSet, ScmVersion scmVersion ) throws ScmException { @@ -644,6 +693,7 @@ public abstract class AbstractScmProvider /** * {@inheritDoc} */ + @Override public ExportScmResult export( ScmRepository repository, ScmFileSet fileSet, ScmVersion scmVersion, String outputDirectory ) throws ScmException @@ -669,6 +719,7 @@ public abstract class AbstractScmProvider /** * {@inheritDoc} */ + @Override public ListScmResult list( ScmRepository repository, ScmFileSet fileSet, boolean recursive, String tag ) throws ScmException { @@ -685,6 +736,7 @@ public abstract class AbstractScmProvider /** * {@inheritDoc} */ + @Override public ListScmResult list( ScmRepository repository, ScmFileSet fileSet, boolean recursive, ScmVersion scmVersion ) throws ScmException { @@ -721,6 +773,7 @@ public abstract class AbstractScmProvider /** * {@inheritDoc} */ + @Override public MkdirScmResult mkdir( ScmRepository repository, ScmFileSet fileSet, String message, boolean createInLocal ) throws ScmException { @@ -779,6 +832,7 @@ public abstract class AbstractScmProvider /** * {@inheritDoc} */ + @Override public RemoveScmResult remove( ScmRepository repository, ScmFileSet fileSet, String message ) throws ScmException { @@ -801,6 +855,7 @@ public abstract class AbstractScmProvider /** * {@inheritDoc} */ + @Override public StatusScmResult status( ScmRepository repository, ScmFileSet fileSet ) throws ScmException { @@ -821,6 +876,7 @@ public abstract class AbstractScmProvider /** * {@inheritDoc} */ + @Override public TagScmResult tag( ScmRepository repository, ScmFileSet fileSet, String tagName ) throws ScmException { @@ -830,6 +886,7 @@ public abstract class AbstractScmProvider /** * {@inheritDoc} */ + @Override public TagScmResult tag( ScmRepository repository, ScmFileSet fileSet, String tagName, String message ) throws ScmException { @@ -854,6 +911,7 @@ public abstract class AbstractScmProvider /** * {@inheritDoc} */ + @Override public TagScmResult tag( ScmRepository repository, ScmFileSet fileSet, String tagName, ScmTagParameters scmTagParameters ) throws ScmException @@ -878,6 +936,7 @@ public abstract class AbstractScmProvider /** * {@inheritDoc} */ + @Override public UnEditScmResult unedit( ScmRepository repository, ScmFileSet fileSet ) throws ScmException { @@ -903,6 +962,7 @@ public abstract class AbstractScmProvider /** * {@inheritDoc} */ + @Override public UntagScmResult untag( ScmRepository repository, ScmFileSet fileSet, CommandParameters parameters ) throws ScmException @@ -916,6 +976,8 @@ public abstract class AbstractScmProvider * * @deprecated */ + @Deprecated + @Override public UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, String tag ) throws ScmException { @@ -927,6 +989,8 @@ public abstract class AbstractScmProvider * * @deprecated */ + @Deprecated + @Override public UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, String tag, boolean runChangelog ) throws ScmException { @@ -936,6 +1000,7 @@ public abstract class AbstractScmProvider /** * {@inheritDoc} */ + @Override public UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet ) throws ScmException { @@ -945,6 +1010,7 @@ public abstract class AbstractScmProvider /** * {@inheritDoc} */ + @Override public UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, ScmVersion scmVersion ) throws ScmException { @@ -954,6 +1020,7 @@ public abstract class AbstractScmProvider /** * {@inheritDoc} */ + @Override public UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, boolean runChangelog ) throws ScmException { @@ -963,6 +1030,7 @@ public abstract class AbstractScmProvider /** * {@inheritDoc} */ + @Override public UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, ScmVersion scmVersion, boolean runChangelog ) throws ScmException @@ -975,6 +1043,7 @@ public abstract class AbstractScmProvider * * @deprecated */ + @Override public UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, String tag, String datePattern ) throws ScmException { @@ -984,6 +1053,7 @@ public abstract class AbstractScmProvider /** * {@inheritDoc} */ + @Override public UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, ScmVersion scmVersion, String datePattern ) throws ScmException @@ -1030,6 +1100,8 @@ public abstract class AbstractScmProvider * * @deprecated */ + @Deprecated + @Override public UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, String tag, Date lastUpdate ) throws ScmException { @@ -1039,6 +1111,7 @@ public abstract class AbstractScmProvider /** * {@inheritDoc} */ + @Override public UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, ScmVersion scmVersion, Date lastUpdate ) throws ScmException @@ -1051,6 +1124,8 @@ public abstract class AbstractScmProvider * * @deprecated */ + @Deprecated + @Override public UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, String tag, Date lastUpdate, String datePattern ) throws ScmException @@ -1068,6 +1143,7 @@ public abstract class AbstractScmProvider /** * {@inheritDoc} */ + @Override public UpdateScmResult update( ScmRepository repository, ScmFileSet fileSet, ScmVersion scmVersion, Date lastUpdate, String datePattern ) throws ScmException @@ -1100,6 +1176,7 @@ public abstract class AbstractScmProvider /** * {@inheritDoc} */ + @Override public BlameScmResult blame( ScmRepository repository, ScmFileSet fileSet, String filename ) throws ScmException { @@ -1118,6 +1195,7 @@ public abstract class AbstractScmProvider throw new NoSuchCommandScmException( "blame" ); } + @Override public BlameScmResult blame( BlameScmRequest blameScmRequest ) throws ScmException { @@ -1125,12 +1203,14 @@ public abstract class AbstractScmProvider blameScmRequest.getCommandParameters() ); } + @Override public InfoScmResult info( ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters ) throws ScmException { return null; } + @Override public RemoteInfoScmResult remoteInfo( ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters ) throws ScmException @@ -1145,6 +1225,7 @@ public abstract class AbstractScmProvider /** * {@inheritDoc} */ + @Override public void addListener( ScmLogger logger ) { logDispatcher.addListener( logger ); @@ -1158,6 +1239,7 @@ public abstract class AbstractScmProvider /** * {@inheritDoc} */ + @Override public ScmProviderRepository makeProviderScmRepository( File path ) throws ScmRepositoryException, UnknownRepositoryStructure { diff --git a/maven-scm-api/src/main/java/org/apache/maven/scm/provider/ScmProvider.java b/maven-scm-api/src/main/java/org/apache/maven/scm/provider/ScmProvider.java index d7e69e979..219e2f115 100644 --- a/maven-scm-api/src/main/java/org/apache/maven/scm/provider/ScmProvider.java +++ b/maven-scm-api/src/main/java/org/apache/maven/scm/provider/ScmProvider.java @@ -62,8 +62,6 @@ import java.util.List; */ public interface ScmProvider { - String ROLE = ScmProvider.class.getName(); - String getScmType(); /** @@ -71,7 +69,6 @@ public interface ScmProvider * * @param logger The logger */ - @Deprecated void addListener( ScmLogger logger ); boolean requiresEditMode(); diff --git a/maven-scm-api/src/main/java/org/apache/maven/scm/util/AbstractConsumer.java b/maven-scm-api/src/main/java/org/apache/maven/scm/util/AbstractConsumer.java index 8069101dc..20e30f5ca 100644 --- a/maven-scm-api/src/main/java/org/apache/maven/scm/util/AbstractConsumer.java +++ b/maven-scm-api/src/main/java/org/apache/maven/scm/util/AbstractConsumer.java @@ -29,6 +29,8 @@ import java.text.SimpleDateFormat; import java.util.Date; import java.util.Locale; +import static java.util.Objects.requireNonNull; + /** * @author <a href="mailto:[email protected]">Emmanuel Venisse</a> * @@ -36,7 +38,7 @@ import java.util.Locale; public abstract class AbstractConsumer implements StreamConsumer { - private ScmLogger logger; + private final ScmLogger logger; /** * AbstractConsumer constructor. @@ -45,7 +47,7 @@ public abstract class AbstractConsumer */ public AbstractConsumer( ScmLogger logger ) { - setLogger( logger ); + this.logger = requireNonNull( logger ); } public ScmLogger getLogger() @@ -53,11 +55,6 @@ public abstract class AbstractConsumer return logger; } - public void setLogger( ScmLogger logger ) - { - this.logger = logger; - } - /** * Converts the date timestamp from the output into a date object. * diff --git a/maven-scm-client/pom.xml b/maven-scm-client/pom.xml index 553ff1d76..533bd7c98 100644 --- a/maven-scm-client/pom.xml +++ b/maven-scm-client/pom.xml @@ -57,28 +57,30 @@ <artifactId>maven-scm-provider-svnexe</artifactId> </dependency> <!-- end providers declaration --> + + <!-- runtime bits needed to construct Plexus --> + <dependency> + <groupId>org.codehaus.plexus</groupId> + <artifactId>plexus-classworlds</artifactId> + </dependency> + <dependency> + <groupId>org.codehaus.plexus</groupId> + <artifactId>plexus-component-annotations</artifactId> + </dependency> + <dependency> + <groupId>org.eclipse.sisu</groupId> + <artifactId>org.eclipse.sisu.plexus</artifactId> + </dependency> + <dependency> + <groupId>com.google.inject</groupId> + <artifactId>guice</artifactId> + <classifier>no_aop</classifier> + <scope>runtime</scope> + </dependency> </dependencies> <build> <plugins> - <plugin> - <groupId>org.codehaus.plexus</groupId> - <artifactId>plexus-component-metadata</artifactId> - <executions> - <execution> - <id>merge</id> - <configuration> - <descriptors> - <descriptor>src/main/resources/META-INF/plexus/components.xml</descriptor> - </descriptors> - </configuration> - <phase>generate-resources</phase> - <goals> - <goal>merge-metadata</goal> - </goals> - </execution> - </executions> - </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-assembly-plugin</artifactId> diff --git a/maven-scm-client/src/main/java/org/apache/maven/scm/client/cli/MavenScmCli.java b/maven-scm-client/src/main/java/org/apache/maven/scm/client/cli/MavenScmCli.java index 66a281eaa..c9964e3bf 100644 --- a/maven-scm-client/src/main/java/org/apache/maven/scm/client/cli/MavenScmCli.java +++ b/maven-scm-client/src/main/java/org/apache/maven/scm/client/cli/MavenScmCli.java @@ -37,7 +37,14 @@ import org.apache.maven.scm.manager.NoSuchScmProviderException; import org.apache.maven.scm.manager.ScmManager; import org.apache.maven.scm.repository.ScmRepository; import org.apache.maven.scm.repository.ScmRepositoryException; -import org.codehaus.plexus.embed.Embedder; +import org.codehaus.plexus.ContainerConfiguration; +import org.codehaus.plexus.DefaultContainerConfiguration; +import org.codehaus.plexus.DefaultPlexusContainer; +import org.codehaus.plexus.PlexusConstants; +import org.codehaus.plexus.PlexusContainer; +import org.codehaus.plexus.PlexusContainerException; +import org.codehaus.plexus.context.Context; +import org.codehaus.plexus.context.DefaultContext; import org.codehaus.plexus.util.StringUtils; /** @@ -47,7 +54,7 @@ import org.codehaus.plexus.util.StringUtils; */ public class MavenScmCli { - private Embedder plexus; + private PlexusContainer plexus; private ScmManager scmManager; @@ -58,18 +65,40 @@ public class MavenScmCli public MavenScmCli() throws Exception { - plexus = new Embedder(); - - plexus.start(); + plexus = createPlexusContainer(); + scmManager = plexus.lookup( ScmManager.class ); + } - scmManager = (ScmManager) plexus.lookup( ScmManager.ROLE ); + /** + * Method that creates Plexus container: we must create a Plexus container, as we must pick up any possible + * Plexus XML component definition (not used since Maven 3.8.1, but present in older Mavens). + */ + private PlexusContainer createPlexusContainer() { + final Context context = new DefaultContext(); + String path = System.getProperty( "basedir" ); + if (path == null) { + path = new File( "" ).getAbsolutePath(); + } + context.put( "basedir", path ); + + ContainerConfiguration plexusConfiguration = new DefaultContainerConfiguration(); + plexusConfiguration.setName( "maven-scm-cli" ) + .setContext( context.getContextData() ) + .setClassPathScanning( PlexusConstants.SCANNING_CACHE ) + .setAutoWiring( true ); + try { + return new DefaultPlexusContainer( plexusConfiguration ); + } + catch ( PlexusContainerException e ) { + throw new IllegalStateException( "Could not create Plexus container", e ); + } } public void stop() { try { - plexus.stop(); + plexus.dispose(); } catch ( Exception ex ) { diff --git a/maven-scm-client/src/main/resources/META-INF/plexus/components.xml b/maven-scm-client/src/main/resources/META-INF/plexus/components.xml deleted file mode 100644 index e9b9d94be..000000000 --- a/maven-scm-client/src/main/resources/META-INF/plexus/components.xml +++ /dev/null @@ -1,56 +0,0 @@ -<?xml version='1.0' encoding='UTF-8'?> -<!-- -Licensed to the Apache Software Foundation (ASF) under one -or more contributor license agreements. See the NOTICE file -distributed with this work for additional information -regarding copyright ownership. The ASF licenses this file -to you under the Apache License, Version 2.0 (the -"License"); you may not use this file except in compliance -with the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, -software distributed under the License is distributed on an -"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -KIND, either express or implied. See the License for the -specific language governing permissions and limitations -under the License. ---> - -<component-set> - <components> - <component> - <role>org.apache.maven.scm.manager.ScmManager</role> - <implementation>org.apache.maven.scm.manager.plexus.DefaultScmManager</implementation> - <requirements> - <requirement> - <role>org.apache.maven.scm.provider.ScmProvider</role> - <field-name>scmProviders</field-name> - </requirement> - </requirements> - </component> - - <component> - <role>org.apache.maven.scm.provider.ScmProvider</role> - <role-hint>hg</role-hint> - <implementation>org.apache.maven.scm.provider.hg.HgScmProvider</implementation> - <description>Mercurial (Hg) is a decentralized revision control system.</description> - </component> - <component> - <role>org.apache.maven.scm.provider.ScmProvider</role> - <role-hint>local</role-hint> - <implementation>org.apache.maven.scm.provider.local.LocalScmProvider</implementation> - </component> - <component> - <role>org.apache.maven.scm.provider.ScmProvider</role> - <role-hint>git</role-hint> - <implementation>org.apache.maven.scm.provider.git.gitexe.GitExeScmProvider</implementation> - </component> - <component> - <role>org.apache.maven.scm.provider.ScmProvider</role> - <role-hint>svn</role-hint> - <implementation>org.apache.maven.scm.provider.svn.svnexe.SvnExeScmProvider</implementation> - </component> - </components> -</component-set> diff --git a/maven-scm-managers/maven-scm-manager-plexus/pom.xml b/maven-scm-managers/maven-scm-manager-plexus/pom.xml index 6548b95cd..58bc4af22 100644 --- a/maven-scm-managers/maven-scm-manager-plexus/pom.xml +++ b/maven-scm-managers/maven-scm-manager-plexus/pom.xml @@ -35,8 +35,12 @@ <dependencies> <dependency> - <groupId>org.codehaus.plexus</groupId> - <artifactId>plexus-container-default</artifactId> + <groupId>javax.inject</groupId> + <artifactId>javax.inject</artifactId> + </dependency> + <dependency> + <groupId>org.eclipse.sisu</groupId> + <artifactId>org.eclipse.sisu.plexus</artifactId> </dependency> <dependency> <groupId>org.apache.maven.scm</groupId> @@ -44,21 +48,21 @@ </dependency> </dependencies> - <build> - <plugins> - <plugin> - <groupId>org.codehaus.plexus</groupId> - <artifactId>plexus-component-metadata</artifactId> - <executions> - <execution> - <id>create-component-descriptor</id> - <phase>generate-resources</phase> - <goals> - <goal>generate-metadata</goal> - </goals> - </execution> - </executions> - </plugin> - </plugins> - </build> +<!-- <build>--> +<!-- <plugins>--> +<!-- <plugin>--> +<!-- <groupId>org.codehaus.plexus</groupId>--> +<!-- <artifactId>plexus-component-metadata</artifactId>--> +<!-- <executions>--> +<!-- <execution>--> +<!-- <id>create-component-descriptor</id>--> +<!-- <phase>generate-resources</phase>--> +<!-- <goals>--> +<!-- <goal>generate-metadata</goal>--> +<!-- </goals>--> +<!-- </execution>--> +<!-- </executions>--> +<!-- </plugin>--> +<!-- </plugins>--> +<!-- </build>--> </project> diff --git a/maven-scm-managers/maven-scm-manager-plexus/src/main/java/org/apache/maven/scm/manager/plexus/DefaultScmManager.java b/maven-scm-managers/maven-scm-manager-plexus/src/main/java/org/apache/maven/scm/manager/plexus/DefaultScmManager.java index 6066519bb..ff9e079ec 100644 --- a/maven-scm-managers/maven-scm-manager-plexus/src/main/java/org/apache/maven/scm/manager/plexus/DefaultScmManager.java +++ b/maven-scm-managers/maven-scm-manager-plexus/src/main/java/org/apache/maven/scm/manager/plexus/DefaultScmManager.java @@ -19,97 +19,37 @@ package org.apache.maven.scm.manager.plexus; * under the License. */ -import org.apache.maven.scm.log.ScmLogger; +import javax.inject.Inject; +import javax.inject.Named; +import javax.inject.Singleton; + import org.apache.maven.scm.manager.AbstractScmManager; import org.apache.maven.scm.provider.ScmProvider; -import org.codehaus.plexus.logging.LogEnabled; -import org.codehaus.plexus.logging.Logger; -import org.codehaus.plexus.personality.plexus.lifecycle.phase.Initializable; -import java.util.HashMap; import java.util.Map; +import static java.util.Objects.requireNonNull; + /** * @author <a href="mailto:[email protected]">Trygve Laugstøl</a> * @author <a href="mailto:[email protected]">Brett Porter</a> * @author <a href="mailto:[email protected]">Emmanuel Venisse</a> * @author Olivier Lamy - * - * @plexus.component role="org.apache.maven.scm.manager.ScmManager" */ +@Singleton +@Named public class DefaultScmManager extends AbstractScmManager - implements Initializable, LogEnabled { - /** - * @plexus.requirement role="org.apache.maven.scm.provider.ScmProvider" - */ - private Map<String, ScmProvider> scmProviders; - - private Logger logger; - - // ---------------------------------------------------------------------- - // LogEnabled implementation - // ---------------------------------------------------------------------- - - public void enableLogging( Logger logger ) - { - this.logger = logger; - } - - protected Logger getLogger() - { - return logger; - } - - protected void setupLogger( Object component ) - { - setupLogger( component, logger ); - } - - protected void setupLogger( Object component, String subCategory ) - { - if ( subCategory == null ) - { - throw new IllegalStateException( "Logging category must be defined." ); - } - - Logger logger = this.logger.getChildLogger( subCategory ); - - setupLogger( component, logger ); - } - - protected void setupLogger( Object component, Logger logger ) + @Inject + public DefaultScmManager( Map<String, ScmProvider> scmProviders ) { - if ( component instanceof LogEnabled ) + requireNonNull( scmProviders ); + if ( scmProviders.isEmpty() ) { - ( (LogEnabled) component ).enableLogging( logger ); - } - } - - // ---------------------------------------------------------------------- - // Component Lifecycle - // ---------------------------------------------------------------------- - - /** {@inheritDoc} */ - public void initialize() - { - if ( scmProviders == null ) - { - scmProviders = new HashMap<String, ScmProvider>( 0 ); - } - - if ( getLogger().isWarnEnabled() && scmProviders.size() == 0 ) - { - getLogger().warn( "No SCM providers configured." ); + getScmLogger().warn( "No SCM providers configured." ); } setScmProviders( scmProviders ); } - - /** {@inheritDoc} */ - protected ScmLogger getScmLogger() - { - return new PlexusLogger( getLogger() ); - } } diff --git a/maven-scm-managers/maven-scm-manager-plexus/src/main/java/org/apache/maven/scm/manager/plexus/PlexusLogger.java b/maven-scm-managers/maven-scm-manager-plexus/src/main/java/org/apache/maven/scm/manager/plexus/PlexusLogger.java deleted file mode 100644 index 1d257281d..000000000 --- a/maven-scm-managers/maven-scm-manager-plexus/src/main/java/org/apache/maven/scm/manager/plexus/PlexusLogger.java +++ /dev/null @@ -1,135 +0,0 @@ -package org.apache.maven.scm.manager.plexus; - -/* - * 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.log.ScmLogger; -import org.codehaus.plexus.logging.Logger; - -/** - * @author <a href="mailto:[email protected]">Emmanuel Venisse</a> - * - */ -@Deprecated -public class PlexusLogger - implements ScmLogger -{ - private Logger logger; - - public PlexusLogger( Logger logger ) - { - this.logger = logger; - } - - /** {@inheritDoc} */ - public boolean isDebugEnabled() - { - return logger.isDebugEnabled(); - } - - /** {@inheritDoc} */ - public void debug( String content ) - { - logger.debug( content ); - } - - /** {@inheritDoc} */ - public void debug( String content, Throwable error ) - { - logger.debug( content, error ); - } - - /** {@inheritDoc} */ - public void debug( Throwable error ) - { - logger.debug( "", error ); - } - - /** {@inheritDoc} */ - public boolean isInfoEnabled() - { - return logger.isInfoEnabled(); - } - - /** {@inheritDoc} */ - public void info( String content ) - { - logger.info( content ); - } - - /** {@inheritDoc} */ - public void info( String content, Throwable error ) - { - logger.info( content, error ); - } - - /** {@inheritDoc} */ - public void info( Throwable error ) - { - logger.info( "", error ); - } - - /** {@inheritDoc} */ - public boolean isWarnEnabled() - { - return logger.isWarnEnabled(); - } - - /** {@inheritDoc} */ - public void warn( String content ) - { - logger.warn( content ); - } - - /** {@inheritDoc} */ - public void warn( String content, Throwable error ) - { - logger.warn( content, error ); - } - - /** {@inheritDoc} */ - public void warn( Throwable error ) - { - logger.warn( "", error ); - } - - /** {@inheritDoc} */ - public boolean isErrorEnabled() - { - return logger.isErrorEnabled(); - } - - /** {@inheritDoc} */ - public void error( String content ) - { - logger.error( content ); - } - - /** {@inheritDoc} */ - public void error( String content, Throwable error ) - { - logger.error( content, error ); - } - - /** {@inheritDoc} */ - public void error( Throwable error ) - { - logger.error( "", error ); - } -} diff --git a/maven-scm-plugin/pom.xml b/maven-scm-plugin/pom.xml index e6941441b..89a0b139b 100644 --- a/maven-scm-plugin/pom.xml +++ b/maven-scm-plugin/pom.xml @@ -55,6 +55,12 @@ <version>${mavenVersion}</version> <scope>provided</scope> </dependency> + <dependency> + <groupId>org.apache.maven</groupId> + <artifactId>maven-artifact</artifactId> + <version>${mavenVersion}</version> + <scope>provided</scope> + </dependency> <dependency> <groupId>org.apache.maven</groupId> <artifactId>maven-compat</artifactId> @@ -98,11 +104,11 @@ <dependency> <groupId>org.apache.maven.shared</groupId> <artifactId>file-management</artifactId> - <version>1.2.1</version> + <version>3.0.0</version> </dependency> <dependency> - <groupId>org.sonatype.plexus</groupId> + <groupId>org.codehaus.plexus</groupId> <artifactId>plexus-sec-dispatcher</artifactId> </dependency> @@ -140,6 +146,7 @@ <build> <plugins> <plugin> + <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-invoker-plugin</artifactId> <configuration> <cloneProjectsTo>${project.build.directory}/it</cloneProjectsTo> @@ -189,18 +196,11 @@ <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-plugin-plugin</artifactId> - <version>${mavenPluginToolsVersion}</version> + <version>3.6.4</version> <configuration> <skipErrorNoDescriptorsFound>true</skipErrorNoDescriptorsFound> </configuration> <executions> - <execution> - <id>mojo-descriptor</id> - <phase>process-classes</phase> - <goals> - <goal>descriptor</goal> - </goals> - </execution> <execution> <id>help-goal</id> <goals> @@ -218,7 +218,6 @@ <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-plugin-plugin</artifactId> - <version>${mavenPluginToolsVersion}</version> </plugin> </plugins> </reporting> diff --git a/maven-scm-providers/maven-scm-provider-hg/pom.xml b/maven-scm-providers/maven-scm-provider-hg/pom.xml index fe860fe0f..cf4190cd9 100644 --- a/maven-scm-providers/maven-scm-provider-hg/pom.xml +++ b/maven-scm-providers/maven-scm-provider-hg/pom.xml @@ -48,21 +48,11 @@ </contributor> </contributors> - <build> - <plugins> - <plugin> - <groupId>org.codehaus.plexus</groupId> - <artifactId>plexus-component-metadata</artifactId> - <executions> - <execution> - <id>create-component-descriptor</id> - <phase>generate-resources</phase> - <goals> - <goal>generate-metadata</goal> - </goals> - </execution> - </executions> - </plugin> - </plugins> - </build> + <dependencies> + <dependency> + <groupId>javax.inject</groupId> + <artifactId>javax.inject</artifactId> + </dependency> + </dependencies> + </project> diff --git a/maven-scm-providers/maven-scm-provider-hg/src/main/java/org/apache/maven/scm/provider/hg/HgScmProvider.java b/maven-scm-providers/maven-scm-provider-hg/src/main/java/org/apache/maven/scm/provider/hg/HgScmProvider.java index 2e233db92..5d0790475 100644 --- a/maven-scm-providers/maven-scm-provider-hg/src/main/java/org/apache/maven/scm/provider/hg/HgScmProvider.java +++ b/maven-scm-providers/maven-scm-provider-hg/src/main/java/org/apache/maven/scm/provider/hg/HgScmProvider.java @@ -19,6 +19,9 @@ package org.apache.maven.scm.provider.hg; * under the License. */ +import javax.inject.Named; +import javax.inject.Singleton; + import java.io.File; import java.util.ArrayList; import java.util.List; @@ -63,10 +66,9 @@ import org.apache.maven.scm.repository.UnknownRepositoryStructure; * <a href="http://www.selenic.com/mercurial">http://www.selenic.com/mercurial</a> * * @author <a href="mailto:[email protected]">thurner rupert</a> - * - * @plexus.component role="org.apache.maven.scm.provider.ScmProvider" - * role-hint="hg" */ +@Singleton +@Named( "hg" ) public class HgScmProvider extends AbstractScmProvider { @@ -78,7 +80,7 @@ public class HgScmProvider private static class HgUrlParserResult { - private List<String> messages = new ArrayList<String>(); + private final List<String> messages = new ArrayList<>(); private ScmProviderRepository repository; } diff --git a/maven-scm-providers/maven-scm-provider-local/pom.xml b/maven-scm-providers/maven-scm-provider-local/pom.xml index 0fb552f9c..47146250b 100644 --- a/maven-scm-providers/maven-scm-provider-local/pom.xml +++ b/maven-scm-providers/maven-scm-provider-local/pom.xml @@ -33,21 +33,15 @@ <name>Maven SCM Local Provider</name> <description>SCM Provider implementation for Local.</description> + <dependencies> + <dependency> + <groupId>javax.inject</groupId> + <artifactId>javax.inject</artifactId> + </dependency> + </dependencies> + <build> <plugins> - <plugin> - <groupId>org.codehaus.plexus</groupId> - <artifactId>plexus-component-metadata</artifactId> - <executions> - <execution> - <id>create-component-descriptor</id> - <phase>generate-resources</phase> - <goals> - <goal>generate-metadata</goal> - </goals> - </execution> - </executions> - </plugin> <plugin> <groupId>org.codehaus.modello</groupId> <artifactId>modello-maven-plugin</artifactId> diff --git a/maven-scm-providers/maven-scm-provider-local/src/main/java/org/apache/maven/scm/provider/local/LocalScmProvider.java b/maven-scm-providers/maven-scm-provider-local/src/main/java/org/apache/maven/scm/provider/local/LocalScmProvider.java index 090764fb9..4979a4d8a 100644 --- a/maven-scm-providers/maven-scm-provider-local/src/main/java/org/apache/maven/scm/provider/local/LocalScmProvider.java +++ b/maven-scm-providers/maven-scm-provider-local/src/main/java/org/apache/maven/scm/provider/local/LocalScmProvider.java @@ -19,6 +19,9 @@ package org.apache.maven.scm.provider.local; * under the License. */ +import javax.inject.Named; +import javax.inject.Singleton; + import org.apache.maven.scm.CommandParameters; import org.apache.maven.scm.ScmException; import org.apache.maven.scm.ScmFileSet; @@ -51,19 +54,21 @@ import java.io.File; /** * @author <a href="mailto:[email protected]">Trygve Laugstøl</a> * @author <a href="mailto:[email protected]">Emmanuel Venisse</a> - * - * @plexus.component role="org.apache.maven.scm.provider.ScmProvider" role-hint="local" */ +@Singleton +@Named( "local" ) public class LocalScmProvider extends AbstractScmProvider { /** {@inheritDoc} */ + @Override public String getScmType() { return "local"; } /** {@inheritDoc} */ + @Override public ScmProviderRepository makeProviderScmRepository( String scmSpecificUrl, char delimiter ) throws ScmRepositoryException { @@ -142,6 +147,7 @@ public class LocalScmProvider } /** {@inheritDoc} */ + @Override public StatusScmResult status( ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters ) throws ScmException { @@ -153,6 +159,7 @@ public class LocalScmProvider } /** {@inheritDoc} */ + @Override public TagScmResult tag( ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters ) throws ScmException { @@ -164,6 +171,7 @@ public class LocalScmProvider } /** {@inheritDoc} */ + @Override public AddScmResult add( ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters ) throws ScmException { @@ -175,6 +183,7 @@ public class LocalScmProvider } /** {@inheritDoc} */ + @Override protected ChangeLogScmResult changelog( ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters ) throws ScmException @@ -187,6 +196,7 @@ public class LocalScmProvider } /** {@inheritDoc} */ + @Override public CheckInScmResult checkin( ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters ) throws ScmException @@ -199,6 +209,7 @@ public class LocalScmProvider } /** {@inheritDoc} */ + @Override public CheckOutScmResult checkout( ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters ) throws ScmException @@ -211,6 +222,7 @@ public class LocalScmProvider } /** {@inheritDoc} */ + @Override protected ListScmResult list( ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters ) throws ScmException { @@ -222,6 +234,7 @@ public class LocalScmProvider } /** {@inheritDoc} */ + @Override protected MkdirScmResult mkdir( ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters ) throws ScmException { @@ -233,6 +246,7 @@ public class LocalScmProvider } /** {@inheritDoc} */ + @Override public UpdateScmResult update( ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters ) throws ScmException { diff --git a/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-git-commons/src/test/java/org/apache/maven/scm/provider/git/TestGitScmProvider.java b/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-git-commons/src/test/java/org/apache/maven/scm/provider/git/TestGitScmProvider.java index d1f231aa2..335b65f67 100644 --- a/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-git-commons/src/test/java/org/apache/maven/scm/provider/git/TestGitScmProvider.java +++ b/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-git-commons/src/test/java/org/apache/maven/scm/provider/git/TestGitScmProvider.java @@ -19,10 +19,15 @@ package org.apache.maven.scm.provider.git; * under the License. */ +import javax.inject.Named; +import javax.inject.Singleton; + import org.apache.maven.scm.provider.git.command.GitCommand; import java.io.File; +@Singleton +@Named( "git" ) public class TestGitScmProvider extends AbstractGitScmProvider { diff --git a/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-git-commons/src/test/resources/META-INF/plexus/components.xml b/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-git-commons/src/test/resources/META-INF/plexus/components.xml deleted file mode 100644 index 3e99a4fee..000000000 --- a/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-git-commons/src/test/resources/META-INF/plexus/components.xml +++ /dev/null @@ -1,28 +0,0 @@ -<!-- - ~ 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. - --> - -<component-set> - <components> - <component> - <role>org.apache.maven.scm.provider.ScmProvider</role> - <role-hint>git</role-hint> - <implementation>org.apache.maven.scm.provider.git.TestGitScmProvider</implementation> - </component> - </components> -</component-set> diff --git a/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/pom.xml b/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/pom.xml index 3cf0b9e37..44c60590f 100644 --- a/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/pom.xml +++ b/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/pom.xml @@ -34,6 +34,10 @@ <description>Executable implementation for SCM Git Provider.</description> <dependencies> + <dependency> + <groupId>javax.inject</groupId> + <artifactId>javax.inject</artifactId> + </dependency> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> @@ -55,21 +59,4 @@ </dependency> </dependencies> - <build> - <plugins> - <plugin> - <groupId>org.codehaus.plexus</groupId> - <artifactId>plexus-component-metadata</artifactId> - <executions> - <execution> - <id>create-component-descriptor</id> - <phase>generate-resources</phase> - <goals> - <goal>generate-metadata</goal> - </goals> - </execution> - </executions> - </plugin> - </plugins> - </build> </project> diff --git a/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/GitExeScmProvider.java b/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/GitExeScmProvider.java index 9cb43342b..50943c12f 100644 --- a/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/GitExeScmProvider.java +++ b/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/GitExeScmProvider.java @@ -19,6 +19,9 @@ package org.apache.maven.scm.provider.git.gitexe; * under the License. */ +import javax.inject.Named; +import javax.inject.Singleton; + import java.io.File; import org.apache.maven.scm.ScmException; @@ -45,9 +48,9 @@ import org.apache.maven.scm.repository.ScmRepositoryException; /** * @author <a href="mailto:[email protected]">Emmanuel Venisse</a> - * - * @plexus.component role="org.apache.maven.scm.provider.ScmProvider" role-hint="git" */ +@Singleton +@Named( "git" ) public class GitExeScmProvider extends AbstractGitScmProvider { diff --git a/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-jgit/pom.xml b/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-jgit/pom.xml index ce46192b3..de6d8af10 100644 --- a/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-jgit/pom.xml +++ b/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-jgit/pom.xml @@ -36,46 +36,48 @@ </description> <dependencies> - <!-- Test --> <dependency> - <groupId>org.apache.maven.scm</groupId> - <artifactId>maven-scm-provider-git-commons</artifactId> + <groupId>javax.inject</groupId> + <artifactId>javax.inject</artifactId> </dependency> <dependency> <groupId>org.apache.maven.scm</groupId> - <artifactId>maven-scm-provider-gittest</artifactId> - <scope>test</scope> + <artifactId>maven-scm-provider-git-commons</artifactId> </dependency> - <dependency> <groupId>org.eclipse.jgit</groupId> <artifactId>org.eclipse.jgit</artifactId> <version>4.5.4.201711221230-r</version> </dependency> + <!-- Test --> + <dependency> + <groupId>org.apache.maven.scm</groupId> + <artifactId>maven-scm-provider-gittest</artifactId> + <scope>test</scope> + </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-simple</artifactId> - <version>1.7.25</version> <scope>test</scope> </dependency> </dependencies> <build> <plugins> - <plugin> - <groupId>org.codehaus.plexus</groupId> - <artifactId>plexus-component-metadata</artifactId> - <executions> - <execution> - <id>create-component-descriptor</id> - <phase>generate-resources</phase> - <goals> - <goal>generate-metadata</goal> - </goals> - </execution> - </executions> - </plugin> +<!-- <plugin>--> +<!-- <groupId>org.codehaus.plexus</groupId>--> +<!-- <artifactId>plexus-component-metadata</artifactId>--> +<!-- <executions>--> +<!-- <execution>--> +<!-- <id>create-component-descriptor</id>--> +<!-- <phase>generate-resources</phase>--> +<!-- <goals>--> +<!-- <goal>generate-metadata</goal>--> +<!-- </goals>--> +<!-- </execution>--> +<!-- </executions>--> +<!-- </plugin>--> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> diff --git a/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-jgit/src/main/java/org/apache/maven/scm/provider/git/jgit/JGitScmProvider.java b/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-jgit/src/main/java/org/apache/maven/scm/provider/git/jgit/JGitScmProvider.java index 0c6d351c9..952ebc7a7 100644 --- a/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-jgit/src/main/java/org/apache/maven/scm/provider/git/jgit/JGitScmProvider.java +++ b/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-jgit/src/main/java/org/apache/maven/scm/provider/git/jgit/JGitScmProvider.java @@ -19,6 +19,9 @@ package org.apache.maven.scm.provider.git.jgit; * under the License. */ +import javax.inject.Named; +import javax.inject.Singleton; + import java.io.File; import org.apache.maven.scm.ScmException; @@ -26,7 +29,6 @@ import org.apache.maven.scm.ScmFileSet; import org.apache.maven.scm.command.info.InfoScmResult; import org.apache.maven.scm.provider.git.AbstractGitScmProvider; import org.apache.maven.scm.provider.git.command.GitCommand; -import org.apache.maven.scm.provider.git.command.info.GitInfoItem; import org.apache.maven.scm.provider.git.jgit.command.add.JGitAddCommand; import org.apache.maven.scm.provider.git.jgit.command.blame.JGitBlameCommand; import org.apache.maven.scm.provider.git.jgit.command.branch.JGitBranchCommand; @@ -45,15 +47,17 @@ import org.apache.maven.scm.repository.ScmRepositoryException; /** * @author <a href="mailto:[email protected]">Mark Struberg</a> * @author Dominik Bartholdi (imod) - * @plexus.component role="org.apache.maven.scm.provider.ScmProvider" role-hint="jgit" * @since 1.9 */ +@Singleton +@Named( "jgit" ) public class JGitScmProvider extends AbstractGitScmProvider { /** * {@inheritDoc} */ + @Override protected GitCommand getAddCommand() { return new JGitAddCommand(); @@ -62,6 +66,7 @@ public class JGitScmProvider /** * {@inheritDoc} */ + @Override protected GitCommand getBranchCommand() { return new JGitBranchCommand(); @@ -70,6 +75,7 @@ public class JGitScmProvider /** * {@inheritDoc} */ + @Override protected GitCommand getChangeLogCommand() { return new JGitChangeLogCommand(); @@ -78,6 +84,7 @@ public class JGitScmProvider /** * {@inheritDoc} */ + @Override protected GitCommand getCheckInCommand() { return new JGitCheckInCommand(); @@ -86,6 +93,7 @@ public class JGitScmProvider /** * {@inheritDoc} */ + @Override protected GitCommand getCheckOutCommand() { return new JGitCheckOutCommand(); @@ -94,6 +102,7 @@ public class JGitScmProvider /** * {@inheritDoc} */ + @Override protected GitCommand getDiffCommand() { return new JGitDiffCommand(); @@ -102,6 +111,7 @@ public class JGitScmProvider /** * {@inheritDoc} */ + @Override protected GitCommand getExportCommand() { throw new UnsupportedOperationException( "getExportCommand" ); @@ -110,6 +120,7 @@ public class JGitScmProvider /** * {@inheritDoc} */ + @Override protected GitCommand getRemoveCommand() { throw new UnsupportedOperationException( "getRemoveCommand" ); @@ -118,6 +129,7 @@ public class JGitScmProvider /** * {@inheritDoc} */ + @Override protected GitCommand getStatusCommand() { return new JGitStatusCommand(); @@ -126,6 +138,7 @@ public class JGitScmProvider /** * {@inheritDoc} */ + @Override protected GitCommand getTagCommand() { return new JGitTagCommand(); @@ -134,6 +147,7 @@ public class JGitScmProvider /** * {@inheritDoc} */ + @Override protected GitCommand getUntagCommand() { return new JGitUntagCommand(); @@ -142,6 +156,7 @@ public class JGitScmProvider /** * {@inheritDoc} */ + @Override protected GitCommand getUpdateCommand() { throw new UnsupportedOperationException( "getUpdateCommand" ); @@ -158,6 +173,7 @@ public class JGitScmProvider /** * {@inheritDoc} */ + @Override public GitCommand getInfoCommand() { return new JGitInfoCommand(); @@ -166,6 +182,7 @@ public class JGitScmProvider /** * {@inheritDoc} */ + @Override protected String getRepositoryURL( File path ) throws ScmException { @@ -181,12 +198,13 @@ public class JGitScmProvider + " items returned by the info command" ); } - return ( (GitInfoItem) result.getInfoItems().get( 0 ) ).getURL(); + return ( result.getInfoItems().get( 0 ) ).getURL(); } /** * {@inheritDoc} */ + @Override protected GitCommand getBlameCommand() { return new JGitBlameCommand(); @@ -195,6 +213,7 @@ public class JGitScmProvider /** * {@inheritDoc} */ + @Override protected GitCommand getRemoteInfoCommand() { return new JGitRemoteInfoCommand(); diff --git a/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svn-commons/pom.xml b/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svn-commons/pom.xml index 53730cd24..3630d31ad 100644 --- a/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svn-commons/pom.xml +++ b/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svn-commons/pom.xml @@ -33,6 +33,13 @@ <name>Maven SCM Subversion Provider - Common library</name> <description>Common library for SCM SVN Provider. Includes the svn-settings.xml configuration model.</description> + <dependencies> + <dependency> + <groupId>javax.inject</groupId> + <artifactId>javax.inject</artifactId> + </dependency> + </dependencies> + <build> <plugins> <plugin> diff --git a/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svn-commons/src/test/java/org/apache/maven/scm/provider/svn/TestSvnScmProvider.java b/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svn-commons/src/test/java/org/apache/maven/scm/provider/svn/TestSvnScmProvider.java index 7c7afa807..a582fbbed 100644 --- a/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svn-commons/src/test/java/org/apache/maven/scm/provider/svn/TestSvnScmProvider.java +++ b/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svn-commons/src/test/java/org/apache/maven/scm/provider/svn/TestSvnScmProvider.java @@ -19,6 +19,9 @@ package org.apache.maven.scm.provider.svn; * under the License. */ +import javax.inject.Named; +import javax.inject.Singleton; + import org.apache.maven.scm.CommandParameters; import org.apache.maven.scm.ScmException; import org.apache.maven.scm.provider.ScmProviderRepository; @@ -26,6 +29,8 @@ import org.apache.maven.scm.provider.svn.command.SvnCommand; import java.io.File; +@Singleton +@Named( "svn" ) public class TestSvnScmProvider extends AbstractSvnScmProvider { diff --git a/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svn-commons/src/test/resources/META-INF/plexus/components.xml b/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svn-commons/src/test/resources/META-INF/plexus/components.xml deleted file mode 100644 index 63ae5676e..000000000 --- a/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svn-commons/src/test/resources/META-INF/plexus/components.xml +++ /dev/null @@ -1,28 +0,0 @@ -<!-- - ~ 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. - --> - -<component-set> - <components> - <component> - <role>org.apache.maven.scm.provider.ScmProvider</role> - <role-hint>svn</role-hint> - <implementation>org.apache.maven.scm.provider.svn.TestSvnScmProvider</implementation> - </component> - </components> -</component-set> diff --git a/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/pom.xml b/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/pom.xml index 13cb5b488..83dcefb4e 100644 --- a/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/pom.xml +++ b/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/pom.xml @@ -40,6 +40,10 @@ </contributors> <dependencies> + <dependency> + <groupId>javax.inject</groupId> + <artifactId>javax.inject</artifactId> + </dependency> <dependency> <groupId>org.apache.maven.scm</groupId> <artifactId>maven-scm-provider-svn-commons</artifactId> @@ -62,21 +66,21 @@ </dependency> </dependencies> - <build> - <plugins> - <plugin> - <groupId>org.codehaus.plexus</groupId> - <artifactId>plexus-component-metadata</artifactId> - <executions> - <execution> - <id>create-component-descriptor</id> - <phase>generate-resources</phase> - <goals> - <goal>generate-metadata</goal> - </goals> - </execution> - </executions> - </plugin> - </plugins> - </build> +<!-- <build>--> +<!-- <plugins>--> +<!-- <plugin>--> +<!-- <groupId>org.codehaus.plexus</groupId>--> +<!-- <artifactId>plexus-component-metadata</artifactId>--> +<!-- <executions>--> +<!-- <execution>--> +<!-- <id>create-component-descriptor</id>--> +<!-- <phase>generate-resources</phase>--> +<!-- <goals>--> +<!-- <goal>generate-metadata</goal>--> +<!-- </goals>--> +<!-- </execution>--> +<!-- </executions>--> +<!-- </plugin>--> +<!-- </plugins>--> +<!-- </build>--> </project> diff --git a/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/SvnExeScmProvider.java b/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/SvnExeScmProvider.java index ddf34605e..747b24cfd 100644 --- a/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/SvnExeScmProvider.java +++ b/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/main/java/org/apache/maven/scm/provider/svn/svnexe/SvnExeScmProvider.java @@ -19,6 +19,9 @@ package org.apache.maven.scm.provider.svn.svnexe; * under the License. */ +import javax.inject.Named; +import javax.inject.Singleton; + import java.io.File; import org.apache.maven.scm.CommandParameters; @@ -50,15 +53,16 @@ import org.apache.maven.scm.repository.ScmRepositoryException; /** * @author <a href="mailto:[email protected]">Emmanuel Venisse</a> - * - * @plexus.component role="org.apache.maven.scm.provider.ScmProvider" role-hint="svn" */ +@Singleton +@Named( "svn" ) public class SvnExeScmProvider extends AbstractSvnScmProvider { /** * {@inheritDoc} */ + @Override protected SvnCommand getAddCommand() { return new SvnAddCommand(); @@ -67,6 +71,7 @@ public class SvnExeScmProvider /** * {@inheritDoc} */ + @Override protected SvnCommand getBranchCommand() { return new SvnBranchCommand(); @@ -75,6 +80,7 @@ public class SvnExeScmProvider /** * {@inheritDoc} */ + @Override protected SvnCommand getChangeLogCommand() { return new SvnChangeLogCommand(); @@ -83,6 +89,7 @@ public class SvnExeScmProvider /** * {@inheritDoc} */ + @Override protected SvnCommand getCheckInCommand() { return new SvnCheckInCommand(); @@ -91,6 +98,7 @@ public class SvnExeScmProvider /** * {@inheritDoc} */ + @Override protected SvnCommand getCheckOutCommand() { return new SvnCheckOutCommand(); @@ -99,6 +107,7 @@ public class SvnExeScmProvider /** * {@inheritDoc} */ + @Override protected SvnCommand getDiffCommand() { return new SvnDiffCommand(); @@ -107,6 +116,7 @@ public class SvnExeScmProvider /** * {@inheritDoc} */ + @Override protected SvnCommand getExportCommand() { return new SvnExeExportCommand(); @@ -115,6 +125,7 @@ public class SvnExeScmProvider /** * {@inheritDoc} */ + @Override protected SvnCommand getRemoveCommand() { return new SvnRemoveCommand(); @@ -123,6 +134,7 @@ public class SvnExeScmProvider /** * {@inheritDoc} */ + @Override protected SvnCommand getStatusCommand() { return new SvnStatusCommand(); @@ -131,6 +143,7 @@ public class SvnExeScmProvider /** * {@inheritDoc} */ + @Override protected SvnCommand getTagCommand() { return new SvnTagCommand(); @@ -139,6 +152,7 @@ public class SvnExeScmProvider /** * {@inheritDoc} */ + @Override protected SvnCommand getUntagCommand() { return new SvnUntagCommand(); @@ -147,6 +161,7 @@ public class SvnExeScmProvider /** * {@inheritDoc} */ + @Override protected SvnCommand getUpdateCommand() { return new SvnUpdateCommand(); @@ -155,11 +170,13 @@ public class SvnExeScmProvider /** * {@inheritDoc} */ + @Override protected SvnCommand getListCommand() { return new SvnListCommand(); } + @Override public SvnCommand getInfoCommand() { return new SvnInfoCommand(); @@ -168,6 +185,7 @@ public class SvnExeScmProvider /** * {@inheritDoc} */ + @Override protected SvnCommand getBlameCommand() { return new SvnBlameCommand(); @@ -176,6 +194,7 @@ public class SvnExeScmProvider /** * {@inheritDoc} */ + @Override protected SvnCommand getMkdirCommand() { return new SvnMkdirCommand(); @@ -184,6 +203,7 @@ public class SvnExeScmProvider /** * {@inheritDoc} */ + @Override protected String getRepositoryURL( File path ) throws ScmException { diff --git a/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/test/java/org/apache/maven/scm/provider/svn/svnexe/command/changelog/SvnChangeLogConsumerTest.java b/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/test/java/org/apache/maven/scm/provider/svn/svnexe/command/changelog/SvnChangeLogConsumerTest.java index a6f0511d1..ea0eb46eb 100644 --- a/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/test/java/org/apache/maven/scm/provider/svn/svnexe/command/changelog/SvnChangeLogConsumerTest.java +++ b/maven-scm-providers/maven-scm-providers-svn/maven-scm-provider-svnexe/src/test/java/org/apache/maven/scm/provider/svn/svnexe/command/changelog/SvnChangeLogConsumerTest.java @@ -25,8 +25,9 @@ import org.apache.maven.scm.ScmFileStatus; import org.apache.maven.scm.log.DefaultLog; import org.apache.maven.scm.util.ConsumerUtils; import org.codehaus.plexus.PlexusTestCase; -import org.codehaus.plexus.logging.Logger; import org.junit.Assert; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import java.io.File; import java.io.IOException; @@ -46,7 +47,7 @@ import java.util.concurrent.atomic.AtomicInteger; public class SvnChangeLogConsumerTest extends PlexusTestCase { - Logger logger; + Logger logger = LoggerFactory.getLogger( getClass() ); SvnChangeLogConsumer consumer; @@ -55,8 +56,6 @@ public class SvnChangeLogConsumerTest throws Exception { super.setUp(); - - logger = getContainer().getLogger(); consumer = new SvnChangeLogConsumer( new DefaultLog(), null ); } diff --git a/maven-scm-test/pom.xml b/maven-scm-test/pom.xml index a8315a5ee..4a14ca645 100644 --- a/maven-scm-test/pom.xml +++ b/maven-scm-test/pom.xml @@ -43,8 +43,31 @@ <artifactId>maven-scm-manager-plexus</artifactId> </dependency> + <!-- runtime bits needed to construct Plexus and others --> <dependency> - <groupId>org.sonatype.plexus</groupId> + <groupId>org.codehaus.plexus</groupId> + <artifactId>plexus-classworlds</artifactId> + </dependency> + <dependency> + <groupId>org.codehaus.plexus</groupId> + <artifactId>plexus-component-annotations</artifactId> + </dependency> + <dependency> + <groupId>org.eclipse.sisu</groupId> + <artifactId>org.eclipse.sisu.plexus</artifactId> + </dependency> + <dependency> + <groupId>com.google.inject</groupId> + <artifactId>guice</artifactId> + <classifier>no_aop</classifier> + <scope>runtime</scope> + </dependency> + <dependency> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-simple</artifactId> + </dependency> + <dependency> + <groupId>org.codehaus.plexus</groupId> <artifactId>plexus-sec-dispatcher</artifactId> </dependency> diff --git a/maven-scm-test/src/main/java/org/apache/maven/scm/ScmTestCase.java b/maven-scm-test/src/main/java/org/apache/maven/scm/ScmTestCase.java index d354de4d2..a447dc803 100644 --- a/maven-scm-test/src/main/java/org/apache/maven/scm/ScmTestCase.java +++ b/maven-scm-test/src/main/java/org/apache/maven/scm/ScmTestCase.java @@ -21,6 +21,8 @@ package org.apache.maven.scm; import org.apache.maven.scm.manager.ScmManager; import org.apache.maven.scm.repository.ScmRepository; +import org.codehaus.plexus.ContainerConfiguration; +import org.codehaus.plexus.PlexusConstants; import org.codehaus.plexus.PlexusTestCase; import org.codehaus.plexus.util.FileUtils; import org.codehaus.plexus.util.IOUtil; @@ -77,6 +79,12 @@ public abstract class ScmTestCase scmManager = null; } + @Override + protected void customizeContainerConfiguration( final ContainerConfiguration configuration ) + { + configuration.setClassPathScanning( PlexusConstants.SCANNING_INDEX ).setAutoWiring( true ); + } + /** * @return default location of the test read/write repository */ @@ -132,7 +140,7 @@ public abstract class ScmTestCase { if ( scmManager == null ) { - scmManager = (ScmManager) lookup( ScmManager.ROLE ); + scmManager = lookup( ScmManager.class ); } return scmManager; @@ -150,7 +158,7 @@ public abstract class ScmTestCase { if ( secDispatcher == null ) { - secDispatcher = (SecDispatcher) lookup( SecDispatcher.ROLE, "mng-4384" ); + secDispatcher = (SecDispatcher) lookup( SecDispatcher.class, "mng-4384" ); } return secDispatcher; diff --git a/maven-scm-test/src/test/java/org/apache/maven/scm/manager/ScmManagerStubTest.java b/maven-scm-test/src/test/java/org/apache/maven/scm/manager/ScmManagerStubTest.java index 4fbfcdb1f..ce4ee013a 100644 --- a/maven-scm-test/src/test/java/org/apache/maven/scm/manager/ScmManagerStubTest.java +++ b/maven-scm-test/src/test/java/org/apache/maven/scm/manager/ScmManagerStubTest.java @@ -52,7 +52,7 @@ public class ScmManagerStubTest { super.setUp(); - messages = new ArrayList<String>( 0 ); + messages = new ArrayList<>( 0 ); scmProvider = new ScmProviderStub(); scmRepository = new ScmRepositoryStub(); diff --git a/pom.xml b/pom.xml index 640c24e72..fc7a0667b 100644 --- a/pom.xml +++ b/pom.xml @@ -25,7 +25,8 @@ <parent> <groupId>org.apache.maven</groupId> <artifactId>maven-parent</artifactId> - <version>34</version> + <version>36</version> + <relativePath/> </parent> <groupId>org.apache.maven.scm</groupId> @@ -123,10 +124,10 @@ </distributionManagement> <properties> + <javaVersion>8</javaVersion> <maven.site.path>scm-archives/scm-LATEST</maven.site.path> <checkstyle.violation.ignore>RedundantThrows,NewlineAtEndOfFile,ParameterNumber,MethodLength,FileLength,InnerAssignment,MagicNumber</checkstyle.violation.ignore> <checkstyle.failOnViolation>false</checkstyle.failOnViolation> - <javaVersion>7</javaVersion> <project.build.outputTimestamp>2022-01-08T20:02:10Z</project.build.outputTimestamp> </properties> @@ -182,20 +183,52 @@ <!-- end providers declaration --> <!-- Plexus --> + <dependency> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-api</artifactId> + <version>1.7.36</version> + </dependency> + <dependency> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-simple</artifactId> + <version>1.7.36</version> + </dependency> <dependency> <groupId>org.codehaus.plexus</groupId> - <artifactId>plexus-container-default</artifactId> - <version>1.0-alpha-9</version> + <artifactId>plexus-classworlds</artifactId> + <version>2.6.0</version> + </dependency> + <dependency> + <groupId>javax.inject</groupId> + <artifactId>javax.inject</artifactId> + <version>1</version> + </dependency> + <dependency> + <groupId>org.eclipse.sisu</groupId> + <artifactId>org.eclipse.sisu.plexus</artifactId> + <version>${sisuVersion}</version> + <exclusions> + <exclusion> + <groupId>org.codehaus.plexus</groupId> + <artifactId>plexus-component-annotations</artifactId> + </exclusion> + </exclusions> + </dependency> + <dependency> + <groupId>com.google.inject</groupId> + <artifactId>guice</artifactId> + <classifier>no_aop</classifier> + <version>4.2.3</version> </dependency> <dependency> <groupId>org.codehaus.plexus</groupId> <artifactId>plexus-utils</artifactId> - <version>3.3.1</version> + <version>3.4.2</version> </dependency> <dependency> - <groupId>org.sonatype.plexus</groupId> - <artifactId>plexus-sec-dispatcher</artifactId> - <version>1.4</version> + <groupId>org.codehaus.plexus</groupId> + <artifactId>plexus-sec-dispatcher</artifactId> + <version>2.0</version> </dependency> <dependency> @@ -206,7 +239,7 @@ <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> - <version>2.6</version> + <version>2.11.0</version> </dependency> <!-- Test --> @@ -277,14 +310,18 @@ </plugins> </pluginManagement> <plugins> + <plugin> + <groupId>org.eclipse.sisu</groupId> + <artifactId>sisu-maven-plugin</artifactId> + </plugin> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>animal-sniffer-maven-plugin</artifactId> - <version>1.9</version> + <version>1.21</version> <configuration> <signature> <groupId>org.codehaus.mojo.signature</groupId> - <artifactId>java17</artifactId> + <artifactId>java18</artifactId> <version>1.0</version> </signature> </configuration> @@ -298,29 +335,6 @@ </execution> </executions> </plugin> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-enforcer-plugin</artifactId> - <dependencies> - <dependency> - <groupId>org.codehaus.mojo</groupId> - <artifactId>extra-enforcer-rules</artifactId> - <version>1.3</version> - </dependency> - </dependencies> - </plugin> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-javadoc-plugin</artifactId> - <configuration> - <tags> - <tag> - <name>plexus.component</name> - <placement>X</placement> - </tag> - </tags> - </configuration> - </plugin> </plugins> </build> diff --git a/src/site/apt/guide/new_provider.apt b/src/site/apt/guide/new_provider.apt index 603601a01..7cd9454ef 100644 --- a/src/site/apt/guide/new_provider.apt +++ b/src/site/apt/guide/new_provider.apt @@ -83,13 +83,15 @@ How to write a new SCM provider? <build> <plugins> <plugin> - <groupId>org.codehaus.plexus</groupId> - <artifactId>plexus-component-metadata</artifactId> - <version>1.7.1</version> + <groupId>org.eclipse.sisu</groupId> + <artifactId>sisu-maven-plugin</artifactId> + <version>${sisuVersion}</version> <executions> <execution> + <id>index-project</id> <goals> - <goal>generate-metadata</goal> + <goal>main-index</goal> + <goal>test-index</goal> </goals> </execution> </executions> @@ -99,8 +101,8 @@ How to write a new SCM provider? </project> +------------------------------------------+ - The plexus-component-metadata maven plugin will generate the Plexus meta-data file used by the - Maven SCM manager. + The SISU maven plugin will generate the components meta-data file used by the + DI to discover them inject them to SCM manager. * Create an SCM Provider Repository class @@ -142,8 +144,10 @@ import org.apache.maven.scm.provider.ScmProviderRepository; import org.apache.maven.scm.repository.ScmRepositoryException; /** - * @plexus.component role="org.apache.maven.scm.provider.ScmProvider" role-hint="provider_name" + * My provider. */ +@Singleton +@Named( "provider_name" ) public class MyScmProvider extends AbstractScmProvider { @@ -167,8 +171,8 @@ public class MyScmProvider } +------------------------------------------+ - The <plexus.component> javadoc tag will be used by the plexus maven plugin, - declared in the POM, to generate plexus meta-data. + The JSR330 annotations will be used by the SISU maven plugin, + declared in the POM, to generate component meta-data. Generally, we use the string just after <scm:> in the scm URL as the <provider_name>.
