You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@archiva.apache.org by ma...@apache.org on 2018/11/07 22:29:29 UTC

[archiva] branch master updated (18964ae -> 76c17e2)

This is an automated email from the ASF dual-hosted git repository.

martin_s pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/archiva.git.


    from 18964ae  Running clean before chrome tests
     new 3762fc3  Refactoring and switching to current maven API
     new b617390  Removing unneeded dependencies
     new e66582f  Improving logging statements
     new 2650dd0  Switching version for indexer-core to remove duplicate classes
     new 76c17e2  Adding bean for maven repositorysystem management

The 5 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 archiva-modules/plugins/maven2-repository/pom.xml  |   5 -
 .../maven2/ArchivaRepositoryConnectorFactory.java  |   3 +
 .../tree/maven2/Maven3DependencyTreeBuilder.java   | 137 +++++----------------
 .../storage/maven2/Maven2RepositoryStorage.java    |   6 +-
 .../storage/maven2/RepositoryModelResolver.java    |  60 ++-------
 .../repository/maven2/MavenSystemManager.java      | 119 ++++++++++++++++++
 .../src/main/resources/META-INF/spring-context.xml |   1 +
 pom.xml                                            |   2 +-
 8 files changed, 173 insertions(+), 160 deletions(-)
 create mode 100644 archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/repository/maven2/MavenSystemManager.java


[archiva] 05/05: Adding bean for maven repositorysystem management

Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

martin_s pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/archiva.git

commit 76c17e2cea030a2f29cfb99f0e82a13bdab820d9
Author: Martin Stockhammer <ma...@apache.org>
AuthorDate: Wed Nov 7 22:14:18 2018 +0100

    Adding bean for maven repositorysystem management
---
 .../tree/maven2/Maven3DependencyTreeBuilder.java   | 10 +--
 .../storage/maven2/Maven2RepositoryStorage.java    |  6 +-
 .../storage/maven2/RepositoryModelResolver.java    | 29 +++-----
 .../{MavenUtil.java => MavenSystemManager.java}    | 77 ++++++++++++++--------
 .../src/main/resources/META-INF/spring-context.xml |  1 +
 5 files changed, 72 insertions(+), 51 deletions(-)

diff --git a/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/dependency/tree/maven2/Maven3DependencyTreeBuilder.java b/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/dependency/tree/maven2/Maven3DependencyTreeBuilder.java
index 7c61aec..d200d08 100644
--- a/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/dependency/tree/maven2/Maven3DependencyTreeBuilder.java
+++ b/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/dependency/tree/maven2/Maven3DependencyTreeBuilder.java
@@ -34,13 +34,12 @@ import org.apache.archiva.model.ArchivaRepositoryMetadata;
 import org.apache.archiva.repository.ManagedRepository;
 import org.apache.archiva.repository.RemoteRepository;
 import org.apache.archiva.repository.RepositoryRegistry;
-import org.apache.archiva.repository.maven2.MavenUtil;
+import org.apache.archiva.repository.maven2.MavenSystemManager;
 import org.apache.archiva.repository.metadata.MetadataTools;
 import org.apache.archiva.xml.XMLException;
 import org.apache.commons.lang.StringUtils;
 import org.apache.maven.artifact.Artifact;
 import org.apache.maven.bridge.MavenRepositorySystem;
-import org.apache.maven.model.building.DefaultModelBuilderFactory;
 import org.eclipse.aether.RepositorySystem;
 import org.eclipse.aether.RepositorySystemSession;
 import org.eclipse.aether.artifact.DefaultArtifact;
@@ -91,6 +90,9 @@ public class Maven3DependencyTreeBuilder
     @Inject
     RepositoryRegistry repositoryRegistry;
 
+    @Inject
+    MavenSystemManager mavenSystemManager;
+
 
     @PostConstruct
     public void initialize()
@@ -193,8 +195,8 @@ public class Maven3DependencyTreeBuilder
     private void resolve( ResolveRequest resolveRequest )
     {
 
-        RepositorySystem system = MavenUtil.newRepositorySystem();
-        RepositorySystemSession session = MavenUtil.newRepositorySystemSession( resolveRequest.localRepoDir );
+        RepositorySystem system = mavenSystemManager.getRepositorySystem();
+        RepositorySystemSession session = MavenSystemManager.newRepositorySystemSession( resolveRequest.localRepoDir );
 
         org.eclipse.aether.artifact.Artifact artifact = new DefaultArtifact(
             resolveRequest.groupId + ":" + resolveRequest.artifactId + ":" + resolveRequest.version );
diff --git a/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryStorage.java b/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryStorage.java
index b3b420f..3176387 100644
--- a/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryStorage.java
+++ b/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryStorage.java
@@ -54,6 +54,7 @@ import org.apache.archiva.repository.ReleaseScheme;
 import org.apache.archiva.repository.RemoteRepository;
 import org.apache.archiva.repository.RepositoryRegistry;
 import org.apache.archiva.repository.content.PathParser;
+import org.apache.archiva.repository.maven2.MavenSystemManager;
 import org.apache.archiva.xml.XMLException;
 import org.apache.commons.lang.ArrayUtils;
 import org.apache.commons.lang.StringUtils;
@@ -149,6 +150,9 @@ public class Maven2RepositoryStorage
     @Named( "pathParser#default" )
     private PathParser pathParser;
 
+    @Inject
+    private MavenSystemManager mavenSystemManager;
+
     private static final String METADATA_FILENAME_START = "maven-metadata";
 
     private static final String METADATA_FILENAME = METADATA_FILENAME_START + ".xml";
@@ -292,7 +296,7 @@ public class Maven2RepositoryStorage
             // MRM-1411
             req.setModelResolver(
                 new RepositoryModelResolver( managedRepository, pathTranslator, wagonFactory, remoteRepositories,
-                                             networkProxies, managedRepository ));
+                                             networkProxies, managedRepository , mavenSystemManager));
 
             Model model;
             try
