Author: sisbell
Date: Mon Apr 13 21:43:52 2009
New Revision: 764626

URL: http://svn.apache.org/viewvc?rev=764626&view=rev
Log:
Centralized usage of model properties into processor context. Moved usage from 
domain model.

Modified:
    
maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/PomClassicDomainModel.java
    
maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/ProcessorContext.java
    
maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/interpolator/DomainModel.java

Modified: 
maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/PomClassicDomainModel.java
URL: 
http://svn.apache.org/viewvc/maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/PomClassicDomainModel.java?rev=764626&r1=764625&r2=764626&view=diff
==============================================================================
--- 
maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/PomClassicDomainModel.java
 (original)
+++ 
maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/PomClassicDomainModel.java
 Mon Apr 13 21:43:52 2009
@@ -7,26 +7,11 @@
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.Writer;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import javax.xml.stream.XMLInputFactory;
-import javax.xml.stream.XMLStreamConstants;
-import javax.xml.stream.XMLStreamException;
-import javax.xml.stream.XMLStreamReader;
 
 import org.apache.maven.model.Model;
 import org.apache.maven.model.io.xpp3.MavenXpp3Reader;
 import org.apache.maven.model.io.xpp3.MavenXpp3Writer;
 import org.apache.maven.project.builder.interpolator.DomainModel;
-import org.apache.maven.project.builder.interpolator.ModelProperty;
 import org.codehaus.plexus.util.IOUtil;
 import org.codehaus.plexus.util.ReaderFactory;
 import org.codehaus.plexus.util.WriterFactory;
@@ -47,8 +32,6 @@
     private File parentFile;
 
     private File projectDirectory;
-
-    private List<ModelProperty> modelProperties;
     
     private int lineageCount;
     
@@ -68,37 +51,33 @@
        String groupId = null, artifactId = null, version = null;
 
        groupId = model.getGroupId();
-
        artifactId = model.getArtifactId();
        version = model.getVersion();
        
        if( model.getParent() != null)
        {
                parentArtifactId =model.getParent().getArtifactId();
-
                parentGroupId = model.getParent().getGroupId();
-
                parentVersion = model.getParent().getVersion();
-
                parentRelativePath = model.getParent().getRelativePath();
-       }
-
-       if( groupId == null && parentGroupId != null)
-       {
-               groupId = parentGroupId;
-       }
-       if( artifactId == null && parentArtifactId != null)
-       {
-               artifactId = parentArtifactId;
-       }
-       if( version == null && parentVersion != null )
-       {
-               version = parentVersion;
-       }
-
-       if(parentGroupId != null && parentArtifactId != null && parentVersion 
!= null)
-       {
-               parentId = parentGroupId + ":" + parentArtifactId + ":" + 
parentVersion;
+               
+               if( groupId == null && parentGroupId != null)
+               {
+                       groupId = parentGroupId;
+               }
+               if( artifactId == null && parentArtifactId != null)
+               {
+                       artifactId = parentArtifactId;
+               }
+               if( version == null && parentVersion != null )
+               {
+                       version = parentVersion;
+               }
+               
+               if(parentGroupId != null && parentArtifactId != null && 
parentVersion != null)
+               {
+                       parentId = parentGroupId + ":" + parentArtifactId + ":" 
+ parentVersion;
+               }
        }
 
        if(parentRelativePath == null)
@@ -218,8 +197,7 @@
     {
         return id;
     }
-
-
+    
     public boolean matchesParentOf( PomClassicDomainModel domainModel ) throws 
IOException
     {
         if ( domainModel == null )
@@ -266,40 +244,6 @@
         return file;
     }
 
