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/11/04 19:30:31 UTC
svn commit: r711344 - in
/maven/components/branches/sisbell-maven-3.0-mercury:
maven-mercury/src/main/java/org/apache/maven/mercury/
maven-project-builder/src/main/java/org/apache/maven/project/builder/
maven-project/src/main/java/org/apache/maven/proj...
Author: sisbell
Date: Tue Nov 4 10:30:31 2008
New Revision: 711344
URL: http://svn.apache.org/viewvc?rev=711344&view=rev
Log:
Refactor: Introduced concept of DomainModelFactory that allows us to begin using a single PomTransformer, rather than duplicating based on domain model type.
Added:
maven/components/branches/sisbell-maven-3.0-mercury/maven-mercury/src/main/java/org/apache/maven/mercury/MavenDomainModelFactory.java
maven/components/branches/sisbell-maven-3.0-mercury/maven-project-builder/src/main/java/org/apache/maven/project/builder/PomTransformer.java (contents, props changed)
- copied, changed from r710187, maven/components/branches/sisbell-maven-3.0-mercury/maven-mercury/src/main/java/org/apache/maven/mercury/MercuryPomTransformer.java
maven/components/branches/sisbell-maven-3.0-mercury/maven-shared-model/src/main/java/org/apache/maven/shared/model/DomainModelFactory.java
Removed:
maven/components/branches/sisbell-maven-3.0-mercury/maven-mercury/src/main/java/org/apache/maven/mercury/MercuryPomTransformer.java
Modified:
maven/components/branches/sisbell-maven-3.0-mercury/maven-mercury/src/main/java/org/apache/maven/mercury/MavenDependencyProcessor.java
maven/components/branches/sisbell-maven-3.0-mercury/maven-mercury/src/main/java/org/apache/maven/mercury/MavenDomainModel.java
maven/components/branches/sisbell-maven-3.0-mercury/maven-project/src/main/java/org/apache/maven/project/builder/PomClassicDomainModel.java
maven/components/branches/sisbell-maven-3.0-mercury/maven-project/src/main/java/org/apache/maven/project/builder/PomClassicTransformer.java
maven/components/branches/sisbell-maven-3.0-mercury/maven-shared-model/src/main/java/org/apache/maven/shared/model/DomainModel.java
Modified: maven/components/branches/sisbell-maven-3.0-mercury/maven-mercury/src/main/java/org/apache/maven/mercury/MavenDependencyProcessor.java
URL: http://svn.apache.org/viewvc/maven/components/branches/sisbell-maven-3.0-mercury/maven-mercury/src/main/java/org/apache/maven/mercury/MavenDependencyProcessor.java?rev=711344&r1=711343&r2=711344&view=diff
==============================================================================
--- maven/components/branches/sisbell-maven-3.0-mercury/maven-mercury/src/main/java/org/apache/maven/mercury/MavenDependencyProcessor.java (original)
+++ maven/components/branches/sisbell-maven-3.0-mercury/maven-mercury/src/main/java/org/apache/maven/mercury/MavenDependencyProcessor.java Tue Nov 4 10:30:31 2008
@@ -7,10 +7,7 @@
import org.apache.maven.mercury.builder.api.DependencyProcessor;
import org.apache.maven.mercury.builder.api.MetadataReader;
import org.apache.maven.mercury.builder.api.MetadataReaderException;
-import org.apache.maven.project.builder.ArtifactModelContainerFactory;
-import org.apache.maven.project.builder.IdModelContainerFactory;
-import org.apache.maven.project.builder.ProjectUri;
-import org.apache.maven.project.builder.PomInterpolatorTag;
+import org.apache.maven.project.builder.*;
import org.apache.maven.shared.model.*;
public final class MavenDependencyProcessor implements DependencyProcessor {
@@ -60,7 +57,7 @@
throw new MetadataReaderException("Failed to create domain model. Message = " + e.getMessage());
}
- MercuryPomTransformer transformer = new MercuryPomTransformer();
+ PomTransformer transformer = new PomTransformer(new MavenDomainModelFactory());
ModelTransformerContext ctx = new ModelTransformerContext(
Arrays.asList(new ArtifactModelContainerFactory(), new IdModelContainerFactory()));
Modified: maven/components/branches/sisbell-maven-3.0-mercury/maven-mercury/src/main/java/org/apache/maven/mercury/MavenDomainModel.java
URL: http://svn.apache.org/viewvc/maven/components/branches/sisbell-maven-3.0-mercury/maven-mercury/src/main/java/org/apache/maven/mercury/MavenDomainModel.java?rev=711344&r1=711343&r2=711344&view=diff
==============================================================================
--- maven/components/branches/sisbell-maven-3.0-mercury/maven-mercury/src/main/java/org/apache/maven/mercury/MavenDomainModel.java (original)
+++ maven/components/branches/sisbell-maven-3.0-mercury/maven-mercury/src/main/java/org/apache/maven/mercury/MavenDomainModel.java Tue Nov 4 10:30:31 2008
@@ -21,10 +21,7 @@
import org.apache.maven.shared.model.*;
import org.apache.maven.shared.model.impl.DefaultModelDataSource;
-import org.apache.maven.project.builder.ProjectUri;
-import org.apache.maven.project.builder.ArtifactModelContainerFactory;
-import org.apache.maven.project.builder.IdModelContainerFactory;
-import org.apache.maven.project.builder.ExclusionModelContainerFactory;
+import org.apache.maven.project.builder.*;
import org.apache.maven.project.builder.profile.ProfileContext;
import org.apache.maven.mercury.artifact.ArtifactBasicMetadata;
@@ -71,7 +68,7 @@
*/
public MavenDomainModel(InputStream inputStream)
throws IOException {
- this(ModelMarshaller.marshallXmlToModelProperties(inputStream, ProjectUri.baseUri, MercuryPomTransformer.URIS));
+ this(ModelMarshaller.marshallXmlToModelProperties(inputStream, ProjectUri.baseUri, PomTransformer.URIS));
}
/**
Added: maven/components/branches/sisbell-maven-3.0-mercury/maven-mercury/src/main/java/org/apache/maven/mercury/MavenDomainModelFactory.java
URL: http://svn.apache.org/viewvc/maven/components/branches/sisbell-maven-3.0-mercury/maven-mercury/src/main/java/org/apache/maven/mercury/MavenDomainModelFactory.java?rev=711344&view=auto
==============================================================================
--- maven/components/branches/sisbell-maven-3.0-mercury/maven-mercury/src/main/java/org/apache/maven/mercury/MavenDomainModelFactory.java (added)
+++ maven/components/branches/sisbell-maven-3.0-mercury/maven-mercury/src/main/java/org/apache/maven/mercury/MavenDomainModelFactory.java Tue Nov 4 10:30:31 2008
@@ -0,0 +1,15 @@
+package org.apache.maven.mercury;
+
+import org.apache.maven.shared.model.DomainModelFactory;
+import org.apache.maven.shared.model.DomainModel;
+import org.apache.maven.shared.model.ModelProperty;
+
+import java.util.List;
+import java.io.IOException;
+
+public class MavenDomainModelFactory implements DomainModelFactory {
+
+ public DomainModel createDomainModel(List<ModelProperty> modelProperties) throws IOException {
+ return new MavenDomainModel(modelProperties);
+ }
+}
Copied: maven/components/branches/sisbell-maven-3.0-mercury/maven-project-builder/src/main/java/org/apache/maven/project/builder/PomTransformer.java (from r710187, maven/components/branches/sisbell-maven-3.0-mercury/maven-mercury/src/main/java/org/apache/maven/mercury/MercuryPomTransformer.java)
URL: http://svn.apache.org/viewvc/maven/components/branches/sisbell-maven-3.0-mercury/maven-project-builder/src/main/java/org/apache/maven/project/builder/PomTransformer.java?p2=maven/components/branches/sisbell-maven-3.0-mercury/maven-project-builder/src/main/java/org/apache/maven/project/builder/PomTransformer.java&p1=maven/components/branches/sisbell-maven-3.0-mercury/maven-mercury/src/main/java/org/apache/maven/mercury/MercuryPomTransformer.java&r1=710187&r2=711344&rev=711344&view=diff
==============================================================================
--- maven/components/branches/sisbell-maven-3.0-mercury/maven-mercury/src/main/java/org/apache/maven/mercury/MercuryPomTransformer.java (original)
+++ maven/components/branches/sisbell-maven-3.0-mercury/maven-project-builder/src/main/java/org/apache/maven/project/builder/PomTransformer.java Tue Nov 4 10:30:31 2008
@@ -1,4 +1,4 @@
-package org.apache.maven.mercury;
+package org.apache.maven.project.builder;
/*
* Licensed to the Apache Software Foundation (ASF) under one
@@ -19,10 +19,6 @@
* under the License.
*/
-import org.apache.maven.project.builder.ArtifactModelContainerFactory;
-import org.apache.maven.project.builder.IdModelContainerFactory;
-import org.apache.maven.project.builder.PomInterpolatorTag;
-import org.apache.maven.project.builder.ProjectUri;
import org.apache.maven.shared.model.*;
import org.apache.maven.shared.model.impl.DefaultModelDataSource;
@@ -32,10 +28,16 @@
/**
* Provides methods for transforming model properties into a domain model for the pom classic format and vice versa.
*/
-public final class MercuryPomTransformer
+public final class PomTransformer
implements ModelTransformer
{
+ private final DomainModelFactory factory;
+
+ public PomTransformer(DomainModelFactory factory)
+ {
+ this.factory = factory;
+ }
/**
* The URIs this transformer supports
*/
@@ -207,7 +209,7 @@
}
}
props.removeAll( removeProperties );
- return new MavenDomainModel(props );
+ return factory.createDomainModel( props );
}
/**
@@ -233,14 +235,8 @@
for ( DomainModel domainModel : domainModels )
{
- if ( !( domainModel instanceof MavenDomainModel ) )
- {
- throw new IllegalArgumentException( "domainModels: Invalid domain model" );
- }
-
-
List<ModelProperty> tmp =
- ( (MavenDomainModel) domainModel).getModelProperties();
+ domainModel.getModelProperties();
List<ModelProperty> clearedProperties = new ArrayList<ModelProperty>();
@@ -452,28 +448,6 @@
DomainModel domainModel)
throws IOException
{
- interpolateModelProperties( modelProperties, interpolatorProperties, (MavenDomainModel) domainModel);
- }
-
- private static boolean containsProjectVersion( List<InterpolatorProperty> interpolatorProperties )
- {
- InterpolatorProperty versionInterpolatorProperty =
- new ModelProperty( ProjectUri.version, "").asInterpolatorProperty( ProjectUri.baseUri);
- for( InterpolatorProperty ip : interpolatorProperties)
- {
- if ( ip.equals( versionInterpolatorProperty ) )
- {
- return true;
- }
- }
- return false;
- }
-
- private static void interpolateModelProperties(List<ModelProperty> modelProperties,
- List<InterpolatorProperty> interpolatorProperties,
- MavenDomainModel domainModel)
- throws IOException
- {
Map<String, String> aliases = new HashMap<String, String>();
aliases.put( "project.", "pom.");
@@ -531,6 +505,20 @@
ModelTransformerContext.interpolateModelProperties( modelProperties, ips1 );
}
+ private static boolean containsProjectVersion( List<InterpolatorProperty> interpolatorProperties )
+ {
+ InterpolatorProperty versionInterpolatorProperty =
+ new ModelProperty( ProjectUri.version, "").asInterpolatorProperty( ProjectUri.baseUri);
+ for( InterpolatorProperty ip : interpolatorProperties)
+ {
+ if ( ip.equals( versionInterpolatorProperty ) )
+ {
+ return true;
+ }
+ }
+ return false;
+ }
+
private static boolean hasExecutionId( ModelContainer executionContainer )
{
for ( ModelProperty mp : executionContainer.getProperties() )
Propchange: maven/components/branches/sisbell-maven-3.0-mercury/maven-project-builder/src/main/java/org/apache/maven/project/builder/PomTransformer.java
------------------------------------------------------------------------------
svn:executable = *
Modified: maven/components/branches/sisbell-maven-3.0-mercury/maven-project/src/main/java/org/apache/maven/project/builder/PomClassicDomainModel.java
URL: http://svn.apache.org/viewvc/maven/components/branches/sisbell-maven-3.0-mercury/maven-project/src/main/java/org/apache/maven/project/builder/PomClassicDomainModel.java?rev=711344&r1=711343&r2=711344&view=diff
==============================================================================
--- maven/components/branches/sisbell-maven-3.0-mercury/maven-project/src/main/java/org/apache/maven/project/builder/PomClassicDomainModel.java (original)
+++ maven/components/branches/sisbell-maven-3.0-mercury/maven-project/src/main/java/org/apache/maven/project/builder/PomClassicDomainModel.java Tue Nov 4 10:30:31 2008
@@ -24,6 +24,7 @@
import org.apache.maven.model.io.xpp3.MavenXpp3Reader;
import org.apache.maven.model.io.xpp3.MavenXpp3Writer;
import org.apache.maven.shared.model.InputStreamDomainModel;
+import org.apache.maven.shared.model.ModelProperty;
import org.codehaus.plexus.util.IOUtil;
import org.codehaus.plexus.util.ReaderFactory;
import org.codehaus.plexus.util.WriterFactory;
@@ -36,6 +37,7 @@
import java.io.IOException;
import java.io.InputStream;
import java.io.Writer;
+import java.util.List;
/**
* Provides a wrapper for the maven model.
@@ -273,6 +275,10 @@
return file;
}
+ public List<ModelProperty> getModelProperties() {
+ throw new UnsupportedOperationException();
+ }
+
/**
* @see org.apache.maven.shared.model.DomainModel#getEventHistory()
*/
Modified: maven/components/branches/sisbell-maven-3.0-mercury/maven-project/src/main/java/org/apache/maven/project/builder/PomClassicTransformer.java
URL: http://svn.apache.org/viewvc/maven/components/branches/sisbell-maven-3.0-mercury/maven-project/src/main/java/org/apache/maven/project/builder/PomClassicTransformer.java?rev=711344&r1=711343&r2=711344&view=diff
==============================================================================
--- maven/components/branches/sisbell-maven-3.0-mercury/maven-project/src/main/java/org/apache/maven/project/builder/PomClassicTransformer.java (original)
+++ maven/components/branches/sisbell-maven-3.0-mercury/maven-project/src/main/java/org/apache/maven/project/builder/PomClassicTransformer.java Tue Nov 4 10:30:31 2008
@@ -713,6 +713,10 @@
return false;
}
+ public DomainModel createDomainModel() {
+ throw new UnsupportedOperationException();
+ }
+
/**
* Returns the base uri of all model properties: http://apache.org/maven/project/
*
Modified: maven/components/branches/sisbell-maven-3.0-mercury/maven-shared-model/src/main/java/org/apache/maven/shared/model/DomainModel.java
URL: http://svn.apache.org/viewvc/maven/components/branches/sisbell-maven-3.0-mercury/maven-shared-model/src/main/java/org/apache/maven/shared/model/DomainModel.java?rev=711344&r1=711343&r2=711344&view=diff
==============================================================================
--- maven/components/branches/sisbell-maven-3.0-mercury/maven-shared-model/src/main/java/org/apache/maven/shared/model/DomainModel.java (original)
+++ maven/components/branches/sisbell-maven-3.0-mercury/maven-shared-model/src/main/java/org/apache/maven/shared/model/DomainModel.java Tue Nov 4 10:30:31 2008
@@ -1,5 +1,7 @@
package org.apache.maven.shared.model;
+import java.util.List;
+
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
@@ -27,6 +29,8 @@
public interface DomainModel
{
+ List<ModelProperty> getModelProperties();
+
/**
* Returns event history of joins and deletes used in constructing this domain model.
*
Added: maven/components/branches/sisbell-maven-3.0-mercury/maven-shared-model/src/main/java/org/apache/maven/shared/model/DomainModelFactory.java
URL: http://svn.apache.org/viewvc/maven/components/branches/sisbell-maven-3.0-mercury/maven-shared-model/src/main/java/org/apache/maven/shared/model/DomainModelFactory.java?rev=711344&view=auto
==============================================================================
--- maven/components/branches/sisbell-maven-3.0-mercury/maven-shared-model/src/main/java/org/apache/maven/shared/model/DomainModelFactory.java (added)
+++ maven/components/branches/sisbell-maven-3.0-mercury/maven-shared-model/src/main/java/org/apache/maven/shared/model/DomainModelFactory.java Tue Nov 4 10:30:31 2008
@@ -0,0 +1,9 @@
+package org.apache.maven.shared.model;
+
+import java.util.List;
+import java.io.IOException;
+
+public interface DomainModelFactory {
+
+ DomainModel createDomainModel(List<ModelProperty> modelProperties) throws IOException;
+}