You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by si...@apache.org on 2008/07/24 01:12:06 UTC

svn commit: r679225 - in /maven/sandbox/branches/SI_MAVEN_2_1_A/maven-project/src/main/java/org/apache/maven/project/builder: PomClassicDomainModel.java PomClassicTransformer.java impl/DefaultProjectBuilder.java

Author: sisbell
Date: Wed Jul 23 16:12:06 2008
New Revision: 679225

URL: http://svn.apache.org/viewvc?rev=679225&view=rev
Log:
Performance optimization of builder.

Modified:
    maven/sandbox/branches/SI_MAVEN_2_1_A/maven-project/src/main/java/org/apache/maven/project/builder/PomClassicDomainModel.java
    maven/sandbox/branches/SI_MAVEN_2_1_A/maven-project/src/main/java/org/apache/maven/project/builder/PomClassicTransformer.java
    maven/sandbox/branches/SI_MAVEN_2_1_A/maven-project/src/main/java/org/apache/maven/project/builder/impl/DefaultProjectBuilder.java

Modified: maven/sandbox/branches/SI_MAVEN_2_1_A/maven-project/src/main/java/org/apache/maven/project/builder/PomClassicDomainModel.java
URL: http://svn.apache.org/viewvc/maven/sandbox/branches/SI_MAVEN_2_1_A/maven-project/src/main/java/org/apache/maven/project/builder/PomClassicDomainModel.java?rev=679225&r1=679224&r2=679225&view=diff
==============================================================================
--- maven/sandbox/branches/SI_MAVEN_2_1_A/maven-project/src/main/java/org/apache/maven/project/builder/PomClassicDomainModel.java (original)
+++ maven/sandbox/branches/SI_MAVEN_2_1_A/maven-project/src/main/java/org/apache/maven/project/builder/PomClassicDomainModel.java Wed Jul 23 16:12:06 2008
@@ -57,6 +57,8 @@
      */
     private Model model;
 
+    private String id;
+
     /**
      * Constructor
      *
@@ -120,17 +122,32 @@
                 return false;
             }
         }
+        return a.getId().equals( this.getId() );
+    }
 
-        String groupId = ( model.getGroupId() == null ) ? model.getParent().getGroupId() : model.getGroupId();
-        String artifactId =
-            ( model.getArtifactId() == null ) ? model.getParent().getArtifactId() : model.getArtifactId();
-        String version = ( model.getVersion() == null ) ? model.getParent().getVersion() : model.getVersion();
-
-        String aGroupId = ( a.getGroupId() == null ) ? a.getParent().getGroupId() : a.getGroupId();
-        String aArtifactId = ( a.getArtifactId() == null ) ? a.getParent().getArtifactId() : a.getArtifactId();
-        String aVersion = ( a.getVersion() == null ) ? a.getParent().getVersion() : a.getVersion();
+    public String getId()
+    {
+        if ( id == null )
+        {
+            if ( model == null )
+            {
+                try
+                {
+                    model = getModel();
+                }
+                catch ( IOException e )
+                {
+                    return "";
+                }
+            }
+            String groupId = ( model.getGroupId() == null ) ? model.getParent().getGroupId() : model.getGroupId();
+            String artifactId =
+                ( model.getArtifactId() == null ) ? model.getParent().getArtifactId() : model.getArtifactId();
+            String version = ( model.getVersion() == null ) ? model.getParent().getVersion() : model.getVersion();
 
-        return groupId.equals( aGroupId ) && artifactId.equals( aArtifactId ) && version.equals( aVersion );
+            id = groupId + ":" + artifactId + ":" + version;
+        }
+        return id;
     }
 
 
@@ -140,25 +157,7 @@
         {
             throw new IllegalArgumentException( "parent: null" );
         }
-        if ( model == null )
-        {
-            try
-            {
-                model = getModel();
-            }
-            catch ( IOException e )
-            {
-                return false;
-            }
-        }
-
-        String groupId = ( model.getGroupId() == null ) ? model.getParent().getGroupId() : model.getGroupId();
-        String artifactId =
-            ( model.getArtifactId() == null ) ? model.getParent().getArtifactId() : model.getArtifactId();
-        String version = ( model.getVersion() == null ) ? model.getParent().getVersion() : model.getVersion();
-
-        return ( parent.getGroupId().equals( groupId ) && parent.getArtifactId().equals( artifactId ) &&
-            parent.getVersion().equals( version ) );
+        return getId().equals( parent.getGroupId() + ":" + parent.getArtifactId() + ":" + parent.getVersion() );
     }
 
     /**
@@ -240,7 +239,7 @@
      */
     public boolean equals( Object o )
     {
-        return o instanceof PomClassicDomainModel && this.asString().equals( ( (PomClassicDomainModel) o ).asString() );
+        return o instanceof PomClassicDomainModel && getId().equals( ( (PomClassicDomainModel) o ).getId() );
     }
 
 }