-    public List<ModelProperty> getModelProperties() throws IOException
-    {
-        if(modelProperties == null)
-        {
-            Set<String> s = new HashSet<String>();
-            //TODO: Should add all collections from ProjectUri
-            s.addAll(URIS);
-            
s.add(ProjectUri.Build.PluginManagement.Plugins.Plugin.Executions.xUri);
-            
s.add(ProjectUri.DependencyManagement.Dependencies.Dependency.Exclusions.xUri);
-            s.add(ProjectUri.Dependencies.Dependency.Exclusions.xUri);
-            s.add(ProjectUri.Build.Plugins.Plugin.Executions.xUri);
-            
s.add(ProjectUri.Build.Plugins.Plugin.Executions.Execution.Goals.xURI);
-            s.add(ProjectUri.Reporting.Plugins.Plugin.ReportSets.xUri);
-            
s.add(ProjectUri.Reporting.Plugins.Plugin.ReportSets.ReportSet.configuration);
-            
s.add(ProjectUri.Build.Plugins.Plugin.Executions.Execution.configuration);
-            //TODO: More profile info
-            
s.add(ProjectUri.Profiles.Profile.Build.PluginManagement.Plugins.Plugin.Executions.xUri);
-            
s.add(ProjectUri.Profiles.Profile.DependencyManagement.Dependencies.Dependency.Exclusions.xUri);
-            
s.add(ProjectUri.Profiles.Profile.Dependencies.Dependency.Exclusions.xUri);
-            
s.add(ProjectUri.Profiles.Profile.Build.Plugins.Plugin.Executions.xUri);
-            
s.add(ProjectUri.Profiles.Profile.Build.Plugins.Plugin.Executions.Execution.Goals.xURI);
-            
s.add(ProjectUri.Profiles.Profile.Reporting.Plugins.Plugin.ReportSets.xUri);
-            
s.add(ProjectUri.Profiles.Profile.Reporting.Plugins.Plugin.ReportSets.ReportSet.configuration);
-            
s.add(ProjectUri.Profiles.Profile.Build.Plugins.Plugin.Executions.Execution.configuration);
-            s.add(ProjectUri.Profiles.Profile.properties);
-            s.add(ProjectUri.Profiles.Profile.modules);
-            s.add(ProjectUri.Profiles.Profile.Dependencies.xUri);
-            
s.add(ProjectUri.Profiles.Profile.Build.Plugins.Plugin.configuration);
-            
-            modelProperties = marshallXmlToModelProperties(getInputStream(), 
ProjectUri.baseUri, s );
-        }
-        return new ArrayList<ModelProperty>(modelProperties);
-    }
-
     public int getLineageCount()
     {
         return lineageCount;
@@ -341,222 +285,5 @@
         return String.valueOf( id );
     }
     
