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/16 20:02:42 UTC

svn commit: r677365 - in /maven/sandbox/branches/SI_MAVEN_2_1_A/maven-project/src/main/java/org/apache/maven/project: ./ builder/ builder/impl/

Author: sisbell
Date: Wed Jul 16 11:02:41 2008
New Revision: 677365

URL: http://svn.apache.org/viewvc?rev=677365&view=rev
Log:
Supports verifying that models are exact. Builder api now supports adding in additional poms to hierarchy (used for super pom).

Modified:
    maven/sandbox/branches/SI_MAVEN_2_1_A/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
    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/ProjectBuilder.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/DefaultMavenProjectBuilder.java
URL: http://svn.apache.org/viewvc/maven/sandbox/branches/SI_MAVEN_2_1_A/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java?rev=677365&r1=677364&r2=677365&view=diff
==============================================================================
--- maven/sandbox/branches/SI_MAVEN_2_1_A/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java (original)
+++ maven/sandbox/branches/SI_MAVEN_2_1_A/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java Wed Jul 16 11:02:41 2008
@@ -82,18 +82,7 @@
 
 import java.io.*;
 import java.net.URL;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.LinkedHashSet;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.TreeMap;
+import java.util.*;
 
 /*:apt
 
@@ -525,18 +514,40 @@
                 true );
             //TODO: Compare models
             */
