Author: joakime
Date: Thu Apr  5 14:26:44 2007
New Revision: 525966

URL: http://svn.apache.org/viewvc?view=rev&rev=525966
Log:
Correcting project model filters.

Added:
    
maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/project/filters/EffectiveProjectModelFilter.java
      - copied, changed from r525951, 
maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/project/filters/EffectiveProjectModelBuilder.java
    
maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/project/filters/ProjectModelExpressionFilter.java
      - copied, changed from r525951, 
maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/project/filters/ProjectModelExpressionExpander.java
    
maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/project/filters/EffectiveProjectModelFilterTest.java
      - copied, changed from r525951, 
maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/project/filters/EffectiveProjectModelBuilderTest.java
Removed:
    
maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/project/filters/EffectiveProjectModelBuilder.java
    
maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/project/filters/ProjectModelExpressionExpander.java
    
maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/main/resources/META-INF/plexus/components.xml
    
maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/project/filters/EffectiveProjectModelBuilderTest.java
Modified:
    
maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/pom.xml
    
maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/project/ProjectModelFilter.java
    
maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/project/filters/AllTests.java
    
maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/project/filters/ProjectModelExpressionExpanderTest.java

Modified: 
maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/pom.xml
URL: 
http://svn.apache.org/viewvc/maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/pom.xml?view=diff&rev=525966&r1=525965&r2=525966
==============================================================================
--- 
maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/pom.xml
 (original)
+++ 
maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/pom.xml
 Thu Apr  5 14:26:44 2007
@@ -36,7 +36,6 @@
     <dependency>
       <groupId>org.apache.maven.archiva</groupId>
       <artifactId>archiva-model</artifactId>
-      <version>1.0-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.apache.maven.archiva</groupId>
@@ -64,20 +63,6 @@
       <version>1.0-alpha-2-SNAPSHOT</version>
       <scope>compile</scope>
     </dependency>
-    <!-- 
-    <dependency>
-      <groupId>org.apache.maven</groupId>
-      <artifactId>maven-artifact</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.maven</groupId>
-      <artifactId>maven-artifact-manager</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.maven</groupId>
-      <artifactId>maven-repository-metadata</artifactId>
-    </dependency>
-     -->
     <dependency>
       <groupId>org.slf4j</groupId>
       <artifactId>slf4j-log4j12</artifactId>
@@ -90,6 +75,13 @@
         <artifactId>plexus-maven-plugin</artifactId>
         <executions>
           <execution>
+            <id>descriptor</id>
+            <goals>
+              <goal>descriptor</goal>
+            </goals>
+          </execution>
+          <!--
+          <execution>
             <id>merge</id>
             <goals>
               <goal>merge-descriptors</goal>
@@ -101,6 +93,7 @@
               </descriptors>
             </configuration>
           </execution>
+            -->
         </executions>
       </plugin>
     </plugins>

Modified: 
maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/project/ProjectModelFilter.java
URL: 
http://svn.apache.org/viewvc/maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/project/ProjectModelFilter.java?view=diff&rev=525966&r1=525965&r2=525966
==============================================================================
--- 
maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/project/ProjectModelFilter.java
 (original)
+++ 
maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/project/ProjectModelFilter.java
 Thu Apr  5 14:26:44 2007
@@ -34,6 +34,7 @@
      * 
      * @param model the model to filter.
      * @return a new model representing the filtered state of the model.
+     * @throws ProjectModelException if there was a problem executing the 
filter.
      */
-    public ArchivaProjectModel filter( final ArchivaProjectModel model );
+    public ArchivaProjectModel filter( final ArchivaProjectModel model ) 
throws ProjectModelException;
 }

Copied: 
maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/project/filters/EffectiveProjectModelFilter.java
 (from r525951, 
maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/project/filters/EffectiveProjectModelBuilder.java)
URL: 
http://svn.apache.org/viewvc/maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/project/filters/EffectiveProjectModelFilter.java?view=diff&rev=525966&p1=maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/project/filters/EffectiveProjectModelBuilder.java&r1=525951&p2=maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/project/filters/EffectiveProjectModelFilter.java&r2=525966
==============================================================================
--- 
maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/project/filters/EffectiveProjectModelBuilder.java
 (original)
+++ 
maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/project/filters/EffectiveProjectModelFilter.java
 Thu Apr  5 14:26:44 2007
