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