diff --git a/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/RepositoryModelResolver.java b/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/RepositoryModelResolver.java
index 00bd622..92ef88b 100644
--- a/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/RepositoryModelResolver.java
+++ b/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/RepositoryModelResolver.java
@@ -32,7 +32,7 @@ import org.apache.archiva.proxy.common.WagonFactoryRequest;
 import org.apache.archiva.repository.ManagedRepository;
 import org.apache.archiva.repository.RemoteRepository;
 import org.apache.archiva.repository.RepositoryCredentials;
-import org.apache.archiva.repository.maven2.MavenUtil;
+import org.apache.archiva.repository.maven2.MavenSystemManager;
 import org.apache.archiva.xml.XMLException;
 import org.apache.commons.lang.StringUtils;
 import org.apache.http.auth.UsernamePasswordCredentials;
@@ -56,7 +56,6 @@ import org.apache.maven.wagon.authentication.AuthenticationException;
 import org.apache.maven.wagon.authentication.AuthenticationInfo;
 import org.apache.maven.wagon.authorization.AuthorizationException;
 import org.apache.maven.wagon.proxy.ProxyInfo;
-import org.eclipse.aether.RepositorySystem;
 import org.eclipse.aether.RepositorySystemSession;
 import org.eclipse.aether.artifact.Artifact;
 import org.eclipse.aether.artifact.DefaultArtifact;
@@ -71,6 +70,7 @@ import org.eclipse.aether.spi.connector.RepositoryConnectorFactory;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import javax.inject.Inject;
 import java.io.IOException;
 import java.nio.file.Files;
 import java.nio.file.Path;
@@ -99,7 +99,7 @@ public class RepositoryModelResolver
 
     private static final String METADATA_FILENAME = "maven-metadata.xml";
 
-    private DefaultServiceLocator locator;
+    private MavenSystemManager mavenSystemManager;
 
     // key/value: remote repo ID/network proxy
     Map<String, NetworkProxy> networkProxyMap;
@@ -115,7 +115,8 @@ public class RepositoryModelResolver
 
     public RepositoryModelResolver( ManagedRepository managedRepository, RepositoryPathTranslator pathTranslator,
                                     WagonFactory wagonFactory, List<RemoteRepository> remoteRepositories,
-                                    Map<String, NetworkProxy> networkProxiesMap, ManagedRepository targetRepository)
+                                    Map<String, NetworkProxy> networkProxiesMap, ManagedRepository targetRepository,
+                                    MavenSystemManager mavenSystemManager)
     {
         this( Paths.get( managedRepository.getLocation() ), pathTranslator );
 
@@ -129,23 +130,13 @@ public class RepositoryModelResolver
 
         this.targetRepository = targetRepository;
 
-        this.locator =  MavenRepositorySystemUtils.newServiceLocator( );
+        this.session = MavenSystemManager.newRepositorySystemSession( managedRepository.getLocalPath().toString() );
 
-        locator.addService( RepositoryConnectorFactory.class,
-            ArchivaRepositoryConnectorFactory.class );// FileRepositoryConnectorFactory.class );
-        locator.addService( VersionResolver.class, DefaultVersionResolver.class );
-        locator.addService( VersionRangeResolver.class, DefaultVersionRangeResolver.class );
-        locator.addService( ArtifactDescriptorReader.class, DefaultArtifactDescriptorReader.class );
+        this.versionRangeResolver = mavenSystemManager.getLocator().getService(VersionRangeResolver.class);
 
-        this.session = MavenUtil.newRepositorySystemSession( managedRepository.getLocalPath().toString() );
-
-        this.versionRangeResolver = locator.getService(VersionRangeResolver.class);
+        this.mavenSystemManager = mavenSystemManager;
     }
 
-    private RepositorySystem newRepositorySystem()
-    {
-        return locator.getService( RepositorySystem.class );
-    }
 
     @Override
     public ModelSource resolveModel( String groupId, String artifactId, String version )
@@ -301,7 +292,7 @@ public class RepositoryModelResolver
     public ModelResolver newCopy()
     {
         return new RepositoryModelResolver( managedRepository,  pathTranslator, wagonFactory, remoteRepositories, 
-                                            networkProxyMap, targetRepository);
+                                            networkProxyMap, targetRepository, mavenSystemManager);
     }
 
     // FIXME: we need to do some refactoring, we cannot re-use the proxy components of archiva-proxy in maven2-repository
@@ -316,7 +307,7 @@ public class RepositoryModelResolver
         Path tmpSha1 = null;
         Path tmpResource = null;
         String artifactPath = pathTranslator.toPath( groupId, artifactId, version, filename );
-        Path resource = Paths.get(targetRepository.getLocation()).resolve( artifactPath );
+        Path resource = targetRepository.getLocalPath().resolve( artifactPath );
 
         Path workingDirectory = createWorkingDirectory( targetRepository.getLocation().toString() );
         try