-    private static final Set<String> URIS = Collections.unmodifiableSet(new 
HashSet<String>( Arrays.asList(  ProjectUri.Build.Extensions.xUri,
-            ProjectUri.Build.PluginManagement.Plugins.xUri,
-            ProjectUri.Build.PluginManagement.Plugins.Plugin.configuration,
-            ProjectUri.Build.PluginManagement.Plugins.Plugin.Executions.xUri,
-            
ProjectUri.Build.PluginManagement.Plugins.Plugin.Executions.Execution.Goals.xURI,
-            ProjectUri.Build.PluginManagement.Plugins.Plugin.Dependencies.xUri,
-            
ProjectUri.Build.PluginManagement.Plugins.Plugin.Dependencies.Dependency.Exclusions.xUri,
-            ProjectUri.Build.Plugins.xUri,
-            ProjectUri.properties,
-            ProjectUri.Build.Plugins.Plugin.configuration,
-            ProjectUri.Reporting.Plugins.xUri,
-            ProjectUri.Reporting.Plugins.Plugin.configuration,
-            ProjectUri.Build.Plugins.Plugin.Dependencies.xUri,
-            ProjectUri.Build.Resources.xUri,
-            ProjectUri.Build.Resources.Resource.includes,
-            ProjectUri.Build.Resources.Resource.excludes,
-            ProjectUri.Build.TestResources.xUri,
-            ProjectUri.Build.Filters.xUri,
-            ProjectUri.CiManagement.Notifiers.xUri,
-            ProjectUri.Contributors.xUri,
-            ProjectUri.Dependencies.xUri,
-            ProjectUri.DependencyManagement.Dependencies.xUri,
-            ProjectUri.Developers.xUri,
-            ProjectUri.Developers.Developer.roles,
-            ProjectUri.Licenses.xUri,
-            ProjectUri.MailingLists.xUri,
-            ProjectUri.Modules.xUri,
-            ProjectUri.PluginRepositories.xUri,
-            ProjectUri.Profiles.xUri,
-            ProjectUri.Profiles.Profile.Build.Plugins.xUri,
-            ProjectUri.Profiles.Profile.Build.Plugins.Plugin.Dependencies.xUri,
-            ProjectUri.Profiles.Profile.Build.Plugins.Plugin.Executions.xUri,
-            ProjectUri.Profiles.Profile.Build.Resources.xUri,
-            ProjectUri.Profiles.Profile.Build.TestResources.xUri,
-            ProjectUri.Profiles.Profile.Dependencies.xUri,
-            ProjectUri.Profiles.Profile.DependencyManagement.Dependencies.xUri,
-            ProjectUri.Profiles.Profile.PluginRepositories.xUri,
-            ProjectUri.Profiles.Profile.Reporting.Plugins.xUri,
-            ProjectUri.Profiles.Profile.Repositories.xUri,
-            ProjectUri.Profiles.Profile.Build.PluginManagement.Plugins.xUri,
-            
ProjectUri.Profiles.Profile.Build.PluginManagement.Plugins.Plugin.Dependencies.xUri,
-            ProjectUri.Reporting.Plugins.xUri,
-            ProjectUri.Repositories.xUri) ));    
-    
-   /**
-    * Returns list of model properties transformed from the specified input 
stream.
-    *
-    * @param inputStream input stream containing the xml document. May not be 
null.
-    * @param baseUri     the base uri of every model property. May not be null 
or empty.
-    * @param collections set of uris that are to be treated as a collection 
(multiple entries). May be null.
-    * @return list of model properties transformed from the specified input 
stream.
-    * @throws IOException if there was a problem doing the transform
-    */
-    public static List<ModelProperty> marshallXmlToModelProperties( 
InputStream inputStream, String baseUri,
-            Set<String> collections )
-                       throws IOException {
-               if (inputStream == null) {
-                       throw new IllegalArgumentException("inputStream: null");
-               }
-
-               if (baseUri == null || baseUri.trim().length() == 0) {
-                       throw new IllegalArgumentException("baseUri: null");
-               }
-
-               if (collections == null) {
-                       collections = Collections.emptySet();
-               }
-
-               List<ModelProperty> modelProperties = new 
ArrayList<ModelProperty>();
-               XMLInputFactory xmlInputFactory = new 
com.ctc.wstx.stax.WstxInputFactory();
-               xmlInputFactory.setProperty(
-                               XMLInputFactory.IS_REPLACING_ENTITY_REFERENCES, 
Boolean.FALSE);
-               xmlInputFactory.setProperty(XMLInputFactory.IS_NAMESPACE_AWARE,
-                               Boolean.FALSE);
-
-               Uri uri = new Uri(baseUri);
-               String tagName = baseUri;
-               StringBuilder tagValue = new StringBuilder(256);
-
-               int depth = 0;
-               int depthOfTagValue = depth;
-               XMLStreamReader xmlStreamReader = null;
-               try {
-                       xmlStreamReader = xmlInputFactory
-                                       .createXMLStreamReader(inputStream);
-
-                       Map<String, String> attributes = new HashMap<String, 
String>();
-                       for (;; xmlStreamReader.next()) {
-                               int type = xmlStreamReader.getEventType();
-                               switch (type) {
-
-                               case XMLStreamConstants.CDATA:
-                               case XMLStreamConstants.CHARACTERS: {
-                                       if (depth == depthOfTagValue) {
-                                               
tagValue.append(xmlStreamReader.getTextCharacters(),
-                                                               
xmlStreamReader.getTextStart(), xmlStreamReader
-                                                                               
.getTextLength());
-                                       }
-                                       break;
-                               }
-
-                               case XMLStreamConstants.START_ELEMENT: {
-                                       if (!tagName.equals(baseUri)) {
-                                               String value = null;
-                                               if (depth < depthOfTagValue) {
-                                                       value = 
tagValue.toString().trim();
-                                               }
-                                               modelProperties.add(new 
ModelProperty(tagName, value));
-                                               if (!attributes.isEmpty()) {
-                                                       for (Map.Entry<String, 
String> e : attributes
-                                                                       
.entrySet()) {
-                                                               
modelProperties.add(new ModelProperty(e
-                                                                               
.getKey(), e.getValue()));
-                                                       }
-                                                       attributes.clear();
-                                               }
-                                       }
-
-                                       depth++;
-                                       tagName = 
uri.getUriFor(xmlStreamReader.getName()
-                                                       .getLocalPart(), depth);
-                                       if (collections.contains(tagName + 
"#collection")) {
-                                               tagName = tagName + 
"#collection";
-                                               
uri.addTag(xmlStreamReader.getName().getLocalPart()
-                                                               + 
"#collection");
-                                       } else if (collections.contains(tagName 
+ "#set")) {
-                                               tagName = tagName + "#set";
-                                               
uri.addTag(xmlStreamReader.getName().getLocalPart()
-                                                               + "#set");
-                                       } else {
-                                               
uri.addTag(xmlStreamReader.getName().getLocalPart());
-                                       }
-                                       tagValue.setLength(0);
-                                       depthOfTagValue = depth;
-                               }
-                               case XMLStreamConstants.ATTRIBUTE: {
-                                       for (int i = 0; i < 
xmlStreamReader.getAttributeCount(); i++) {
-
-                                               attributes.put(tagName
-                                                               + "#property/"
-                                                               + 
xmlStreamReader.getAttributeName(i)
-                                                                               
.getLocalPart(), xmlStreamReader
-                                                               
.getAttributeValue(i));
-                                       }
-                                       break;
-                               }
-                               case XMLStreamConstants.END_ELEMENT: {
-                                       depth--;
-                                       break;
-                               }
-                               case XMLStreamConstants.END_DOCUMENT: {
-                                       modelProperties.add(new 
ModelProperty(tagName, tagValue
-                                                       .toString().trim()));
-                                       if (!attributes.isEmpty()) {
-                                               for (Map.Entry<String, String> 
e : attributes
-                                                               .entrySet()) {
-                                                       modelProperties.add(new 
ModelProperty(e.getKey(), e
-                                                                       
.getValue()));
-                                               }
-                                               attributes.clear();
-                                       }
-                                       return modelProperties;
-                               }
-                               }
-                       }
-               } catch (XMLStreamException e) {
-                       throw new IOException(":" + e.toString());
-               } finally {
-                       if (xmlStreamReader != null) {
-                               try {
-                                       xmlStreamReader.close();
-                               } catch (XMLStreamException e) {
-                                       e.printStackTrace();
-                               }
-                       }
-                       try {
-                               inputStream.close();
-                       } catch (IOException e) {
-
-                       }
-               }
-       }
-   /**
-    * Class for storing information about URIs.
-    */
-   private static class Uri
-   {
-
-       List<String> uris;
-
-       Uri( String baseUri )
-       {
-           uris = new LinkedList<String>();
-           uris.add( baseUri );
-       }
-
-       String getUriFor( String tag, int depth )
-       {
-           setUrisToDepth( depth );
-           StringBuffer sb = new StringBuffer();
-           for ( String tagName : uris )
-           {
-               sb.append( tagName ).append( "/" );
-           }
-           sb.append( tag );
-           return sb.toString();
-       }
-
-       void addTag( String tag )
-       {
-           uris.add( tag );
-       }
-
-       void setUrisToDepth( int depth )
-       {
-           uris = new LinkedList<String>( uris.subList( 0, depth ) );
-       }
-   }
+ 
 }