Modified: maven/sandbox/branches/SI_MAVEN_2_1_A/maven-project/src/main/java/org/apache/maven/project/builder/PomClassicTransformer.java
URL: http://svn.apache.org/viewvc/maven/sandbox/branches/SI_MAVEN_2_1_A/maven-project/src/main/java/org/apache/maven/project/builder/PomClassicTransformer.java?rev=679225&r1=679224&r2=679225&view=diff
==============================================================================
--- maven/sandbox/branches/SI_MAVEN_2_1_A/maven-project/src/main/java/org/apache/maven/project/builder/PomClassicTransformer.java (original)
+++ maven/sandbox/branches/SI_MAVEN_2_1_A/maven-project/src/main/java/org/apache/maven/project/builder/PomClassicTransformer.java Wed Jul 23 16:12:06 2008
@@ -36,6 +36,8 @@
 import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
+import java.util.Map;
+import java.util.HashMap;
 
 /**
  * Provides methods for transforming model properties into a domain model for the pom classic format and vice versa.
@@ -49,6 +51,10 @@
      */
     private final Set<String> uris;
 
+    private static Map<String, List<ModelProperty>> cache = new HashMap<String, List<ModelProperty>>();
+
+    //private static List<DomainModel> cache = new ArrayList<DomainModel>();
+
     /**
      * Default constructor
      */
@@ -144,7 +150,7 @@
         {
             throw new IOException( e + ":\r\n" + xml );
         }
