You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by rf...@apache.org on 2015/05/09 13:48:47 UTC
svn commit: r1678479 - in /maven/shared/trunk/maven-artifact-transfer/src:
main/java/org/apache/maven/shared/artifact/install/
main/java/org/apache/maven/shared/artifact/install/internal/
main/java/org/apache/maven/shared/artifact/repository/ main/java...
Author: rfscholte
Date: Sat May 9 11:48:46 2015
New Revision: 1678479
URL: http://svn.apache.org/r1678479
Log:
Introduce RepositoryManager
Added:
maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/repository/
maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/repository/RepositoryManager.java
maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/repository/RepositoryManagerException.java
maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/repository/internal/
maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/repository/internal/DefaultRepositoryManager.java
maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/repository/internal/Invoker.java
maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/repository/internal/Maven302RepositoryManager.java
maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/repository/internal/Maven30RepositoryManager.java
maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/repository/internal/Maven31RepositoryManager.java
maven/shared/trunk/maven-artifact-transfer/src/test/java/org/apache/maven/shared/artifact/repository/
maven/shared/trunk/maven-artifact-transfer/src/test/java/org/apache/maven/shared/artifact/repository/internal/
maven/shared/trunk/maven-artifact-transfer/src/test/java/org/apache/maven/shared/artifact/repository/internal/Maven30RepositoryManagerTest.java
Removed:
maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/install/internal/Maven302ArtifactInstaller.java
Modified:
maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/install/ArtifactInstaller.java
maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/install/internal/DefaultArtifactInstaller.java
maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/install/internal/Maven30ArtifactInstaller.java
maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/install/internal/Maven31ArtifactInstaller.java
maven/shared/trunk/maven-artifact-transfer/src/test/java/org/apache/maven/shared/artifact/install/internal/Maven30ArtifactInstallerTest.java
Modified: maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/install/ArtifactInstaller.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/install/ArtifactInstaller.java?rev=1678479&r1=1678478&r2=1678479&view=diff
==============================================================================
--- maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/install/ArtifactInstaller.java (original)
+++ maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/install/ArtifactInstaller.java Sat May 9 11:48:46 2015
@@ -19,7 +19,6 @@ package org.apache.maven.shared.artifact
* under the License.
*/
-import java.io.File;
import java.util.Collection;
import org.apache.maven.artifact.Artifact;
@@ -30,25 +29,4 @@ public interface ArtifactInstaller
public void install( ProjectBuildingRequest request, Collection<Artifact> mavenArtifacts )
throws ArtifactInstallerException;
-
- /**
- * Create a new {@code ProjectBuildingRequest} with an adjusted repository session.
- *
- * @param request the project building request
- * @param basedir the base directory of the local repository
- * @return a new project building request
- * @throws ArtifactInstallerException if an exception occurs
- */
- public ProjectBuildingRequest setLocalRepositoryBasedir( ProjectBuildingRequest request, File basedir )
- throws ArtifactInstallerException;
-
- /**
- * Get the localRepositryBasedir as specified in the repository session of the request
- *
- * @param request the build request
- * @return the local repository base directory
- * @throws ArtifactInstallerException if an exception occurs
- */
- public File getLocalRepositoryBasedir( ProjectBuildingRequest request )
- throws ArtifactInstallerException;
}
Modified: maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/install/internal/DefaultArtifactInstaller.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/install/internal/DefaultArtifactInstaller.java?rev=1678479&r1=1678478&r2=1678479&view=diff
==============================================================================
--- maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/install/internal/DefaultArtifactInstaller.java (original)
+++ maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/install/internal/DefaultArtifactInstaller.java Sat May 9 11:48:46 2015
@@ -19,7 +19,6 @@ package org.apache.maven.shared.artifact
* under the License.
*/
-import java.io.File;
import java.util.Collection;
import org.apache.maven.artifact.Artifact;
@@ -58,40 +57,6 @@ public class DefaultArtifactInstaller
}
}
- public ProjectBuildingRequest setLocalRepositoryBasedir( ProjectBuildingRequest request, File basedir )
- throws ArtifactInstallerException
- {
- try
- {
- String hint = isMaven31() ? "maven31" : isMaven302() ? "maven302" : "maven3";
-
- ArtifactInstaller effectiveArtifactInstaller = container.lookup( ArtifactInstaller.class, hint );
-
- return effectiveArtifactInstaller.setLocalRepositoryBasedir( request, basedir );
- }
- catch ( ComponentLookupException e )
- {
- throw new ArtifactInstallerException( e.getMessage(), e );
- }
- }
-
- public File getLocalRepositoryBasedir( ProjectBuildingRequest request )
- throws ArtifactInstallerException
- {
- try
- {
- String hint = isMaven31() ? "maven31" : isMaven302() ? "maven302" : "maven3";
-
- ArtifactInstaller effectiveArtifactInstaller = container.lookup( ArtifactInstaller.class, hint );
-
- return effectiveArtifactInstaller.getLocalRepositoryBasedir( request );
- }
- catch ( ComponentLookupException e )
- {
- throw new ArtifactInstallerException( e.getMessage(), e );
- }
- }
-
/**
* @return true if the current Maven version is Maven 3.1.
*/
@@ -100,14 +65,6 @@ public class DefaultArtifactInstaller
return canFindCoreClass( "org.eclipse.aether.artifact.Artifact" ); // Maven 3.1 specific
}
- /**
- * @return true if the current Maven version is Maven 3.0.2
- */
- protected static boolean isMaven302()
- {
- return canFindCoreClass( "org.sonatype.aether.spi.localrepo.LocalRepositoryManagerFactory" );
- }
-
private static boolean canFindCoreClass( String className )
{
try
Modified: maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/install/internal/Maven30ArtifactInstaller.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/install/internal/Maven30ArtifactInstaller.java?rev=1678479&r1=1678478&r2=1678479&view=diff
==============================================================================
--- maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/install/internal/Maven30ArtifactInstaller.java (original)
+++ maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/install/internal/Maven30ArtifactInstaller.java Sat May 9 11:48:46 2015
@@ -19,13 +19,11 @@ package org.apache.maven.shared.artifact
* under the License.
*/
-import java.io.File;
import java.util.Collection;
import org.apache.maven.RepositoryUtils;
import org.apache.maven.artifact.metadata.ArtifactMetadata;
import org.apache.maven.artifact.repository.metadata.ArtifactRepositoryMetadata;
-import org.apache.maven.project.DefaultProjectBuildingRequest;
import org.apache.maven.project.ProjectBuildingRequest;
import org.apache.maven.project.artifact.ProjectArtifactMetadata;
import org.apache.maven.shared.artifact.install.ArtifactInstaller;
@@ -37,10 +35,6 @@ import org.sonatype.aether.RepositorySys
import org.sonatype.aether.artifact.Artifact;
import org.sonatype.aether.installation.InstallRequest;
import org.sonatype.aether.installation.InstallationException;
-import org.sonatype.aether.repository.LocalRepository;
-import org.sonatype.aether.repository.LocalRepositoryManager;
-import org.sonatype.aether.util.DefaultRepositoryCache;
-import org.sonatype.aether.util.DefaultRepositorySystemSession;
import org.sonatype.aether.util.artifact.SubArtifact;
@Component( role = ArtifactInstaller.class, hint = "maven3" )
@@ -98,45 +92,4 @@ public class Maven30ArtifactInstaller
throw new ArtifactInstallerException( e.getMessage(), e );
}
}
-
- public ProjectBuildingRequest setLocalRepositoryBasedir( ProjectBuildingRequest buildingRequest, File basedir )
- throws ArtifactInstallerException
- {
- ProjectBuildingRequest newRequest = new DefaultProjectBuildingRequest( buildingRequest );
-
- RepositorySystemSession session =
- (RepositorySystemSession) Invoker.invoke( buildingRequest, "getRepositorySession" );
-
- // "clone" session and replace localRepository
- DefaultRepositorySystemSession newSession = new DefaultRepositorySystemSession( session );
-
- // Clear cache, since we're using a new local repository
- newSession.setCache( new DefaultRepositoryCache() );
-
- // keep same repositoryType
- String repositoryType = resolveRepositoryType( session.getLocalRepository() );
-
- LocalRepositoryManager localRepositoryManager =
- repositorySystem.newLocalRepositoryManager( new LocalRepository( basedir, repositoryType ) );
-
- newSession.setLocalRepositoryManager( localRepositoryManager );
-
- Invoker.invoke( newRequest, "setRepositorySession", RepositorySystemSession.class, newSession );
-
- return newRequest;
- }
-
- public File getLocalRepositoryBasedir( ProjectBuildingRequest buildingRequest )
- throws ArtifactInstallerException
- {
- RepositorySystemSession session =
- (RepositorySystemSession) Invoker.invoke( buildingRequest, "getRepositorySession" );
-
- return session.getLocalRepository().getBasedir();
- }
-
- protected String resolveRepositoryType( LocalRepository localRepository )
- {
- return localRepository.getContentType();
- }
}
Modified: maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/install/internal/Maven31ArtifactInstaller.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/install/internal/Maven31ArtifactInstaller.java?rev=1678479&r1=1678478&r2=1678479&view=diff
==============================================================================
--- maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/install/internal/Maven31ArtifactInstaller.java (original)
+++ maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/install/internal/Maven31ArtifactInstaller.java Sat May 9 11:48:46 2015
@@ -19,28 +19,22 @@ package org.apache.maven.shared.artifact
* under the License.
*/
-import java.io.File;
import java.util.Collection;
import org.apache.maven.RepositoryUtils;
import org.apache.maven.artifact.metadata.ArtifactMetadata;
import org.apache.maven.artifact.repository.metadata.ArtifactRepositoryMetadata;
-import org.apache.maven.project.DefaultProjectBuildingRequest;
import org.apache.maven.project.ProjectBuildingRequest;
import org.apache.maven.project.artifact.ProjectArtifactMetadata;
import org.apache.maven.shared.artifact.install.ArtifactInstaller;
import org.apache.maven.shared.artifact.install.ArtifactInstallerException;
import org.codehaus.plexus.component.annotations.Component;
import org.codehaus.plexus.component.annotations.Requirement;
-import org.eclipse.aether.DefaultRepositoryCache;
-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.installation.InstallRequest;
import org.eclipse.aether.installation.InstallationException;
-import org.eclipse.aether.repository.LocalRepository;
-import org.eclipse.aether.repository.LocalRepositoryManager;
import org.eclipse.aether.util.artifact.SubArtifact;
@Component( role = ArtifactInstaller.class , hint="maven31" )
@@ -98,55 +92,4 @@ public class Maven31ArtifactInstaller im
throw new ArtifactInstallerException( e.getMessage(), e );
}
}
-
- public ProjectBuildingRequest setLocalRepositoryBasedir( ProjectBuildingRequest buildingRequest, File basedir )
- throws ArtifactInstallerException
- {
- ProjectBuildingRequest newRequest = new DefaultProjectBuildingRequest( buildingRequest );
-
- RepositorySystemSession session =
- (RepositorySystemSession) Invoker.invoke( buildingRequest, "getRepositorySession" );
-
- // "clone" session and replace localRepository
- DefaultRepositorySystemSession newSession = new DefaultRepositorySystemSession( session );
-
- // Clear cache, since we're using a new local repository
- newSession.setCache( new DefaultRepositoryCache() );
-
- // keep same repositoryType
- String repositoryType = resolveRepositoryType( session.getLocalRepository() );
-
- LocalRepositoryManager localRepositoryManager =
- repositorySystem.newLocalRepositoryManager( newSession, new LocalRepository( basedir, repositoryType ) );
-
- newSession.setLocalRepositoryManager( localRepositoryManager );
-
- Invoker.invoke( newRequest, "setRepositorySession", RepositorySystemSession.class, newSession );
-
- return newRequest;
- }
-
- public File getLocalRepositoryBasedir( ProjectBuildingRequest buildingRequest )
- throws ArtifactInstallerException
- {
- RepositorySystemSession session =
- (RepositorySystemSession) Invoker.invoke( buildingRequest, "getRepositorySession" );
-
- return session.getLocalRepository().getBasedir();
- }
-
- protected String resolveRepositoryType( LocalRepository localRepository )
- {
- String repositoryType;
- if ( "enhanced".equals( localRepository.getContentType() ) )
- {
- repositoryType = "default";
- }
- else
- {
- // this should be "simple"
- repositoryType = localRepository.getContentType();
- }
- return repositoryType;
- }
}
Added: maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/repository/RepositoryManager.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/repository/RepositoryManager.java?rev=1678479&view=auto
==============================================================================
--- maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/repository/RepositoryManager.java (added)
+++ maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/repository/RepositoryManager.java Sat May 9 11:48:46 2015
@@ -0,0 +1,49 @@
+package org.apache.maven.shared.artifact.repository;
+
+/*
+ * 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 java.io.File;
+
+import org.apache.maven.artifact.Artifact;
+import org.apache.maven.project.ProjectBuildingRequest;
+import org.apache.maven.shared.artifact.install.ArtifactInstallerException;
+
+public interface RepositoryManager
+{
+
+ String getPathForLocalArtifact( ProjectBuildingRequest buildingRequest, Artifact artifact );
+
+ /**
+ * Create a new {@code ProjectBuildingRequest} with an adjusted repository session.
+ *
+ * @param request the project building request
+ * @param basedir the base directory of the local repository
+ * @return a new project building request
+ */
+ public ProjectBuildingRequest setLocalRepositoryBasedir( ProjectBuildingRequest request, File basedir );
+
+ /**
+ * Get the localRepositryBasedir as specified in the repository session of the request
+ *
+ * @param request the build request
+ * @return the local repository base directory
+ */
+ public File getLocalRepositoryBasedir( ProjectBuildingRequest request );
+}
Added: maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/repository/RepositoryManagerException.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/repository/RepositoryManagerException.java?rev=1678479&view=auto
==============================================================================
--- maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/repository/RepositoryManagerException.java (added)
+++ maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/repository/RepositoryManagerException.java Sat May 9 11:48:46 2015
@@ -0,0 +1,30 @@
+package org.apache.maven.shared.artifact.repository;
+
+/*
+ * 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.
+ */
+
+public class RepositoryManagerException extends Exception
+{
+
+ public RepositoryManagerException( String message, Throwable cause )
+ {
+ super( message, cause );
+ }
+
+}
Added: maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/repository/internal/DefaultRepositoryManager.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/repository/internal/DefaultRepositoryManager.java?rev=1678479&view=auto
==============================================================================
--- maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/repository/internal/DefaultRepositoryManager.java (added)
+++ maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/repository/internal/DefaultRepositoryManager.java Sat May 9 11:48:46 2015
@@ -0,0 +1,140 @@
+package org.apache.maven.shared.artifact.repository.internal;
+
+/*
+ * 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 java.io.File;
+
+import org.apache.maven.artifact.Artifact;
+import org.apache.maven.project.ProjectBuildingRequest;
+import org.apache.maven.shared.artifact.repository.RepositoryManager;
+import org.codehaus.plexus.PlexusConstants;
+import org.codehaus.plexus.PlexusContainer;
+import org.codehaus.plexus.component.annotations.Component;
+import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
+import org.codehaus.plexus.context.Context;
+import org.codehaus.plexus.context.ContextException;
+import org.codehaus.plexus.personality.plexus.lifecycle.phase.Contextualizable;
+
+@Component( role = RepositoryManager.class )
+public class DefaultRepositoryManager
+ implements RepositoryManager, Contextualizable
+{
+ private PlexusContainer container;
+
+ /**
+ * {@inheritDoc}
+ */
+ public String getPathForLocalArtifact( ProjectBuildingRequest buildingRequest, Artifact artifact )
+ {
+ try
+ {
+ String hint = isMaven31() ? "maven31" : "maven3";
+
+ RepositoryManager effectiveRepositoryManager = container.lookup( RepositoryManager.class, hint );
+
+ return effectiveRepositoryManager.getPathForLocalArtifact( buildingRequest, artifact );
+ }
+ catch ( ComponentLookupException e )
+ {
+ throw new IllegalStateException( e.getMessage(), e );
+ }
+
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public ProjectBuildingRequest setLocalRepositoryBasedir( ProjectBuildingRequest request, File basedir )
+ {
+ try
+ {
+ String hint = isMaven31() ? "maven31" : isMaven302() ? "maven302" : "maven3";
+
+ RepositoryManager effectiveRepositoryManager = container.lookup( RepositoryManager.class, hint );
+
+ return effectiveRepositoryManager.setLocalRepositoryBasedir( request, basedir );
+ }
+ catch ( ComponentLookupException e )
+ {
+ throw new IllegalStateException( e.getMessage(), e );
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public File getLocalRepositoryBasedir( ProjectBuildingRequest request )
+ {
+ try
+ {
+ String hint = isMaven31() ? "maven31" : isMaven302() ? "maven302" : "maven3";
+
+ RepositoryManager effectiveRepositoryManager = container.lookup( RepositoryManager.class, hint );
+
+ return effectiveRepositoryManager.getLocalRepositoryBasedir( request );
+ }
+ catch ( ComponentLookupException e )
+ {
+ throw new IllegalStateException( e.getMessage(), e );
+ }
+ }
+
+ /**
+ * @return true if the current Maven version is Maven 3.1.
+ */
+ protected static boolean isMaven31()
+ {
+ return canFindCoreClass( "org.eclipse.aether.artifact.Artifact" ); // Maven 3.1 specific
+ }
+
+ /**
+ * @return true if the current Maven version is Maven 3.0.2
+ */
+ protected static boolean isMaven302()
+ {
+ return canFindCoreClass( "org.sonatype.aether.spi.localrepo.LocalRepositoryManagerFactory" );
+ }
+
+ private static boolean canFindCoreClass( String className )
+ {
+ try
+ {
+ Thread.currentThread().getContextClassLoader().loadClass( className );
+
+ return true;
+ }
+ catch ( ClassNotFoundException e )
+ {
+ return false;
+ }
+ }
+
+ /**
+ * Injects the Plexus content.
+ *
+ * @param context Plexus context to inject.
+ * @throws ContextException if the PlexusContainer could not be located.
+ */
+ public void contextualize( Context context )
+ throws ContextException
+ {
+ container = (PlexusContainer) context.get( PlexusConstants.PLEXUS_KEY );
+ }
+}
Added: maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/repository/internal/Invoker.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/repository/internal/Invoker.java?rev=1678479&view=auto
==============================================================================
--- maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/repository/internal/Invoker.java (added)
+++ maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/repository/internal/Invoker.java Sat May 9 11:48:46 2015
@@ -0,0 +1,105 @@
+package org.apache.maven.shared.artifact.repository.internal;
+
+/*
+ * 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 java.lang.reflect.InvocationTargetException;
+
+import org.apache.maven.shared.artifact.repository.RepositoryManagerException;
+
+/**
+ * Invokes method on objects using reflection.
+ */
+final class Invoker
+{
+ private Invoker()
+ {
+ // do not instantiate
+ }
+
+ public static Object invoke( Object object, String method )
+ throws RepositoryManagerException
+ {
+ return invoke( object.getClass(), object, method );
+ }
+
+ public static Object invoke( Class<?> objectClazz, Object object, String method )
+ throws RepositoryManagerException
+ {
+ try
+ {
+ return objectClazz.getMethod( method ).invoke( object );
+ }
+ catch ( IllegalAccessException e )
+ {
+ throw new RepositoryManagerException( e.getMessage(), e );
+ }
+ catch ( InvocationTargetException e )
+ {
+ throw new RepositoryManagerException( e.getMessage(), e );
+ }
+ catch ( NoSuchMethodException e )
+ {
+ throw new RepositoryManagerException( e.getMessage(), e );
+ }
+ }
+
+ public static Object invoke( Object object, String method, Class<?> argClazz, Object arg )
+ throws RepositoryManagerException
+ {
+ try
+ {
+ final Class<?> objectClazz = object.getClass();
+ return objectClazz.getMethod( method, argClazz ).invoke( object, arg );
+ }
+ catch ( IllegalAccessException e )
+ {
+ throw new RepositoryManagerException( e.getMessage(), e );
+ }
+ catch ( InvocationTargetException e )
+ {
+ throw new RepositoryManagerException( e.getMessage(), e );
+ }
+ catch ( NoSuchMethodException e )
+ {
+ throw new RepositoryManagerException( e.getMessage(), e );
+ }
+ }
+
+ public static Object invoke( Class<?> objectClazz, String staticMethod, Class<?> argClazz, Object arg )
+ throws RepositoryManagerException
+ {
+ try
+ {
+ return objectClazz.getMethod( staticMethod, argClazz ).invoke( null, arg );
+ }
+ catch ( IllegalAccessException e )
+ {
+ throw new RepositoryManagerException( e.getMessage(), e );
+ }
+ catch ( InvocationTargetException e )
+ {
+ throw new RepositoryManagerException( e.getMessage(), e );
+ }
+ catch ( NoSuchMethodException e )
+ {
+ throw new RepositoryManagerException( e.getMessage(), e );
+ }
+ }
+}
Added: maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/repository/internal/Maven302RepositoryManager.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/repository/internal/Maven302RepositoryManager.java?rev=1678479&view=auto
==============================================================================
--- maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/repository/internal/Maven302RepositoryManager.java (added)
+++ maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/repository/internal/Maven302RepositoryManager.java Sat May 9 11:48:46 2015
@@ -0,0 +1,49 @@
+package org.apache.maven.shared.artifact.repository.internal;
+
+/*
+ * 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.shared.artifact.repository.RepositoryManager;
+import org.codehaus.plexus.component.annotations.Component;
+import org.sonatype.aether.repository.LocalRepository;
+
+@Component( role = RepositoryManager.class, hint = "maven302" )
+public class Maven302RepositoryManager
+ extends Maven30RepositoryManager
+{
+
+ /**
+ * Aether-1.9+ (i.e. M3.0.2+) expects "default", not "enhanced" as repositoryType
+ */
+ @Override
+ protected String resolveRepositoryType( LocalRepository localRepository )
+ {
+ String repositoryType;
+ if ( "enhanced".equals( localRepository.getContentType() ) )
+ {
+ repositoryType = "default";
+ }
+ else
+ {
+ // this should be "simple"
+ repositoryType = localRepository.getContentType();
+ }
+ return repositoryType;
+ }
+}
Added: maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/repository/internal/Maven30RepositoryManager.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/repository/internal/Maven30RepositoryManager.java?rev=1678479&view=auto
==============================================================================
--- maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/repository/internal/Maven30RepositoryManager.java (added)
+++ maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/repository/internal/Maven30RepositoryManager.java Sat May 9 11:48:46 2015
@@ -0,0 +1,139 @@
+package org.apache.maven.shared.artifact.repository.internal;
+
+/*
+ * 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 java.io.File;
+
+import org.apache.maven.RepositoryUtils;
+import org.apache.maven.project.DefaultProjectBuildingRequest;
+import org.apache.maven.project.ProjectBuildingRequest;
+import org.apache.maven.shared.artifact.repository.RepositoryManager;
+import org.apache.maven.shared.artifact.repository.RepositoryManagerException;
+import org.apache.maven.shared.artifact.repository.internal.Invoker;
+import org.codehaus.plexus.component.annotations.Component;
+import org.codehaus.plexus.component.annotations.Requirement;
+import org.sonatype.aether.RepositorySystem;
+import org.sonatype.aether.RepositorySystemSession;
+import org.sonatype.aether.artifact.Artifact;
+import org.sonatype.aether.repository.LocalRepository;
+import org.sonatype.aether.repository.LocalRepositoryManager;
+import org.sonatype.aether.util.DefaultRepositoryCache;
+import org.sonatype.aether.util.DefaultRepositorySystemSession;
+
+@Component( role = RepositoryManager.class, hint = "maven3" )
+public class Maven30RepositoryManager
+ implements RepositoryManager
+{
+
+ @Requirement
+ private RepositorySystem repositorySystem;
+
+ /**
+ * {@inheritDoc}
+ */
+ public String getPathForLocalArtifact( ProjectBuildingRequest buildingRequest,
+ org.apache.maven.artifact.Artifact mavenArtifact )
+ {
+ Artifact aetherArtifact;
+ RepositorySystemSession session;
+
+ // LRM.getPathForLocalArtifact() won't throw an Exception, so translate reflection error to RuntimeException
+ try
+ {
+ aetherArtifact =
+ (Artifact) Invoker.invoke( RepositoryUtils.class, "toArtifact",
+ org.apache.maven.artifact.Artifact.class, mavenArtifact );
+
+ session = (RepositorySystemSession) Invoker.invoke( buildingRequest, "getRepositorySession" );
+ }
+ catch ( RepositoryManagerException e )
+ {
+ throw new RuntimeException( e.getMessage(), e );
+ }
+
+ return session.getLocalRepositoryManager().getPathForLocalArtifact( aetherArtifact );
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public ProjectBuildingRequest setLocalRepositoryBasedir( ProjectBuildingRequest buildingRequest, File basedir )
+ {
+ ProjectBuildingRequest newRequest = new DefaultProjectBuildingRequest( buildingRequest );
+
+ RepositorySystemSession session;
+ try
+ {
+ session = (RepositorySystemSession) Invoker.invoke( buildingRequest, "getRepositorySession" );
+ }
+ catch ( RepositoryManagerException e )
+ {
+ throw new RuntimeException( e.getMessage(), e );
+ }
+
+ // "clone" session and replace localRepository
+ DefaultRepositorySystemSession newSession = new DefaultRepositorySystemSession( session );
+
+ // Clear cache, since we're using a new local repository
+ newSession.setCache( new DefaultRepositoryCache() );
+
+ // keep same repositoryType
+ String repositoryType = resolveRepositoryType( session.getLocalRepository() );
+
+ LocalRepositoryManager localRepositoryManager =
+ repositorySystem.newLocalRepositoryManager( new LocalRepository( basedir, repositoryType ) );
+
+ newSession.setLocalRepositoryManager( localRepositoryManager );
+
+ try
+ {
+ Invoker.invoke( newRequest, "setRepositorySession", RepositorySystemSession.class, newSession );
+ }
+ catch ( RepositoryManagerException e )
+ {
+ throw new RuntimeException( e.getMessage(), e );
+ }
+
+ return newRequest;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public File getLocalRepositoryBasedir( ProjectBuildingRequest buildingRequest )
+ {
+ RepositorySystemSession session;
+ try
+ {
+ session = (RepositorySystemSession) Invoker.invoke( buildingRequest, "getRepositorySession" );
+ }
+ catch ( RepositoryManagerException e )
+ {
+ throw new RuntimeException( e.getMessage(), e );
+ }
+
+ return session.getLocalRepository().getBasedir();
+ }
+
+ protected String resolveRepositoryType( LocalRepository localRepository )
+ {
+ return localRepository.getContentType();
+ }
+}
Added: maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/repository/internal/Maven31RepositoryManager.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/repository/internal/Maven31RepositoryManager.java?rev=1678479&view=auto
==============================================================================
--- maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/repository/internal/Maven31RepositoryManager.java (added)
+++ maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/repository/internal/Maven31RepositoryManager.java Sat May 9 11:48:46 2015
@@ -0,0 +1,138 @@
+package org.apache.maven.shared.artifact.repository.internal;
+
+/*
+ * 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 java.io.File;
+
+import org.apache.maven.RepositoryUtils;
+import org.apache.maven.project.DefaultProjectBuildingRequest;
+import org.apache.maven.project.ProjectBuildingRequest;
+import org.apache.maven.shared.artifact.repository.RepositoryManager;
+import org.apache.maven.shared.artifact.repository.RepositoryManagerException;
+import org.codehaus.plexus.component.annotations.Component;
+import org.codehaus.plexus.component.annotations.Requirement;
+import org.eclipse.aether.DefaultRepositoryCache;
+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.repository.LocalRepository;
+import org.eclipse.aether.repository.LocalRepositoryManager;
+
+@Component( role = RepositoryManager.class, hint = "maven31" )
+public class Maven31RepositoryManager
+ implements RepositoryManager
+{
+
+ @Requirement
+ private RepositorySystem repositorySystem;
+
+ public String getPathForLocalArtifact( ProjectBuildingRequest buildingRequest,
+ org.apache.maven.artifact.Artifact mavenArtifact )
+ {
+ Artifact aetherArtifact;
+ RepositorySystemSession session;
+
+ // LRM.getPathForLocalArtifact() won't throw an Exception, so translate reflection error to RuntimeException
+ try
+ {
+ aetherArtifact = (Artifact) Invoker.invoke( RepositoryUtils.class, "toArtifact", org.apache.maven.artifact.Artifact.class,
+ mavenArtifact );
+
+ session = (RepositorySystemSession) Invoker.invoke( buildingRequest, "getRepositorySession" );
+ }
+ catch ( RepositoryManagerException e )
+ {
+ throw new RuntimeException( e.getMessage(), e );
+ }
+
+ return session.getLocalRepositoryManager().getPathForLocalArtifact( aetherArtifact );
+ }
+
+ public ProjectBuildingRequest setLocalRepositoryBasedir( ProjectBuildingRequest buildingRequest, File basedir )
+ {
+ ProjectBuildingRequest newRequest = new DefaultProjectBuildingRequest( buildingRequest );
+
+ RepositorySystemSession session;
+ try
+ {
+ session = (RepositorySystemSession) Invoker.invoke( buildingRequest, "getRepositorySession" );
+ }
+ catch ( RepositoryManagerException e )
+ {
+ throw new RuntimeException( e.getMessage(), e );
+ }
+
+ // "clone" session and replace localRepository
+ DefaultRepositorySystemSession newSession = new DefaultRepositorySystemSession( session );
+
+ // Clear cache, since we're using a new local repository
+ newSession.setCache( new DefaultRepositoryCache() );
+
+ // keep same repositoryType
+ String repositoryType = resolveRepositoryType( session.getLocalRepository() );
+
+ LocalRepositoryManager localRepositoryManager =
+ repositorySystem.newLocalRepositoryManager( newSession, new LocalRepository( basedir, repositoryType ) );
+
+ newSession.setLocalRepositoryManager( localRepositoryManager );
+
+ try
+ {
+ Invoker.invoke( newRequest, "setRepositorySession", RepositorySystemSession.class, newSession );
+ }
+ catch ( RepositoryManagerException e )
+ {
+ throw new RuntimeException( e.getMessage(), e );
+ }
+
+ return newRequest;
+ }
+
+ public File getLocalRepositoryBasedir( ProjectBuildingRequest buildingRequest )
+ {
+ RepositorySystemSession session;
+ try
+ {
+ session = (RepositorySystemSession) Invoker.invoke( buildingRequest, "getRepositorySession" );
+ }
+ catch ( RepositoryManagerException e )
+ {
+ throw new RuntimeException( e.getMessage(), e );
+ }
+
+ return session.getLocalRepository().getBasedir();
+ }
+
+ protected String resolveRepositoryType( LocalRepository localRepository )
+ {
+ String repositoryType;
+ if ( "enhanced".equals( localRepository.getContentType() ) )
+ {
+ repositoryType = "default";
+ }
+ else
+ {
+ // this should be "simple"
+ repositoryType = localRepository.getContentType();
+ }
+ return repositoryType;
+ }
+}
Modified: maven/shared/trunk/maven-artifact-transfer/src/test/java/org/apache/maven/shared/artifact/install/internal/Maven30ArtifactInstallerTest.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-artifact-transfer/src/test/java/org/apache/maven/shared/artifact/install/internal/Maven30ArtifactInstallerTest.java?rev=1678479&r1=1678478&r2=1678479&view=diff
==============================================================================
--- maven/shared/trunk/maven-artifact-transfer/src/test/java/org/apache/maven/shared/artifact/install/internal/Maven30ArtifactInstallerTest.java (original)
+++ maven/shared/trunk/maven-artifact-transfer/src/test/java/org/apache/maven/shared/artifact/install/internal/Maven30ArtifactInstallerTest.java Sat May 9 11:48:46 2015
@@ -8,11 +8,9 @@ import org.apache.maven.artifact.Artifac
import org.apache.maven.artifact.DefaultArtifact;
import org.apache.maven.artifact.handler.DefaultArtifactHandler;
import org.apache.maven.project.DefaultProjectBuildingRequest;
-import org.apache.maven.project.ProjectBuildingRequest;
import org.apache.maven.repository.internal.MavenRepositorySystemSession;
import org.apache.maven.shared.artifact.install.ArtifactInstaller;
import org.codehaus.plexus.PlexusTestCase;
-import org.sonatype.aether.impl.internal.EnhancedLocalRepositoryManager;
import org.sonatype.aether.impl.internal.SimpleLocalRepositoryManager;
public class Maven30ArtifactInstallerTest extends PlexusTestCase
@@ -55,35 +53,4 @@ public class Maven30ArtifactInstallerTes
assertTrue( new File( localRepo, "GROUPID/ARTIFACTID/VERSION/ARTIFACTID-VERSION-CLASSIFIER.EXTENSION" ).exists() );
assertTrue( new File( localRepo, "GROUPID/ARTIFACTID/maven-metadata-local.xml" ).exists() ); //??
}
-
- public void testSetLocalRepositoryBasedirSimple() throws Exception
- {
- DefaultProjectBuildingRequest buildingRequest = new DefaultProjectBuildingRequest();
- MavenRepositorySystemSession repositorySession = new MavenRepositorySystemSession();
- repositorySession.setLocalRepositoryManager( new SimpleLocalRepositoryManager( localRepo ) );
- buildingRequest.setRepositorySession( repositorySession );
-
- File basedir = new File( "NEW/LOCAL/REPO" );
-
- ProjectBuildingRequest newBuildingRequest = installer.setLocalRepositoryBasedir( buildingRequest, basedir );
-
- assertEquals( basedir.getAbsoluteFile(), newBuildingRequest.getRepositorySession().getLocalRepository().getBasedir() );
-
- }
-
- public void testSetLocalRepositoryBasedirEnhanced() throws Exception
- {
- DefaultProjectBuildingRequest buildingRequest = new DefaultProjectBuildingRequest();
- MavenRepositorySystemSession repositorySession = new MavenRepositorySystemSession();
- repositorySession.setLocalRepositoryManager( new EnhancedLocalRepositoryManager( localRepo ) );
- buildingRequest.setRepositorySession( repositorySession );
-
- File basedir = new File( "NEW/LOCAL/REPO" );
-
- ProjectBuildingRequest newBuildingRequest = installer.setLocalRepositoryBasedir( buildingRequest, basedir );
-
- assertEquals( basedir.getAbsoluteFile(), newBuildingRequest.getRepositorySession().getLocalRepository().getBasedir() );
-
- }
-
}
Added: maven/shared/trunk/maven-artifact-transfer/src/test/java/org/apache/maven/shared/artifact/repository/internal/Maven30RepositoryManagerTest.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-artifact-transfer/src/test/java/org/apache/maven/shared/artifact/repository/internal/Maven30RepositoryManagerTest.java?rev=1678479&view=auto
==============================================================================
--- maven/shared/trunk/maven-artifact-transfer/src/test/java/org/apache/maven/shared/artifact/repository/internal/Maven30RepositoryManagerTest.java (added)
+++ maven/shared/trunk/maven-artifact-transfer/src/test/java/org/apache/maven/shared/artifact/repository/internal/Maven30RepositoryManagerTest.java Sat May 9 11:48:46 2015
@@ -0,0 +1,57 @@
+package org.apache.maven.shared.artifact.repository.internal;
+
+import java.io.File;
+
+import org.apache.maven.project.DefaultProjectBuildingRequest;
+import org.apache.maven.project.ProjectBuildingRequest;
+import org.apache.maven.repository.internal.MavenRepositorySystemSession;
+import org.apache.maven.shared.artifact.repository.RepositoryManager;
+import org.codehaus.plexus.PlexusTestCase;
+import org.sonatype.aether.impl.internal.EnhancedLocalRepositoryManager;
+import org.sonatype.aether.impl.internal.SimpleLocalRepositoryManager;
+
+public class Maven30RepositoryManagerTest extends PlexusTestCase
+{
+
+ private final File localRepo = new File( "target/tests/local-repo" );
+
+ private Maven30RepositoryManager repositoryManager;
+
+ @Override
+ public void setUp() throws Exception
+ {
+ super.setUp();
+ repositoryManager = (Maven30RepositoryManager) super.lookup( RepositoryManager.class, "maven3" );
+ }
+
+ public void testSetLocalRepositoryBasedirSimple() throws Exception
+ {
+ DefaultProjectBuildingRequest buildingRequest = new DefaultProjectBuildingRequest();
+ MavenRepositorySystemSession repositorySession = new MavenRepositorySystemSession();
+ repositorySession.setLocalRepositoryManager( new SimpleLocalRepositoryManager( localRepo ) );
+ buildingRequest.setRepositorySession( repositorySession );
+
+ File basedir = new File( "NEW/LOCAL/REPO" );
+
+ ProjectBuildingRequest newBuildingRequest = repositoryManager.setLocalRepositoryBasedir( buildingRequest, basedir );
+
+ assertEquals( basedir.getAbsoluteFile(), newBuildingRequest.getRepositorySession().getLocalRepository().getBasedir() );
+
+ }
+
+ public void testSetLocalRepositoryBasedirEnhanced() throws Exception
+ {
+ DefaultProjectBuildingRequest buildingRequest = new DefaultProjectBuildingRequest();
+ MavenRepositorySystemSession repositorySession = new MavenRepositorySystemSession();
+ repositorySession.setLocalRepositoryManager( new EnhancedLocalRepositoryManager( localRepo ) );
+ buildingRequest.setRepositorySession( repositorySession );
+
+ File basedir = new File( "NEW/LOCAL/REPO" );
+
+ ProjectBuildingRequest newBuildingRequest = repositoryManager.setLocalRepositoryBasedir( buildingRequest, basedir );
+
+ assertEquals( basedir.getAbsoluteFile(), newBuildingRequest.getRepositorySession().getLocalRepository().getBasedir() );
+
+ }
+
+}