Author: sisbell
Date: Mon Jul 7 18:16:38 2008
New Revision: 674694
URL: http://svn.apache.org/viewvc?rev=674694&view=rev
Log:
Improved exception tracing, major bug fixes.
Modified:
maven/sandbox/trunk/shared/maven-shared-model/src/main/java/org/apache/maven/shared/model/DomainModel.java
maven/sandbox/trunk/shared/maven-shared-model/src/main/java/org/apache/maven/shared/model/ModelDataSource.java
maven/sandbox/trunk/shared/maven-shared-model/src/main/java/org/apache/maven/shared/model/ModelProperty.java
maven/sandbox/trunk/shared/maven-shared-model/src/main/java/org/apache/maven/shared/model/ModelTransformerContext.java
maven/sandbox/trunk/shared/maven-shared-model/src/main/java/org/apache/maven/shared/model/impl/DefaultModelDataSource.java
maven/sandbox/trunk/shared/maven-shared-model/src/test/java/org/apache/maven/shared/model/ModelMarshallerTest.java
maven/sandbox/trunk/shared/maven-shared-model/src/test/java/org/apache/maven/shared/model/ModelTransformerContextTest.java
maven/sandbox/trunk/shared/maven-shared-model/src/test/java/org/apache/maven/shared/model/impl/DefaultModelDataSourceTest.java
Modified:
maven/sandbox/trunk/shared/maven-shared-model/src/main/java/org/apache/maven/shared/model/DomainModel.java
URL:
http://svn.apache.org/viewvc/maven/sandbox/trunk/shared/maven-shared-model/src/main/java/org/apache/maven/shared/model/DomainModel.java?rev=674694&r1=674693&r2=674694&view=diff
==============================================================================
---
maven/sandbox/trunk/shared/maven-shared-model/src/main/java/org/apache/maven/shared/model/DomainModel.java
(original)
+++
maven/sandbox/trunk/shared/maven-shared-model/src/main/java/org/apache/maven/shared/model/DomainModel.java
Mon Jul 7 18:16:38 2008
@@ -6,4 +6,8 @@
* the appropriate domain model type(s).
*/
public interface DomainModel {
+
+ String getEventHistory();
+
+ void setEventHistory(String history);
}
Modified:
maven/sandbox/trunk/shared/maven-shared-model/src/main/java/org/apache/maven/shared/model/ModelDataSource.java
URL:
http://svn.apache.org/viewvc/maven/sandbox/trunk/shared/maven-shared-model/src/main/java/org/apache/maven/shared/model/ModelDataSource.java?rev=674694&r1=674693&r2=674694&view=diff
==============================================================================
---
maven/sandbox/trunk/shared/maven-shared-model/src/main/java/org/apache/maven/shared/model/ModelDataSource.java
(original)
+++
maven/sandbox/trunk/shared/maven-shared-model/src/main/java/org/apache/maven/shared/model/ModelDataSource.java
Mon Jul 7 18:16:38 2008
@@ -49,4 +49,6 @@
* @param modelProperties the model properties that back the data source
*/
void init(List<ModelProperty> modelProperties,
Collection<ModelContainerFactory> modelContainerFactories);
+
+ String getEventHistory();
}
Modified:
maven/sandbox/trunk/shared/maven-shared-model/src/main/java/org/apache/maven/shared/model/ModelProperty.java
URL:
http://svn.apache.org/viewvc/maven/sandbox/trunk/shared/maven-shared-model/src/main/java/org/apache/maven/shared/model/ModelProperty.java?rev=674694&r1=674693&r2=674694&view=diff
==============================================================================
---
maven/sandbox/trunk/shared/maven-shared-model/src/main/java/org/apache/maven/shared/model/ModelProperty.java
(original)
+++
maven/sandbox/trunk/shared/maven-shared-model/src/main/java/org/apache/maven/shared/model/ModelProperty.java
Mon Jul 7 18:16:38 2008
@@ -131,6 +131,6 @@
}
public String toString() {
- return "Uri = " + uri + ", Value = " + value + ", Resolved Value = " +
resolvedValue;
+ return "Uri = " + uri + ", Value = " + value + ", Resolved Value = " +
resolvedValue + ", Hash = " + this.hashCode();
}
}
Modified:
maven/sandbox/trunk/shared/maven-shared-model/src/main/java/org/apache/maven/shared/model/ModelTransformerContext.java
URL:
http://svn.apache.org/viewvc/maven/sandbox/trunk/shared/maven-shared-model/src/main/java/org/apache/maven/shared/model/ModelTransformerContext.java?rev=674694&r1=674693&r2=674694&view=diff
==============================================================================
---
maven/sandbox/trunk/shared/maven-shared-model/src/main/java/org/apache/maven/shared/model/ModelTransformerContext.java
(original)
+++
maven/sandbox/trunk/shared/maven-shared-model/src/main/java/org/apache/maven/shared/model/ModelTransformerContext.java
Mon Jul 7 18:16:38 2008
@@ -4,6 +4,7 @@
import java.io.IOException;
import java.util.*;
+import java.util.logging.Logger;
/**
@@ -15,6 +16,8 @@
private final static List<InterpolatorProperty>
systemInterpolatorProperties = new ArrayList<InterpolatorProperty>();
+ private static Logger logger = Logger.getAnonymousLogger();
+
static {
for (Map.Entry<Object, Object> e : System.getProperties().entrySet()) {
systemInterpolatorProperties.add(new InterpolatorProperty("${" +
e.getKey() + "}", (String) e.getValue()));
@@ -25,6 +28,15 @@
}
}
+ private static boolean aContainsAnyOfB(List<ModelProperty> a,
List<ModelProperty> b) {
+ for (ModelProperty mp : b) {
+ if (a.contains(mp)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
/**
* Default constructor
*
@@ -39,9 +51,9 @@
* Unlike ModelTransformerContext#transform(java.util.List,
ModelTransformer, ModelTransformer), this method requires
* the user to add interpolator properties. It's intended to be used by
IDEs.
*
- * @param domainModels the domain model list to transform
- * @param fromModelTransformer transformer that transforms from specified
domain models to canonical data model
- * @param toModelTransformer transformer that transforms from canonical
data model to returned domain model
+ * @param domainModels the domain model list to transform
+ * @param fromModelTransformer transformer that transforms from
specified domain models to canonical data model
+ * @param toModelTransformer transformer that transforms from
canonical data model to returned domain model
* @param interpolatorProperties properties to use during interpolation.
* @return processed domain model
* @throws IOException if there was a problem with the transform
@@ -60,15 +72,28 @@
for (ModelContainerFactory factory : factories) {
for (String uri : factory.getUris()) {
List<ModelContainer> modelContainers =
modelDataSource.queryFor(uri);
+ List<ModelContainer> removedModelContainers = new
ArrayList<ModelContainer>();
Collections.reverse(modelContainers);
for (int i = 0; i < modelContainers.size(); i++) {
ModelContainer mcA = modelContainers.get(i);
+ if (removedModelContainers.contains(mcA)) {
+ continue;
+ }
for (ModelContainer mcB : modelContainers.subList(i + 1,
modelContainers.size())) {
ModelContainerAction action = mcA.containerAction(mcB);
+
if (ModelContainerAction.DELETE.equals(action)) {
modelDataSource.delete(mcB);
+ removedModelContainers.add(mcB);
} else if (ModelContainerAction.JOIN.equals(action)) {
- modelDataSource.join(mcA, mcB);
+ try {
+ mcA = modelDataSource.join(mcA, mcB);
+ removedModelContainers.add(mcB);
+ } catch (DataSourceException e) {
+
System.out.println(modelDataSource.getEventHistory());
+ throw new IOException("Failed to join model
containers: URI = " + uri
+ + ", Factory = " +
factory.getClass().getName(), e);
+ }
}
}
}
@@ -103,8 +128,16 @@
}
*/
- validate(mps);
- return toModelTransformer.transformToDomainModel(mps);
+
+ try {
+ validate(mps);
+ DomainModel domainModel =
toModelTransformer.transformToDomainModel(mps);
+ domainModel.setEventHistory(modelDataSource.getEventHistory());
+ return domainModel;
+ } catch (IOException e) {
+ System.out.println(modelDataSource.getEventHistory());
+ throw new IOException(e);
+ }
}
/**
Modified:
maven/sandbox/trunk/shared/maven-shared-model/src/main/java/org/apache/maven/shared/model/impl/DefaultModelDataSource.java
URL:
http://svn.apache.org/viewvc/maven/sandbox/trunk/shared/maven-shared-model/src/main/java/org/apache/maven/shared/model/impl/DefaultModelDataSource.java?rev=674694&r1=674693&r2=674694&view=diff
==============================================================================
---
maven/sandbox/trunk/shared/maven-shared-model/src/main/java/org/apache/maven/shared/model/impl/DefaultModelDataSource.java
(original)
+++
maven/sandbox/trunk/shared/maven-shared-model/src/main/java/org/apache/maven/shared/model/impl/DefaultModelDataSource.java
Mon Jul 7 18:16:38 2008
@@ -3,6 +3,7 @@
import org.apache.maven.shared.model.*;
import java.util.*;
+import java.util.logging.Logger;
/**
* Default implementation of the ModelDataSource.
@@ -11,8 +12,23 @@
private List<ModelProperty> modelProperties;
+ private List<ModelProperty> originalModelProperties;
+
+ private List<DeleteEvent> deleteEvents;
+
private Map<String, ModelContainerFactory> modelContainerFactoryMap;
+ private static Logger logger = Logger.getAnonymousLogger();
+
+ private static boolean aContainsAnyOfB(List<ModelProperty> a,
List<ModelProperty> b) {
+ for (ModelProperty mp : b) {
+ if (a.contains(mp)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
public ModelContainer join(ModelContainer a, ModelContainer b) throws
DataSourceException {
if (a == null || a.getProperties() == null || a.getProperties().size()
== 0) {
throw new IllegalArgumentException("a or a.properties: empty");
@@ -22,11 +38,29 @@
}
if (!modelProperties.containsAll(a.getProperties())) {
+ List<ModelProperty> unknownProperties = new
ArrayList<ModelProperty>();
for (ModelProperty mp : a.getProperties()) {
if (!modelProperties.contains(mp)) {
- System.out.println(mp);
+ unknownProperties.add(mp);
+ }
+ }
+ List<DeleteEvent> des = new ArrayList<DeleteEvent>();
+ for (DeleteEvent de : deleteEvents) {
+ if (aContainsAnyOfB(de.getRemovedModelProperties(),
unknownProperties)) {
+ des.add(de);
}
}
+ //output
+ StringBuffer sb = new StringBuffer();
+ sb.append("Found unknown properties in container 'a': Name =
").append(a.getClass().getName()).append("\r\n");
+ for (ModelProperty mp : unknownProperties) {
+ sb.append(mp).append("\r\n");
+ }
+
+ // for (DeleteEvent de : des) {
+ // sb.append(de.toString());
+ // }
+ System.out.println(sb);
throw new DataSourceException("ModelContainer 'a' contains
elements not within datasource");
}
@@ -39,10 +73,20 @@
delete(b);
List<ModelProperty> joinedProperties = mergeModelContainers(a, b);
+
if (modelProperties.size() == 0) {
startIndex = 0;
}
modelProperties.addAll(startIndex, joinedProperties);
+
+ List<ModelProperty> deletedProperties = new ArrayList<ModelProperty>();
+ deletedProperties.addAll(a.getProperties());
+ deletedProperties.addAll(b.getProperties());
+ deletedProperties.removeAll(joinedProperties);
+ if (deletedProperties.size() > 0) {
+ deleteEvents.add(new DeleteEvent(a, b, deletedProperties, "join"));
+ }
+
return a.createNewInstance(joinedProperties);
}
@@ -54,6 +98,7 @@
throw new IllegalArgumentException("modelContainer.properties:
null");
}
modelProperties.removeAll(modelContainer.getProperties());
+ deleteEvents.add(new DeleteEvent(modelContainer, null,
modelContainer.getProperties(), "delete"));
}
public List<ModelProperty> getModelProperties() {
@@ -120,30 +165,16 @@
//verify data source integrity
List<ModelProperty> unknownProperties =
findUnknownModelPropertiesFrom(modelContainers);
- if(!unknownProperties.isEmpty()) {
- for(ModelProperty mp : unknownProperties) {
- System.out.println(mp);
+ if (!unknownProperties.isEmpty()) {
+ for (ModelProperty mp : unknownProperties) {
+ System.out.println("Missing property from ModelContainer: " +
mp);
}
- throw new DataSourceException("ModelContainer contains elements
not within datasource");
+ throw new DataSourceException("Unable to query datasource.
ModelContainer contains elements not within datasource");
}
return modelContainers;
}
- private List<ModelProperty>
findUnknownModelPropertiesFrom(List<ModelContainer> modelContainers) {
- List<ModelProperty> modelProperties = new ArrayList<ModelProperty>();
- for(ModelContainer mc: modelContainers) {
- if (!modelProperties.containsAll(mc.getProperties())) {
- for (ModelProperty mp : mc.getProperties()) {
- if (!modelProperties.contains(mp)) {
- modelProperties.add(mp);
- }
- }
- }
- }
- return modelProperties;
- }
-
public void init(List<ModelProperty> modelProperties,
Collection<ModelContainerFactory> modelContainerFactories) {
if (modelProperties == null) {
throw new IllegalArgumentException("modelProperties: null");
@@ -153,6 +184,8 @@
}
this.modelProperties = new LinkedList<ModelProperty>(modelProperties);
this.modelContainerFactoryMap = new HashMap<String,
ModelContainerFactory>();
+ this.deleteEvents = new ArrayList<DeleteEvent>();
+ this.originalModelProperties = new
ArrayList<ModelProperty>(modelProperties);
for (ModelContainerFactory factory : modelContainerFactories) {
Collection<String> uris = factory.getUris();
@@ -166,6 +199,37 @@
}
}
+ public String getEventHistory() {
+ StringBuffer sb = new StringBuffer();
+ sb.append("Original Model Properties\r\n");
+ for(ModelProperty mp : originalModelProperties) {
+ sb.append(mp).append("\r\n");
+ }
+
+ for(DeleteEvent de : deleteEvents) {
+ sb.append(de.toString());
+ }
+
+ sb.append("Processed Model Properties\r\n");
+ for(ModelProperty mp : modelProperties) {
+ sb.append(mp).append("\r\n");
+ }
+ return sb.toString();
+ }
+
+ private List<ModelProperty>
findUnknownModelPropertiesFrom(List<ModelContainer> modelContainers) {
+ List<ModelProperty> unknownProperties = new ArrayList<ModelProperty>();
+ for (ModelContainer mc : modelContainers) {
+ if (!modelProperties.containsAll(mc.getProperties())) {
+ for (ModelProperty mp : mc.getProperties()) {
+ if (!modelProperties.contains(mp)) {
+ unknownProperties.add(mp);
+ }
+ }
+ }
+ }
+ return unknownProperties;
+ }
private static int findLastIndexOfParent(ModelProperty modelProperty,
List<ModelProperty> modelProperties) {
for (int i = modelProperties.size() - 1; i >= 0; i--) {
@@ -181,9 +245,9 @@
*
* @param a container A
* @param b container B
- * @return
+ * @return list of merged properties
*/
- private static List<ModelProperty> mergeModelContainers(ModelContainer a,
ModelContainer b) {
+ protected static List<ModelProperty> mergeModelContainers(ModelContainer
a, ModelContainer b) {
List<ModelProperty> m = new ArrayList<ModelProperty>();
m.addAll(a.getProperties());
m.addAll(b.getProperties());
@@ -199,4 +263,59 @@
}
return processedProperties;
}
+
+ private static class DeleteEvent {
+
+ private List<ModelProperty> removedModelProperties;
+
+ private ModelContainer mcA;
+
+ private ModelContainer mcB;
+
+ private String methodName;
+
+ DeleteEvent(ModelContainer mcA, ModelContainer mcB,
List<ModelProperty> removedModelProperties, String methodName) {
+ this.mcA = mcA;
+ this.mcB = mcB;
+ this.removedModelProperties = removedModelProperties;
+ this.methodName = methodName;
+ }
+
+ public ModelContainer getMcA() {
+ return mcA;
+ }
+
+ public ModelContainer getMcB() {
+ return mcB;
+ }
+
+ public List<ModelProperty> getRemovedModelProperties() {
+ return removedModelProperties;
+ }
+
+ public String getMethodName() {
+ return methodName;
+ }
+
+ public String toString() {
+ StringBuffer sb = new StringBuffer();
+ sb.append("Delete Event: ").append(methodName).append("\r\n");
+ sb.append("Model Container A:\r\n");
+ for (ModelProperty mp : mcA.getProperties()) {
+ sb.append(mp).append("\r\n");
+ }
+ if (mcB != null) {
+ sb.append("Model Container B:\r\n");
+ for (ModelProperty mp : mcB.getProperties()) {
+ sb.append(mp).append("\r\n");
+ }
+ }
+
+ sb.append("Removed Properties:\r\n");
+ for (ModelProperty mp : removedModelProperties) {
+ sb.append(mp).append("\r\n");
+ }
+ return sb.toString();
+ }
+ }
}
Modified:
maven/sandbox/trunk/shared/maven-shared-model/src/test/java/org/apache/maven/shared/model/ModelMarshallerTest.java
URL:
http://svn.apache.org/viewvc/maven/sandbox/trunk/shared/maven-shared-model/src/test/java/org/apache/maven/shared/model/ModelMarshallerTest.java?rev=674694&r1=674693&r2=674694&view=diff
==============================================================================
---
maven/sandbox/trunk/shared/maven-shared-model/src/test/java/org/apache/maven/shared/model/ModelMarshallerTest.java
(original)
+++
maven/sandbox/trunk/shared/maven-shared-model/src/test/java/org/apache/maven/shared/model/ModelMarshallerTest.java
Mon Jul 7 18:16:38 2008
@@ -32,32 +32,9 @@
String xml =
ModelMarshaller.unmarshalModelPropertiesToXml(modelProperties,
"http://apache.org/maven");
System.out.println("COMPLETE:" + xml); //TODO: Verify proper xml
}
- @Test
- public void unmarshalWithEmptyTags112() throws IOException {
- /* List<ModelProperty> modelProperties = Arrays.asList(
- new ModelProperty("http://apache.org/maven/project", null),
- new
ModelProperty("http://apache.org/maven/project/developers#collection", null),
- new
ModelProperty("http://apache.org/maven/project/developers#collection/developer",
null),
- new
ModelProperty("http://apache.org/maven/project/developers#collection/developer/organization",
null),
- new
ModelProperty("http://apache.org/maven/project/modelVersion", "4.0.0")
- ); */
- List<ModelProperty> modelProperties =
ModelMarshaller.marshallXmlToModelProperties(
- new FileInputStream("C:\\Documents and
Settings\\sisbell\\.m2\\repository\\org\\mortbay\\jetty\\project\\6.1.5\\project-6.1.5.pom"),
- "http://apache.org/maven", null);
-
- String xml =
ModelMarshaller.unmarshalModelPropertiesToXml(modelProperties,
"http://apache.org/maven");
- System.out.println("COMPLETE:" + xml); //TODO: Verify proper xml
- }
@Test
public void unmarshalWithEmptyTags111() throws IOException {
- /* List<ModelProperty> modelProperties = Arrays.asList(
- new ModelProperty("http://apache.org/maven/project", null),
- new
ModelProperty("http://apache.org/maven/project/developers#collection", null),
- new
ModelProperty("http://apache.org/maven/project/developers#collection/developer",
null),
- new
ModelProperty("http://apache.org/maven/project/developers#collection/developer/organization",
null),
- new
ModelProperty("http://apache.org/maven/project/modelVersion", "4.0.0")
- ); */
List<ModelProperty> modelProperties =
ModelMarshaller.marshallXmlToModelProperties(
new
ByteArrayInputStream("<project><S></S><version>1.2</version><developers><developer><organization></organization></developer></developers><modelVersion>4</modelVersion></project>".getBytes()),
"http://apache.org/maven", null);
Modified:
maven/sandbox/trunk/shared/maven-shared-model/src/test/java/org/apache/maven/shared/model/ModelTransformerContextTest.java
URL:
http://svn.apache.org/viewvc/maven/sandbox/trunk/shared/maven-shared-model/src/test/java/org/apache/maven/shared/model/ModelTransformerContextTest.java?rev=674694&r1=674693&r2=674694&view=diff
==============================================================================
---
maven/sandbox/trunk/shared/maven-shared-model/src/test/java/org/apache/maven/shared/model/ModelTransformerContextTest.java
(original)
+++
maven/sandbox/trunk/shared/maven-shared-model/src/test/java/org/apache/maven/shared/model/ModelTransformerContextTest.java
Mon Jul 7 18:16:38 2008
@@ -12,13 +12,6 @@
@Test
public void sortWithDuplicateProperty1() {
-/*
-Uri =
http://apache.org/maven/project/build/pluginManagement/plugins#collection/plugin/artifactId,
Value = maven-release-plugin, Resolved Value = maven-release-plugin
-Uri =
http://apache.org/maven/project/build/pluginManagement/plugins#collection/plugin/groupId,
Value = org.apache.maven.plugins, Resolved Value = org.apache.maven.plugins
-Uri =
http://apache.org/maven/project/build/pluginManagement/plugins#collection/plugin/configuration/arguments,
Value = -Prelease, Resolved Value = -Prelease
-Uri =
http://apache.org/maven/project/build/pluginManagement/plugins#collection/plugin/configuration/goals,
Value = deploy, Resolved Value = deploy
-Uri =
http://apache.org/maven/project/build/pluginManagement/plugins#collection/plugin/configuration/useReleaseProfile,
Value = false, Resolved Value = false
-*/
ModelProperty dup0 = new
ModelProperty("http://apache.org/maven/project", null);
ModelProperty dup1 = new
ModelProperty("http://apache.org/maven/project/build", null);
ModelProperty dup2 = new
ModelProperty("http://apache.org/maven/project/build/pluginManagement", null);
Modified:
maven/sandbox/trunk/shared/maven-shared-model/src/test/java/org/apache/maven/shared/model/impl/DefaultModelDataSourceTest.java
URL:
http://svn.apache.org/viewvc/maven/sandbox/trunk/shared/maven-shared-model/src/test/java/org/apache/maven/shared/model/impl/DefaultModelDataSourceTest.java?rev=674694&r1=674693&r2=674694&view=diff
==============================================================================
---
maven/sandbox/trunk/shared/maven-shared-model/src/test/java/org/apache/maven/shared/model/impl/DefaultModelDataSourceTest.java
(original)
+++
maven/sandbox/trunk/shared/maven-shared-model/src/test/java/org/apache/maven/shared/model/impl/DefaultModelDataSourceTest.java
Mon Jul 7 18:16:38 2008
@@ -1,14 +1,14 @@
package org.apache.maven.shared.model.impl;
import org.apache.maven.shared.model.*;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.*;
import org.junit.Test;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;
+import java.io.IOException;
public class DefaultModelDataSourceTest {
@@ -19,7 +19,39 @@
}
@Test
- public void join1() throws DataSourceException {
+ public void mergeModelContainers() throws IOException {
+ List<ModelProperty> modelProperties = Arrays.asList(
+ new ModelProperty("http://apache.org/maven/project", null),
+ new ModelProperty("http://apache.org/maven/project/build",
null),
+ new
ModelProperty("http://apache.org/maven/project/build/pluginManagement", null),
+ new
ModelProperty("http://apache.org/maven/project/build/pluginManagement/plugins#collection",
null),
+
+ new
ModelProperty("http://apache.org/maven/project/build/pluginManagement/plugins#collection/plugin",
null),
+ new
ModelProperty("http://apache.org/maven/project/build/pluginManagement/plugins#collection/plugin/version",
"2.0.2"),
+ new
ModelProperty("http://apache.org/maven/project/build/pluginManagement/plugins#collection/plugin/artifactId",
"maven-compiler-plugin"),
+ new
ModelProperty("http://apache.org/maven/project/build/pluginManagement/plugins#collection/plugin/groupId",
"org.apache.maven.plugins"),
+
+ new
ModelProperty("http://apache.org/maven/project/build/pluginManagement/plugins#collection/plugin",
null),
+ new
ModelProperty("http://apache.org/maven/project/build/pluginManagement/plugins#collection/plugin/version",
"2.0.2"),
+ new
ModelProperty("http://apache.org/maven/project/build/pluginManagement/plugins#collection/plugin/artifactId",
"maven-compiler-plugin"),
+ new
ModelProperty("http://apache.org/maven/project/build/pluginManagement/plugins#collection/plugin/groupId",
"org.apache.maven.plugins"),
+ new
ModelProperty("http://apache.org/maven/project/build/pluginManagement/plugins#collection/a",
"a")
+ );
+
+
+ DummyModelContainerFactory factory = new DummyModelContainerFactory();
+
+ DefaultModelDataSource datasource = new DefaultModelDataSource();
+ datasource.init(modelProperties, factories);
+
+ List<ModelProperty> mps = datasource.mergeModelContainers(
+ factory.create(new
ArrayList<ModelProperty>(modelProperties.subList(4, 8))),
+ factory.create(new
ArrayList<ModelProperty>(modelProperties.subList(8, 13))));
+ assertTrue(mps.containsAll(new
ArrayList<ModelProperty>(modelProperties.subList(4, 8))));
+ }
+
+ @Test
+ public void join1() throws DataSourceException, IOException {
List<ModelProperty> modelProperties = Arrays.asList(
new ModelProperty("http://apache.org/maven/project", null),
new ModelProperty("http://apache.org/maven/project/build",
null),
@@ -49,11 +81,15 @@
factory.create(new
ArrayList<ModelProperty>(modelProperties.subList(8, 12))));
for (ModelProperty mp : joinedModelContainer.getProperties()) {
- //System.out.println("-" + mp);
+ System.out.println("-" + mp);
+ }
+
+ if
(!datasource.getModelProperties().containsAll(joinedModelContainer.getProperties()))
{
+ throw new IOException();
}
for (ModelProperty mp : datasource.getModelProperties()) {
- //System.out.println("+" + mp);
+ System.out.println("+" + mp);
}
}
@@ -132,7 +168,7 @@
assertEquals(modelContainer, modelContainerA);
}
-
+ /*
@Test(expected = DataSourceException.class)
public void joinContainerWithElementsNotInDataSource() throws
DataSourceException {
ModelProperty mpA = new ModelProperty("a", null);
@@ -152,6 +188,7 @@
factory.create(new
ArrayList<ModelProperty>(modelProperties.subList(0, 3))),
factory.create(new
ArrayList<ModelProperty>(modelProperties.subList(1, 2))));
}
+ */
@Test
public void cannotModifyDataSourceFromInitializedList() {