@@ -25,6 +25,7 @@
 import org.apache.maven.archiva.model.Dependency;
 import org.apache.maven.archiva.model.VersionedReference;
 import org.apache.maven.archiva.repository.project.ProjectModelException;
+import org.apache.maven.archiva.repository.project.ProjectModelFilter;
 import org.apache.maven.archiva.repository.project.ProjectModelMerge;
 import org.apache.maven.archiva.repository.project.ProjectModelResolver;
 
@@ -39,12 +40,20 @@
  *
  * @author <a href="mailto:[EMAIL PROTECTED]">Joakim Erdfelt</a>
  * @version $Id$
+ * @plexus.component 
role="org.apache.maven.archiva.repository.project.ProjectModelFilter" 
+ *                   role-hint="effective" 
+ *                   instantiation-strategy="per-lookup"
  */
-public class EffectiveProjectModelBuilder
+public class EffectiveProjectModelFilter implements ProjectModelFilter
 {
+    /**
+     * @plexus.requirement role-hint="expression"
+     */
+    private ProjectModelFilter expressionFilter;
+    
     private List projectModelResolvers;
-
-    public EffectiveProjectModelBuilder()
+    
+    public EffectiveProjectModelFilter()
     {
         projectModelResolvers = new ArrayList();
     }
@@ -71,7 +80,7 @@
      * @return a the effective [EMAIL PROTECTED] ArchivaProjectModel}.
      * @throws ProjectModelException if there was a problem building the 
effective pom.
      */
