mirror of https://github.com/apache/archiva.git
[MRM-560] Dependency Tree causes an Exception.
Prevented complete collapse of DependencyTree tab when an exception occurs. Provide more details if there was a problem creating the graph. git-svn-id: https://svn.apache.org/repos/asf/maven/archiva/trunk@588808 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
40001e82b1
commit
1b44cd6cc1
|
@ -20,6 +20,7 @@ package org.apache.maven.archiva.web.tags;
|
|||
*/
|
||||
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.apache.maven.archiva.common.ArchivaException;
|
||||
import org.apache.maven.archiva.dependency.DependencyGraphFactory;
|
||||
import org.apache.maven.archiva.dependency.graph.DependencyGraph;
|
||||
import org.apache.maven.archiva.dependency.graph.DependencyGraphBuilder;
|
||||
|
@ -31,6 +32,7 @@ import org.apache.maven.archiva.dependency.graph.walk.DependencyGraphWalker;
|
|||
import org.apache.maven.archiva.dependency.graph.walk.WalkDepthFirstSearch;
|
||||
import org.apache.maven.archiva.model.ArtifactReference;
|
||||
import org.apache.maven.archiva.model.DependencyScope;
|
||||
import org.apache.maven.archiva.model.Keys;
|
||||
import org.apache.maven.archiva.model.VersionedReference;
|
||||
import org.codehaus.plexus.logging.AbstractLogEnabled;
|
||||
import org.codehaus.plexus.personality.plexus.lifecycle.phase.Initializable;
|
||||
|
@ -40,7 +42,6 @@ import java.util.ArrayList;
|
|||
import java.util.List;
|
||||
import java.util.Stack;
|
||||
|
||||
import javax.servlet.jsp.JspException;
|
||||
import javax.servlet.jsp.PageContext;
|
||||
|
||||
/**
|
||||
|
@ -113,22 +114,38 @@ public class DependencyTree
|
|||
}
|
||||
}
|
||||
|
||||
public List gatherTreeList( String groupId, String artifactId, String modelVersion, String nodevar,
|
||||
PageContext pageContext )
|
||||
throws JspException
|
||||
public List<TreeEntry> gatherTreeList( String groupId, String artifactId, String modelVersion, String nodevar,
|
||||
PageContext pageContext ) throws ArchivaException
|
||||
{
|
||||
if ( StringUtils.isBlank( groupId ) )
|
||||
{
|
||||
String emsg = "Error generating dependency tree: groupId is blank.";
|
||||
String emsg = "Error generating dependency tree [" + Keys.toKey( groupId, artifactId, modelVersion )
|
||||
+ "]: groupId is blank.";
|
||||
getLogger().error( emsg );
|
||||
throw new JspException( emsg );
|
||||
throw new ArchivaException( emsg );
|
||||
}
|
||||
|
||||
if ( StringUtils.isBlank( artifactId ) )
|
||||
{
|
||||
String emsg = "Error generating dependency tree [" + Keys.toKey( groupId, artifactId, modelVersion )
|
||||
+ "]: artifactId is blank.";
|
||||
getLogger().error( emsg );
|
||||
throw new ArchivaException( emsg );
|
||||
}
|
||||
|
||||
if ( StringUtils.isBlank( modelVersion ) )
|
||||
{
|
||||
String emsg = "Error generating dependency tree [" + Keys.toKey( groupId, artifactId, modelVersion )
|
||||
+ "]: version is blank.";
|
||||
getLogger().error( emsg );
|
||||
throw new ArchivaException( emsg );
|
||||
}
|
||||
|
||||
DependencyGraph graph = fetchGraph( groupId, artifactId, modelVersion );
|
||||
|
||||
if ( graph == null )
|
||||
{
|
||||
throw new JspException( "Graph is null." );
|
||||
throw new ArchivaException( "Graph is unexpectedly null." );
|
||||
}
|
||||
|
||||
TreeListVisitor treeListVisitor = new TreeListVisitor();
|
||||
|
@ -141,22 +158,22 @@ public class DependencyTree
|
|||
class TreeListVisitor
|
||||
extends BaseVisitor
|
||||
{
|
||||
private List list;
|
||||
private List<TreeEntry> list;
|
||||
|
||||
private int walkDepth;
|
||||
|
||||
private int outputDepth;
|
||||
|
||||
private Stack entryStack = new Stack();
|
||||
private Stack<TreeEntry> entryStack = new Stack<TreeEntry>();
|
||||
|
||||
private TreeEntry currentEntry;
|
||||
|
||||
public TreeListVisitor()
|
||||
{
|
||||
this.list = new ArrayList();
|
||||
this.list = new ArrayList<TreeEntry>();
|
||||
}
|
||||
|
||||
public List getList()
|
||||
public List<TreeEntry> getList()
|
||||
{
|
||||
return this.list;
|
||||
}
|
||||
|
@ -214,6 +231,7 @@ public class DependencyTree
|
|||
}
|
||||
|
||||
private DependencyGraph fetchGraph( String groupId, String artifactId, String modelVersion )
|
||||
throws ArchivaException
|
||||
{
|
||||
// TODO Cache the results to disk, in XML format, in the same place as the artifact is located.
|
||||
|
||||
|
@ -230,8 +248,9 @@ public class DependencyTree
|
|||
}
|
||||
catch ( GraphTaskException e )
|
||||
{
|
||||
getLogger().warn( "Unable to get Graph: " + e.getMessage(), e );
|
||||
return null;
|
||||
String emsg = "Unable to generate graph for [" + Keys.toKey( projectRef ) + "] : " + e.getMessage();
|
||||
getLogger().warn( emsg, e );
|
||||
throw new ArchivaException( emsg, e );
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -20,11 +20,14 @@ package org.apache.maven.archiva.web.tags;
|
|||
*/
|
||||
|
||||
import org.apache.commons.collections.CollectionUtils;
|
||||
import org.apache.commons.collections.IteratorUtils;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.apache.maven.archiva.common.ArchivaException;
|
||||
import org.apache.maven.archiva.web.tags.DependencyTree.TreeEntry;
|
||||
import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.PrintWriter;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
|
||||
|
@ -64,7 +67,7 @@ public class DependencyTreeTag
|
|||
|
||||
private Iterator treeIterator;
|
||||
|
||||
private List tree;
|
||||
private List<TreeEntry> tree;
|
||||
|
||||
private TreeEntry currentTreeEntry;
|
||||
|
||||
|
@ -125,6 +128,9 @@ public class DependencyTreeTag
|
|||
nodevar = "node";
|
||||
}
|
||||
|
||||
out( "<div class=\"dependency-graph\">" );
|
||||
try
|
||||
{
|
||||
this.tree = deptree.gatherTreeList( groupId, artifactId, modelVersion, nodevar, pageContext );
|
||||
|
||||
if ( CollectionUtils.isEmpty( this.tree ) )
|
||||
|
@ -134,11 +140,18 @@ public class DependencyTreeTag
|
|||
|
||||
treeIterator = tree.iterator();
|
||||
|
||||
out( "<div class=\"dependency-graph\">" );
|
||||
|
||||
currentTreeEntry = (TreeEntry) treeIterator.next();
|
||||
out( currentTreeEntry.getPre() );
|
||||
exposeVariables();
|
||||
}
|
||||
catch ( ArchivaException e )
|
||||
{
|
||||
treeIterator = IteratorUtils.EMPTY_LIST_ITERATOR;
|
||||
|
||||
out("<pre>");
|
||||
e.printStackTrace( new PrintWriter( pageContext.getOut() ) );
|
||||
out("</pre>");
|
||||
}
|
||||
|
||||
return EVAL_BODY_INCLUDE;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue