You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by rf...@apache.org on 2012/01/21 12:31:27 UTC

svn commit: r1234303 - /maven/enforcer/trunk/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/DependencyConvergence.java

Author: rfscholte
Date: Sat Jan 21 11:31:26 2012
New Revision: 1234303

URL: http://svn.apache.org/viewvc?rev=1234303&view=rev
Log:
format code, no changes

Modified:
    maven/enforcer/trunk/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/DependencyConvergence.java

Modified: maven/enforcer/trunk/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/DependencyConvergence.java
URL: http://svn.apache.org/viewvc/maven/enforcer/trunk/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/DependencyConvergence.java?rev=1234303&r1=1234302&r2=1234303&view=diff
==============================================================================
--- maven/enforcer/trunk/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/DependencyConvergence.java (original)
+++ maven/enforcer/trunk/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/DependencyConvergence.java Sat Jan 21 11:31:26 2012
@@ -1,4 +1,5 @@
 package org.apache.maven.plugins.enforcer;
+
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
@@ -43,148 +44,183 @@ import org.codehaus.plexus.i18n.I18N;
 /**
  * @author <a href="mailto:rex@e-hoffman.org">Rex Hoffman</a>
  */
-public class DependencyConvergence implements EnforcerRule {
-
-  private static Log log;
-
-  private static I18N i18n;
-  
-  /**
-   * Uses the {@link EnforcerRuleHelper} to populate the values of the {@link DependencyTreeBuilder#buildDependencyTree(MavenProject, ArtifactRepository, ArtifactFactory, ArtifactMetadataSource, ArtifactFilter, ArtifactCollector)}
-   * factory method. <br/>
-   * 
-   * This method simply exists to hide all the ugly lookup that the {@link EnforcerRuleHelper} has to do.
-   * 
-   * @param helper
-   * @return a Dependency Node which is the root of the project's dependency tree
-   * @throws EnforcerRuleException
-   */
-  private DependencyNode getNode(EnforcerRuleHelper helper) throws EnforcerRuleException {
-    try {
-      MavenProject           project        = (MavenProject) helper.evaluate("${project}");
-      DependencyTreeBuilder  dependencyTreeBuilder = (DependencyTreeBuilder) helper.getComponent(DependencyTreeBuilder.class);
-      ArtifactRepository     repository     = (ArtifactRepository)helper.evaluate("${localRepository}");
-      ArtifactFactory        factory        = (ArtifactFactory)helper.getComponent(ArtifactFactory.class);
-      ArtifactMetadataSource metadataSource = (ArtifactMetadataSource)helper.getComponent(ArtifactMetadataSource.class);
-      ArtifactCollector      collector      = (ArtifactCollector)helper.getComponent(ArtifactCollector.class);
-      ArtifactFilter         filter         = null; //we need to evaluate all scopes
-      DependencyNode         node           = dependencyTreeBuilder.buildDependencyTree(project, repository, factory, metadataSource, filter, collector);
-      return node;
-    } catch (ExpressionEvaluationException e) {
-      throw new EnforcerRuleException("Unable to lookup an expression " + e.getLocalizedMessage(), e);
-    } catch (ComponentLookupException e){
-      throw new EnforcerRuleException("Unable to lookup a component " + e.getLocalizedMessage(), e);
-    } catch (DependencyTreeBuilderException e){
-      throw new EnforcerRuleException("Could not build dependency tree " + e.getLocalizedMessage(), e);
-    }
-  }
-  
-  public void execute(EnforcerRuleHelper helper) throws EnforcerRuleException {
-    if (log == null){
-      log = helper.getLog();
-    } 
-    try {
-      if (i18n == null){
-        i18n = (I18N) helper.getComponent(I18N.class);
-      }
-      DependencyNode node = getNode(helper);
-      MavenProject project = (MavenProject) helper.evaluate("${project}");
-      DependencyVersionMap visitor = new DependencyVersionMap(project.getArtifact().isRelease(), log);
-      node.accept(visitor);
-      List<CharSequence> errorMsgs = new ArrayList<CharSequence>();
-      errorMsgs.addAll(getConvergenceErrorMsgs(visitor.getConflictedVersionNumbers()));
-      for (CharSequence errorMsg : errorMsgs) {
-        log.error(errorMsg);
-      }
-      if (errorMsgs.size() > 0) {
-        throw new EnforcerRuleException("Failed while enforcing releasability the error(s) are " + errorMsgs);
-      }
-    } catch (ExpressionEvaluationException e) {
-      throw new EnforcerRuleException("Unable to lookup an expression " + e.getLocalizedMessage(), e);
-    } catch (ComponentLookupException e){
-      throw new EnforcerRuleException("Unable to lookup a component " + e.getLocalizedMessage(), e);
-    } catch (Exception e){
-      throw new EnforcerRuleException(e.getLocalizedMessage(), e);
-    }
-  }
-
-  private String getFullArtifactName(Artifact artifact){
-    return artifact.getGroupId() + ":" + artifact.getArtifactId() +":"+ artifact.getVersion();
-  }
-  
-  private StringBuilder buildTreeString(DependencyNode node) {
-    List<String> loc = new ArrayList<String>();
-    DependencyNode currentNode = node;
-    while (currentNode != null) {
-      loc.add(getFullArtifactName(currentNode.getArtifact()));
-      currentNode = currentNode.getParent();
-    }
-    Collections.reverse(loc);
-    StringBuilder builder = new StringBuilder();
-    for (int i = 0; i < loc.size(); i++) {
-      for (int j = 0; j < i; j++){
-        builder.append("  ");
-      }
-      builder.append("+-"+loc.get(i));
-      builder.append("\n");
-    }
-    return builder;
-  }
-
-  private List<String> getConvergenceErrorMsgs(List<List<DependencyNode>> errors) {
-    List<String> errorMsgs = new ArrayList<String>();
-    for (List<DependencyNode> nodeList : errors){
-      errorMsgs.add(buildConvergenceErrorMsg(nodeList));
-    }
-    return errorMsgs;
-  }
-
-  private String buildConvergenceErrorMsg(List<DependencyNode> nodeList){
-    StringBuilder builder = new StringBuilder();
-    builder.append("\nDependency convergence error for "+getFullArtifactName(nodeList.get(0).getArtifact())+" paths to dependency are:\n");
-    if (nodeList.size() > 0){
-      builder.append(buildTreeString(nodeList.get(0)));
-    }
-    for (DependencyNode node: nodeList.subList(1,nodeList.size())){
-      builder.append("and\n");
-      builder.append(buildTreeString(node));
-    }
-    return builder.toString();
-  }
-  
-  /**
-   * If your rule is cacheable, you must return a unique id when parameters or
-   * conditions change that would cause the result to be different. Multiple
-   * cached results are stored based on their id.
-   * 
-   * The easiest way to do this is to return a hash computed from the values of
-   * your parameters.
-   * 
-   * If your rule is not cacheable, then the result here is not important, you
-   * may return anything.
-   */
-  public String getCacheId() {
-    return "";
-  }
-
-  /**
-   * This tells the system if the results are cacheable at all. Keep in mind
-   * that during forked builds and other things, a given rule may be executed
-   * more than once for the same project. This means that even things that
-   * change from project to project may still be cacheable in certain instances.
-   */
-  public boolean isCacheable() {
-    return false;
-  }
-
-  /**
-   * If the rule is cacheable and the same id is found in the cache, the stored
-   * results are passed to this method to allow double checking of the results.
-   * Most of the time this can be done by generating unique ids, but sometimes
-   * the results of objects returned by the helper need to be queried. You may
-   * for example, store certain objects in your rule and then query them later.
-   */
-  public boolean isResultValid(EnforcerRule arg0) {
-    return false;
-  }
-}
+public class DependencyConvergence
+    implements EnforcerRule
+{
+
+    private static Log log;
+
+    private static I18N i18n;
+
+    /**
+     * Uses the {@link EnforcerRuleHelper} to populate the values of the
+     * {@link DependencyTreeBuilder#buildDependencyTree(MavenProject, ArtifactRepository, ArtifactFactory, ArtifactMetadataSource, ArtifactFilter, ArtifactCollector)}
+     * factory method. <br/>
+     * This method simply exists to hide all the ugly lookup that the {@link EnforcerRuleHelper} has to do.
+     * 
+     * @param helper
+     * @return a Dependency Node which is the root of the project's dependency tree
+     * @throws EnforcerRuleException
+     */
+    private DependencyNode getNode( EnforcerRuleHelper helper )
+        throws EnforcerRuleException
+    {
+        try
+        {
+            MavenProject project = (MavenProject) helper.evaluate( "${project}" );
+            DependencyTreeBuilder dependencyTreeBuilder =
+                (DependencyTreeBuilder) helper.getComponent( DependencyTreeBuilder.class );
+            ArtifactRepository repository = (ArtifactRepository) helper.evaluate( "${localRepository}" );
+            ArtifactFactory factory = (ArtifactFactory) helper.getComponent( ArtifactFactory.class );
+            ArtifactMetadataSource metadataSource =
+                (ArtifactMetadataSource) helper.getComponent( ArtifactMetadataSource.class );
+            ArtifactCollector collector = (ArtifactCollector) helper.getComponent( ArtifactCollector.class );
+            ArtifactFilter filter = null; // we need to evaluate all scopes
+            DependencyNode node =
+                dependencyTreeBuilder.buildDependencyTree( project, repository, factory, metadataSource, filter,
+                                                           collector );
+            return node;
+        }
+        catch ( ExpressionEvaluationException e )
+        {
+            throw new EnforcerRuleException( "Unable to lookup an expression " + e.getLocalizedMessage(), e );
+        }
+        catch ( ComponentLookupException e )
+        {
+            throw new EnforcerRuleException( "Unable to lookup a component " + e.getLocalizedMessage(), e );
+        }
+        catch ( DependencyTreeBuilderException e )
+        {
+            throw new EnforcerRuleException( "Could not build dependency tree " + e.getLocalizedMessage(), e );
+        }
+    }
+
+    public void execute( EnforcerRuleHelper helper )
+        throws EnforcerRuleException
+    {
+        if ( log == null )
+        {
+            log = helper.getLog();
+        }
+        try
+        {
+            if ( i18n == null )
+            {
+                i18n = (I18N) helper.getComponent( I18N.class );
+            }
+            DependencyNode node = getNode( helper );
+            MavenProject project = (MavenProject) helper.evaluate( "${project}" );
+            DependencyVersionMap visitor = new DependencyVersionMap( project.getArtifact().isRelease(), log );
+            node.accept( visitor );
+            List<CharSequence> errorMsgs = new ArrayList<CharSequence>();
+            errorMsgs.addAll( getConvergenceErrorMsgs( visitor.getConflictedVersionNumbers() ) );
+            for ( CharSequence errorMsg : errorMsgs )
+            {
+                log.error( errorMsg );
+            }
+            if ( errorMsgs.size() > 0 )
+            {
+                throw new EnforcerRuleException( "Failed while enforcing releasability the error(s) are " + errorMsgs );
+            }
+        }
+        catch ( ExpressionEvaluationException e )
+        {
+            throw new EnforcerRuleException( "Unable to lookup an expression " + e.getLocalizedMessage(), e );
+        }
+        catch ( ComponentLookupException e )
+        {
+            throw new EnforcerRuleException( "Unable to lookup a component " + e.getLocalizedMessage(), e );
+        }
+        catch ( Exception e )
+        {
+            throw new EnforcerRuleException( e.getLocalizedMessage(), e );
+        }
+    }
+
+    private String getFullArtifactName( Artifact artifact )
+    {
+        return artifact.getGroupId() + ":" + artifact.getArtifactId() + ":" + artifact.getVersion();
+    }
+
+    private StringBuilder buildTreeString( DependencyNode node )
+    {
+        List<String> loc = new ArrayList<String>();
+        DependencyNode currentNode = node;
+        while ( currentNode != null )
+        {
+            loc.add( getFullArtifactName( currentNode.getArtifact() ) );
+            currentNode = currentNode.getParent();
+        }
+        Collections.reverse( loc );
+        StringBuilder builder = new StringBuilder();
+        for ( int i = 0; i < loc.size(); i++ )
+        {
+            for ( int j = 0; j < i; j++ )
+            {
+                builder.append( "  " );
+            }
+            builder.append( "+-" + loc.get( i ) );
+            builder.append( "\n" );
+        }
+        return builder;
+    }
+
+    private List<String> getConvergenceErrorMsgs( List<List<DependencyNode>> errors )
+    {
+        List<String> errorMsgs = new ArrayList<String>();
+        for ( List<DependencyNode> nodeList : errors )
+        {
+            errorMsgs.add( buildConvergenceErrorMsg( nodeList ) );
+        }
+        return errorMsgs;
+    }
+
+    private String buildConvergenceErrorMsg( List<DependencyNode> nodeList )
+    {
+        StringBuilder builder = new StringBuilder();
+        builder.append( "\nDependency convergence error for " + getFullArtifactName( nodeList.get( 0 ).getArtifact() )
+            + " paths to dependency are:\n" );
+        if ( nodeList.size() > 0 )
+        {
+            builder.append( buildTreeString( nodeList.get( 0 ) ) );
+        }
+        for ( DependencyNode node : nodeList.subList( 1, nodeList.size() ) )
+        {
+            builder.append( "and\n" );
+            builder.append( buildTreeString( node ) );
+        }
+        return builder.toString();
+    }
+
+    /**
+     * If your rule is cacheable, you must return a unique id when parameters or conditions change that would cause the
+     * result to be different. Multiple cached results are stored based on their id. The easiest way to do this is to
+     * return a hash computed from the values of your parameters. If your rule is not cacheable, then the result here is
+     * not important, you may return anything.
+     */
+    public String getCacheId()
+    {
+        return "";
+    }
+
+    /**
+     * This tells the system if the results are cacheable at all. Keep in mind that during forked builds and other
+     * things, a given rule may be executed more than once for the same project. This means that even things that change
+     * from project to project may still be cacheable in certain instances.
+     */
+    public boolean isCacheable()
+    {
+        return false;
+    }
+
+    /**
+     * If the rule is cacheable and the same id is found in the cache, the stored results are passed to this method to
+     * allow double checking of the results. Most of the time this can be done by generating unique ids, but sometimes
+     * the results of objects returned by the helper need to be queried. You may for example, store certain objects in
+     * your rule and then query them later.
+     */
+    public boolean isResultValid( EnforcerRule arg0 )
+    {
+        return false;
+    }
+}
\ No newline at end of file