*/
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;
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;
import java.util.List;
import java.util.Stack;
-import javax.servlet.jsp.JspException;
import javax.servlet.jsp.PageContext;
/**
}
}
- 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();
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;
}
}
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.
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 );
}
}
*/
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;
private Iterator treeIterator;
- private List tree;
+ private List<TreeEntry> tree;
private TreeEntry currentTreeEntry;
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;
}