Modified: 
maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/ProcessorContext.java
URL: 
http://svn.apache.org/viewvc/maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/ProcessorContext.java?rev=764626&r1=764625&r2=764626&view=diff
==============================================================================
--- 
maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/ProcessorContext.java
 (original)
+++ 
maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/ProcessorContext.java
 Mon Apr 13 21:43:52 2009
@@ -22,6 +22,7 @@
 import java.io.ByteArrayInputStream;
 import java.io.File;
 import java.io.IOException;
+import java.io.InputStream;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
@@ -30,8 +31,15 @@
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.LinkedHashSet;
+import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
+
+import javax.xml.stream.XMLInputFactory;
+import javax.xml.stream.XMLStreamConstants;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamReader;
 
 import org.apache.maven.model.BuildBase;
 import org.apache.maven.model.Dependency;
@@ -454,7 +462,7 @@
                        aliases.put("\\$\\{project.version\\}", 
"\\$\\{version\\}");
                }
                //TODO: Insert customized logic for parsing
-               List<ModelProperty> modelProperties = dm.getModelProperties();
+               List<ModelProperty> modelProperties = 
getModelProperties(dm.getInputStream());
 
                if ("jar".equals(dm.getModel().getPackaging())) {
                        modelProperties.add(new 
ModelProperty(ProjectUri.packaging, "jar"));
@@ -848,4 +856,251 @@
         return sb.toString();
     }    
     
