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;
}