Author: ogusakov
Date: Tue Mar 24 04:36:08 2009
New Revision: 757659

URL: http://svn.apache.org/viewvc?rev=757659&view=rev
Log:
[MERCURY-105] fixed precision error in objective function, added tree 
serialization for debugging

Added:
    
maven/mercury/trunk/mercury-artifact/src/test/java/org/apache/maven/mercury/artifact/ArtifactMetadataTest.java
   (with props)
    
maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/DependencyTreeDumper.java
   (with props)
    maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/mdo/
    maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/mdo/forest.mdo   
(with props)
Modified:
    
maven/mercury/trunk/mercury-artifact/src/main/java/org/apache/maven/mercury/artifact/ArtifactMetadata.java
    maven/mercury/trunk/mercury-md/mercury-md-sat/pom.xml
    
maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/DependencyTreeBuilder.java
    
maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/MetadataTreeNode.java
    
maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/sat/DefaultSatSolver.java
    maven/mercury/trunk/pom.xml

Modified: 
maven/mercury/trunk/mercury-artifact/src/main/java/org/apache/maven/mercury/artifact/ArtifactMetadata.java
URL: 
http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-artifact/src/main/java/org/apache/maven/mercury/artifact/ArtifactMetadata.java?rev=757659&r1=757658&r2=757659&view=diff
==============================================================================
--- 
maven/mercury/trunk/mercury-artifact/src/main/java/org/apache/maven/mercury/artifact/ArtifactMetadata.java
 (original)
+++ 
maven/mercury/trunk/mercury-artifact/src/main/java/org/apache/maven/mercury/artifact/ArtifactMetadata.java
 Tue Mar 24 04:36:08 2009
@@ -211,7 +211,7 @@
 
         if ( count > 4 )
         {
-            this.type = nullify( tokens[4] );
+            setType( nullify( tokens[4] ) );
         }
 
         if ( this.type == null || this.type.length() < 1 )
@@ -478,7 +478,13 @@
 
     public void setType( String type )
     {
-        this.type = type;
+        if( "test-jar".equals( type ) )
+        {
+            setClassifier( "tests" );
+            setType( "jar" );
+        }
+        else
+            this.type = type;
     }
 
     public Map<String, String> getAttributes()

Added: 
maven/mercury/trunk/mercury-artifact/src/test/java/org/apache/maven/mercury/artifact/ArtifactMetadataTest.java
URL: 
http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-artifact/src/test/java/org/apache/maven/mercury/artifact/ArtifactMetadataTest.java?rev=757659&view=auto
==============================================================================
--- 
maven/mercury/trunk/mercury-artifact/src/test/java/org/apache/maven/mercury/artifact/ArtifactMetadataTest.java
 (added)
+++ 
maven/mercury/trunk/mercury-artifact/src/test/java/org/apache/maven/mercury/artifact/ArtifactMetadataTest.java
 Tue Mar 24 04:36:08 2009
@@ -0,0 +1,42 @@
+/*
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.apache.maven.mercury.artifact;
+
+import junit.framework.TestCase;
+
+/**
+ *
+ *
+ * @author Oleg Gusakov
+ * @version $Id$
+ *
+ */
+public class ArtifactMetadataTest
+    extends TestCase
+{
+    public void testTestJar()
+    {
+        ArtifactMetadata md = new ArtifactMetadata("a:a:1::test-jar");
+        
+        assertEquals( "tests", md.getClassifier() );
+        
+        assertEquals( "jar", md.getType() );
+    }
+}

Propchange: 
maven/mercury/trunk/mercury-artifact/src/test/java/org/apache/maven/mercury/artifact/ArtifactMetadataTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
maven/mercury/trunk/mercury-artifact/src/test/java/org/apache/maven/mercury/artifact/ArtifactMetadataTest.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Modified: maven/mercury/trunk/mercury-md/mercury-md-sat/pom.xml
URL: 
http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-md/mercury-md-sat/pom.xml?rev=757659&r1=757658&r2=757659&view=diff
==============================================================================
--- maven/mercury/trunk/mercury-md/mercury-md-sat/pom.xml (original)
+++ maven/mercury/trunk/mercury-md/mercury-md-sat/pom.xml Tue Mar 24 04:36:08 
2009
@@ -93,6 +93,30 @@
           </execution>
         </executions>
       </plugin>