-            try {
+        PomClassicDomainModel domainModel = null;
+        PomClassicDomainModel legacy_domainModel = null;
+        try {
+            domainModel = new PomClassicDomainModel(model);
+            legacy_domainModel = new PomClassicDomainModel(legacy_project.getModel());
+
+            if(!domainModel.equals(legacy_domainModel)) {
+                byte[] x = domainModel.asString().getBytes();
+                byte[] y = legacy_domainModel.asString().getBytes();
+                int breakPoint = x.length;
+                for(int i = 0; i < x.length; i++) {
+                    if(x[i] != y[i]) {
+                        System.out.println("Break at position = " + i);
+                        breakPoint = i;
+                        break;
+                    }
+                }
+
                 System.out.println("-----------------***");
-                System.out.println(new PomClassicDomainModel(model).asString());
-                System.out.println(new PomClassicDomainModel(legacy_project.getModel()).asString());
+                System.out.println(domainModel.asString().substring(0, breakPoint));
+                System.out.println("--------------------BREAK-------------------");
+                System.out.println(domainModel.asString().substring(breakPoint, x.length));
+
+                System.out.println(legacy_domainModel.asString().substring(0, breakPoint));
+                System.out.println("--------------------BREAK-------------------");
+                System.out.println(legacy_domainModel.asString().substring(breakPoint, y.length));
+
                 System.out.println("------------------");
                 throw new ProjectBuildingException("", "");
-            } catch (IOException e) {
-                e.printStackTrace();
             }
-       // }
-
-
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        
         return legacy_project;
     }
 
@@ -2117,7 +2128,8 @@
 
        MavenProject mavenProject;
        try {
-           mavenProject = projectBuilder.buildFromLocalPath(new FileInputStream(projectDescriptor), null, resolver,
+           mavenProject = projectBuilder.buildFromLocalPath(new FileInputStream(projectDescriptor),
+                   Arrays.asList(getSuperModel()), null, resolver,
                    projectDescriptor.getParentFile());
        } catch (IOException e) {
            e.printStackTrace();
@@ -2143,7 +2155,8 @@
 
        MavenProject mavenProject;
        try {
-           mavenProject = projectBuilder.buildFromRepository(new FileInputStream(projectDescriptor), null, resolver
+           mavenProject = projectBuilder.buildFromRepository(new FileInputStream(projectDescriptor),
+                   Arrays.asList(getSuperModel()), null, resolver
            );
        } catch (IOException e) {
            e.printStackTrace();

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=677365&r1=677364&r2=677365&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 16 11:02:41 2008
@@ -107,6 +107,10 @@
         this.eventHistory = eventHistory;
     }
 
+    public boolean equals(Object o) {
+        return o instanceof PomClassicDomainModel && this.asString().equals(((PomClassicDomainModel) o).asString());
+    }
+
     //TODO: Workaround
     private byte[] removeIllegalCharacters(byte[] bytes) {
         // what is it supposed to do? which are the illegal characters to remove?

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=677365&r1=677364&r2=677365&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 16 11:02:41 2008
@@ -120,11 +120,13 @@
 
             List<ModelProperty> tmp = ModelMarshaller.marshallXmlToModelProperties(
                     ((PomClassicDomainModel) domainModel).getInputStream(), ProjectUri.baseUri, uris);
-
+ 
             //Missing Version Rule
             if (getPropertyFor(ProjectUri.version, tmp) == null) {
                 ModelProperty parentVersion = getPropertyFor(ProjectUri.Parent.version, tmp);
-                tmp.add(new ModelProperty(ProjectUri.version, parentVersion.getValue()));
+                if(parentVersion != null) {
+                    tmp.add(new ModelProperty(ProjectUri.version, parentVersion.getValue()));
+                }
             }
 
             //Modules Not Inherited Rule
@@ -139,7 +141,10 @@
             //Missing groupId, use parent one Rule
             if (getPropertyFor(ProjectUri.groupId, tmp) == null) {
                 ModelProperty parentGroupId = getPropertyFor(ProjectUri.Parent.groupId, tmp);
-                tmp.add(new ModelProperty(ProjectUri.groupId, parentGroupId.getValue()));
+                if(parentGroupId != null) {
+                    tmp.add(new ModelProperty(ProjectUri.groupId, parentGroupId.getValue()));   
+                }
+
             }
 
             //Not inherited plugin execution rule            
@@ -202,7 +207,7 @@
                 tmp.remove(index);
                 tmp.add(index, new ModelProperty(ProjectUri.Scm.developerConnection, scmDeveloperUrl.toString()));
             }
-
+             
             //Ordered Dependency Rule
             if (domainModels.size() > 1) {
                 ModelDataSource source = new DefaultModelDataSource();
@@ -222,7 +227,12 @@
                 }
             }
 
-            projectNames.add(0, getPropertyFor(ProjectUri.artifactId, tmp).getValue());
+
+            ModelProperty artifactId = getPropertyFor(ProjectUri.artifactId, tmp);
+            if(artifactId != null) {
+                projectNames.add(0, artifactId.getValue());
+            }
+
 
             modelProperties.addAll(tmp);
 

Modified: maven/sandbox/branches/SI_MAVEN_2_1_A/maven-project/src/main/java/org/apache/maven/project/builder/ProjectBuilder.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/ProjectBuilder.java?rev=677365&r1=677364&r2=677365&view=diff
==============================================================================
--- maven/sandbox/branches/SI_MAVEN_2_1_A/maven-project/src/main/java/org/apache/maven/project/builder/ProjectBuilder.java (original)
+++ maven/sandbox/branches/SI_MAVEN_2_1_A/maven-project/src/main/java/org/apache/maven/project/builder/ProjectBuilder.java Wed Jul 16 11:02:41 2008
@@ -1,6 +1,6 @@
 package org.apache.maven.project.builder;
 
-import org.apache.maven.artifact.Artifact;
+import org.apache.maven.model.Model;
 import org.apache.maven.project.MavenProject;
 import org.apache.maven.shared.model.InterpolatorProperty;
 
@@ -8,16 +8,19 @@
 import java.io.IOException;
 import java.io.InputStream;
 import java.util.Collection;
+import java.util.List;
 
 public interface ProjectBuilder {
 
     String ROLE = ProjectBuilder.class.getName();
 
-    MavenProject buildFromLocalPath(InputStream pom, Collection<InterpolatorProperty> interpolatorProperties,
-                                 PomArtifactResolver resolver, File baseDirectory)
+    MavenProject buildFromLocalPath(InputStream pom, List<Model> inheritedModels,
+                                    Collection<InterpolatorProperty> interpolatorProperties,
+                                    PomArtifactResolver resolver, File baseDirectory)
             throws IOException;
 
-    MavenProject buildFromRepository(InputStream pom, Collection<InterpolatorProperty> interpolatorProperties,
+    MavenProject buildFromRepository(InputStream pom, List<Model> inheritedModels,
+                                     Collection<InterpolatorProperty> interpolatorProperties,
                                      PomArtifactResolver resolver)
             throws IOException;
 

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=677365&r1=677364&r2=677365&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 16 11:02:41 2008
@@ -18,10 +18,7 @@
 import java.io.FileInputStream;
 import java.io.IOException;
 import java.io.InputStream;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.List;
+import java.util.*;
 
 public final class DefaultProjectBuilder implements ProjectBuilder, LogEnabled {
 
@@ -41,7 +38,8 @@
         this.artifactFactory = artifactFactory;
     }
 
-    public MavenProject buildFromRepository(InputStream pom, Collection<InterpolatorProperty> interpolatorProperties,
+    public MavenProject buildFromRepository(InputStream pom, List<Model> inheritedModels,
+                                            Collection<InterpolatorProperty> interpolatorProperties,
                                             PomArtifactResolver resolver)
             throws IOException {
 
@@ -53,6 +51,13 @@
             throw new IllegalArgumentException("resolver: null");
         }
 
+        if(inheritedModels == null) {
+            inheritedModels = new ArrayList<Model>();
+        } else {
+            inheritedModels = new ArrayList<Model>(inheritedModels);
+            Collections.reverse(inheritedModels);                     
+        }
+
         List<InterpolatorProperty> properties;
         if (interpolatorProperties == null) {
             properties = new ArrayList<InterpolatorProperty>();
@@ -64,6 +69,9 @@
         List<DomainModel> domainModels = new ArrayList<DomainModel>();
         domainModels.add(domainModel);
         domainModels.addAll(getDomainModelParentsFromRepository((PomClassicDomainModel) domainModel, resolver));
+        for(Model model : inheritedModels) {
+            domainModels.add(new PomClassicDomainModel(model));
+        }
 
         PomClassicTransformer transformer = new PomClassicTransformer();
         ModelTransformerContext ctx = new ModelTransformerContext(
@@ -74,8 +82,9 @@
         return new MavenProject(model);
     }
 
-    public MavenProject buildFromLocalPath(InputStream pom, Collection<InterpolatorProperty> interpolatorProperties,
-                                        PomArtifactResolver resolver, File projectDirectory)
+    public MavenProject buildFromLocalPath(InputStream pom, List<Model> inheritedModels,
+                                           Collection<InterpolatorProperty> interpolatorProperties,
+                                           PomArtifactResolver resolver, File projectDirectory)
             throws IOException {
 
         if (pom == null) {
@@ -90,6 +99,13 @@
             throw new IllegalArgumentException("projectDirectory: null");
         }
 
+        if(inheritedModels == null) {
+            inheritedModels = new ArrayList<Model>();
+        } else {
+            inheritedModels = new ArrayList<Model>(inheritedModels);
+            Collections.reverse(inheritedModels);
+        }
+
         List<InterpolatorProperty> properties;
         if (interpolatorProperties == null) {
             properties = new ArrayList<InterpolatorProperty>();
@@ -100,8 +116,10 @@
         PomClassicDomainModel domainModel = new PomClassicDomainModel(pom);
         List<DomainModel> domainModels = new ArrayList<DomainModel>();
         domainModels.add(domainModel);
+
         if(domainModel.getModel().getParent() != null) {
             if(isParentLocal(domainModel.getModel().getParent(), projectDirectory )) {
+                logger.info("Found parent on local path:");
                  domainModels.addAll(getDomainModelParentsFromLocalPath(domainModel, resolver,
                          projectDirectory));
             }  else {
@@ -109,13 +127,17 @@
             }
         }
 
+        for(Model model : inheritedModels) {
+            domainModels.add(new PomClassicDomainModel(model));
+        }
+
         PomClassicTransformer transformer = new PomClassicTransformer();
         ModelTransformerContext ctx = new ModelTransformerContext(
                 Arrays.asList(new ArtifactModelContainerFactory(), new IdModelContainerFactory()));
-        Model model = ((PomClassicDomainModel) ctx.transform(domainModels, transformer,
-                transformer, properties)).getModel();
-     //   System.out.println(new PomClassicDomainModel(model).asString());
-        return new MavenProject(model);
+        PomClassicDomainModel transformedDomainModel = ((PomClassicDomainModel) ctx.transform(domainModels, transformer,
+                transformer, properties));
+        logger.info(transformedDomainModel.getEventHistory());
+        return new MavenProject(transformedDomainModel.getModel());
     }
 
     private boolean isParentLocal(Parent parent, File projectDirectory){
@@ -124,7 +146,6 @@
             if (f.isDirectory()) {
                 f = new File(f, "pom.xml");
             }
-          //  logger.info("File: " + f.getAbsolutePath());
             return f.exists();
         } catch (IOException e) {
             e.printStackTrace();
@@ -143,6 +164,7 @@
         Parent parent = domainModel.getModel().getParent();
 
         if (parent == null) {
+            logger.info("End of inheritance chain");
             return domainModels;
         }
 
@@ -153,6 +175,10 @@
         PomClassicDomainModel parentDomainModel = new PomClassicDomainModel(new FileInputStream(artifactParent.getFile()));
         if (!parentDomainModel.matchesParent(domainModel.getModel().getParent())) {
             logger.warn("Parent pom ids do not match: File = " + artifactParent.getFile().getAbsolutePath());
+            return domainModels;
+        } else {
+            logger.info("Adding pom to hierarchy: Group Id = " + parent.getGroupId() + ", Artifact Id ="
+                + parent.getArtifactId()  + ", Version = " + parent.getVersion() + ", File" + artifactParent.getFile());
         }
 
         domainModels.add(parentDomainModel);
@@ -175,6 +201,7 @@
         Parent parent = domainModel.getModel().getParent();
 
         if (parent == null) {
+            logger.info("End of inheritance chain");
             return domainModels;
         }