You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by og...@apache.org on 2008/11/19 02:29:54 UTC

svn commit: r718833 - in /maven/mercury/trunk: mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/ mercury-util/src/main/java/org/apache/maven/mercury/util/event/ mercury-util/src/test/java/org/apache/maven/mercury/util/event/

Author: ogusakov
Date: Tue Nov 18 17:29:53 2008
New Revision: 718833

URL: http://svn.apache.org/viewvc?rev=718833&view=rev
Log:
http://jira.codehaus.org/browse/MERCURY-6

Added:
    maven/mercury/trunk/mercury-util/src/main/java/org/apache/maven/mercury/util/event/
    maven/mercury/trunk/mercury-util/src/main/java/org/apache/maven/mercury/util/event/AbstractMercuryEvent.java
    maven/mercury/trunk/mercury-util/src/main/java/org/apache/maven/mercury/util/event/MercuryEvent.java
    maven/mercury/trunk/mercury-util/src/main/java/org/apache/maven/mercury/util/event/MercuryEventListener.java
    maven/mercury/trunk/mercury-util/src/test/java/org/apache/maven/mercury/util/event/
Modified:
    maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/DependencyBuilder.java
    maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/DependencyTreeBuilder.java

Modified: maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/DependencyBuilder.java
URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/DependencyBuilder.java?rev=718833&r1=718832&r2=718833&view=diff
==============================================================================
--- maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/DependencyBuilder.java (original)
+++ maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/DependencyBuilder.java Tue Nov 18 17:29:53 2008
@@ -28,9 +28,26 @@
   public abstract MetadataTreeNode buildTree( ArtifactBasicMetadata startMD, ArtifactScopeEnum scope )
   throws MetadataTreeException;
 
-  //-----------------------------------------------------
+  /**
+   * hard to believe, but this actually resolves the conflicts, removing all duplicate GAVs from the tree
+   * 
+   * @param root the tree to resolve conflicts on
+   * @return list of resolved GAVs
+   * @throws MetadataTreeException
+   */
   public abstract List<ArtifactMetadata> resolveConflicts( MetadataTreeNode root )
   throws MetadataTreeException;
+
+  /**
+   *  this one resolves the conflicts, removing all duplicate GAVs from the tree and
+   *  returning a copy of the resulting subtree - original tree should be intact
+   * 
+   * @param root the tree to resolve conflicts on
+   * @return resolved subtree
+   * @throws MetadataTreeException
+   */
+  public abstract MetadataTreeNode resolveConflictsAsTree( MetadataTreeNode root )
+  throws MetadataTreeException;
   //-----------------------------------------------------
   //-----------------------------------------------------
 

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=718833&r1=718832&r2=718833&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 Nov 18 17:29:53 2008
@@ -327,6 +327,29 @@
     
   }
   //-----------------------------------------------------