+
+      <plugin>
+        <groupId>org.codehaus.modello</groupId>
+        <artifactId>modello-maven-plugin</artifactId>
+        <version>${modello.version}</version>
+        <configuration>
+          <version>1.0.0</version>
+          <useJava5>true</useJava5>
+          <models>
+            <model>src/main/mdo/forest.mdo</model>
+          </models>
+        </configuration>
+        <executions>
+          <execution>
+            <id>standard</id>
+            <goals>
+              <goal>java</goal>
+              <goal>xpp3-reader</goal>
+              <goal>xpp3-writer</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+
     </plugins>
   </build>
 </project>
\ No newline at end of file

Modified: 
maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/DependencyTreeBuilder.java
URL: 
http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/DependencyTreeBuilder.java?rev=757659&r1=757658&r2=757659&view=diff
==============================================================================
--- 
maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/DependencyTreeBuilder.java
 (original)
+++ 
maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/DependencyTreeBuilder.java
 Tue Mar 24 04:36:08 2009
@@ -61,6 +61,14 @@
     public static final ArtifactMetadata DUMMY_ROOT = new ArtifactMetadata( 
"__fake:__fake:1.0" );
 
     private static final Language LANG = new DefaultLanguage( 
DependencyTreeBuilder.class );
+    
+    public static final String SYSTEM_PROPERTY_DUMP_DEPENDENCY_TREE = 
"mercury.dump.tree";
+    
+    private static final String _depTreeDumpFileName = System.getProperty( 
SYSTEM_PROPERTY_DUMP_DEPENDENCY_TREE );
+
+    private static final boolean _dumpDepTree = _depTreeDumpFileName != null;
+    
+    private static final DependencyTreeDumper _dumper = _dumpDepTree ? new 
DependencyTreeDumper(_depTreeDumpFileName ) : null;
 
     private static final IMercuryLogger LOG = MercuryLoggerManager.getLogger( 
DependencyTreeBuilder.class );
 
@@ -177,7 +185,13 @@
         {
             ArtifactMetadata bmd = startMDs.get( 0 );
             MetadataTreeNode rooty = buildTree( bmd, scope );
+
+
             List<ArtifactMetadata> res = resolveConflicts( rooty );
+
+if(_dumpDepTree )
+    _dumper.dump( scope, artifacts, inclusions, exclusions, rooty, res );
+
             return res;
         }
 
@@ -193,6 +207,9 @@
            
             for ( ArtifactMetadata bmd : startMDs )
             {
+                if( scope != null && !scope.encloses( bmd.getArtifactScope() ) 
)
+                    continue;
+                
                 try
                 {
                     if( ! DUMMY_ROOT.allowDependency( bmd ) )
@@ -243,12 +260,15 @@
             DUMMY_ROOT.setDependencies( startMDs );
             root = buildTree( DUMMY_ROOT, scope );
         }
-        
+
         List<ArtifactMetadata> res = resolveConflicts( root );
 
         if( res != null )
             res.remove( DUMMY_ROOT );
 
+if(_dumpDepTree )
+    _dumper.dump( scope, artifacts, inclusions, exclusions, root, res );
+
         return res;
     }
     // -----------------------------------------------------

Added: 
maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/DependencyTreeDumper.java
URL: 
http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/DependencyTreeDumper.java?rev=757659&view=auto
==============================================================================
--- 
maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/DependencyTreeDumper.java
 (added)
+++ 
maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/DependencyTreeDumper.java
 Tue Mar 24 04:36:08 2009