+    public static List<ModelProperty> getModelProperties(InputStream is) 
throws IOException
+    {
+            Set<String> s = new HashSet<String>();
+            //TODO: Should add all collections from ProjectUri
+            s.addAll(URIS);
+            
s.add(ProjectUri.Build.PluginManagement.Plugins.Plugin.Executions.xUri);
+            
s.add(ProjectUri.DependencyManagement.Dependencies.Dependency.Exclusions.xUri);
+            s.add(ProjectUri.Dependencies.Dependency.Exclusions.xUri);
+            s.add(ProjectUri.Build.Plugins.Plugin.Executions.xUri);
+            
s.add(ProjectUri.Build.Plugins.Plugin.Executions.Execution.Goals.xURI);
+            s.add(ProjectUri.Reporting.Plugins.Plugin.ReportSets.xUri);
+            
s.add(ProjectUri.Reporting.Plugins.Plugin.ReportSets.ReportSet.configuration);
+            
s.add(ProjectUri.Build.Plugins.Plugin.Executions.Execution.configuration);
+            //TODO: More profile info
+            
s.add(ProjectUri.Profiles.Profile.Build.PluginManagement.Plugins.Plugin.Executions.xUri);
+            
s.add(ProjectUri.Profiles.Profile.DependencyManagement.Dependencies.Dependency.Exclusions.xUri);
+            
s.add(ProjectUri.Profiles.Profile.Dependencies.Dependency.Exclusions.xUri);
+            
s.add(ProjectUri.Profiles.Profile.Build.Plugins.Plugin.Executions.xUri);
+            
s.add(ProjectUri.Profiles.Profile.Build.Plugins.Plugin.Executions.Execution.Goals.xURI);
+            
s.add(ProjectUri.Profiles.Profile.Reporting.Plugins.Plugin.ReportSets.xUri);
+            
s.add(ProjectUri.Profiles.Profile.Reporting.Plugins.Plugin.ReportSets.ReportSet.configuration);
+            
s.add(ProjectUri.Profiles.Profile.Build.Plugins.Plugin.Executions.Execution.configuration);
+            s.add(ProjectUri.Profiles.Profile.properties);
+            s.add(ProjectUri.Profiles.Profile.modules);
+            s.add(ProjectUri.Profiles.Profile.Dependencies.xUri);
+            
s.add(ProjectUri.Profiles.Profile.Build.Plugins.Plugin.configuration);
+            
+        return new ArrayList<ModelProperty>(marshallXmlToModelProperties(is, 
ProjectUri.baseUri, s ));
+    }    
+    private static final Set<String> URIS = Collections.unmodifiableSet(new 
HashSet<String>( Arrays.asList(  ProjectUri.Build.Extensions.xUri,
+            ProjectUri.Build.PluginManagement.Plugins.xUri,
+            ProjectUri.Build.PluginManagement.Plugins.Plugin.configuration,
+            ProjectUri.Build.PluginManagement.Plugins.Plugin.Executions.xUri,
+            
ProjectUri.Build.PluginManagement.Plugins.Plugin.Executions.Execution.Goals.xURI,
+            ProjectUri.Build.PluginManagement.Plugins.Plugin.Dependencies.xUri,
+            
ProjectUri.Build.PluginManagement.Plugins.Plugin.Dependencies.Dependency.Exclusions.xUri,
+            ProjectUri.Build.Plugins.xUri,
+            ProjectUri.properties,
+            ProjectUri.Build.Plugins.Plugin.configuration,
+            ProjectUri.Reporting.Plugins.xUri,
+            ProjectUri.Reporting.Plugins.Plugin.configuration,
+            ProjectUri.Build.Plugins.Plugin.Dependencies.xUri,
+            ProjectUri.Build.Resources.xUri,
+            ProjectUri.Build.Resources.Resource.includes,
+            ProjectUri.Build.Resources.Resource.excludes,
+            ProjectUri.Build.TestResources.xUri,
+            ProjectUri.Build.Filters.xUri,
+            ProjectUri.CiManagement.Notifiers.xUri,
+            ProjectUri.Contributors.xUri,
+            ProjectUri.Dependencies.xUri,
+            ProjectUri.DependencyManagement.Dependencies.xUri,
+            ProjectUri.Developers.xUri,
+            ProjectUri.Developers.Developer.roles,
+            ProjectUri.Licenses.xUri,
+            ProjectUri.MailingLists.xUri,
+            ProjectUri.Modules.xUri,
+            ProjectUri.PluginRepositories.xUri,
+            ProjectUri.Profiles.xUri,
+            ProjectUri.Profiles.Profile.Build.Plugins.xUri,
+            ProjectUri.Profiles.Profile.Build.Plugins.Plugin.Dependencies.xUri,
+            ProjectUri.Profiles.Profile.Build.Plugins.Plugin.Executions.xUri,
+            ProjectUri.Profiles.Profile.Build.Resources.xUri,
+            ProjectUri.Profiles.Profile.Build.TestResources.xUri,
+            ProjectUri.Profiles.Profile.Dependencies.xUri,
+            ProjectUri.Profiles.Profile.DependencyManagement.Dependencies.xUri,
+            ProjectUri.Profiles.Profile.PluginRepositories.xUri,
+            ProjectUri.Profiles.Profile.Reporting.Plugins.xUri,
+            ProjectUri.Profiles.Profile.Repositories.xUri,
+            ProjectUri.Profiles.Profile.Build.PluginManagement.Plugins.xUri,
+            
ProjectUri.Profiles.Profile.Build.PluginManagement.Plugins.Plugin.Dependencies.xUri,
+            ProjectUri.Reporting.Plugins.xUri,
+            ProjectUri.Repositories.xUri) ));    
+    
+   /**
+    * Returns list of model properties transformed from the specified input 
stream.
+    *
+    * @param inputStream input stream containing the xml document. May not be 
null.
+    * @param baseUri     the base uri of every model property. May not be null 
or empty.
+    * @param collections set of uris that are to be treated as a collection 
(multiple entries). May be null.
+    * @return list of model properties transformed from the specified input 
stream.
+    * @throws IOException if there was a problem doing the transform
+    */
+    public static List<ModelProperty> marshallXmlToModelProperties( 
InputStream inputStream, String baseUri,
+            Set<String> collections )
+                       throws IOException {
+               if (inputStream == null) {
+                       throw new IllegalArgumentException("inputStream: null");
+               }
+
+               if (baseUri == null || baseUri.trim().length() == 0) {
+                       throw new IllegalArgumentException("baseUri: null");
+               }
+
+               if (collections == null) {
+                       collections = Collections.emptySet();
+               }
+
+               List<ModelProperty> modelProperties = new 
ArrayList<ModelProperty>();
+               XMLInputFactory xmlInputFactory = new 
com.ctc.wstx.stax.WstxInputFactory();
+               xmlInputFactory.setProperty(
+                               XMLInputFactory.IS_REPLACING_ENTITY_REFERENCES, 
Boolean.FALSE);
+               xmlInputFactory.setProperty(XMLInputFactory.IS_NAMESPACE_AWARE,
+                               Boolean.FALSE);
+
+               Uri uri = new Uri(baseUri);
+               String tagName = baseUri;
+               StringBuilder tagValue = new StringBuilder(256);
+
+               int depth = 0;
+               int depthOfTagValue = depth;
+               XMLStreamReader xmlStreamReader = null;
+               try {
+                       xmlStreamReader = xmlInputFactory
+                                       .createXMLStreamReader(inputStream);
+
+                       Map<String, String> attributes = new HashMap<String, 
String>();
+                       for (;; xmlStreamReader.next()) {
+                               int type = xmlStreamReader.getEventType();
+                               switch (type) {
+
+                               case XMLStreamConstants.CDATA:
+                               case XMLStreamConstants.CHARACTERS: {
+                                       if (depth == depthOfTagValue) {
+                                               
tagValue.append(xmlStreamReader.getTextCharacters(),
+                                                               
xmlStreamReader.getTextStart(), xmlStreamReader
+                                                                               
.getTextLength());
+                                       }
+                                       break;
+                               }
+
+                               case XMLStreamConstants.START_ELEMENT: {
+                                       if (!tagName.equals(baseUri)) {
+                                               String value = null;
+                                               if (depth < depthOfTagValue) {
+                                                       value = 
tagValue.toString().trim();
+                                               }
+                                               modelProperties.add(new 
ModelProperty(tagName, value));
+                                               if (!attributes.isEmpty()) {
+                                                       for (Map.Entry<String, 
String> e : attributes
+                                                                       
.entrySet()) {
+                                                               
modelProperties.add(new ModelProperty(e
+                                                                               
.getKey(), e.getValue()));
+                                                       }
+                                                       attributes.clear();
+                                               }
+                                       }
+
+                                       depth++;
+                                       tagName = 
uri.getUriFor(xmlStreamReader.getName()
+                                                       .getLocalPart(), depth);
+                                       if (collections.contains(tagName + 
"#collection")) {
+                                               tagName = tagName + 
"#collection";
+                                               
uri.addTag(xmlStreamReader.getName().getLocalPart()
+                                                               + 
"#collection");
+                                       } else if (collections.contains(tagName 
+ "#set")) {
+                                               tagName = tagName + "#set";
+                                               
uri.addTag(xmlStreamReader.getName().getLocalPart()
+                                                               + "#set");
+                                       } else {
+                                               
uri.addTag(xmlStreamReader.getName().getLocalPart());
+                                       }
+                                       tagValue.setLength(0);
+                                       depthOfTagValue = depth;
+                               }
+                               case XMLStreamConstants.ATTRIBUTE: {
+                                       for (int i = 0; i < 
xmlStreamReader.getAttributeCount(); i++) {
+
+                                               attributes.put(tagName
+                                                               + "#property/"
+                                                               + 
xmlStreamReader.getAttributeName(i)
+                                                                               
.getLocalPart(), xmlStreamReader
+                                                               
.getAttributeValue(i));
+                                       }
+                                       break;
+                               }
+                               case XMLStreamConstants.END_ELEMENT: {
+                                       depth--;
+                                       break;
+                               }
+                               case XMLStreamConstants.END_DOCUMENT: {
+                                       modelProperties.add(new 
ModelProperty(tagName, tagValue
+                                                       .toString().trim()));
+                                       if (!attributes.isEmpty()) {
+                                               for (Map.Entry<String, String> 
e : attributes
+                                                               .entrySet()) {
+                                                       modelProperties.add(new 
ModelProperty(e.getKey(), e
+                                                                       
.getValue()));
+                                               }
+                                               attributes.clear();
+                                       }
+                                       return modelProperties;
+                               }
+                               }
+                       }
+               } catch (XMLStreamException e) {
+                       throw new IOException(":" + e.toString());
+               } finally {
+                       if (xmlStreamReader != null) {
+                               try {
+                                       xmlStreamReader.close();
+                               } catch (XMLStreamException e) {
+                                       e.printStackTrace();
+                               }
+                       }
+                       try {
+                               inputStream.close();
+                       } catch (IOException e) {
+
+                       }
+               }
+       }
+   /**
+    * Class for storing information about URIs.
+    */
+   private static class Uri
+   {
+
+       List<String> uris;
+
+       Uri( String baseUri )
+       {
+           uris = new LinkedList<String>();
+           uris.add( baseUri );
+       }
+
+       String getUriFor( String tag, int depth )
+       {
+           setUrisToDepth( depth );
+           StringBuffer sb = new StringBuffer();
+           for ( String tagName : uris )
+           {
+               sb.append( tagName ).append( "/" );
+           }
+           sb.append( tag );
+           return sb.toString();
+       }
+
+       void addTag( String tag )
+       {
+           uris.add( tag );
+       }
+
+       void setUrisToDepth( int depth )
+       {
+           uris = new LinkedList<String>( uris.subList( 0, depth ) );
+       }
+   }    
 }

Modified: 
maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/interpolator/DomainModel.java
URL: 
http://svn.apache.org/viewvc/maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/interpolator/DomainModel.java?rev=764626&r1=764625&r2=764626&view=diff
==============================================================================
--- 
maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/interpolator/DomainModel.java
 (original)
+++ 
maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/interpolator/DomainModel.java
 Mon Apr 13 21:43:52 2009
@@ -4,8 +4,6 @@
 import java.util.List;
 
 public interface DomainModel {
-       
-    List<ModelProperty> getModelProperties() throws IOException;
     
     boolean isMostSpecialized();
     


Reply via email to