aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoakim Erdfelt <joakime@apache.org>2007-10-27 00:00:04 +0000
committerJoakim Erdfelt <joakime@apache.org>2007-10-27 00:00:04 +0000
commit1b44cd6cc14f893bf1469350be32bb8fb00764ab (patch)
tree2d5bdb6eae7f425f7b55477e6cade3c16616b4eb
parent40001e82b165e97abdaafd44537431e36a9eb93f (diff)
downloadarchiva-1b44cd6cc14f893bf1469350be32bb8fb00764ab.tar.gz
archiva-1b44cd6cc14f893bf1469350be32bb8fb00764ab.zip
[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
-rw-r--r--archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/tags/DependencyTree.java47
-rw-r--r--archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/tags/DependencyTreeTag.java39
2 files changed, 59 insertions, 27 deletions
diff --git a/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/tags/DependencyTree.java b/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/tags/DependencyTree.java
index 95b88d7e9..512f4055e 100644
--- a/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/tags/DependencyTree.java
+++ b/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/tags/DependencyTree.java
@@ -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.
@@ -225,13 +243,14 @@ public class DependencyTree
try
{
DependencyGraph depGraph = graphFactory.getGraph( projectRef );
-
+
return depGraph;
}
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 );
}
}
diff --git a/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/tags/DependencyTreeTag.java b/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/tags/DependencyTreeTag.java
index dd6e238e1..05393904d 100644
--- a/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/tags/DependencyTreeTag.java
+++ b/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/tags/DependencyTreeTag.java
@@ -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,21 +128,31 @@ public class DependencyTreeTag
nodevar = "node";
}
- this.tree = deptree.gatherTreeList( groupId, artifactId, modelVersion, nodevar, pageContext );
-
- if ( CollectionUtils.isEmpty( this.tree ) )
+ out( "<div class=\"dependency-graph\">" );
+ try
+ {
+ this.tree = deptree.gatherTreeList( groupId, artifactId, modelVersion, nodevar, pageContext );
+
+ if ( CollectionUtils.isEmpty( this.tree ) )
+ {
+ return SKIP_BODY;
+ }
+
+ treeIterator = tree.iterator();
+
+ currentTreeEntry = (TreeEntry) treeIterator.next();
+ out( currentTreeEntry.getPre() );
+ exposeVariables();
+ }
+ catch ( ArchivaException e )
{
- return SKIP_BODY;
+ treeIterator = IteratorUtils.EMPTY_LIST_ITERATOR;
+
+ out("<pre>");
+ e.printStackTrace( new PrintWriter( pageContext.getOut() ) );
+ out("</pre>");
}
- treeIterator = tree.iterator();
-
- out( "<div class=\"dependency-graph\">" );
-
- currentTreeEntry = (TreeEntry) treeIterator.next();
- out( currentTreeEntry.getPre() );
- exposeVariables();
-
return EVAL_BODY_INCLUDE;
}