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