+  public MetadataTreeNode resolveConflictsAsTree( MetadataTreeNode root )
+  throws MetadataTreeException
+  {
+    if( root == null )
+      throw new MetadataTreeException(_lang.getMessage( "empty.tree" ));
+    
+    try
+    {
+      DefaultSatSolver solver = new DefaultSatSolver( root );
+      
+      solver.applyPolicies( getComparators() );
+
+      MetadataTreeNode res = solver.solveAsTree();
+      
+      return res;
+    }
+    catch (SatException e)
+    {
+      throw new MetadataTreeException(e);
+    }
+    
+  }
+  //-----------------------------------------------------
   private List<Comparator<MetadataTreeNode>> getComparators()
   {
     if( Util.isEmpty( _comparators ) )

Added: maven/mercury/trunk/mercury-util/src/main/java/org/apache/maven/mercury/util/event/AbstractMercuryEvent.java
URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-util/src/main/java/org/apache/maven/mercury/util/event/AbstractMercuryEvent.java?rev=718833&view=auto
==============================================================================
--- maven/mercury/trunk/mercury-util/src/main/java/org/apache/maven/mercury/util/event/AbstractMercuryEvent.java (added)
+++ maven/mercury/trunk/mercury-util/src/main/java/org/apache/maven/mercury/util/event/AbstractMercuryEvent.java Tue Nov 18 17:29:53 2008
@@ -0,0 +1,69 @@
+package org.apache.maven.mercury.util.event;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ *
+ *
+ * @author Oleg Gusakov
+ * @version $Id$
+ *
+ */
+public abstract class AbstractMercuryEvent
+    implements MercuryEvent
+{
+  String tag;
+  long start;
+  long duration;
+  Map<String, Object> payload;
+
+  public long getDuration()
+  {
+    return duration;
+  }
+
+  public Map<String, Object> getPayload()
+  {
+    return null;
+  }
+
+  public long getStart()
+  {
+    return start;
+  }
+
+  public String getTag()
+  {
+    return tag;
+  }
+
+  public Object getPayload( String name )
+  {
+    return payload == null ? null : payload.get( name );
+  }
+
+  public void setPayload( Map<String, Object> payload )
+  {
+    this.payload = payload;
+  }
+
+  public void setPayload( String name, Object value )
+  {
+    if( payload == null )
+      payload = new HashMap<String, Object>(4);
+    
+    payload.put( name, value );
+  }
+
+  public void start()
+  {
+    this.start = System.currentTimeMillis();
+  }
+
+  public void stop()
+  {
+    duration = System.currentTimeMillis() - start;
+  }
+
+}

Added: maven/mercury/trunk/mercury-util/src/main/java/org/apache/maven/mercury/util/event/MercuryEvent.java
URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-util/src/main/java/org/apache/maven/mercury/util/event/MercuryEvent.java?rev=718833&view=auto
==============================================================================
--- maven/mercury/trunk/mercury-util/src/main/java/org/apache/maven/mercury/util/event/MercuryEvent.java (added)
+++ maven/mercury/trunk/mercury-util/src/main/java/org/apache/maven/mercury/util/event/MercuryEvent.java Tue Nov 18 17:29:53 2008
@@ -0,0 +1,73 @@
+package org.apache.maven.mercury.util.event;
+
+import java.util.Map;
+
+/**
+ *
+ *
+ * @author Oleg Gusakov
+ * @version $Id$
+ *
+ */
+public interface MercuryEvent
+{
+  /**
+   * aggregate tag of this event. Used to trace event propagation in the system 
+   * 
+   * @return
+   */
+  String getTag();
+  
+  /**
+   * get the event start time as UTC timestapm
+   * 
+   * @return start time as UTC timestamp
+   */
+  long getStart();
+  
+  /**
+   * start the event
+   */
+  void start();
+  
+  /**
+   * stop the event and calculate the duration
+   */
+  void stop();
+  
+  /**
+   * duration of this event in millis
+   * 
+   * @return duration of this event
+   */
+  long getDuration();
+  
+  /**
+   * event's payload
+   *  
+   * @return results, associated with this event
+   */
+  Map<String,Object> getPayload();
+  
+  /**
+   * get one of payload values
+   *  
+   * @param name element name  
+   * @return results, associated with this event
+   */
+  Object getPayload( String name );
+  
+  /**
+   * set the whole payload
+   * @param payload
+   */
+  void setPayload( Map<String,Object> payload );
+  
+  /**
+   * set the whole payload
+   * @param name
+   * @param value
+   */
+  void setPayload( String name, Object value );
+  
+}

Added: maven/mercury/trunk/mercury-util/src/main/java/org/apache/maven/mercury/util/event/MercuryEventListener.java
URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-util/src/main/java/org/apache/maven/mercury/util/event/MercuryEventListener.java?rev=718833&view=auto
==============================================================================
--- maven/mercury/trunk/mercury-util/src/main/java/org/apache/maven/mercury/util/event/MercuryEventListener.java (added)
+++ maven/mercury/trunk/mercury-util/src/main/java/org/apache/maven/mercury/util/event/MercuryEventListener.java Tue Nov 18 17:29:53 2008
@@ -0,0 +1,13 @@
+package org.apache.maven.mercury.util.event;
+
+/**
+ *
+ *
+ * @author Oleg Gusakov
+ * @version $Id$
+ *
+ */
+public interface MercuryEventListener
+{
+  void fire( MercuryEvent event );
+}