@@ -0,0 +1,285 @@
+/*
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/
+
+package org.apache.maven.mercury.metadata;
+
+import java.io.BufferedOutputStream;
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.io.Writer;
+import java.util.List;
+import java.util.TreeSet;
+
+import org.apache.maven.mercury.artifact.ArtifactExclusionList;
+import org.apache.maven.mercury.artifact.ArtifactInclusionList;
+import org.apache.maven.mercury.artifact.ArtifactMetadata;
+import org.apache.maven.mercury.artifact.ArtifactQueryList;
+import org.apache.maven.mercury.artifact.ArtifactScopeEnum;
+import org.apache.maven.mercury.metadata.forest.Forest;
+import org.apache.maven.mercury.metadata.forest.Node;
+import org.apache.maven.mercury.metadata.forest.Tree;
+import org.apache.maven.mercury.metadata.forest.io.xpp3.ForrestXpp3Reader;
+import org.apache.maven.mercury.metadata.forest.io.xpp3.ForrestXpp3Writer;
+import org.apache.maven.mercury.util.TimeUtil;
+
+/**
+ *
+ *
+ * @author Oleg Gusakov
+ * @version $Id$
+ *
+ */
+public class DependencyTreeDumper
+{
+    String _dumpFileName;
+    File _dumpFile;
+    Writer _wr;
+    
+    public DependencyTreeDumper( String name )
+    {
+        _dumpFileName = name;
+    }
+    
+    /**
+     * this one does not work because the writer runs out of stack memory on
+     * huge trees
+     * 
+     * @param scope
+     * @param artifacts
+     * @param inclusions
+     * @param exclusions
+     * @param dirty
+     * @param result
+     * @throws MetadataTreeException
+     */
+    public synchronized void realDump( ArtifactScopeEnum   scope
+                      , ArtifactQueryList artifacts
+                      , ArtifactInclusionList inclusions
+                      , ArtifactExclusionList exclusions
+                      , MetadataTreeNode dirty
+                      , List<ArtifactMetadata> result
+                    )
+    throws MetadataTreeException
+    {
+        try
+        {
+            if( artifacts == null || artifacts.getMetadataList() == null  )
+                return;
+            
+            Forest forest;
+            if( _dumpFile.exists() )
+            {
+                forest = new ForrestXpp3Reader().read( new 
FileInputStream(_dumpFile) );
+            }
+            else
+                forest = new Forest();
+            
+            Tree tree = new Tree();
+            
+            forest.addTree( tree );
+            
+            tree.setScope( scope == null ? "null" : scope.toString() );
+            
+            tree.setTimestamp( TimeUtil.getUTCTimestamp() );
+            
+            for( ArtifactMetadata md : artifacts.getMetadataList() )
+            {
+                Node n = new Node();
+                n.setName( md.toString() );
+                n.setScope( md.getScope() );
+                tree.addRequest( n );
+            }
+            
+            if( inclusions != null )
+                for( ArtifactMetadata md : inclusions.getMetadataList() )
+                {
+                    Node n = new Node();
+                    n.setName( md.toString() );
+                    n.setScope( md.getScope() );
+                    tree.addInclusion( n );
+                    
+                }
+                    
+            if( exclusions != null )
+                for( ArtifactMetadata md : exclusions.getMetadataList() )
+                {
+                    Node n = new Node();
+                    n.setName( md.toString() );
+                    n.setScope( md.getScope() );
+                    tree.addExclusion( n );
+                    
+                }
+            
+            Node root = createNode( dirty, 0L );
+            
+            tree.addDirtyTree( root );
+            
+            if( result != null )
+                for( ArtifactMetadata md : result )
+                {
+                    Node n = new Node();
+                    n.setName( md.toString() );
+                    n.setScope( md.getScope() );
+                    tree.addResult( n );
+                }
+            
+            new ForrestXpp3Writer().write( new FileWriter(_dumpFile), forest );
+        }
+        catch (Exception e)
+        {
+            throw new MetadataTreeException(e);
+        }
+    }
+    
+    public synchronized void dump( ArtifactScopeEnum   scope
+                      , ArtifactQueryList artifacts
+                      , ArtifactInclusionList inclusions
+                      , ArtifactExclusionList exclusions
+                      , MetadataTreeNode dirty
+                      , List<ArtifactMetadata> result
+                    )
+    throws MetadataTreeException
+    {
+        try
+        {
+            _dumpFile = new 
File(_dumpFileName+"-"+TimeUtil.getUTCTimestamp()+"-"+System.currentTimeMillis()+".xml"
 );
+            _wr = new FileWriter(_dumpFile);
+            _wr.write( "<tree>\n" );
+        }
+        catch ( IOException e )
+        {
+            throw new MetadataTreeException(e);
+        }
+        try
+        {
+            if( artifacts != null && artifacts.getMetadataList() != null  )
+            {
+                if( scope != null )
+                    _wr.write( "<scope>"+scope+"</scope>\n" );
+                
+                _wr.write( "<timestamp>"+ TimeUtil.getUTCTimestamp() 
+"</timestamp>\n" );
+                
+                _wr.write( "<request>\n" );
+                for( ArtifactMetadata md : artifacts.getMetadataList() )
+                {
+                    _wr.write( "  <node 
scope='"+md.getScope()+"'>"+md.toString()+"</node>\n" );
+                }
+                _wr.write( "</request>\n" );
+                
+                if( inclusions != null )
+                {
+                    _wr.write( "<inclusions>\n" );
+                    for( ArtifactMetadata md : inclusions.getMetadataList() )
+                    {
+                        _wr.write( "  
<inclusion>"+md.toString()+"</inclusion>\n" );
+                    }
+                    _wr.write( "</inclusions>\n" );
+                }
+                        
+                if( exclusions != null )
+                {
+                    _wr.write( "<exclusions>\n" );
+                    for( ArtifactMetadata md : exclusions.getMetadataList() )
+                    {
+                        _wr.write( "  
<exclusion>"+md.toString()+"</exclusion>\n" );
+                    }
+                    _wr.write( "</exclusions>\n" );
+                }
+                
+                _wr.write( "<source>\n" );
+                showNode( dirty, 0L );
+                _wr.write( "</source>\n" );
+                
+                if( result != null )
+                {
+                    TreeSet<String> ts = new TreeSet<String>();
+                    for( ArtifactMetadata md : result )
+                        ts.add( md.toString() );
+                        
+                    _wr.write( "<result>\n" );
+                    for( String name : ts )
+                    {
+                        _wr.write( "  <node>"+name+"</node>\n" );
+                    }
+                    _wr.write( "</result>\n" );
+                }
+                
+            }
+        }
+        catch (Exception e)
+        {
+            throw new MetadataTreeException(e);
+        }
+        finally
+        {
+            if( _wr != null )
+                try { _wr.write( "</tree>\n" );_wr.flush(); _wr.close(); } 
catch( Exception ee ) {}
+                
+            _wr = null;
+        }
+    }
+    
+    private void showNode( MetadataTreeNode mtn, long level )
+    throws IOException
+    {
+        if( mtn == null )
+            return;
+        
+        ArtifactMetadata md = mtn.getMd();
+        for( int i=0; i<level; i++ )
+            _wr.write( "  " );
+            
+        _wr.write( "  <node level='"+level+"'>"+md.toString()+"</node>\n" );
+        
+        if( mtn.hasChildren() )
+        {
+            _wr.write( "  <kids>\n" );
+            for( MetadataTreeNode kid : mtn.getChildren() )
+                showNode( kid, level+1 );
+            _wr.write( "  </kids>\n" );
+        }
+    }
+    
+    private static Node createNode( MetadataTreeNode mtn, long level )
+    {
+        if( mtn == null )
+            return null;
+        
+        Node n = new Node();
+        
+        ArtifactMetadata md = mtn.getMd();
+        
+        n.setName( md.toString() );
+        
+        n.setLevel( level );
+        
+        if( mtn.hasChildren() )
+        {
+            for( MetadataTreeNode kid : mtn.getChildren() )
+                n.addChildren( createNode( kid, level+1 ) );
+        }
+        
+        return n;
+
+    }
+}

Propchange: 
maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/DependencyTreeDumper.java
------------------------------------------------------------------------------
    svn:mergeinfo = 

Modified: 
maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/MetadataTreeNode.java
URL: 
http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/MetadataTreeNode.java?rev=757659&r1=757658&r2=757659&view=diff
==============================================================================
--- 
maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/MetadataTreeNode.java
 (original)
+++ 
maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/MetadataTreeNode.java
 Tue Mar 24 04:36:08 2009
@@ -298,10 +298,15 @@
     public static final void showNode( MetadataTreeNode n, int level, Writer 
wr )
         throws IOException
     {
+        if( n == null )
+        {
+            wr.write( "null node" );
+            return;
+        }
         for ( int i = 0; i < level; i++ )
             wr.write( "  " );
 
-        wr.write( level + "." + n.getMd() + "\n" );
+        wr.write( level + " " + n.getMd() + "\n" );
 
         if ( n.hasChildren() )
         {

Modified: 
maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/sat/DefaultSatSolver.java
URL: 
http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/sat/DefaultSatSolver.java?rev=757659&r1=757658&r2=757659&view=diff
==============================================================================
--- 
maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/sat/DefaultSatSolver.java
 (original)
+++ 
maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/sat/DefaultSatSolver.java
 Tue Mar 24 04:36:08 2009
@@ -67,6 +67,8 @@
   protected MetadataTreeNode _root;
   
   protected EventManager _eventManager;
+
+  public static final BigInteger TWO = new BigInteger("2");
   
   protected static final Comparator<MetadataTreeNode> gaComparator = new 
MetadataTreeNodeGAComparator();
   //-----------------------------------------------------------------------
@@ -192,9 +194,9 @@
         {
           vars.push( varLiteral );
           
-          long cf = (long)Math.pow( 2, count++ );
+          BigInteger cf = TWO.pow( count++ );
           
-          coeffs.push( BigInteger.valueOf( cf ) );
+          coeffs.push( cf );
 
 if( LOG.isDebugEnabled() )
     LOG.debug( "    "+cf+" x"+var.getLiteral() );

Added: maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/mdo/forest.mdo
URL: 
http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/mdo/forest.mdo?rev=757659&view=auto
==============================================================================
--- maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/mdo/forest.mdo 
(added)
+++ maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/mdo/forest.mdo Tue 
Mar 24 04:36:08 2009
@@ -0,0 +1,153 @@
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+
+<model>
+  <id>forest</id>
+  
+  <name>Forrest</name>
+  
+  <defaults>
+    <default>
+      <key>package</key>
+      <value>org.apache.maven.mercury.metadata.forest</value>
+    </default>
+  </defaults>
+  
+  <classes>
+
+    <class rootElement="true">
+      <name>Forest</name>
+      <version>1.0.0</version>
+      <fields>
+
+        <field>
+          <name>trees</name>
+          <version>1.0.0</version>
+          <association>
+            <type>Tree</type>
+            <multiplicity>*</multiplicity>
+          </association>
+        </field>
+
+      </fields>
+   </class>
+
+    <class>
+      <name>Tree</name>
+      <version>1.0.0</version>
+      <fields>
+
+        <field>
+          <name>timestamp</name>
+          <version>1.0.0</version>
+          <type>String</type>
+        </field>
+
+        <field>
+          <name>scope</name>
+          <version>1.0.0</version>
+          <type>String</type>
+        </field>
+        
+        <field>
+          <name>request</name>
+          <version>1.0.0</version>
+          <association>
+            <type>Node</type>
+            <multiplicity>*</multiplicity>
+          </association>
+        </field>
+        
+        <field>
+          <name>inclusions</name>
+          <version>1.0.0</version>
+          <association>
+            <type>Node</type>
+            <multiplicity>*</multiplicity>
+          </association>
+        </field>
+        
+        <field>
+          <name>exclusions</name>
+          <version>1.0.0</version>
+          <association>
+            <type>Node</type>
+            <multiplicity>*</multiplicity>
+          </association>
+        </field>
+        
+        <field>
+          <name>dirtyTree</name>
+          <version>1.0.0</version>
+          <association>
+            <type>Node</type>
+            <multiplicity>*</multiplicity>
+          </association>
+        </field>
+         
+        <field>
+          <name>result</name>
+          <version>1.0.0</version>
+          <association>
+            <type>Node</type>
+            <multiplicity>*</multiplicity>
+          </association>
+        </field>
+
+      </fields>
+   </class>
+
+    <class>
+      <name>Node</name>
+      <version>1.0.0</version>
+
+      <fields>
+
+        <field>
+          <name>name</name>
+          <version>1.0.0</version>
+          <type>String</type>
+        </field>
+
+        <field>
+          <name>scope</name>
+          <version>1.0.0</version>
+          <type>String</type>
+        </field>
+
+        <field>
+          <name>level</name>
+          <version>1.0.0</version>
+          <type>long</type>
+        </field>
+         
+        <field>
+          <name>children</name>
+          <version>1.0.0</version>
+          <association>
+            <type>Node</type>
+            <multiplicity>*</multiplicity>
+          </association>
+        </field>
+
+      </fields>
+    </class>
+
+  </classes>
+</model>

Propchange: 
maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/mdo/forest.mdo
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/mdo/forest.mdo
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Modified: maven/mercury/trunk/pom.xml
URL: 
http://svn.apache.org/viewvc/maven/mercury/trunk/pom.xml?rev=757659&r1=757658&r2=757659&view=diff
==============================================================================
--- maven/mercury/trunk/pom.xml (original)
+++ maven/mercury/trunk/pom.xml Tue Mar 24 04:36:08 2009
@@ -102,6 +102,7 @@
            Never use in Mercury modules because Mercury does not depend on 
Maven 
     -->
     <maven.version>3.0-SNAPSHOT</maven.version>
+    <modello.version>1.0.1</modello.version>
 
     <!-- mercury-wagon -->
     <wagon.provider.api.version>1.0-beta-4</wagon.provider.api.version>


Reply via email to