You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by og...@apache.org on 2009/04/08 06:09:10 UTC

svn commit: r762576 - in /maven/components/trunk: ./ maven-repository-mercury/src/main/java/org/apache/maven/repository/mercury/ maven-repository/src/main/java/org/apache/maven/repository/

Author: ogusakov
Date: Tue Apr  7 00:18:23 2009
New Revision: 762576

URL: http://svn.apache.org/viewvc?rev=762576&view=rev
Log:
working on MercuryRepositorySystem - oprimized Adapter

Modified:
    maven/components/trunk/build-mercury.xml
    maven/components/trunk/maven-repository-mercury/src/main/java/org/apache/maven/repository/mercury/MercuryAdaptor.java
    maven/components/trunk/maven-repository-mercury/src/main/java/org/apache/maven/repository/mercury/MercuryRepositorySystem.java
    maven/components/trunk/maven-repository/src/main/java/org/apache/maven/repository/LegacyRepositorySystem.java
    maven/components/trunk/mercury-ant-tasks-1.0-alpha-6-SNAPSHOT.jar

Modified: maven/components/trunk/build-mercury.xml
URL: http://svn.apache.org/viewvc/maven/components/trunk/build-mercury.xml?rev=762576&r1=762575&r2=762576&view=diff
==============================================================================
--- maven/components/trunk/build-mercury.xml (original)
+++ maven/components/trunk/build-mercury.xml Tue Apr  7 00:18:23 2009
@@ -67,9 +67,13 @@
     <property name="maven.repo.central" value="http://repository.sonatype.org/content/groups/public"/>
 <!--
     <property name="maven.repo.central" value="http://repo1.maven.org/maven2"/>
+    <property name="maven.repo.update.policy" value="daily"/>
+    <property name="maven.repo.update.policy" value="always"/>
 -->
     <property name="maven.repo.update.policy" value="daily"/>
-  	
+    
+    <property name="maven.repo.system" value="don.t"/>
+    
     <condition property="do.not.clean.local.repo">
       <not>
         <isset property="clean.local.repo"/>
@@ -89,6 +93,52 @@
     <mkdir dir="${maven.repo.local}"/>
   </target>
 
+  <target name="flip-default-repository" unless="do.not.flip.repository">
+
+    <replace dir="${basedir}/maven-repository/src/main/java">
+      <include name="**/LegacyRepositorySystem.java"/>
+      <replacefilter token='@Component( role = RepositorySystem.class, hint = "default" )'
+                     value='@Component( role = RepositorySystem.class, hint = "${legacy-hint}" )'/>
+      <replacefilter token='@Component( role = RepositorySystem.class, hint = "legacy" )'
+                     value='@Component( role = RepositorySystem.class, hint = "${legacy-hint}" )'/>
+    </replace>
+
+    <replace dir="${basedir}/maven-repository-mercury/src/main/java">
+      <include name="**/MercuryRepositorySystem.java"/>
+      <replacefilter token='@Component( role = RepositorySystem.class, hint = "mercury" )'
+                     value='@Component( role = RepositorySystem.class, hint = "${mercury-hint}" )'/>
+      <replacefilter token='@Component( role = RepositorySystem.class, hint = "default" )'
+                     value='@Component( role = RepositorySystem.class, hint = "${mercury-hint}" )'/>
+    </replace>
+    
+    <echo>maven.repo.system is ${maven.repo.system}, flip: legacy-hint=${legacy-hint}, mercury-hint=${mercury-hint}</echo>
+
+  </target>
+
+  <target name="flip-default-repository-system" description="flips repository system impl">
+  	
+    <condition property="legacy-hint" value="default">
+      <equals arg1="${maven.repo.system}" arg2="legacy"/>
+    </condition>
+    <condition property="mercury-hint" value="mercury">
+      <equals arg1="${maven.repo.system}" arg2="legacy"/>
+    </condition>
+
+    <condition property="legacy-hint" value="legacy">
+      <equals arg1="${maven.repo.system}" arg2="mercury"/>
+    </condition>
+    <condition property="mercury-hint" value="default">
+      <equals arg1="${maven.repo.system}" arg2="mercury"/>
+    </condition>
+    
+    <condition property="do.not.flip.repository" value="default">
+      <equals arg1="${maven.repo.system}" arg2="don.t"/>
+    </condition>
+  	
+  	<antcall target="flip-default-repository"/>
+
+  </target>
+
   <target name="pull" depends="init,clean-local-repo" unless="skip.pull">
     <property name="verbose" value="false"/>
     <!-- Pull the dependencies that Maven needs to build -->