diff --git a/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/repository/maven2/MavenUtil.java b/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/repository/maven2/MavenSystemManager.java
similarity index 65%
rename from archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/repository/maven2/MavenUtil.java
rename to archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/repository/maven2/MavenSystemManager.java
index 95d4df0..55b3fb6 100644
--- a/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/repository/maven2/MavenUtil.java
+++ b/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/repository/maven2/MavenSystemManager.java
@@ -41,13 +41,27 @@ import org.eclipse.aether.util.graph.selector.AndDependencySelector;
 import org.eclipse.aether.util.graph.selector.ExclusionDependencySelector;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.PostConstruct;
 
 /**
  * Some static utility methods that are used by different classes.
  */
-public class MavenUtil {
+@Service("mavenSystemManager")
+public class MavenSystemManager {
+
+    static Logger log = LoggerFactory.getLogger(MavenSystemManager.class);
+
+    private DefaultServiceLocator locator;
+    private RepositorySystem system;
 
-    static Logger log = LoggerFactory.getLogger(MavenUtil.class);
+    @PostConstruct
+    private synchronized void init() {
+        locator = newLocator();
+        system = newRepositorySystem(locator);
+
+    }
 
     /**
      * Creates a new aether repository system session for the given directory and assigns the
@@ -56,41 +70,50 @@ public class MavenUtil {
      * @param localRepoDir The repository directory
      * @return The newly created session object.
      */
-    public static RepositorySystemSession newRepositorySystemSession(String localRepoDir)
-    {
-        DefaultRepositorySystemSession session = MavenRepositorySystemUtils.newSession( );
-
-        LocalRepository repo = new LocalRepository( localRepoDir );
-
-        DependencySelector depFilter = new AndDependencySelector( new ExclusionDependencySelector() );
-        session.setDependencySelector( depFilter );
-        SimpleLocalRepositoryManagerFactory repFactory = new SimpleLocalRepositoryManagerFactory( );
-        try
-        {
-            LocalRepositoryManager manager = repFactory.newInstance( session, repo );
+    public static RepositorySystemSession newRepositorySystemSession(String localRepoDir) {
+        DefaultRepositorySystemSession session = MavenRepositorySystemUtils.newSession();
+
+        LocalRepository repo = new LocalRepository(localRepoDir);
+
+        DependencySelector depFilter = new AndDependencySelector(new ExclusionDependencySelector());
+        session.setDependencySelector(depFilter);
+        SimpleLocalRepositoryManagerFactory repFactory = new SimpleLocalRepositoryManagerFactory();
+        try {
+            LocalRepositoryManager manager = repFactory.newInstance(session, repo);
             session.setLocalRepositoryManager(manager);
-        }
-        catch ( NoLocalRepositoryManagerException e )
-        {
+        } catch (NoLocalRepositoryManagerException e) {
             log.error("Could not assign the repository manager to the session: {}", e.getMessage(), e);
         }
 
         return session;
     }
 
+    public RepositorySystem getRepositorySystem() {
+        return system;
+    }
+
+    public DefaultServiceLocator getLocator() {
+        return locator;
+    }
+
     /**
      * Finds the
+     *
      * @return
      */
-    public static RepositorySystem newRepositorySystem()
-    {
-        DefaultServiceLocator locator = MavenRepositorySystemUtils.newServiceLocator( );
-        locator.addService( RepositoryConnectorFactory.class,
-                            ArchivaRepositoryConnectorFactory.class );// FileRepositoryConnectorFactory.class );
-        locator.addService( VersionResolver.class, DefaultVersionResolver.class );
-        locator.addService( VersionRangeResolver.class, DefaultVersionRangeResolver.class );
-        locator.addService( ArtifactDescriptorReader.class, DefaultArtifactDescriptorReader.class );
-
-        return locator.getService( RepositorySystem.class );
+    public static RepositorySystem newRepositorySystem(DefaultServiceLocator locator) {
+        return locator.getService(RepositorySystem.class);
+    }
+
+    public static DefaultServiceLocator newLocator() {
+        DefaultServiceLocator locator = MavenRepositorySystemUtils.newServiceLocator();
+
+        locator.addService(RepositoryConnectorFactory.class,
+                ArchivaRepositoryConnectorFactory.class);// FileRepositoryConnectorFactory.class );
+        locator.addService(VersionResolver.class, DefaultVersionResolver.class);
+        locator.addService(VersionRangeResolver.class, DefaultVersionRangeResolver.class);
+        locator.addService(ArtifactDescriptorReader.class, DefaultArtifactDescriptorReader.class);
+
+        return locator;
     }
 }
diff --git a/archiva-modules/plugins/maven2-repository/src/main/resources/META-INF/spring-context.xml b/archiva-modules/plugins/maven2-repository/src/main/resources/META-INF/spring-context.xml
index 9fb23a5..375a863 100644
--- a/archiva-modules/plugins/maven2-repository/src/main/resources/META-INF/spring-context.xml
+++ b/archiva-modules/plugins/maven2-repository/src/main/resources/META-INF/spring-context.xml
@@ -36,4 +36,5 @@
   <alias name="repositoryStorage#maven2" alias="repositoryStorage#default"/>
   <alias name="repositoryStorage#maven2" alias="repositoryStorage#legacy"/>
 
+
 </beans>
\ No newline at end of file


[archiva] 04/05: Switching version for indexer-core to remove duplicate classes

Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

martin_s pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/archiva.git

commit 2650dd06e62fb665ca4bfe2b60f0abf3a6d51886
Author: Martin Stockhammer <ma...@apache.org>
AuthorDate: Wed Nov 7 20:24:43 2018 +0100

    Switching version for indexer-core to remove duplicate classes
---
 pom.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/pom.xml b/pom.xml
index b9f6784..3223f50 100644
--- a/pom.xml
+++ b/pom.xml
@@ -61,7 +61,7 @@
     <sonatype.aether.version>1.13.1</sonatype.aether.version>
 
     <maven-model-converter.version>2.1</maven-model-converter.version>
-    <maven.indexer.version>6.0.0</maven.indexer.version>
+    <maven.indexer.version>6.0.1-SNAPSHOT</maven.indexer.version>
     <wagon.version>3.0.0</wagon.version>
     <redback.version>3.0.0-SNAPSHOT</redback.version>
     <redback.cache.version>2.2</redback.cache.version>


[archiva] 02/05: Removing unneeded dependencies

Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

martin_s pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/archiva.git

commit b617390a882bcb4e96d049357ea3635abc6afc14
Author: Martin Stockhammer <ma...@apache.org>
AuthorDate: Wed Nov 7 20:17:56 2018 +0100

    Removing unneeded dependencies
---
 archiva-modules/plugins/maven2-repository/pom.xml | 5 -----
 1 file changed, 5 deletions(-)

diff --git a/archiva-modules/plugins/maven2-repository/pom.xml b/archiva-modules/plugins/maven2-repository/pom.xml
index 8d5a04c..e271c20 100644
--- a/archiva-modules/plugins/maven2-repository/pom.xml
+++ b/archiva-modules/plugins/maven2-repository/pom.xml
@@ -142,11 +142,6 @@
       <artifactId>spring-test</artifactId>
       <scope>test</scope>
     </dependency>
-    <!-- TODO: aim to remove this dependency -->
-    <dependency>
-      <groupId>org.apache.archiva</groupId>
-      <artifactId>archiva-xml-tools</artifactId>
-    </dependency>
     <dependency>
       <groupId>org.apache.archiva</groupId>
       <artifactId>test-repository</artifactId>


[archiva] 03/05: Improving logging statements

Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

martin_s pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/archiva.git

commit e66582f76555138409a8da769f258b53fc81747d
Author: Martin Stockhammer <ma...@apache.org>
AuthorDate: Wed Nov 7 20:18:49 2018 +0100

    Improving logging statements
---
 .../maven2/ArchivaRepositoryConnectorFactory.java    |  3 +++
 .../apache/archiva/repository/maven2/MavenUtil.java  | 20 +++++++++++++++++++-
 2 files changed, 22 insertions(+), 1 deletion(-)

diff --git a/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/dependency/tree/maven2/ArchivaRepositoryConnectorFactory.java b/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/dependency/tree/maven2/ArchivaRepositoryConnectorFactory.java
index 4ce243f..dd401ae 100644
--- a/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/dependency/tree/maven2/ArchivaRepositoryConnectorFactory.java
+++ b/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/dependency/tree/maven2/ArchivaRepositoryConnectorFactory.java
@@ -34,6 +34,9 @@ import org.eclipse.aether.transfer.NoRepositoryConnectorException;
 import java.util.Collection;
 
 /**
+ *
+ * Creates a dummy connector, if the default connectory factory fails to create one.
+ *
  * @author Olivier Lamy
  * @since 1.4-M3
  */
diff --git a/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/repository/maven2/MavenUtil.java b/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/repository/maven2/MavenUtil.java
index f9e6929..95d4df0 100644
--- a/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/repository/maven2/MavenUtil.java
+++ b/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/repository/maven2/MavenUtil.java
@@ -39,9 +39,23 @@ import org.eclipse.aether.repository.NoLocalRepositoryManagerException;
 import org.eclipse.aether.spi.connector.RepositoryConnectorFactory;
 import org.eclipse.aether.util.graph.selector.AndDependencySelector;
 import org.eclipse.aether.util.graph.selector.ExclusionDependencySelector;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
+/**
+ * Some static utility methods that are used by different classes.
+ */
 public class MavenUtil {
 
+    static Logger log = LoggerFactory.getLogger(MavenUtil.class);
+
+    /**
+     * Creates a new aether repository system session for the given directory and assigns the
+     * repository to this session.
+     *
+     * @param localRepoDir The repository directory
+     * @return The newly created session object.
+     */
     public static RepositorySystemSession newRepositorySystemSession(String localRepoDir)
     {
         DefaultRepositorySystemSession session = MavenRepositorySystemUtils.newSession( );
@@ -58,12 +72,16 @@ public class MavenUtil {
         }
         catch ( NoLocalRepositoryManagerException e )
         {
-            e.printStackTrace( );
+            log.error("Could not assign the repository manager to the session: {}", e.getMessage(), e);
         }
 
         return session;
     }
 
+    /**
+     * Finds the
+     * @return
+     */
     public static RepositorySystem newRepositorySystem()
     {
         DefaultServiceLocator locator = MavenRepositorySystemUtils.newServiceLocator( );


[archiva] 01/05: Refactoring and switching to current maven API

Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

martin_s pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/archiva.git

commit 3762fc3279e12fbc3b9c351bc61bc78cf717e561
Author: Martin Stockhammer <ma...@apache.org>
AuthorDate: Wed Nov 7 19:03:13 2018 +0100

    Refactoring and switching to current maven API
---
 .../tree/maven2/Maven3DependencyTreeBuilder.java   | 135 +++++----------------
 .../storage/maven2/RepositoryModelResolver.java    |  35 +-----
 .../archiva/repository/maven2/MavenUtil.java       |  78 ++++++++++++
 3 files changed, 112 insertions(+), 136 deletions(-)

diff --git a/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/dependency/tree/maven2/Maven3DependencyTreeBuilder.java b/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/dependency/tree/maven2/Maven3DependencyTreeBuilder.java
index 0b8f38d..7c61aec 100644
--- a/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/dependency/tree/maven2/Maven3DependencyTreeBuilder.java
+++ b/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/dependency/tree/maven2/Maven3DependencyTreeBuilder.java
@@ -20,14 +20,10 @@ package org.apache.archiva.dependency.tree.maven2;
 
 
 import org.apache.archiva.admin.model.RepositoryAdminException;
-import org.apache.archiva.admin.model.beans.ManagedRepository;
 import org.apache.archiva.admin.model.beans.NetworkProxy;
 import org.apache.archiva.admin.model.beans.ProxyConnector;
-import org.apache.archiva.admin.model.beans.RemoteRepository;
-import org.apache.archiva.admin.model.managed.ManagedRepositoryAdmin;
 import org.apache.archiva.admin.model.networkproxy.NetworkProxyAdmin;
 import org.apache.archiva.admin.model.proxyconnector.ProxyConnectorAdmin;
-import org.apache.archiva.admin.model.remote.RemoteRepositoryAdmin;
 import org.apache.archiva.common.plexusbridge.PlexusSisuBridge;
 import org.apache.archiva.common.plexusbridge.PlexusSisuBridgeException;
 import org.apache.archiva.common.utils.VersionUtil;
@@ -35,39 +31,26 @@ import org.apache.archiva.maven2.metadata.MavenMetadataReader;
 import org.apache.archiva.maven2.model.TreeEntry;
 import org.apache.archiva.metadata.repository.storage.RepositoryPathTranslator;
 import org.apache.archiva.model.ArchivaRepositoryMetadata;
+import org.apache.archiva.repository.ManagedRepository;
+import org.apache.archiva.repository.RemoteRepository;
+import org.apache.archiva.repository.RepositoryRegistry;
+import org.apache.archiva.repository.maven2.MavenUtil;
 import org.apache.archiva.repository.metadata.MetadataTools;
 import org.apache.archiva.xml.XMLException;
 import org.apache.commons.lang.StringUtils;
 import org.apache.maven.artifact.Artifact;
-import org.apache.maven.artifact.factory.ArtifactFactory;
+import org.apache.maven.bridge.MavenRepositorySystem;
 import org.apache.maven.model.building.DefaultModelBuilderFactory;
-import org.apache.maven.repository.internal.DefaultArtifactDescriptorReader;
-import org.apache.maven.repository.internal.DefaultVersionRangeResolver;
-import org.apache.maven.repository.internal.DefaultVersionResolver;
-import org.apache.maven.repository.internal.MavenRepositorySystemUtils;
-import org.eclipse.aether.DefaultRepositorySystemSession;
-import org.eclipse.aether.artifact.DefaultArtifact;
-import org.eclipse.aether.impl.DefaultServiceLocator;
-import org.eclipse.aether.internal.impl.SimpleLocalRepositoryManagerFactory;
-import org.eclipse.aether.repository.LocalRepository;
-import org.eclipse.aether.repository.LocalRepositoryManager;
-import org.eclipse.aether.repository.NoLocalRepositoryManagerException;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 import org.eclipse.aether.RepositorySystem;
 import org.eclipse.aether.RepositorySystemSession;
+import org.eclipse.aether.artifact.DefaultArtifact;
 import org.eclipse.aether.collection.CollectRequest;
 import org.eclipse.aether.collection.CollectResult;
 import org.eclipse.aether.collection.DependencyCollectionException;
-import org.eclipse.aether.collection.DependencySelector;
 import org.eclipse.aether.graph.Dependency;
 import org.eclipse.aether.graph.DependencyVisitor;
-import org.eclipse.aether.impl.ArtifactDescriptorReader;
-import org.eclipse.aether.impl.VersionRangeResolver;
-import org.eclipse.aether.impl.VersionResolver;
-import org.eclipse.aether.spi.connector.RepositoryConnectorFactory;
-import org.eclipse.aether.util.graph.selector.AndDependencySelector;
-import org.eclipse.aether.util.graph.selector.ExclusionDependencySelector;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.PostConstruct;
@@ -75,7 +58,6 @@ import javax.inject.Inject;
 import javax.inject.Named;
 import java.nio.file.Files;
 import java.nio.file.Path;
-import java.nio.file.Paths;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
@@ -89,38 +71,32 @@ import java.util.Map;
 public class Maven3DependencyTreeBuilder
     implements DependencyTreeBuilder
 {
-    private Logger log = LoggerFactory.getLogger( getClass() );
+    private Logger log = LoggerFactory.getLogger( Maven3DependencyTreeBuilder.class );
 
     @Inject
     private PlexusSisuBridge plexusSisuBridge;
 
+    private MavenRepositorySystem mavenRepositorySystem;
+
     @Inject
     @Named( "repositoryPathTranslator#maven2" )
     private RepositoryPathTranslator pathTranslator;
 
     @Inject
-    private ManagedRepositoryAdmin managedRepositoryAdmin;
-
-    @Inject
     private ProxyConnectorAdmin proxyConnectorAdmin;
 
     @Inject
     private NetworkProxyAdmin networkProxyAdmin;
 
     @Inject
-    private RemoteRepositoryAdmin remoteRepositoryAdmin;
-
-    private ArtifactFactory factory;
+    RepositoryRegistry repositoryRegistry;
 
 
     @PostConstruct
     public void initialize()
         throws PlexusSisuBridgeException
     {
-        factory = plexusSisuBridge.lookup( ArtifactFactory.class, "default" );
-
-        DefaultModelBuilderFactory defaultModelBuilderFactory = new DefaultModelBuilderFactory();
-        defaultModelBuilderFactory.newInstance();
+        mavenRepositorySystem = plexusSisuBridge.lookup(MavenRepositorySystem.class);
     }
 
 
@@ -129,25 +105,18 @@ public class Maven3DependencyTreeBuilder
                                      DependencyVisitor dependencyVisitor )
         throws DependencyTreeBuilderException
     {
-        Artifact projectArtifact = factory.createProjectArtifact( groupId, artifactId, version );
-        ManagedRepository repository = null;
-        try
-        {
-            repository = findArtifactInRepositories( repositoryIds, projectArtifact );
-        }
-        catch ( RepositoryAdminException e )
-        {
-            // FIXME better exception
-            throw new DependencyTreeBuilderException( "Cannot build project dependency tree " + e.getMessage(), e );
-        }
+
+        Artifact projectArtifact = mavenRepositorySystem.createProjectArtifact(groupId, artifactId, version);
+        ManagedRepository repository = findArtifactInRepositories( repositoryIds, projectArtifact );
 
         if ( repository == null )
         {
             // metadata could not be resolved
+            log.info("Did not find repository with artifact {}/{}/{}", groupId, artifactId, version);
             return;
         }
 
-        List<RemoteRepository> remoteRepositories = new ArrayList<>();
+        List<org.apache.archiva.repository.RemoteRepository> remoteRepositories = new ArrayList<>();
         Map<String, NetworkProxy> networkProxies = new HashMap<>();
 
         try
@@ -163,7 +132,7 @@ public class Maven3DependencyTreeBuilder
                 for ( ProxyConnector proxyConnector : proxyConnectors )
                 {
                     remoteRepositories.add(
-                        remoteRepositoryAdmin.getRemoteRepository( proxyConnector.getTargetRepoId() ) );
+                        repositoryRegistry.getRemoteRepository( proxyConnector.getTargetRepoId() ) );
 
                     NetworkProxy networkProxyConfig = networkProxyAdmin.getNetworkProxy( proxyConnector.getProxyId() );
 
@@ -183,7 +152,7 @@ public class Maven3DependencyTreeBuilder
         // FIXME take care of relative path
         ResolveRequest resolveRequest = new ResolveRequest();
         resolveRequest.dependencyVisitor = dependencyVisitor;
-        resolveRequest.localRepoDir = repository.getLocation();
+        resolveRequest.localRepoDir = repository.getContent().getRepoRoot();
         resolveRequest.groupId = groupId;
         resolveRequest.artifactId = artifactId;
         resolveRequest.version = version;
@@ -204,7 +173,7 @@ public class Maven3DependencyTreeBuilder
 
         buildDependencyTree( repositoryIds, groupId, artifactId, version, treeDependencyNodeVisitor );
 
-        log.debug( "treeEntrie: {}", treeEntries );
+        log.debug( "treeEntries: {}", treeEntries );
         return treeEntries;
     }
 
@@ -214,7 +183,7 @@ public class Maven3DependencyTreeBuilder
 
         DependencyVisitor dependencyVisitor;
 
-        List<RemoteRepository> remoteRepositories;
+        List<org.apache.archiva.repository.RemoteRepository> remoteRepositories;
 
         Map<String, NetworkProxy> networkProxies;
 
@@ -224,9 +193,8 @@ public class Maven3DependencyTreeBuilder
     private void resolve( ResolveRequest resolveRequest )
     {
 
-        RepositorySystem system = newRepositorySystem();
-
-        RepositorySystemSession session = newRepositorySystemSession( system, resolveRequest.localRepoDir );
+        RepositorySystem system = MavenUtil.newRepositorySystem();
+        RepositorySystemSession session = MavenUtil.newRepositorySystemSession( resolveRequest.localRepoDir );
 
         org.eclipse.aether.artifact.Artifact artifact = new DefaultArtifact(
             resolveRequest.groupId + ":" + resolveRequest.artifactId + ":" + resolveRequest.version );
@@ -237,7 +205,7 @@ public class Maven3DependencyTreeBuilder
         // add remote repositories
         for ( RemoteRepository remoteRepository : resolveRequest.remoteRepositories )
         {
-            org.eclipse.aether.repository.RemoteRepository repo = new org.eclipse.aether.repository.RemoteRepository.Builder( remoteRepository.getId( ), "default", remoteRepository.getUrl( ) ).build( );
+            org.eclipse.aether.repository.RemoteRepository repo = new org.eclipse.aether.repository.RemoteRepository.Builder( remoteRepository.getId( ), "default", remoteRepository.getLocation( ).toString() ).build( );
             collectRequest.addRepository(repo);
         }
         collectRequest.setRequestContext( "project" );
@@ -248,62 +216,23 @@ public class Maven3DependencyTreeBuilder
         {
             CollectResult collectResult = system.collectDependencies( session, collectRequest );
             collectResult.getRoot().accept( resolveRequest.dependencyVisitor );
-            log.debug( "test" );
+            log.debug("Collected dependency results for resolve");
         }
         catch ( DependencyCollectionException e )
         {
-            log.error( e.getMessage(), e );
+            log.error( "Error while collecting dependencies (resolve): {}", e.getMessage(), e );
         }
 
 
 
     }
 
-    private RepositorySystem newRepositorySystem()
-    {
-        DefaultServiceLocator locator = MavenRepositorySystemUtils.newServiceLocator( );
-        locator.addService( RepositoryConnectorFactory.class,
-                            ArchivaRepositoryConnectorFactory.class );// FileRepositoryConnectorFactory.class );
-        locator.addService( VersionResolver.class, DefaultVersionResolver.class );
-        locator.addService( VersionRangeResolver.class, DefaultVersionRangeResolver.class );
-        locator.addService( ArtifactDescriptorReader.class, DefaultArtifactDescriptorReader.class );
-        //locator.addService( RepositoryConnectorFactory.class, WagonRepositoryConnectorFactory.class );
-        //locator.setServices( WagonProvider.class,  );
-
-        return locator.getService( RepositorySystem.class );
-    }
-
-    private RepositorySystemSession newRepositorySystemSession( RepositorySystem system, String localRepoDir )
-    {
-        DefaultRepositorySystemSession session = MavenRepositorySystemUtils.newSession( );
-
-        LocalRepository repo = new LocalRepository( localRepoDir );
-
-        DependencySelector depFilter = new AndDependencySelector( new ExclusionDependencySelector() );
-        session.setDependencySelector( depFilter );
-        SimpleLocalRepositoryManagerFactory repFactory = new SimpleLocalRepositoryManagerFactory( );
-        try
-        {
-            LocalRepositoryManager manager = repFactory.newInstance( session, repo );
-            session.setLocalRepositoryManager(manager);
-        }
-        catch ( NoLocalRepositoryManagerException e )
-        {
-            e.printStackTrace( );
-        }
-
-        return session;
-    }
-
-
-    private ManagedRepository findArtifactInRepositories( List<String> repositoryIds, Artifact projectArtifact )
-        throws RepositoryAdminException
-    {
+    private ManagedRepository findArtifactInRepositories( List<String> repositoryIds, Artifact projectArtifact ) {
         for ( String repoId : repositoryIds )
         {
-            ManagedRepository managedRepository = managedRepositoryAdmin.getManagedRepository( repoId );
+            ManagedRepository managedRepo = repositoryRegistry.getManagedRepository(repoId);
+            Path repoDir = managedRepo.getLocalPath();
 
-            Path repoDir = Paths.get( managedRepository.getLocation() );
             Path file = pathTranslator.toFile( repoDir, projectArtifact.getGroupId(), projectArtifact.getArtifactId(),
                                                projectArtifact.getBaseVersion(),
                                                projectArtifact.getArtifactId() + "-" + projectArtifact.getVersion()
@@ -311,7 +240,7 @@ public class Maven3DependencyTreeBuilder
 
             if ( Files.exists(file) )
             {
-                return managedRepository;
+                return managedRepo;
             }
             // try with snapshot version
             if ( StringUtils.endsWith( projectArtifact.getBaseVersion(), VersionUtil.SNAPSHOT ) )
@@ -335,7 +264,7 @@ public class Maven3DependencyTreeBuilder
                         log.debug( "try to find timestamped snapshot version file: {}", timeStampFile);
                         if ( Files.exists(timeStampFile) )
                         {
-                            return managedRepository;
+                            return managedRepo;
                         }
                     }
                     catch ( XMLException e )
diff --git a/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/RepositoryModelResolver.java b/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/RepositoryModelResolver.java
index e5aea4c..00bd622 100644
--- a/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/RepositoryModelResolver.java
+++ b/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/RepositoryModelResolver.java
@@ -22,7 +22,6 @@ package org.apache.archiva.metadata.repository.storage.maven2;
 import org.apache.archiva.admin.model.beans.NetworkProxy;
 import org.apache.archiva.common.utils.VersionUtil;
 import org.apache.archiva.dependency.tree.maven2.ArchivaRepositoryConnectorFactory;
-import org.apache.archiva.indexer.UnsupportedBaseContextException;
 import org.apache.archiva.maven2.metadata.MavenMetadataReader;
 import org.apache.archiva.metadata.repository.storage.RepositoryPathTranslator;
 import org.apache.archiva.model.ArchivaRepositoryMetadata;
@@ -33,10 +32,10 @@ import org.apache.archiva.proxy.common.WagonFactoryRequest;
 import org.apache.archiva.repository.ManagedRepository;
 import org.apache.archiva.repository.RemoteRepository;
 import org.apache.archiva.repository.RepositoryCredentials;
+import org.apache.archiva.repository.maven2.MavenUtil;
 import org.apache.archiva.xml.XMLException;
 import org.apache.commons.lang.StringUtils;
 import org.apache.http.auth.UsernamePasswordCredentials;
-import org.apache.maven.index.context.IndexingContext;
 import org.apache.maven.model.Dependency;
 import org.apache.maven.model.Parent;
 import org.apache.maven.model.Repository;
@@ -57,26 +56,18 @@ import org.apache.maven.wagon.authentication.AuthenticationException;
 import org.apache.maven.wagon.authentication.AuthenticationInfo;
 import org.apache.maven.wagon.authorization.AuthorizationException;
 import org.apache.maven.wagon.proxy.ProxyInfo;
-import org.eclipse.aether.DefaultRepositorySystemSession;
 import org.eclipse.aether.RepositorySystem;
 import org.eclipse.aether.RepositorySystemSession;
 import org.eclipse.aether.artifact.Artifact;
 import org.eclipse.aether.artifact.DefaultArtifact;
-import org.eclipse.aether.collection.DependencySelector;
 import org.eclipse.aether.impl.ArtifactDescriptorReader;
 import org.eclipse.aether.impl.DefaultServiceLocator;
 import org.eclipse.aether.impl.VersionRangeResolver;
 import org.eclipse.aether.impl.VersionResolver;
-import org.eclipse.aether.internal.impl.SimpleLocalRepositoryManagerFactory;
-import org.eclipse.aether.repository.LocalRepository;
-import org.eclipse.aether.repository.LocalRepositoryManager;
-import org.eclipse.aether.repository.NoLocalRepositoryManagerException;
 import org.eclipse.aether.resolution.VersionRangeRequest;
 import org.eclipse.aether.resolution.VersionRangeResolutionException;
 import org.eclipse.aether.resolution.VersionRangeResult;
 import org.eclipse.aether.spi.connector.RepositoryConnectorFactory;
-import org.eclipse.aether.util.graph.selector.AndDependencySelector;
-import org.eclipse.aether.util.graph.selector.ExclusionDependencySelector;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -146,7 +137,7 @@ public class RepositoryModelResolver
         locator.addService( VersionRangeResolver.class, DefaultVersionRangeResolver.class );
         locator.addService( ArtifactDescriptorReader.class, DefaultArtifactDescriptorReader.class );
 
-        this.session = newRepositorySystemSession( newRepositorySystem(), managedRepository.getLocalPath().toString() );
+        this.session = MavenUtil.newRepositorySystemSession( managedRepository.getLocalPath().toString() );
 
         this.versionRangeResolver = locator.getService(VersionRangeResolver.class);
     }
@@ -156,28 +147,6 @@ public class RepositoryModelResolver
         return locator.getService( RepositorySystem.class );
     }
 
-    private RepositorySystemSession newRepositorySystemSession( RepositorySystem system, String localRepoDir )
-    {
-        DefaultRepositorySystemSession session = MavenRepositorySystemUtils.newSession( );
-
-        LocalRepository repo = new LocalRepository( localRepoDir );
-
-        DependencySelector depFilter = new AndDependencySelector( new ExclusionDependencySelector() );
-        session.setDependencySelector( depFilter );
-        SimpleLocalRepositoryManagerFactory repFactory = new SimpleLocalRepositoryManagerFactory( );
-        try
-        {
-            LocalRepositoryManager manager = repFactory.newInstance( session, repo );
-            session.setLocalRepositoryManager(manager);
-        }
-        catch ( NoLocalRepositoryManagerException e )
-        {
-            e.printStackTrace( );
-        }
-
-        return session;
-    }
-
     @Override
     public ModelSource resolveModel( String groupId, String artifactId, String version )
         throws UnresolvableModelException
diff --git a/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/repository/maven2/MavenUtil.java b/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/repository/maven2/MavenUtil.java
new file mode 100644
index 0000000..f9e6929
--- /dev/null
+++ b/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/repository/maven2/MavenUtil.java
@@ -0,0 +1,78 @@
+package org.apache.archiva.repository.maven2;
+
+/*
+ * 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.archiva.dependency.tree.maven2.ArchivaRepositoryConnectorFactory;
+import org.apache.maven.repository.internal.DefaultArtifactDescriptorReader;
+import org.apache.maven.repository.internal.DefaultVersionRangeResolver;
+import org.apache.maven.repository.internal.DefaultVersionResolver;
+import org.apache.maven.repository.internal.MavenRepositorySystemUtils;
+import org.eclipse.aether.DefaultRepositorySystemSession;
+import org.eclipse.aether.RepositorySystem;
+import org.eclipse.aether.RepositorySystemSession;
+import org.eclipse.aether.collection.DependencySelector;
+import org.eclipse.aether.impl.ArtifactDescriptorReader;
+import org.eclipse.aether.impl.DefaultServiceLocator;
+import org.eclipse.aether.impl.VersionRangeResolver;
+import org.eclipse.aether.impl.VersionResolver;
+import org.eclipse.aether.internal.impl.SimpleLocalRepositoryManagerFactory;
+import org.eclipse.aether.repository.LocalRepository;
+import org.eclipse.aether.repository.LocalRepositoryManager;
+import org.eclipse.aether.repository.NoLocalRepositoryManagerException;
+import org.eclipse.aether.spi.connector.RepositoryConnectorFactory;
+import org.eclipse.aether.util.graph.selector.AndDependencySelector;
+import org.eclipse.aether.util.graph.selector.ExclusionDependencySelector;
+
+public class MavenUtil {
+
+    public static RepositorySystemSession newRepositorySystemSession(String localRepoDir)
+    {
+        DefaultRepositorySystemSession session = MavenRepositorySystemUtils.newSession( );
+
+        LocalRepository repo = new LocalRepository( localRepoDir );
+
+        DependencySelector depFilter = new AndDependencySelector( new ExclusionDependencySelector() );
+        session.setDependencySelector( depFilter );
+        SimpleLocalRepositoryManagerFactory repFactory = new SimpleLocalRepositoryManagerFactory( );
+        try
+        {
+            LocalRepositoryManager manager = repFactory.newInstance( session, repo );
+            session.setLocalRepositoryManager(manager);
+        }
+        catch ( NoLocalRepositoryManagerException e )
+        {
+            e.printStackTrace( );
+        }
+
+        return session;
+    }
+
+    public static RepositorySystem newRepositorySystem()
+    {
+        DefaultServiceLocator locator = MavenRepositorySystemUtils.newServiceLocator( );
+        locator.addService( RepositoryConnectorFactory.class,
+                            ArchivaRepositoryConnectorFactory.class );// FileRepositoryConnectorFactory.class );
+        locator.addService( VersionResolver.class, DefaultVersionResolver.class );
+        locator.addService( VersionRangeResolver.class, DefaultVersionRangeResolver.class );
+        locator.addService( ArtifactDescriptorReader.class, DefaultArtifactDescriptorReader.class );
+
+        return locator.getService( RepositorySystem.class );
+    }
+}