-    }
+        }
 
     /**
      * @see ModelTransformer#transformToModelProperties(java.util.List)
@@ -169,6 +175,14 @@
                 throw new IllegalArgumentException( "domainModels: Invalid domain model" );
             }
 
+            PomClassicDomainModel pomDomainModel = (PomClassicDomainModel) domainModel;
+            if ( cache.containsKey( pomDomainModel.getId() ) )
+            {
+                System.out.println( "Found in cache: ID = " + pomDomainModel.getId() );
+                modelProperties.addAll( cache.get( pomDomainModel.getId() ) );
+                continue;
+            }
+
             List<ModelProperty> tmp = ModelMarshaller.marshallXmlToModelProperties(
                 ( (PomClassicDomainModel) domainModel ).getInputStream(), ProjectUri.baseUri, uris );
             List clearedProperties = new ArrayList<ModelProperty>();
@@ -235,7 +249,6 @@
                 }
                 tmp.removeAll( removeProperties );
             }
-
             //Not inherited plugin rule
             if ( domainModels.indexOf( domainModel ) > 0 )
             {
@@ -293,7 +306,6 @@
                 tmp.remove( index );
                 tmp.add( index, new ModelProperty( ProjectUri.Scm.connection, scmConnectionUrl.toString() ) );
             }
-
             //SCM Developer Rule
             scmUrlProperty = getPropertyFor( ProjectUri.Scm.developerConnection, tmp );
             if ( scmDeveloperUrl.length() == 0 && scmUrlProperty != null )
@@ -308,65 +320,25 @@
                 tmp.add( index, new ModelProperty( ProjectUri.Scm.developerConnection, scmDeveloperUrl.toString() ) );
             }
 
-            //Remove Plugin Repository Inheritance Rule
-            for ( ModelProperty mp : tmp )
-            {
-                if ( domainModels.indexOf( domainModel ) > 0 &&
-                    mp.getUri().startsWith( ProjectUri.PluginRepositories.xUri ) )
-                {
-                    clearedProperties.add( mp );
-                }
-            }
 
+            //Remove Plugin Repository Inheritance Rule
             //Project Name Inheritance Rule
-            for ( ModelProperty mp : tmp )
-            {
-                if ( domainModels.indexOf( domainModel ) > 0 && mp.getUri().equals( ProjectUri.name ) )
-                {
-                    clearedProperties.add( mp );
-                    break;
-                }
-            }
-
             //Packaging Inheritance Rule
-            for ( ModelProperty mp : tmp )
-            {
-                if ( domainModels.indexOf( domainModel ) > 0 && mp.getUri().equals( ProjectUri.packaging ) )
-                {
-                    clearedProperties.add( mp );
-                    break;
-                }
-            }
-
             //Build Resources Inheritence Rule
-            for ( ModelProperty mp : tmp )
-            {
-                if ( domainModels.indexOf( domainModel ) > 0 &&
-                    mp.getUri().startsWith( ProjectUri.Build.Resources.xUri ) )
-                {
-                    clearedProperties.add( mp );
-                }
-            }
-
             //Build Test Resources Inheritance Rule
-            for ( ModelProperty mp : tmp )
-            {
-                if ( domainModels.indexOf( domainModel ) > 0 &&
-                    mp.getUri().startsWith( ProjectUri.Build.TestResources.xUri ) )
-                {
-                    clearedProperties.add( mp );
-                }
-            }
-
             //Profiles not inherited rule
             for ( ModelProperty mp : tmp )
             {
-                if ( domainModels.indexOf( domainModel ) > 0 && mp.getUri().startsWith( ProjectUri.Profiles.xUri ) )
+                String uri = mp.getUri();
+                if ( domainModels.indexOf( domainModel ) > 0 && ( uri.equals( ProjectUri.name ) ||
+                    uri.equals( ProjectUri.packaging ) || uri.startsWith( ProjectUri.Profiles.xUri ) ||
+                    uri.startsWith( ProjectUri.Build.Resources.xUri ) ||
+                    uri.startsWith( ProjectUri.Build.TestResources.xUri ) ||
+                    uri.startsWith( ProjectUri.PluginRepositories.xUri ) ) )
                 {
                     clearedProperties.add( mp );
                 }
             }
-
             ModelProperty artifactId = getPropertyFor( ProjectUri.artifactId, tmp );
             if ( artifactId != null )
             {
@@ -376,6 +348,11 @@
             tmp.removeAll( clearedProperties );
             modelProperties.addAll( tmp );
 
+            if ( domainModels.indexOf( domainModel ) > 0 )
+            {
+                //cache.put( pomDomainModel.getId(), modelProperties );
+            }
+
             //Remove Parent Info
             /*
             for (ModelProperty mp : tmp) {

Modified: maven/sandbox/branches/SI_MAVEN_2_1_A/maven-project/src/main/java/org/apache/maven/project/builder/impl/DefaultProjectBuilder.java
URL: http://svn.apache.org/viewvc/maven/sandbox/branches/SI_MAVEN_2_1_A/maven-project/src/main/java/org/apache/maven/project/builder/impl/DefaultProjectBuilder.java?rev=679225&r1=679224&r2=679225&view=diff
==============================================================================
--- maven/sandbox/branches/SI_MAVEN_2_1_A/maven-project/src/main/java/org/apache/maven/project/builder/impl/DefaultProjectBuilder.java (original)
+++ maven/sandbox/branches/SI_MAVEN_2_1_A/maven-project/src/main/java/org/apache/maven/project/builder/impl/DefaultProjectBuilder.java Wed Jul 23 16:12:06 2008
@@ -152,6 +152,7 @@
         PomClassicTransformer transformer = new PomClassicTransformer();
         ModelTransformerContext ctx = new ModelTransformerContext(
             Arrays.asList( new ArtifactModelContainerFactory(), new IdModelContainerFactory() ) );
+
         PomClassicDomainModel transformedDomainModel =
             ( (PomClassicDomainModel) ctx.transform( domainModels, transformer, transformer, properties ) );
         Model model = transformedDomainModel.getModel();
@@ -213,8 +214,6 @@
 
         domainModels.add( parentDomainModel );
         domainModels.addAll( getDomainModelParentsFromRepository( parentDomainModel, artifactResolver ) );
-        // System.out.println("getDomainModelParentsFromRepository: Time = " + (System.currentTimeMillis() - start) + ", Gid ="
-        //         + parent.getGroupId() + ", Artifact Id= " + parent.getArtifactId() + ", Version = " + parent.getVersion());
         return domainModels;
     }
 
@@ -229,7 +228,6 @@
         {
             throw new IllegalArgumentException( "artifactFactory: not initialized" );
         }
-        long start = System.currentTimeMillis();
 
         List<DomainModel> domainModels = new ArrayList<DomainModel>();
 
@@ -273,8 +271,6 @@
             }
         }
 
-        //    System.out.println("getDomainModelParentsFromLocalPath: Time = " + (System.currentTimeMillis() - start) + ", Gid ="
-        //           + model.getGroupId() + ", Artifact Id= " + model.getArtifactId() + ", Version = " + model.getVersion());
         return domainModels;
     }