-    public ArchivaProjectModel buildEffectiveProjectModel( ArchivaProjectModel 
project )
+    public ArchivaProjectModel filter( final ArchivaProjectModel project )
         throws ProjectModelException
     {
         if ( project == null )
@@ -88,7 +97,7 @@
         ArchivaProjectModel effectiveProject = ArchivaModelCloner.clone( 
project );
 
         // Setup Expression Evaluation pieces.
-        ProjectModelExpressionExpander.evaluateExpressions( effectiveProject );
+        effectiveProject = expressionFilter.filter( effectiveProject );
 
         debug( "Starting build of effective with: " + effectiveProject );
 
@@ -197,7 +206,7 @@
 
             if ( parentProject != null )
             {
-                ProjectModelExpressionExpander.evaluateExpressions( 
parentProject );
+                parentProject = expressionFilter.filter( parentProject );
                 parentProject = mergeParent( parentProject );
                 mixedProject = ProjectModelMerge.merge( pom, parentProject );
             }

Copied: 
maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/project/filters/ProjectModelExpressionFilter.java
 (from r525951, 
maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/project/filters/ProjectModelExpressionExpander.java)
URL: 
http://svn.apache.org/viewvc/maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/project/filters/ProjectModelExpressionFilter.java?view=diff&rev=525966&p1=maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/project/filters/ProjectModelExpressionExpander.java&r1=525951&p2=maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/project/filters/ProjectModelExpressionFilter.java&r2=525966
==============================================================================
--- 
maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/project/filters/ProjectModelExpressionExpander.java
 (original)
+++ 
maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/project/filters/ProjectModelExpressionFilter.java
 Thu Apr  5 14:26:44 2007
@@ -19,10 +19,11 @@
  * under the License.
  */
 
+import org.apache.maven.archiva.model.ArchivaModelCloner;
 import org.apache.maven.archiva.model.ArchivaProjectModel;
 import org.apache.maven.archiva.model.Dependency;
 import org.apache.maven.archiva.repository.project.ProjectModelException;
-import org.codehaus.plexus.evaluator.DefaultExpressionEvaluator;
+import org.apache.maven.archiva.repository.project.ProjectModelFilter;
 import org.codehaus.plexus.evaluator.EvaluatorException;
 import org.codehaus.plexus.evaluator.ExpressionEvaluator;
 import org.codehaus.plexus.evaluator.sources.PropertiesExpressionSource;
@@ -32,24 +33,30 @@
 import java.util.List;
 
 /**
- * ProjectModelExpressionExpander 
+ * ProjectModelExpressionFilter 
  *
  * @author <a href="mailto:[EMAIL PROTECTED]">Joakim Erdfelt</a>
  * @version $Id$
- * @plexus.component 
role="org.apache.maven.archiva.repository.project.ProjectModelExpressionExpander"
+ * @plexus.component 
role="org.apache.maven.archiva.repository.project.ProjectModelFilter"
+ *                   role-hint="expression" 
+ *                   instantiation-strategy="per-lookup"
  */
-public class ProjectModelExpressionExpander
+public class ProjectModelExpressionFilter
+    implements ProjectModelFilter
 {
     /**
+     * @plexus.requirement
+     */
+    private ExpressionEvaluator evaluator;
+
+    /**
      * Find and Evaluate the Expressions present in the model.
      * 
      * @param model the model to correct.
      */
-    public static void evaluateExpressions( ArchivaProjectModel model )
+    public ArchivaProjectModel filter( final ArchivaProjectModel model )
         throws ProjectModelException
     {
-        ExpressionEvaluator evaluator = new DefaultExpressionEvaluator();
-
         if ( model.getProperties() != null )
         {
             PropertiesExpressionSource propsSource = new 
PropertiesExpressionSource();
@@ -59,18 +66,22 @@
 
         evaluator.addExpressionSource( new SystemPropertyExpressionSource() );
 
+        ArchivaProjectModel ret = ArchivaModelCloner.clone( model );
+
         try
         {
-            model.setVersion( evaluator.expand( model.getVersion() ) );
-            model.setGroupId( evaluator.expand( model.getGroupId() ) );
+            ret.setVersion( evaluator.expand( ret.getVersion() ) );
+            ret.setGroupId( evaluator.expand( ret.getGroupId() ) );
 
-            evaluateExpressionsInDependencyList( evaluator, 
model.getDependencies() );
-            evaluateExpressionsInDependencyList( evaluator, 
model.getDependencyManagement() );
+            evaluateExpressionsInDependencyList( evaluator, 
ret.getDependencies() );
+            evaluateExpressionsInDependencyList( evaluator, 
ret.getDependencyManagement() );
         }
         catch ( EvaluatorException e )
         {
             throw new ProjectModelException( "Unable to evaluate expression in 
model: " + e.getMessage(), e );
         }
+        
+        return ret;
     }
 
     private static void evaluateExpressionsInDependencyList( 
ExpressionEvaluator evaluator, List dependencies )

Modified: 
maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/project/filters/AllTests.java
URL: 
http://svn.apache.org/viewvc/maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/project/filters/AllTests.java?view=diff&rev=525966&r1=525965&r2=525966
==============================================================================
--- 
maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/project/filters/AllTests.java
 (original)
+++ 
maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/project/filters/AllTests.java
 Thu Apr  5 14:26:44 2007
@@ -36,7 +36,7 @@
         TestSuite suite = new TestSuite( "Test for 
org.apache.maven.archiva.repository.project.filters" );
         //$JUnit-BEGIN$
         suite.addTestSuite( ProjectModelExpressionExpanderTest.class );
-        suite.addTestSuite( EffectiveProjectModelBuilderTest.class );
+        suite.addTestSuite( EffectiveProjectModelFilterTest.class );
         //$JUnit-END$
         return suite;
     }

Copied: 
maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/project/filters/EffectiveProjectModelFilterTest.java
 (from r525951, 
maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/project/filters/EffectiveProjectModelBuilderTest.java)
URL: 
http://svn.apache.org/viewvc/maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/project/filters/EffectiveProjectModelFilterTest.java?view=diff&rev=525966&p1=maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/project/filters/EffectiveProjectModelBuilderTest.java&r1=525951&p2=maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/project/filters/EffectiveProjectModelFilterTest.java&r2=525966
==============================================================================
--- 
maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/project/filters/EffectiveProjectModelBuilderTest.java
 (original)
+++ 
maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/project/filters/EffectiveProjectModelFilterTest.java
 Thu Apr  5 14:26:44 2007
@@ -23,9 +23,10 @@
 import org.apache.maven.archiva.model.ArchivaRepository;
 import org.apache.maven.archiva.model.Dependency;
 import org.apache.maven.archiva.repository.project.ProjectModelException;
+import org.apache.maven.archiva.repository.project.ProjectModelFilter;
 import org.apache.maven.archiva.repository.project.ProjectModelReader;
 import org.apache.maven.archiva.repository.project.ProjectModelResolver;
-import 
org.apache.maven.archiva.repository.project.filters.EffectiveProjectModelBuilder;
+import 
org.apache.maven.archiva.repository.project.filters.EffectiveProjectModelFilter;
 import 
org.apache.maven.archiva.repository.project.readers.ProjectModel400Reader;
 import 
org.apache.maven.archiva.repository.project.resolvers.RepositoryProjectResolver;
 import org.codehaus.plexus.PlexusTestCase;
@@ -35,15 +36,20 @@
 import java.util.List;
 
 /**
- * EffectiveProjectModelBuilderTest 
+ * EffectiveProjectModelFilterTest 
  *
  * @author <a href="mailto:[EMAIL PROTECTED]">Joakim Erdfelt</a>
  * @version $Id$
  */
-public class EffectiveProjectModelBuilderTest
+public class EffectiveProjectModelFilterTest
     extends PlexusTestCase
 {
     private static final String DEFAULT_REPOSITORY = 
"src/test/repositories/default-repository";
+    
+    private EffectiveProjectModelFilter lookupEffective() throws Exception
+    {
+        return (EffectiveProjectModelFilter) lookup( ProjectModelFilter.class, 
"effective" );
+    }
 
     private ArchivaProjectModel createArchivaProjectModel( String path )
         throws ProjectModelException
@@ -70,13 +76,14 @@
     public void testBuildEffectiveProject()
         throws Exception
     {
-        EffectiveProjectModelBuilder builder = new 
EffectiveProjectModelBuilder();
-        builder.addProjectModelResolver( createDefaultRepositoryResolver() );
+        EffectiveProjectModelFilter filter = lookupEffective();
+        
+        filter.addProjectModelResolver( createDefaultRepositoryResolver() );
 
         ArchivaProjectModel startModel = createArchivaProjectModel( 
DEFAULT_REPOSITORY
             + 
"/org/apache/maven/archiva/archiva-model/1.0-SNAPSHOT/archiva-model-1.0-SNAPSHOT.pom"
 );
 
-        ArchivaProjectModel effectiveModel = 
builder.buildEffectiveProjectModel( startModel );
+        ArchivaProjectModel effectiveModel = filter.filter( startModel );
 
         ArchivaProjectModel expectedModel = createArchivaProjectModel( 
"src/test/effective-poms/"
             + "/archiva-model-effective.pom" );

Modified: 
maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/project/filters/ProjectModelExpressionExpanderTest.java
URL: 
http://svn.apache.org/viewvc/maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/project/filters/ProjectModelExpressionExpanderTest.java?view=diff&rev=525966&r1=525965&r2=525966
==============================================================================
--- 
maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/project/filters/ProjectModelExpressionExpanderTest.java
 (original)
+++ 
maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/project/filters/ProjectModelExpressionExpanderTest.java
 Thu Apr  5 14:26:44 2007
@@ -21,13 +21,11 @@
 
 import org.apache.maven.archiva.model.ArchivaProjectModel;
 import org.apache.maven.archiva.model.Dependency;
-import org.apache.maven.archiva.repository.project.ProjectModelException;
-import 
org.apache.maven.archiva.repository.project.filters.ProjectModelExpressionExpander;
+import org.apache.maven.archiva.repository.project.ProjectModelFilter;
+import org.codehaus.plexus.PlexusTestCase;
 
 import java.util.Iterator;
 
-import junit.framework.TestCase;
-
 /**
  * ProjectModelExpressionExpanderTest 
  *
@@ -35,10 +33,15 @@
  * @version $Id$
  */
 public class ProjectModelExpressionExpanderTest
-    extends TestCase
+    extends PlexusTestCase
 {
+    private ProjectModelExpressionFilter lookupExpression() throws Exception
+    {
+        return (ProjectModelExpressionFilter) lookup( 
ProjectModelFilter.class, "expression" );
+    }
+    
     public void testExpressionEvaluation()
-        throws ProjectModelException
+        throws Exception
     {
         ArchivaProjectModel model = new ArchivaProjectModel();
         model.setGroupId( "org.apache.maven.archiva" );
@@ -51,7 +54,9 @@
 
         model.addProperty( "archiva.version", "1.0-SNAPSHOT" );
 
-        ProjectModelExpressionExpander.evaluateExpressions( model );
+        ProjectModelExpressionFilter filter = lookupExpression();
+        
+        model = filter.filter( model );
 
         assertNotNull( model );
         assertEquals( "Group ID", "org.apache.maven.archiva", 
model.getGroupId() );


Reply via email to