@@ -219,7 +269,7 @@
     <modello file="maven-compat/src/main/mdo/metadata.mdo"/>
   </target>
 
-  <target name="compile-boot" depends="generate-sources" description="compiles the bootstrap sources">
+  <target name="compile-boot" depends="generate-sources,flip-default-repository-system" description="compiles the bootstrap sources">
 
     <path id="sources">
       <dirset dir=".">
@@ -253,6 +303,12 @@
       <arg value="install"/>
       <arg value="-Dmaven.repo.local=${maven.repo.local}"/>
       <arg value="-Dsurefire.useFile=${surefire.useFile}"/>
+    	<!-- <debug-the-bootstrap> -->
+    	<jvmarg value="-Xdebug"/>
+    	<jvmarg value="-Xnoagent"/>
+    	<jvmarg value="-Djava.compiler=NONE"/>
+    	<jvmarg value="-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000"/>
+      <!-- </debug-the-bootstrap> -->
     </java>
   </target>
 

Modified: maven/components/trunk/maven-repository-mercury/src/main/java/org/apache/maven/repository/mercury/MercuryAdaptor.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-repository-mercury/src/main/java/org/apache/maven/repository/mercury/MercuryAdaptor.java?rev=762576&r1=762575&r2=762576&view=diff
==============================================================================
--- maven/components/trunk/maven-repository-mercury/src/main/java/org/apache/maven/repository/mercury/MercuryAdaptor.java (original)
+++ maven/components/trunk/maven-repository-mercury/src/main/java/org/apache/maven/repository/mercury/MercuryAdaptor.java Tue Apr  7 00:18:23 2009
@@ -21,9 +21,14 @@
 
 import java.io.File;
 import java.net.MalformedURLException;
+import java.net.URI;
+import java.net.URISyntaxException;
 import java.net.URL;
 import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 import org.apache.maven.artifact.Artifact;
 import org.apache.maven.artifact.factory.ArtifactFactory;
