mirror of https://github.com/apache/archiva.git
[MRM-346]: Show Artifact results in error 500.
git-svn-id: https://svn.apache.org/repos/asf/maven/archiva/trunk@539619 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
c870196fff
commit
3dce54c7fb
|
@ -38,6 +38,7 @@ import org.apache.maven.archiva.repository.project.ProjectModelReader;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -130,6 +131,9 @@ public class ProjectModelToDatabaseConsumer
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
ArchivaProjectModel model = project400Reader.read( artifactFile );
|
ArchivaProjectModel model = project400Reader.read( artifactFile );
|
||||||
|
|
||||||
|
model.setOrigin( "filesystem" );
|
||||||
|
|
||||||
dao.getProjectModelDAO().saveProjectModel( model );
|
dao.getProjectModelDAO().saveProjectModel( model );
|
||||||
}
|
}
|
||||||
catch ( ProjectModelException e )
|
catch ( ProjectModelException e )
|
||||||
|
|
|
@ -62,7 +62,7 @@ public class ArchivaModelCloner
|
||||||
cloned.setOrganization( clone( model.getOrganization() ) );
|
cloned.setOrganization( clone( model.getOrganization() ) );
|
||||||
cloned.setScm( clone( model.getScm() ) );
|
cloned.setScm( clone( model.getScm() ) );
|
||||||
cloned.setRepositories( cloneRepositories( model.getRepositories() ) );
|
cloned.setRepositories( cloneRepositories( model.getRepositories() ) );
|
||||||
cloned.setDependencyTree( clone( model.getDependencyTree() ) );
|
cloned.setDependencies( cloneDependencies( model.getDependencies() ) );
|
||||||
cloned.setPlugins( clonePlugins( model.getPlugins() ) );
|
cloned.setPlugins( clonePlugins( model.getPlugins() ) );
|
||||||
cloned.setReports( cloneReports( model.getReports() ) );
|
cloned.setReports( cloneReports( model.getReports() ) );
|
||||||
cloned.setDependencyManagement( cloneDependencies( model.getDependencyManagement() ) );
|
cloned.setDependencyManagement( cloneDependencies( model.getDependencyManagement() ) );
|
||||||
|
@ -130,37 +130,6 @@ public class ArchivaModelCloner
|
||||||
return cloned;
|
return cloned;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static DependencyEdge clone( DependencyEdge edge )
|
|
||||||
{
|
|
||||||
if ( edge == null )
|
|
||||||
{
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
DependencyEdge cloned = new DependencyEdge();
|
|
||||||
|
|
||||||
cloned.setFromDependency( clone( edge.getFromDependency() ) );
|
|
||||||
cloned.setToDependency( clone( edge.getToDependency() ) );
|
|
||||||
cloned.setType( edge.getType() );
|
|
||||||
|
|
||||||
return cloned;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static DependencyTree clone( DependencyTree dependencyTree )
|
|
||||||
{
|
|
||||||
if ( dependencyTree == null )
|
|
||||||
{
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
DependencyTree cloned = new DependencyTree();
|
|
||||||
|
|
||||||
cloned.setDependencyNodes( cloneDependencies( dependencyTree.getDependencyNodes() ) );
|
|
||||||
cloned.setDependencyEdges( cloneDependencyEdges( dependencyTree.getDependencyEdges() ) );
|
|
||||||
|
|
||||||
return cloned;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static IssueManagement clone( IssueManagement issueManagement )
|
public static IssueManagement clone( IssueManagement issueManagement )
|
||||||
{
|
{
|
||||||
if ( issueManagement == null )
|
if ( issueManagement == null )
|
||||||
|
@ -323,32 +292,6 @@ public class ArchivaModelCloner
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static List cloneDependencyEdges( List dependencyEdges )
|
|
||||||
{
|
|
||||||
if ( dependencyEdges == null )
|
|
||||||
{
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
List ret = new ArrayList();
|
|
||||||
|
|
||||||
Iterator it = dependencyEdges.iterator();
|
|
||||||
while ( it.hasNext() )
|
|
||||||
{
|
|
||||||
DependencyEdge edge = (DependencyEdge) it.next();
|
|
||||||
|
|
||||||
if ( edge == null )
|
|
||||||
{
|
|
||||||
// Skip empty edge.
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
ret.add( clone( edge ) );
|
|
||||||
}
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static List cloneExclusions( List exclusions )
|
public static List cloneExclusions( List exclusions )
|
||||||
{
|
{
|
||||||
if ( exclusions == null )
|
if ( exclusions == null )
|
||||||
|
|
|
@ -998,7 +998,7 @@
|
||||||
<name>whenIndexed</name>
|
<name>whenIndexed</name>
|
||||||
<identifier>false</identifier>
|
<identifier>false</identifier>
|
||||||
<version>1.0.0+</version>
|
<version>1.0.0+</version>
|
||||||
<required>true</required>
|
<required>false</required>
|
||||||
<type>Date</type>
|
<type>Date</type>
|
||||||
<description>
|
<description>
|
||||||
The timestamp when this model was indexed.
|
The timestamp when this model was indexed.
|
||||||
|
@ -1080,14 +1080,15 @@
|
||||||
</association>
|
</association>
|
||||||
</field>
|
</field>
|
||||||
<field>
|
<field>
|
||||||
<name>dependencyTree</name>
|
<name>dependencies</name>
|
||||||
<version>1.0.0+</version>
|
<version>1.0.0+</version>
|
||||||
<description><![CDATA[
|
<description><![CDATA[
|
||||||
This element describes all of the dependencies associated with a
|
This element describes all of the dependencies associated with a
|
||||||
project.
|
project.
|
||||||
]]></description>
|
]]></description>
|
||||||
<association>
|
<association>
|
||||||
<type>DependencyTree</type>
|
<type>Dependency</type>
|
||||||
|
<multiplicity>*</multiplicity>
|
||||||
</association>
|
</association>
|
||||||
</field>
|
</field>
|
||||||
<field>
|
<field>
|
||||||
|
@ -1442,129 +1443,6 @@
|
||||||
</fields>
|
</fields>
|
||||||
</class>
|
</class>
|
||||||
|
|
||||||
<class stash.storable="true"
|
|
||||||
jpox.table="DEPENDENCY_TREE">
|
|
||||||
<name>DependencyTree</name>
|
|
||||||
<description>The Dependency Tree</description>
|
|
||||||
<version>1.0.0+</version>
|
|
||||||
<fields>
|
|
||||||
<field>
|
|
||||||
<name>dependencyNodes</name>
|
|
||||||
<version>1.0.0+</version>
|
|
||||||
<description>The nodes for this dependency tree.</description>
|
|
||||||
<association>
|
|
||||||
<type>Dependency</type>
|
|
||||||
<multiplicity>*</multiplicity>
|
|
||||||
</association>
|
|
||||||
</field>
|
|
||||||
<field>
|
|
||||||
<name>dependencyEdges</name>
|
|
||||||
<version>1.0.0+</version>
|
|
||||||
<description>The edges for this dependency tree.</description>
|
|
||||||
<association>
|
|
||||||
<type>DependencyEdge</type>
|
|
||||||
<multiplicity>*</multiplicity>
|
|
||||||
</association>
|
|
||||||
</field>
|
|
||||||
</fields>
|
|
||||||
<codeSegments>
|
|
||||||
<codeSegment>
|
|
||||||
<version>1.0.0+</version>
|
|
||||||
<code><![CDATA[
|
|
||||||
/**
|
|
||||||
* True if the dependency tree is empty.
|
|
||||||
*
|
|
||||||
* @return true if the dependency tree is empty.
|
|
||||||
*/
|
|
||||||
public boolean isEmpty()
|
|
||||||
{
|
|
||||||
if ( this.dependencyNodes == null )
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
return this.dependencyNodes.isEmpty();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void addDependencyEdge( Dependency fromNode, Dependency toNode )
|
|
||||||
{
|
|
||||||
if ( this.dependencyNodes == null )
|
|
||||||
{
|
|
||||||
this.dependencyNodes = new java.util.ArrayList();
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( this.dependencyEdges == null )
|
|
||||||
{
|
|
||||||
this.dependencyEdges = new java.util.ArrayList();
|
|
||||||
}
|
|
||||||
|
|
||||||
java.util.Iterator it;
|
|
||||||
|
|
||||||
DependencyEdge edge = new DependencyEdge();
|
|
||||||
edge.setFromDependency( toArtifactReference( fromNode ) );
|
|
||||||
edge.setToDependency( toArtifactReference( toNode ) );
|
|
||||||
|
|
||||||
String key = DependencyEdge.toKey( edge );
|
|
||||||
|
|
||||||
// Test for existance of previous edge.
|
|
||||||
it = this.dependencyEdges.iterator();
|
|
||||||
while ( it.hasNext() )
|
|
||||||
{
|
|
||||||
DependencyEdge existingEdge = (DependencyEdge) it.next();
|
|
||||||
String existingKey = DependencyEdge.toKey( existingEdge );
|
|
||||||
if ( key.equals( existingKey ) )
|
|
||||||
{
|
|
||||||
// Key already exists.
|
|
||||||
// Update type and return.
|
|
||||||
existingEdge.setType( edge.getType() );
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Test for existance of fromNode or toNode and add if not present.
|
|
||||||
String fromKey = Dependency.toVersionlessKey( fromNode );
|
|
||||||
String toKey = Dependency.toVersionlessKey( toNode );
|
|
||||||
|
|
||||||
// Generate list of keys
|
|
||||||
java.util.List existingKeys = new java.util.ArrayList();
|
|
||||||
|
|
||||||
it = this.dependencyNodes.iterator();
|
|
||||||
while ( it.hasNext() )
|
|
||||||
{
|
|
||||||
Dependency existingDep = (Dependency) it.next();
|
|
||||||
String existingKey = Dependency.toVersionlessKey( existingDep );
|
|
||||||
existingKeys.add( existingKey );
|
|
||||||
}
|
|
||||||
|
|
||||||
// Now add nodes that are not present.
|
|
||||||
if ( !existingKeys.contains( fromKey ) )
|
|
||||||
{
|
|
||||||
this.dependencyNodes.add( fromNode );
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( !existingKeys.contains( toKey ) )
|
|
||||||
{
|
|
||||||
this.dependencyNodes.add( toNode );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static ArtifactReference toArtifactReference( Dependency dependency )
|
|
||||||
{
|
|
||||||
ArtifactReference ref = new ArtifactReference();
|
|
||||||
|
|
||||||
ref.setGroupId( dependency.getGroupId() );
|
|
||||||
ref.setArtifactId( dependency.getArtifactId() );
|
|
||||||
ref.setVersion( dependency.getVersion() );
|
|
||||||
ref.setClassifier( dependency.getClassifier() );
|
|
||||||
ref.setType( dependency.getType() );
|
|
||||||
|
|
||||||
return ref;
|
|
||||||
}
|
|
||||||
]]></code>
|
|
||||||
</codeSegment>
|
|
||||||
</codeSegments>
|
|
||||||
</class>
|
|
||||||
|
|
||||||
<class stash.storable="true"
|
<class stash.storable="true"
|
||||||
jpox.table="DEPENDENCY">
|
jpox.table="DEPENDENCY">
|
||||||
<name>Dependency</name>
|
<name>Dependency</name>
|
||||||
|
@ -1602,6 +1480,7 @@
|
||||||
<version>1.0.0+</version>
|
<version>1.0.0+</version>
|
||||||
<type>String</type>
|
<type>String</type>
|
||||||
<required>false</required>
|
<required>false</required>
|
||||||
|
<defaultValue></defaultValue>
|
||||||
<description><![CDATA[
|
<description><![CDATA[
|
||||||
The classifier of the dependency. This allows distinguishing two artifacts that belong to the same POM but
|
The classifier of the dependency. This allows distinguishing two artifacts that belong to the same POM but
|
||||||
were built differently, and is appended to the filename after the version. For example,
|
were built differently, and is appended to the filename after the version. For example,
|
||||||
|
@ -1737,85 +1616,6 @@
|
||||||
</codeSegments>
|
</codeSegments>
|
||||||
</class>
|
</class>
|
||||||
|
|
||||||
<class stash.storable="true"
|
|
||||||
jpox.table="DEPENDENCY_EDGE">
|
|
||||||
<name>DependencyEdge</name>
|
|
||||||
<version>1.0.0+</version>
|
|
||||||
<fields>
|
|
||||||
<field>
|
|
||||||
<name>fromDependency</name>
|
|
||||||
<version>1.0.0+</version>
|
|
||||||
<required>true</required>
|
|
||||||
<description>The dependency reference for the 'from' node</description>
|
|
||||||
<association>
|
|
||||||
<type>ArtifactReference</type>
|
|
||||||
</association>
|
|
||||||
</field>
|
|
||||||
<field>
|
|
||||||
<name>toDependency</name>
|
|
||||||
<version>1.0.0+</version>
|
|
||||||
<required>true</required>
|
|
||||||
<description>The dependency reference for the 'to' node</description>
|
|
||||||
<association>
|
|
||||||
<type>ArtifactReference</type>
|
|
||||||
</association>
|
|
||||||
</field>
|
|
||||||
<field jpox.column="EDGE_TYPE">
|
|
||||||
<name>type</name>
|
|
||||||
<version>1.0.0+</version>
|
|
||||||
<required>true</required>
|
|
||||||
<description><![CDATA[
|
|
||||||
<p>
|
|
||||||
The type of edge you have.
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<dl>
|
|
||||||
<dt><code>runtime</code></dt>
|
|
||||||
<dd>A dependency node that is required for runtime of the project</dd>
|
|
||||||
|
|
||||||
<dt><code>test</code></dt>
|
|
||||||
<dd>A dependency node that is used by the project for testing purposes.</dd>
|
|
||||||
|
|
||||||
<dt><code>build</code></dt>
|
|
||||||
<dd>A dependency node that is used in the build/extension capacity.</dd>
|
|
||||||
|
|
||||||
<dt><code>plugin</code></dt>
|
|
||||||
<dd>A dependency node that is used as, or by a, declared plugin in this project.
|
|
||||||
This includes the plugin itself, and any defined plugins/plugin/dependencies/dependency references.
|
|
||||||
</dd>
|
|
||||||
|
|
||||||
<dt><code>report</code></dt>
|
|
||||||
<dd>A dependency node that is used as, or by a, declared report in this project.
|
|
||||||
This includes the report itself, and any defined reporting/plugins/plugin/dependencies/dependency references.</dd>
|
|
||||||
</dl>
|
|
||||||
]]></description>
|
|
||||||
<type>String</type>
|
|
||||||
</field>
|
|
||||||
</fields>
|
|
||||||
<codeSegments>
|
|
||||||
<codeSegment>
|
|
||||||
<version>1.0.0+</version>
|
|
||||||
<code><![CDATA[
|
|
||||||
public static String toKey( DependencyEdge edge )
|
|
||||||
{
|
|
||||||
StringBuffer key = new StringBuffer();
|
|
||||||
|
|
||||||
key.append( ArtifactReference.toVersionlessKey( edge.getFromDependency() ) );
|
|
||||||
key.append( "->" );
|
|
||||||
key.append( ArtifactReference.toVersionlessKey( edge.getToDependency() ) );
|
|
||||||
|
|
||||||
return key.toString();
|
|
||||||
}
|
|
||||||
|
|
||||||
public String toString()
|
|
||||||
{
|
|
||||||
return DependencyEdge.toKey( this );
|
|
||||||
}
|
|
||||||
]]></code>
|
|
||||||
</codeSegment>
|
|
||||||
</codeSegments>
|
|
||||||
</class>
|
|
||||||
|
|
||||||
<class stash.storable="true"
|
<class stash.storable="true"
|
||||||
jpox.table="EXCLUSIONS">
|
jpox.table="EXCLUSIONS">
|
||||||
<name>Exclusion</name>
|
<name>Exclusion</name>
|
||||||
|
|
|
@ -25,8 +25,6 @@ import org.apache.maven.archiva.model.ArchivaProjectModel;
|
||||||
import org.apache.maven.archiva.model.ArtifactReference;
|
import org.apache.maven.archiva.model.ArtifactReference;
|
||||||
import org.apache.maven.archiva.model.CiManagement;
|
import org.apache.maven.archiva.model.CiManagement;
|
||||||
import org.apache.maven.archiva.model.Dependency;
|
import org.apache.maven.archiva.model.Dependency;
|
||||||
import org.apache.maven.archiva.model.DependencyEdge;
|
|
||||||
import org.apache.maven.archiva.model.DependencyTree;
|
|
||||||
import org.apache.maven.archiva.model.Exclusion;
|
import org.apache.maven.archiva.model.Exclusion;
|
||||||
import org.apache.maven.archiva.model.Individual;
|
import org.apache.maven.archiva.model.Individual;
|
||||||
import org.apache.maven.archiva.model.IssueManagement;
|
import org.apache.maven.archiva.model.IssueManagement;
|
||||||
|
@ -94,7 +92,7 @@ public class ProjectModelMerge
|
||||||
merged.setOrganization( merge( mainProject.getOrganization(), parentProject.getOrganization() ) );
|
merged.setOrganization( merge( mainProject.getOrganization(), parentProject.getOrganization() ) );
|
||||||
merged.setScm( merge( mainProject.getScm(), parentProject.getScm() ) );
|
merged.setScm( merge( mainProject.getScm(), parentProject.getScm() ) );
|
||||||
merged.setRepositories( mergeRepositories( mainProject.getRepositories(), parentProject.getRepositories() ) );
|
merged.setRepositories( mergeRepositories( mainProject.getRepositories(), parentProject.getRepositories() ) );
|
||||||
merged.setDependencyTree( merge( mainProject.getDependencyTree(), parentProject.getDependencyTree() ) );
|
merged.setDependencies( mergeDependencies( mainProject.getDependencies(), parentProject.getDependencies() ) );
|
||||||
merged.setDependencyManagement( mergeDependencyManagement( mainProject.getDependencyManagement(), parentProject
|
merged.setDependencyManagement( mergeDependencyManagement( mainProject.getDependencyManagement(), parentProject
|
||||||
.getDependencyManagement() ) );
|
.getDependencyManagement() ) );
|
||||||
merged.setPlugins( mergePlugins( mainProject.getPlugins(), parentProject.getPlugins() ) );
|
merged.setPlugins( mergePlugins( mainProject.getPlugins(), parentProject.getPlugins() ) );
|
||||||
|
@ -181,21 +179,6 @@ public class ProjectModelMerge
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static Map createEdgeMap( List dependencyEdges )
|
|
||||||
{
|
|
||||||
Map ret = new HashMap();
|
|
||||||
|
|
||||||
Iterator it = dependencyEdges.iterator();
|
|
||||||
while ( it.hasNext() )
|
|
||||||
{
|
|
||||||
DependencyEdge edge = (DependencyEdge) it.next();
|
|
||||||
String key = toKey( edge );
|
|
||||||
ret.put( key, edge );
|
|
||||||
}
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static boolean empty( String val )
|
private static boolean empty( String val )
|
||||||
{
|
{
|
||||||
if ( val == null )
|
if ( val == null )
|
||||||
|
@ -233,28 +216,6 @@ public class ProjectModelMerge
|
||||||
return merged;
|
return merged;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static DependencyTree merge( DependencyTree mainDependencyTree, DependencyTree parentDependencyTree )
|
|
||||||
{
|
|
||||||
if ( parentDependencyTree == null )
|
|
||||||
{
|
|
||||||
return mainDependencyTree;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( mainDependencyTree == null )
|
|
||||||
{
|
|
||||||
return ArchivaModelCloner.clone( parentDependencyTree );
|
|
||||||
}
|
|
||||||
|
|
||||||
DependencyTree merged = ArchivaModelCloner.clone( mainDependencyTree );
|
|
||||||
|
|
||||||
merged.setDependencyNodes( mergeDependencies( mainDependencyTree.getDependencyNodes(), parentDependencyTree
|
|
||||||
.getDependencyNodes() ) );
|
|
||||||
merged.setDependencyEdges( mergeDependencyEdges( mainDependencyTree.getDependencyEdges(), parentDependencyTree
|
|
||||||
.getDependencyEdges() ) );
|
|
||||||
|
|
||||||
return merged;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static CiManagement merge( CiManagement mainCim, CiManagement parentCim )
|
private static CiManagement merge( CiManagement mainCim, CiManagement parentCim )
|
||||||
{
|
{
|
||||||
if ( parentCim == null )
|
if ( parentCim == null )
|
||||||
|
@ -675,45 +636,6 @@ public class ProjectModelMerge
|
||||||
return merged;
|
return merged;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static List mergeDependencyEdges( List mainDependencyEdges, List parentDependencyEdges )
|
|
||||||
{
|
|
||||||
if ( parentDependencyEdges == null )
|
|
||||||
{
|
|
||||||
return mainDependencyEdges;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( mainDependencyEdges == null )
|
|
||||||
{
|
|
||||||
return ArchivaModelCloner.cloneDependencyEdges( parentDependencyEdges );
|
|
||||||
}
|
|
||||||
|
|
||||||
List merged = new ArrayList();
|
|
||||||
|
|
||||||
Map mainEdgesMap = createEdgeMap( mainDependencyEdges );
|
|
||||||
Map parentEdgesMap = createEdgeMap( parentDependencyEdges );
|
|
||||||
|
|
||||||
Iterator it = mainEdgesMap.entrySet().iterator();
|
|
||||||
while ( it.hasNext() )
|
|
||||||
{
|
|
||||||
Map.Entry entry = (Entry) it.next();
|
|
||||||
String key = (String) entry.getKey();
|
|
||||||
DependencyEdge mainEdge = (DependencyEdge) entry.getValue();
|
|
||||||
DependencyEdge parentEdge = (DependencyEdge) parentEdgesMap.get( key );
|
|
||||||
|
|
||||||
if ( parentEdge == null )
|
|
||||||
{
|
|
||||||
merged.add( mainEdge );
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// Not merging. Local wins.
|
|
||||||
merged.add( parentEdge );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return merged;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static String toVersionlessArtifactKey( ArtifactReference artifactReference )
|
private static String toVersionlessArtifactKey( ArtifactReference artifactReference )
|
||||||
{
|
{
|
||||||
StringBuffer key = new StringBuffer();
|
StringBuffer key = new StringBuffer();
|
||||||
|
@ -735,15 +657,4 @@ public class ProjectModelMerge
|
||||||
|
|
||||||
return key.toString();
|
return key.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
private static String toKey( DependencyEdge edge )
|
|
||||||
{
|
|
||||||
StringBuffer key = new StringBuffer();
|
|
||||||
|
|
||||||
key.append( toVersionlessArtifactKey( edge.getFromDependency() ) );
|
|
||||||
key.append( "->" );
|
|
||||||
key.append( toVersionlessArtifactKey( edge.getToDependency() ) );
|
|
||||||
|
|
||||||
return key.toString();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -118,20 +118,20 @@ public class EffectiveProjectModelFilter implements ProjectModelFilter
|
||||||
|
|
||||||
private void applyDependencyManagement( ArchivaProjectModel pom )
|
private void applyDependencyManagement( ArchivaProjectModel pom )
|
||||||
{
|
{
|
||||||
if ( ( pom.getDependencyManagement() == null ) || ( pom.getDependencyTree() == null ) )
|
if ( ( pom.getDependencyManagement() == null ) || ( pom.getDependencies() == null ) )
|
||||||
{
|
{
|
||||||
// Nothing to do. All done!
|
// Nothing to do. All done!
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( pom.getDependencyManagement().isEmpty() || pom.getDependencyTree().isEmpty() )
|
if ( pom.getDependencyManagement().isEmpty() || pom.getDependencies().isEmpty() )
|
||||||
{
|
{
|
||||||
// Nothing to do. All done!
|
// Nothing to do. All done!
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
Map managedDependencies = createDependencyMap( pom.getDependencyManagement() );
|
Map managedDependencies = createDependencyMap( pom.getDependencyManagement() );
|
||||||
Iterator it = pom.getDependencyTree().getDependencyNodes().iterator();
|
Iterator it = pom.getDependencies().iterator();
|
||||||
while ( it.hasNext() )
|
while ( it.hasNext() )
|
||||||
{
|
{
|
||||||
Dependency dep = (Dependency) it.next();
|
Dependency dep = (Dependency) it.next();
|
||||||
|
|
|
@ -19,6 +19,7 @@ package org.apache.maven.archiva.repository.project.filters;
|
||||||
* under the License.
|
* under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
import org.apache.commons.collections.CollectionUtils;
|
||||||
import org.apache.maven.archiva.model.ArchivaModelCloner;
|
import org.apache.maven.archiva.model.ArchivaModelCloner;
|
||||||
import org.apache.maven.archiva.model.ArchivaProjectModel;
|
import org.apache.maven.archiva.model.ArchivaProjectModel;
|
||||||
import org.apache.maven.archiva.model.Dependency;
|
import org.apache.maven.archiva.model.Dependency;
|
||||||
|
@ -73,9 +74,9 @@ public class ProjectModelExpressionFilter
|
||||||
ret.setVersion( evaluator.expand( ret.getVersion() ) );
|
ret.setVersion( evaluator.expand( ret.getVersion() ) );
|
||||||
ret.setGroupId( evaluator.expand( ret.getGroupId() ) );
|
ret.setGroupId( evaluator.expand( ret.getGroupId() ) );
|
||||||
|
|
||||||
if ( ( ret.getDependencyTree() != null ) && !ret.getDependencyTree().isEmpty() )
|
if ( CollectionUtils.isNotEmpty( ret.getDependencies() ) )
|
||||||
{
|
{
|
||||||
evaluateExpressionsInDependencyList( evaluator, ret.getDependencyTree().getDependencyNodes() );
|
evaluateExpressionsInDependencyList( evaluator, ret.getDependencies() );
|
||||||
}
|
}
|
||||||
|
|
||||||
evaluateExpressionsInDependencyList( evaluator, ret.getDependencyManagement() );
|
evaluateExpressionsInDependencyList( evaluator, ret.getDependencyManagement() );
|
||||||
|
|
|
@ -25,7 +25,6 @@ import org.apache.maven.archiva.model.ArtifactReference;
|
||||||
import org.apache.maven.archiva.model.CiManagement;
|
import org.apache.maven.archiva.model.CiManagement;
|
||||||
import org.apache.maven.archiva.model.Dependency;
|
import org.apache.maven.archiva.model.Dependency;
|
||||||
import org.apache.maven.archiva.model.DependencyScope;
|
import org.apache.maven.archiva.model.DependencyScope;
|
||||||
import org.apache.maven.archiva.model.DependencyTree;
|
|
||||||
import org.apache.maven.archiva.model.Exclusion;
|
import org.apache.maven.archiva.model.Exclusion;
|
||||||
import org.apache.maven.archiva.model.Individual;
|
import org.apache.maven.archiva.model.Individual;
|
||||||
import org.apache.maven.archiva.model.IssueManagement;
|
import org.apache.maven.archiva.model.IssueManagement;
|
||||||
|
@ -100,7 +99,7 @@ public class ProjectModel400Reader
|
||||||
model.setScm( getSCM( xml ) );
|
model.setScm( getSCM( xml ) );
|
||||||
model.setRepositories( getRepositories( xml ) );
|
model.setRepositories( getRepositories( xml ) );
|
||||||
|
|
||||||
model.setDependencyTree( getDependencyTree( xml ) );
|
model.setDependencies( getDependencies( xml ) );
|
||||||
model.setDependencyManagement( getDependencyManagement( xml ) );
|
model.setDependencyManagement( getDependencyManagement( xml ) );
|
||||||
model.setPlugins( getPlugins( xml ) );
|
model.setPlugins( getPlugins( xml ) );
|
||||||
model.setReports( getReports( xml ) );
|
model.setReports( getReports( xml ) );
|
||||||
|
@ -142,20 +141,10 @@ public class ProjectModel400Reader
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private DependencyTree getDependencyTree( XMLReader xml )
|
private List getDependencies( XMLReader xml )
|
||||||
throws XMLException
|
throws XMLException
|
||||||
{
|
{
|
||||||
DependencyTree tree = new DependencyTree();
|
return getDependencyList( xml, new String[] { "dependencies" } );
|
||||||
List dependencies = getDependencyList( xml, new String[] { "dependencies" } );
|
|
||||||
|
|
||||||
Iterator it = dependencies.iterator();
|
|
||||||
while ( it.hasNext() )
|
|
||||||
{
|
|
||||||
Dependency dependency = (Dependency) it.next();
|
|
||||||
tree.addDependencyNode( dependency );
|
|
||||||
}
|
|
||||||
|
|
||||||
return tree;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private List getDependencyList( XMLReader xml, String parts[] )
|
private List getDependencyList( XMLReader xml, String parts[] )
|
||||||
|
@ -187,7 +176,7 @@ public class ProjectModel400Reader
|
||||||
dependency.setArtifactId( elemDependency.elementTextTrim( "artifactId" ) );
|
dependency.setArtifactId( elemDependency.elementTextTrim( "artifactId" ) );
|
||||||
dependency.setVersion( elemDependency.elementTextTrim( "version" ) );
|
dependency.setVersion( elemDependency.elementTextTrim( "version" ) );
|
||||||
|
|
||||||
dependency.setClassifier( elemDependency.elementTextTrim( "classifier" ) );
|
dependency.setClassifier( StringUtils.defaultString( elemDependency.elementTextTrim( "classifier" ) ) );
|
||||||
dependency.setType( StringUtils.defaultIfEmpty( elemDependency.elementTextTrim( "type" ), "jar" ) );
|
dependency.setType( StringUtils.defaultIfEmpty( elemDependency.elementTextTrim( "type" ), "jar" ) );
|
||||||
dependency.setScope( StringUtils.defaultIfEmpty( elemDependency.elementTextTrim( "scope" ), "compile" ) );
|
dependency.setScope( StringUtils.defaultIfEmpty( elemDependency.elementTextTrim( "scope" ), "compile" ) );
|
||||||
// Not for v4.0.0 -> dependency.setUrl( elemDependency.elementTextTrim("url") );
|
// Not for v4.0.0 -> dependency.setUrl( elemDependency.elementTextTrim("url") );
|
||||||
|
|
|
@ -22,7 +22,6 @@ package org.apache.maven.archiva.repository.project.filters;
|
||||||
import org.apache.maven.archiva.model.ArchivaProjectModel;
|
import org.apache.maven.archiva.model.ArchivaProjectModel;
|
||||||
import org.apache.maven.archiva.model.ArchivaRepository;
|
import org.apache.maven.archiva.model.ArchivaRepository;
|
||||||
import org.apache.maven.archiva.model.Dependency;
|
import org.apache.maven.archiva.model.Dependency;
|
||||||
import org.apache.maven.archiva.model.DependencyTree;
|
|
||||||
import org.apache.maven.archiva.model.Individual;
|
import org.apache.maven.archiva.model.Individual;
|
||||||
import org.apache.maven.archiva.repository.project.ProjectModelException;
|
import org.apache.maven.archiva.repository.project.ProjectModelException;
|
||||||
import org.apache.maven.archiva.repository.project.ProjectModelFilter;
|
import org.apache.maven.archiva.repository.project.ProjectModelFilter;
|
||||||
|
@ -100,30 +99,28 @@ public class EffectiveProjectModelFilterTest
|
||||||
assertEquals( "Equivalent Models", expectedModel, effectiveModel );
|
assertEquals( "Equivalent Models", expectedModel, effectiveModel );
|
||||||
|
|
||||||
assertContainsSameIndividuals( "Individuals", expectedModel.getIndividuals(), effectiveModel.getIndividuals() );
|
assertContainsSameIndividuals( "Individuals", expectedModel.getIndividuals(), effectiveModel.getIndividuals() );
|
||||||
dumpDependencyList( "Expected", expectedModel.getDependencyTree() );
|
dumpDependencyList( "Expected", expectedModel.getDependencies() );
|
||||||
dumpDependencyList( "Effective", effectiveModel.getDependencyTree() );
|
dumpDependencyList( "Effective", effectiveModel.getDependencies() );
|
||||||
assertContainsSameDependencies( "Dependencies", expectedModel.getDependencyTree().getDependencyNodes(),
|
assertContainsSameDependencies( "Dependencies", expectedModel.getDependencies(),
|
||||||
effectiveModel.getDependencyTree().getDependencyNodes() );
|
effectiveModel.getDependencies() );
|
||||||
assertContainsSameDependencies( "DependencyManagement", expectedModel.getDependencyManagement(), effectiveModel
|
assertContainsSameDependencies( "DependencyManagement", expectedModel.getDependencyManagement(),
|
||||||
.getDependencyManagement() );
|
effectiveModel.getDependencyManagement() );
|
||||||
}
|
}
|
||||||
|
|
||||||
private void dumpDependencyList( String type, DependencyTree tree )
|
private void dumpDependencyList( String type, List deps )
|
||||||
{
|
{
|
||||||
if ( tree == null )
|
if ( deps == null )
|
||||||
{
|
{
|
||||||
System.out.println( " Tree [" + type + "] is null." );
|
System.out.println( " Dependencies [" + type + "] is null." );
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( tree.getDependencyNodes() == null )
|
if ( deps.isEmpty() )
|
||||||
{
|
{
|
||||||
System.out.println( " Tree [" + type + "] dependency list (nodes) is null." );
|
System.out.println( " Dependencies [" + type + "] dependency list is empty." );
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
List deps = tree.getDependencyNodes();
|
|
||||||
|
|
||||||
System.out.println( ".\\ [" + type + "] Dependency List (size:" + deps.size() + ") \\.________________" );
|
System.out.println( ".\\ [" + type + "] Dependency List (size:" + deps.size() + ") \\.________________" );
|
||||||
Iterator it = deps.iterator();
|
Iterator it = deps.iterator();
|
||||||
while ( it.hasNext() )
|
while ( it.hasNext() )
|
||||||
|
|
|
@ -21,11 +21,12 @@ package org.apache.maven.archiva.repository.project.filters;
|
||||||
|
|
||||||
import org.apache.maven.archiva.model.ArchivaProjectModel;
|
import org.apache.maven.archiva.model.ArchivaProjectModel;
|
||||||
import org.apache.maven.archiva.model.Dependency;
|
import org.apache.maven.archiva.model.Dependency;
|
||||||
import org.apache.maven.archiva.model.DependencyTree;
|
|
||||||
import org.apache.maven.archiva.repository.project.ProjectModelFilter;
|
import org.apache.maven.archiva.repository.project.ProjectModelFilter;
|
||||||
import org.codehaus.plexus.PlexusTestCase;
|
import org.codehaus.plexus.PlexusTestCase;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ProjectModelExpressionExpanderTest
|
* ProjectModelExpressionExpanderTest
|
||||||
|
@ -49,13 +50,13 @@ public class ProjectModelExpressionExpanderTest
|
||||||
model.setArtifactId( "archiva-test-project" );
|
model.setArtifactId( "archiva-test-project" );
|
||||||
model.setVersion( "1.0-SNAPSHOT" );
|
model.setVersion( "1.0-SNAPSHOT" );
|
||||||
|
|
||||||
DependencyTree depTree = new DependencyTree();
|
List deps = new ArrayList();
|
||||||
|
|
||||||
depTree.addDependencyEdge( model.asDependency(), createDependency( "org.apache.maven.archiva", "archiva-model", "${archiva.version}" ) );
|
deps.add( createDependency( "org.apache.maven.archiva", "archiva-model", "${archiva.version}" ) );
|
||||||
depTree.addDependencyEdge( model.asDependency(), createDependency( "org.apache.maven.archiva", "archiva-common", "${archiva.version}" ) );
|
deps.add( createDependency( "org.apache.maven.archiva", "archiva-common", "${archiva.version}" ) );
|
||||||
depTree.addDependencyEdge( model.asDependency(), createDependency( "org.apache.maven.archiva", "archiva-indexer", "${archiva.version}" ) );
|
deps.add( createDependency( "org.apache.maven.archiva", "archiva-indexer", "${archiva.version}" ) );
|
||||||
|
|
||||||
model.setDependencyTree( depTree );
|
model.setDependencies( deps );
|
||||||
|
|
||||||
model.addProperty( "archiva.version", "1.0-SNAPSHOT" );
|
model.addProperty( "archiva.version", "1.0-SNAPSHOT" );
|
||||||
|
|
||||||
|
@ -67,11 +68,10 @@ public class ProjectModelExpressionExpanderTest
|
||||||
assertEquals( "Group ID", "org.apache.maven.archiva", model.getGroupId() );
|
assertEquals( "Group ID", "org.apache.maven.archiva", model.getGroupId() );
|
||||||
assertEquals( "Artifact ID", "archiva-test-project", model.getArtifactId() );
|
assertEquals( "Artifact ID", "archiva-test-project", model.getArtifactId() );
|
||||||
assertEquals( "Version", "1.0-SNAPSHOT", model.getVersion() );
|
assertEquals( "Version", "1.0-SNAPSHOT", model.getVersion() );
|
||||||
assertNotNull( "DependencyTree", model.getDependencyTree() );
|
assertNotNull( "Dependencies", model.getDependencies() );
|
||||||
assertNotNull( "DependencyTree.dependencies", model.getDependencyTree().getDependencyNodes() );
|
assertEquals( "Dependencies Size", 3, model.getDependencies().size() );
|
||||||
assertEquals( "Dependencies Size", 4, model.getDependencyTree().getDependencyNodes().size() );
|
|
||||||
|
|
||||||
Iterator it = model.getDependencyTree().getDependencyNodes().iterator();
|
Iterator it = model.getDependencies().iterator();
|
||||||
while ( it.hasNext() )
|
while ( it.hasNext() )
|
||||||
{
|
{
|
||||||
Dependency dep = (Dependency) it.next();
|
Dependency dep = (Dependency) it.next();
|
||||||
|
|
|
@ -23,7 +23,6 @@ import org.apache.maven.archiva.model.ArchivaProjectModel;
|
||||||
import org.apache.maven.archiva.model.VersionedReference;
|
import org.apache.maven.archiva.model.VersionedReference;
|
||||||
import org.apache.maven.archiva.repository.project.ProjectModelException;
|
import org.apache.maven.archiva.repository.project.ProjectModelException;
|
||||||
import org.apache.maven.archiva.repository.project.ProjectModelReader;
|
import org.apache.maven.archiva.repository.project.ProjectModelReader;
|
||||||
import org.apache.maven.archiva.repository.project.readers.ProjectModel400Reader;
|
|
||||||
import org.codehaus.plexus.PlexusTestCase;
|
import org.codehaus.plexus.PlexusTestCase;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
@ -63,9 +62,8 @@ public class ProjectModel400ReaderTest
|
||||||
assertEquals( "Parent Artifact ID", "maven-shared-components", parentRef.getArtifactId() );
|
assertEquals( "Parent Artifact ID", "maven-shared-components", parentRef.getArtifactId() );
|
||||||
assertEquals( "Parent Version", "4", parentRef.getVersion() );
|
assertEquals( "Parent Version", "4", parentRef.getVersion() );
|
||||||
|
|
||||||
assertNotNull( "DependencyTree", project.getDependencyTree() );
|
assertNotNull( "Dependencies", project.getDependencies() );
|
||||||
assertNotNull( "DependencyTree.dependencies", project.getDependencyTree().getDependencyNodes() );
|
assertEquals( "Dependencies.size", 3, project.getDependencies().size() );
|
||||||
assertEquals( "Dependencies.size", 3, project.getDependencyTree().getDependencyNodes().size() );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testLoadWithNamespace()
|
public void testLoadWithNamespace()
|
||||||
|
@ -93,8 +91,7 @@ public class ProjectModel400ReaderTest
|
||||||
assertEquals( "Parent Artifact ID", "archiva-base", parentRef.getArtifactId() );
|
assertEquals( "Parent Artifact ID", "archiva-base", parentRef.getArtifactId() );
|
||||||
assertEquals( "Parent Version", "1.0-SNAPSHOT", parentRef.getVersion() );
|
assertEquals( "Parent Version", "1.0-SNAPSHOT", parentRef.getVersion() );
|
||||||
|
|
||||||
assertNotNull( "DependencyTree", project.getDependencyTree() );
|
assertNotNull( "Dependencies", project.getDependencies() );
|
||||||
assertNotNull( "DependencyTree.dependencies", project.getDependencyTree().getDependencyNodes() );
|
assertEquals( "Dependencies.size", 6, project.getDependencies().size() );
|
||||||
assertEquals( "Dependencies.size", 6, project.getDependencyTree().getDependencyNodes().size() );
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,7 +19,6 @@ package org.apache.maven.archiva.database.constraints;
|
||||||
* under the License.
|
* under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import org.apache.commons.lang.StringEscapeUtils;
|
|
||||||
import org.apache.maven.archiva.database.Constraint;
|
import org.apache.maven.archiva.database.Constraint;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -36,9 +35,9 @@ public class ArtifactsRelatedConstraint
|
||||||
|
|
||||||
public ArtifactsRelatedConstraint( String groupId, String artifactId, String version )
|
public ArtifactsRelatedConstraint( String groupId, String artifactId, String version )
|
||||||
{
|
{
|
||||||
whereClause = "groupId == '" + StringEscapeUtils.escapeSql( groupId ) + "' AND artifactId == '"
|
whereClause = "groupId.equals(selectedGroupId) && artifactId.equals(selectedArtifactId) && version.equals(selectedVersion)";
|
||||||
+ StringEscapeUtils.escapeSql( artifactId ) + "' AND version == '" + StringEscapeUtils.escapeSql( version )
|
declParams = new String[] { "String selectedGroupId", "String selectedArtifactId", "String selectedVersion" };
|
||||||
+ "'";
|
params = new Object[] { groupId, artifactId, version };
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getSortColumn()
|
public String getSortColumn()
|
||||||
|
|
|
@ -310,11 +310,7 @@ public class JdoAccess
|
||||||
|
|
||||||
if ( constraint.getDeclaredImports() != null )
|
if ( constraint.getDeclaredImports() != null )
|
||||||
{
|
{
|
||||||
for ( int i = 0; i < constraint.getDeclaredImports().length; i++ )
|
query.declareImports( StringUtils.join( constraint.getDeclaredImports(), ", " ) );
|
||||||
{
|
|
||||||
String qimport = constraint.getDeclaredImports()[i];
|
|
||||||
query.declareImports( qimport );
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( constraint.getDeclaredParameters() != null )
|
if ( constraint.getDeclaredParameters() != null )
|
||||||
|
@ -332,11 +328,7 @@ public class JdoAccess
|
||||||
+ "> parameter objects to use. This should be equal." );
|
+ "> parameter objects to use. This should be equal." );
|
||||||
}
|
}
|
||||||
|
|
||||||
for ( int i = 0; i < constraint.getDeclaredParameters().length; i++ )
|
query.declareParameters( StringUtils.join( constraint.getDeclaredParameters(), ", " ) );
|
||||||
{
|
|
||||||
String declaredParam = constraint.getDeclaredParameters()[i];
|
|
||||||
query.declareParameters( declaredParam );
|
|
||||||
}
|
|
||||||
|
|
||||||
return processParameterizedQuery( query, constraint.getParameters() );
|
return processParameterizedQuery( query, constraint.getParameters() );
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,91 @@
|
||||||
|
package org.apache.maven.archiva.database.constraints;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Licensed to the Apache Software Foundation (ASF) under one
|
||||||
|
* or more contributor license agreements. See the NOTICE file
|
||||||
|
* distributed with this work for additional information
|
||||||
|
* regarding copyright ownership. The ASF licenses this file
|
||||||
|
* to you under the Apache License, Version 2.0 (the
|
||||||
|
* "License"); you may not use this file except in compliance
|
||||||
|
* with the License. You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing,
|
||||||
|
* software distributed under the License is distributed on an
|
||||||
|
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
|
* KIND, either express or implied. See the License for the
|
||||||
|
* specific language governing permissions and limitations
|
||||||
|
* under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
import org.apache.maven.archiva.database.AbstractArchivaDatabaseTestCase;
|
||||||
|
import org.apache.maven.archiva.database.ArchivaDAO;
|
||||||
|
import org.apache.maven.archiva.database.ArtifactDAO;
|
||||||
|
import org.apache.maven.archiva.database.Constraint;
|
||||||
|
import org.apache.maven.archiva.model.ArchivaArtifact;
|
||||||
|
|
||||||
|
import java.util.Calendar;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ArtifactsRelatedConstraintTest
|
||||||
|
*
|
||||||
|
* @author <a href="mailto:joakim@erdfelt.com">Joakim Erdfelt</a>
|
||||||
|
* @version $Id$
|
||||||
|
*/
|
||||||
|
public class ArtifactsRelatedConstraintTest
|
||||||
|
extends AbstractArchivaDatabaseTestCase
|
||||||
|
{
|
||||||
|
private static final String TEST_GROUPID = "org.apache.maven.archiva.test";
|
||||||
|
private ArtifactDAO artifactDao;
|
||||||
|
|
||||||
|
protected void setUp()
|
||||||
|
throws Exception
|
||||||
|
{
|
||||||
|
super.setUp();
|
||||||
|
|
||||||
|
ArchivaDAO dao = (ArchivaDAO) lookup( ArchivaDAO.ROLE, "jdo" );
|
||||||
|
artifactDao = dao.getArtifactDAO();
|
||||||
|
}
|
||||||
|
|
||||||
|
public ArchivaArtifact createArtifact( String artifactId, String version, String classifier, String type )
|
||||||
|
{
|
||||||
|
ArchivaArtifact artifact = artifactDao.createArtifact( TEST_GROUPID, artifactId, version,
|
||||||
|
classifier, type );
|
||||||
|
Calendar cal = Calendar.getInstance();
|
||||||
|
artifact.getModel().setLastModified( cal.getTime() );
|
||||||
|
artifact.getModel().setRepositoryId( "testable_repo" );
|
||||||
|
return artifact;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testConstraint()
|
||||||
|
throws Exception
|
||||||
|
{
|
||||||
|
// Setup artifacts in fresh DB.
|
||||||
|
artifactDao.saveArtifact( createArtifact( "test-one", "1.0", "", "jar" ) );
|
||||||
|
artifactDao.saveArtifact( createArtifact( "test-one", "1.0", "", "pom" ) );
|
||||||
|
artifactDao.saveArtifact( createArtifact( "test-one", "1.0", "javadoc", "jar" ) );
|
||||||
|
artifactDao.saveArtifact( createArtifact( "test-one", "1.0", "sources", "jar" ) );
|
||||||
|
|
||||||
|
artifactDao.saveArtifact( createArtifact( "test-one", "1.1", "", "jar" ) );
|
||||||
|
artifactDao.saveArtifact( createArtifact( "test-one", "1.2", "", "jar" ) );
|
||||||
|
|
||||||
|
artifactDao.saveArtifact( createArtifact( "test-two", "1.0", "", "jar" ) );
|
||||||
|
artifactDao.saveArtifact( createArtifact( "test-two", "2.0", "", "jar" ) );
|
||||||
|
artifactDao.saveArtifact( createArtifact( "test-two", "2.1", "", "jar" ) );
|
||||||
|
artifactDao.saveArtifact( createArtifact( "test-two", "3.0", "", "jar" ) );
|
||||||
|
|
||||||
|
assertConstraint( 4, new ArtifactsRelatedConstraint( TEST_GROUPID, "test-one", "1.0" ) );
|
||||||
|
assertConstraint( 1, new ArtifactsRelatedConstraint( TEST_GROUPID, "test-one", "1.1" ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
private void assertConstraint( int expectedHits, Constraint constraint )
|
||||||
|
throws Exception
|
||||||
|
{
|
||||||
|
List results = artifactDao.queryArtifacts( constraint );
|
||||||
|
assertNotNull( "Related Artifacts: Not Null", results );
|
||||||
|
assertEquals( "Related Artifacts: Results.size", expectedHits, results.size() );
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -87,7 +87,9 @@ public class DownloadArtifact
|
||||||
this.res = (HttpServletResponse) pageContext.getResponse();
|
this.res = (HttpServletResponse) pageContext.getResponse();
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
dao = (ArchivaDAO) PlexusTagUtil.lookup( pageContext, ArchivaDAO.ROLE );
|
dao = (ArchivaDAO) PlexusTagUtil.lookup( pageContext, ArchivaDAO.ROLE, "jdo" );
|
||||||
|
layoutFactory = (BidirectionalRepositoryLayoutFactory) PlexusTagUtil
|
||||||
|
.lookup( pageContext, BidirectionalRepositoryLayoutFactory.class );
|
||||||
}
|
}
|
||||||
catch ( ComponentLookupException e )
|
catch ( ComponentLookupException e )
|
||||||
{
|
{
|
||||||
|
|
|
@ -34,12 +34,24 @@ import javax.servlet.jsp.PageContext;
|
||||||
*/
|
*/
|
||||||
public class PlexusTagUtil
|
public class PlexusTagUtil
|
||||||
{
|
{
|
||||||
|
public static Object lookup( PageContext pageContext, Class clazz )
|
||||||
|
throws ComponentLookupException
|
||||||
|
{
|
||||||
|
return getContainer( pageContext ).lookup( clazz );
|
||||||
|
}
|
||||||
|
|
||||||
public static Object lookup( PageContext pageContext, String role )
|
public static Object lookup( PageContext pageContext, String role )
|
||||||
throws ComponentLookupException
|
throws ComponentLookupException
|
||||||
{
|
{
|
||||||
return getContainer( pageContext ).lookup( role );
|
return getContainer( pageContext ).lookup( role );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static Object lookup( PageContext pageContext, Class clazz, String hint )
|
||||||
|
throws ComponentLookupException
|
||||||
|
{
|
||||||
|
return getContainer( pageContext ).lookup( clazz, hint );
|
||||||
|
}
|
||||||
|
|
||||||
public static Object lookup( PageContext pageContext, String role, String hint )
|
public static Object lookup( PageContext pageContext, String role, String hint )
|
||||||
throws ComponentLookupException
|
throws ComponentLookupException
|
||||||
{
|
{
|
||||||
|
|
|
@ -70,16 +70,16 @@
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
--%>
|
--%>
|
||||||
<c:if test="${model.parent != null}">
|
<c:if test="${model.parentProject != null}">
|
||||||
<tr>
|
<tr>
|
||||||
<th>Parent</th>
|
<th>Parent</th>
|
||||||
<td>
|
<td>
|
||||||
${model.parent.groupId} ${model.parent.artifactId} ${model.parent.version}
|
${model.parentProject.groupId} ${model.parentProject.artifactId} ${model.parentProject.version}
|
||||||
<c:set var="url">
|
<c:set var="url">
|
||||||
<ww:url action="showArtifact" namespace="/">
|
<ww:url action="showArtifact" namespace="/">
|
||||||
<ww:param name="groupId" value="%{'${model.parent.groupId}'}"/>
|
<ww:param name="groupId" value="%{'${model.parentProject.groupId}'}"/>
|
||||||
<ww:param name="artifactId" value="%{'${model.parent.artifactId}'}"/>
|
<ww:param name="artifactId" value="%{'${model.parentProject.artifactId}'}"/>
|
||||||
<ww:param name="version" value="%{'${model.parent.version}'}"/>
|
<ww:param name="version" value="%{'${model.parentProject.version}'}"/>
|
||||||
</ww:url>
|
</ww:url>
|
||||||
</c:set>
|
</c:set>
|
||||||
(<a href="${url}">View</a>)
|
(<a href="${url}">View</a>)
|
||||||
|
|
Loading…
Reference in New Issue