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


Reply via email to