@@ -46,9 +51,13 @@
  */
 public class MercuryAdaptor
 {
+    
+    private static Map<String, Repository> _repos = Collections.synchronizedMap(  new HashMap<String, Repository>() );
+    
     public static List<Repository> toMercuryRepos( ArtifactRepository localRepository,
                                                    List<ArtifactRepository> remoteRepositories,
-                                                   DependencyProcessor dependencyProcessor )
+                                                   DependencyProcessor dependencyProcessor
+                                                 )
     {
         if ( localRepository == null && Util.isEmpty( remoteRepositories ) )
             return null;
@@ -60,9 +69,25 @@
 
         if ( localRepository != null )
         {
-            LocalRepositoryM2 lr =
-                new LocalRepositoryM2( localRepository.getId(), new File( localRepository.getUrl() ),
-                                       dependencyProcessor );
+            String url = localRepository.getUrl();
+            
+            LocalRepositoryM2 lr = (LocalRepositoryM2) _repos.get( url );
+            
+            if( lr == null )
+                try
+                {
+                    URI rootURI = new URI( url );
+                    
+                    File localRepoDir =  new File( rootURI );
+                    
+                    lr = new LocalRepositoryM2( localRepository.getId(), localRepoDir, dependencyProcessor );
+                    
+                    _repos.put( url, lr );
+                }
+                catch ( URISyntaxException e )
+                {
+                    throw new IllegalArgumentException( e );
+                }
             res.add( lr );
         }
 
@@ -70,16 +95,24 @@
         {
             for ( ArtifactRepository ar : remoteRepositories )
             {
-                Server server;
-                try
+                String url = ar.getUrl();
+                
+                RemoteRepositoryM2 rr = (RemoteRepositoryM2) _repos.get( url );
+                
+                if( rr == null )
                 {
-                    server = new Server( ar.getId(), new URL( ar.getUrl() ) );
-                }
-                catch ( MalformedURLException e )
-                {
-                    throw new IllegalArgumentException( e );
+                    Server server;
+                    try
+                    {
+                        server = new Server( ar.getId(), new URL( url ) );
+                    }
+                    catch ( MalformedURLException e )
+                    {
+                        throw new IllegalArgumentException( e );
+                    }
+                    rr = new RemoteRepositoryM2( server, dependencyProcessor );
+                    _repos.put( url, rr );
                 }
-                RemoteRepositoryM2 rr = new RemoteRepositoryM2( server, dependencyProcessor );
 
                 res.add( rr );
             }

Modified: maven/components/trunk/maven-repository-mercury/src/main/java/org/apache/maven/repository/mercury/MercuryRepositorySystem.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-repository-mercury/src/main/java/org/apache/maven/repository/mercury/MercuryRepositorySystem.java?rev=762576&r1=762575&r2=762576&view=diff
==============================================================================
--- maven/components/trunk/maven-repository-mercury/src/main/java/org/apache/maven/repository/mercury/MercuryRepositorySystem.java (original)
+++ maven/components/trunk/maven-repository-mercury/src/main/java/org/apache/maven/repository/mercury/MercuryRepositorySystem.java Tue Apr  7 00:18:23 2009
@@ -25,6 +25,7 @@
 import org.apache.maven.artifact.resolver.ArtifactResolutionException;
 import org.apache.maven.artifact.resolver.ArtifactResolutionRequest;
 import org.apache.maven.artifact.resolver.ArtifactResolutionResult;
+import org.apache.maven.mercury.artifact.Artifact;
 import org.apache.maven.mercury.artifact.ArtifactMetadata;
 import org.apache.maven.mercury.artifact.ArtifactQueryList;
 import org.apache.maven.mercury.artifact.ArtifactScopeEnum;
@@ -48,7 +49,7 @@
  * @author Oleg Gusakov
  * @version $Id$
  */
-@Component( role = RepositorySystem.class, hint = "mercury" )
+@Component( role = RepositorySystem.class, hint = "default" )
 public class MercuryRepositorySystem
     extends LegacyRepositorySystem
     implements RepositorySystem
@@ -83,15 +84,25 @@
 
         try
         {
-            List<ArtifactMetadata> mercuryMetadataList =
-                _mercury.resolve( repos, null, MercuryAdaptor.toMercuryMetadata( request.getArtifact() ) );
+            org.apache.maven.artifact.Artifact mavenRootArtifact = request.getArtifact();
+            
+            ArtifactMetadata rootMd = MercuryAdaptor.toMercuryMetadata( mavenRootArtifact );
+            
+            List<ArtifactMetadata> mercuryMetadataList = _mercury.resolve( repos, null,  rootMd );
 
             List<org.apache.maven.mercury.artifact.Artifact> mercuryArtifactList =
                 _mercury.read( repos, mercuryMetadataList );
 
             if ( !Util.isEmpty( mercuryArtifactList ) )
+            {
                 for ( org.apache.maven.mercury.artifact.Artifact a : mercuryArtifactList )
                     result.addArtifact( MercuryAdaptor.toMavenArtifact( _artifactFactory, a ) );
+                
+                // maven likes the original artifact instance - fill it in
+                Artifact mercuryRootArtifact = mercuryArtifactList.get( 0 );
+                
+                mavenRootArtifact.setFile( mercuryRootArtifact.getFile() );
+            }
         }
         catch ( RepositoryException e )
         {

Modified: maven/components/trunk/maven-repository/src/main/java/org/apache/maven/repository/LegacyRepositorySystem.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-repository/src/main/java/org/apache/maven/repository/LegacyRepositorySystem.java?rev=762576&r1=762575&r2=762576&view=diff
==============================================================================
--- maven/components/trunk/maven-repository/src/main/java/org/apache/maven/repository/LegacyRepositorySystem.java (original)
+++ maven/components/trunk/maven-repository/src/main/java/org/apache/maven/repository/LegacyRepositorySystem.java Tue Apr  7 00:18:23 2009
@@ -59,7 +59,7 @@
 /**
  * @author Jason van Zyl
  */
-@Component( role = RepositorySystem.class, hint = "default" )
+@Component( role = RepositorySystem.class, hint = "legacy" )
 public class LegacyRepositorySystem
     implements RepositorySystem
 {

Modified: maven/components/trunk/mercury-ant-tasks-1.0-alpha-6-SNAPSHOT.jar
URL: http://svn.apache.org/viewvc/maven/components/trunk/mercury-ant-tasks-1.0-alpha-6-SNAPSHOT.jar?rev=762576&r1=762575&r2=762576&view=diff
==============================================================================
Binary files - no diff available.