Author: sisbell
Date: Fri Aug 1 08:33:06 2008
New Revision: 681726
URL: http://svn.apache.org/viewvc?rev=681726&view=rev
Log:
Support for imports (mixins).
Added:
maven/shared/trunk/maven-shared-model/src/main/java/org/apache/maven/shared/model/ImportModel.java
(with props)
maven/shared/trunk/maven-shared-model/src/main/java/org/apache/maven/shared/model/impl/XmlImportModel.java
(with props)
Modified:
maven/shared/trunk/maven-shared-model/src/main/java/org/apache/maven/shared/model/ModelTransformerContext.java
Added:
maven/shared/trunk/maven-shared-model/src/main/java/org/apache/maven/shared/model/ImportModel.java
URL:
http://svn.apache.org/viewvc/maven/shared/trunk/maven-shared-model/src/main/java/org/apache/maven/shared/model/ImportModel.java?rev=681726&view=auto
==============================================================================
---
maven/shared/trunk/maven-shared-model/src/main/java/org/apache/maven/shared/model/ImportModel.java
(added)
+++
maven/shared/trunk/maven-shared-model/src/main/java/org/apache/maven/shared/model/ImportModel.java
Fri Aug 1 08:33:06 2008
@@ -0,0 +1,10 @@
+package org.apache.maven.shared.model;
+
+import java.util.List;
+
+public interface ImportModel {
+
+ String getId();
+
+ List<ModelProperty> getModelProperties();
+}
Propchange:
maven/shared/trunk/maven-shared-model/src/main/java/org/apache/maven/shared/model/ImportModel.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified:
maven/shared/trunk/maven-shared-model/src/main/java/org/apache/maven/shared/model/ModelTransformerContext.java
URL:
http://svn.apache.org/viewvc/maven/shared/trunk/maven-shared-model/src/main/java/org/apache/maven/shared/model/ModelTransformerContext.java?rev=681726&r1=681725&r2=681726&view=diff
==============================================================================
---
maven/shared/trunk/maven-shared-model/src/main/java/org/apache/maven/shared/model/ModelTransformerContext.java
(original)
+++
maven/shared/trunk/maven-shared-model/src/main/java/org/apache/maven/shared/model/ModelTransformerContext.java
Fri Aug 1 08:33:06 2008
@@ -22,12 +22,7 @@
import org.apache.maven.shared.model.impl.DefaultModelDataSource;
import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
/**
@@ -79,20 +74,23 @@
* @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
+ * @param importModels
+ * @param interpolatorProperties properties to use during interpolation.
@return processed domain model
* @throws IOException if there was a problem with the transform
*/
- public DomainModel transform( List<DomainModel> domainModels,
ModelTransformer fromModelTransformer,
- ModelTransformer toModelTransformer,
- Collection<InterpolatorProperty>
interpolatorProperties )
+ public DomainModel transform(List<DomainModel> domainModels,
ModelTransformer fromModelTransformer,
+ ModelTransformer toModelTransformer,
+ Collection<ImportModel> importModels,
Collection<InterpolatorProperty> interpolatorProperties)
throws IOException
{
List<InterpolatorProperty> properties = new
ArrayList<InterpolatorProperty>( interpolatorProperties );
+ List<ModelProperty> transformedProperties =
+ importModelProperties(importModels,
fromModelTransformer.transformToModelProperties( domainModels ));
+
String baseUriForModel = fromModelTransformer.getBaseUri();
List<ModelProperty> modelProperties =
- sort( fromModelTransformer.transformToModelProperties(
domainModels ), baseUriForModel );
+ sort( transformedProperties, baseUriForModel );
ModelDataSource modelDataSource = new DefaultModelDataSource();
modelDataSource.init( modelProperties, factories );
@@ -210,7 +208,24 @@
ModelTransformer toModelTransformer )
throws IOException
{
- return this.transform( domainModels, fromModelTransformer,
toModelTransformer, systemInterpolatorProperties );
+ return this.transform( domainModels, fromModelTransformer,
toModelTransformer, null, systemInterpolatorProperties );
+ }
+
+ private static List<ModelProperty>
importModelProperties(Collection<ImportModel> importModels,
+
List<ModelProperty> modelProperties) {
+ List<ModelProperty> properties = new ArrayList<ModelProperty>();
+ for(ModelProperty mp: modelProperties) {
+ if(mp.getUri().endsWith("importModel")) {
+ for(ImportModel im : importModels) {
+ if(im.getId().equals(mp.getValue())) {
+ properties.addAll(im.getModelProperties());
+ }
+ }
+ } else {
+ properties.add(mp);
+ }
+ }
+ return properties;
}
/**
@@ -253,4 +268,4 @@
}
return processedProperties;
}
-}
+}
\ No newline at end of file
Added:
maven/shared/trunk/maven-shared-model/src/main/java/org/apache/maven/shared/model/impl/XmlImportModel.java
URL:
http://svn.apache.org/viewvc/maven/shared/trunk/maven-shared-model/src/main/java/org/apache/maven/shared/model/impl/XmlImportModel.java?rev=681726&view=auto
==============================================================================
---
maven/shared/trunk/maven-shared-model/src/main/java/org/apache/maven/shared/model/impl/XmlImportModel.java
(added)
+++
maven/shared/trunk/maven-shared-model/src/main/java/org/apache/maven/shared/model/impl/XmlImportModel.java
Fri Aug 1 08:33:06 2008
@@ -0,0 +1,50 @@
+package org.apache.maven.shared.model.impl;
+
+import org.apache.maven.shared.model.ImportModel;
+import org.apache.maven.shared.model.ModelProperty;
+import org.apache.maven.shared.model.ModelMarshaller;
+
+import java.util.List;
+import java.io.InputStream;
+import java.io.IOException;
+
+public class XmlImportModel implements ImportModel {
+
+ private String id;
+
+ private List<ModelProperty> modelProperties;
+
+ public XmlImportModel(String id, InputStream inputStream, String baseUri)
throws IOException {
+ if(id == null) {
+ throw new IllegalArgumentException("id: null");
+ }
+ this.id = id;
+ modelProperties =
ModelMarshaller.marshallXmlToModelProperties(inputStream, baseUri, null);
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public List<ModelProperty> getModelProperties() {
+ return modelProperties;
+ }
+
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+
+ XmlImportModel that = (XmlImportModel) o;
+
+ if (id != null ? !id.equals(that.id) : that.id != null) return false;
+
+ return true;
+ }
+
+ public int hashCode() {
+ int result;
+ result = (id != null ? id.hashCode() : 0);
+ result = 31 * result + (modelProperties != null ?
modelProperties.hashCode() : 0);
+ return result;
+ }
+}
Propchange:
maven/shared/trunk/maven-shared-model/src/main/java/org/apache/maven/shared/model/impl/XmlImportModel.java
------------------------------------------------------------------------------
svn:eol-style = native