[MRM-346]: Show Artifact results in error 500.

git-svn-id: https://svn.apache.org/repos/asf/maven/archiva/trunk@540599 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Joakim Erdfelt 2007-05-22 14:43:07 +00:00
parent 6a82d8f370
commit 8e4c990b3b
4 changed files with 283 additions and 141 deletions

View File

@ -596,7 +596,8 @@
<description>
The snapshot version id.
</description>
<association>
<association stash.part="true"
jpox.join="false">
<type>SnapshotVersion</type>
<multiplicity>1</multiplicity>
</association>
@ -736,36 +737,29 @@
-->
<class stash.storable="true"
jpox.table="PROJECT_REFERENCE"
jpox.use-identifiers-as-primary-key="false"
jpox.identity-type="application"
jpox.identity-class="org.apache.maven.archiva.model.jpox.ProjectReferenceKey">
jpox.table="PROJECT_REFERENCE">
<name>ProjectReference</name>
<description>A reference to another (unversioned) Project</description>
<version>1.0.0+</version>
<fields>
<field jpox.primary-key="true"
jpox.value-strategy="off"
jpox.persistence-modifier="persistent">
<field null-value="default">
<name>groupId</name>
<identifier>true</identifier>
<identifier>false</identifier>
<version>1.0.0+</version>
<type>String</type>
<required>true</required>
<description>
The Group ID of the repository content.
The Group ID of the project reference.
</description>
</field>
<field jpox.primary-key="true"
jpox.value-strategy="off"
jpox.persistence-modifier="persistent">
<field null-value="default">
<name>artifactId</name>
<identifier>true</identifier>
<identifier>false</identifier>
<version>1.0.0+</version>
<type>String</type>
<required>true</required>
<description>
The Artifact ID of the repository content.
The Artifact ID of the project reference.
</description>
</field>
</fields>
@ -776,23 +770,42 @@
private static final long serialVersionUID = 8947981859537138991L;
]]></code>
</codeSegment>
<codeSegment>
<version>1.0.0+</version>
<code><![CDATA[
private static String defaultString( String value )
{
if ( value == null )
{
return "";
}
return value.trim();
}
public static String toKey( ProjectReference reference )
{
StringBuffer key = new StringBuffer();
key.append( defaultString( reference.getGroupId() ) ).append( ":" );
key.append( defaultString( reference.getArtifactId() ) ).append( ":" );
return key.toString();
}
]]></code>
</codeSegment>
</codeSegments>
</class>
<class stash.storable="true"
jpox.table="VERSIONED_REFERENCE"
jpox.use-identifiers-as-primary-key="false"
jpox.identity-type="application"
jpox.identity-class="org.apache.maven.archiva.model.jpox.VersionedReferenceKey">
jpox.table="VERSIONED_REFERENCE">
<name>VersionedReference</name>
<description>A reference to another Versioned Project</description>
<version>1.0.0+</version>
<fields>
<field jpox.primary-key="true"
jpox.value-strategy="off"
jpox.persistence-modifier="persistent">
<field null-value="default">
<name>groupId</name>
<identifier>true</identifier>
<identifier>false</identifier>
<version>1.0.0+</version>
<type>String</type>
<required>true</required>
@ -800,11 +813,9 @@
The Group ID of the repository content.
</description>
</field>
<field jpox.primary-key="true"
jpox.value-strategy="off"
jpox.persistence-modifier="persistent">
<field null-value="default">
<name>artifactId</name>
<identifier>true</identifier>
<identifier>false</identifier>
<version>1.0.0+</version>
<type>String</type>
<required>true</required>
@ -812,11 +823,9 @@
The Artifact ID of the repository content.
</description>
</field>
<field jpox.primary-key="true"
jpox.value-strategy="off"
jpox.persistence-modifier="persistent">
<field null-value="default">
<name>version</name>
<identifier>true</identifier>
<identifier>false</identifier>
<version>1.0.0+</version>
<type>String</type>
<required>false</required>
@ -832,22 +841,42 @@
private static final long serialVersionUID = -6990353165677563113L;
]]></code>
</codeSegment>
<codeSegment>
<version>1.0.0+</version>
<code><![CDATA[
private static String defaultString( String value )
{
if ( value == null )
{
return "";
}
return value.trim();
}
public static String toKey( VersionedReference reference )
{
StringBuffer key = new StringBuffer();
key.append( defaultString( reference.getGroupId() ) ).append( ":" );
key.append( defaultString( reference.getArtifactId() ) ).append( ":" );
key.append( defaultString( reference.getVersion() ) ).append( ":" );
return key.toString();
}
]]></code>
</codeSegment>
</codeSegments>
</class>
<class stash.storable="true"
jpox.table="ARTIFACT_REFERENCE"
jpox.use-identifiers-as-primary-key="false"
jpox.identity-type="application"
jpox.identity-class="org.apache.maven.archiva.model.jpox.ArtifactReferenceKey">
jpox.table="ARTIFACT_REFERENCE">
<name>ArtifactReference</name>
<version>1.0.0+</version>
<fields>
<field jpox.primary-key="true"
jpox.value-strategy="off"
jpox.persistence-modifier="persistent">
<field null-value="default">
<name>groupId</name>
<identifier>true</identifier>
<identifier>false</identifier>
<version>1.0.0+</version>
<type>String</type>
<required>true</required>
@ -855,11 +884,9 @@
The Group ID of the repository content.
</description>
</field>
<field jpox.primary-key="true"
jpox.value-strategy="off"
jpox.persistence-modifier="persistent">
<field null-value="default">
<name>artifactId</name>
<identifier>true</identifier>
<identifier>false</identifier>
<version>1.0.0+</version>
<type>String</type>
<required>true</required>
@ -867,11 +894,9 @@
The Artifact ID of the repository content.
</description>
</field>
<field jpox.primary-key="true"
jpox.value-strategy="off"
jpox.persistence-modifier="persistent">
<field null-value="default">
<name>version</name>
<identifier>true</identifier>
<identifier>false</identifier>
<version>1.0.0+</version>
<type>String</type>
<required>false</required>
@ -879,11 +904,9 @@
The version of the repository content.
</description>
</field>
<field jpox.primary-key="true"
jpox.value-strategy="off"
jpox.persistence-modifier="persistent">
<field null-value="default">
<name>classifier</name>
<identifier>true</identifier>
<identifier>false</identifier>
<version>1.0.0+</version>
<type>String</type>
<required>true</required>
@ -891,12 +914,10 @@
The classifier for this artifact.
</description>
</field>
<field jpox.primary-key="true"
jpox.value-strategy="off"
jpox.persistence-modifier="persistent"
<field null-value="default"
jpox.column="FILE_TYPE">
<name>type</name>
<identifier>true</identifier>
<identifier>false</identifier>
<version>1.0.0+</version>
<type>String</type>
<required>true</required>
@ -915,19 +936,25 @@
<codeSegment>
<version>1.0.0+</version>
<code><![CDATA[
private static String defaultString( String value )
{
if ( value == null )
{
return "";
}
return value.trim();
}
public static String toKey( ArtifactReference artifactReference )
{
StringBuffer key = new StringBuffer();
key.append( artifactReference.getGroupId() ).append( ":" );
key.append( artifactReference.getArtifactId() ).append( ":" );
key.append( artifactReference.getVersion() ).append( ":" );
if ( artifactReference.getClassifier() != null )
{
key.append( artifactReference.getClassifier() );
}
key.append( ":" );
key.append( artifactReference.getType() );
key.append( defaultString( artifactReference.getGroupId() ) ).append( ":" );
key.append( defaultString( artifactReference.getArtifactId() ) ).append( ":" );
key.append( defaultString( artifactReference.getVersion() ) ).append( ":" );
key.append( defaultString( artifactReference.getClassifier() ) ).append( ":" );
key.append( defaultString( artifactReference.getType() ) );
return key.toString();
}
@ -936,14 +963,10 @@
{
StringBuffer key = new StringBuffer();
key.append( artifactReference.getGroupId() ).append( ":" );
key.append( artifactReference.getArtifactId() ).append( ":" );
if ( artifactReference.getClassifier() != null )
{
key.append( artifactReference.getClassifier() );
}
key.append( ":" );
key.append( artifactReference.getType() );
key.append( defaultString( artifactReference.getGroupId() ) ).append( ":" );
key.append( defaultString( artifactReference.getArtifactId() ) ).append( ":" );
key.append( defaultString( artifactReference.getClassifier() ) ).append( ":" );
key.append( defaultString( artifactReference.getType() ) );
return key.toString();
}
@ -1010,7 +1033,8 @@
<identifier>false</identifier>
<version>1.0.0+</version>
<required>false</required>
<association>
<association stash.part="true"
jpox.join="false">
<type>VersionedReference</type>
<multiplicity>1</multiplicity>
</association>
@ -1083,7 +1107,8 @@
<identifier>false</identifier>
<version>1.0.0+</version>
<required>false</required>
<association>
<association stash.part="true"
jpox.join="false">
<type>Organization</type>
</association>
</field>
@ -1092,7 +1117,8 @@
<identifier>false</identifier>
<version>1.0.0+</version>
<required>false</required>
<association>
<association stash.part="true"
jpox.join="false">
<type>License</type>
<multiplicity>*</multiplicity>
</association>
@ -1102,7 +1128,8 @@
<version>1.0.0+</version>
<description>The mailing lists.</description>
<required>false</required>
<association>
<association stash.part="true"
jpox.join="false">
<type>MailingList</type>
<multiplicity>*</multiplicity>
</association>
@ -1111,7 +1138,8 @@
<name>issueManagement</name>
<version>1.0.0+</version>
<description><![CDATA[The project's issue management system information.]]></description>
<association>
<association stash.part="true"
jpox.join="false">
<type>IssueManagement</type>
</association>
</field>
@ -1119,7 +1147,8 @@
<name>ciManagement</name>
<version>1.0.0+</version>
<description><![CDATA[The project's continuous integration information.]]></description>
<association>
<association stash.part="true"
jpox.join="false">
<type>CiManagement</type>
</association>
</field>
@ -1128,7 +1157,8 @@
<version>1.0.0+</version>
<description>
<![CDATA[Specification for the SCM used by the project, such as CVS, Subversion, etc.]]></description>
<association>
<association stash.part="true"
jpox.join="false">
<type>Scm</type>
</association>
</field>
@ -1138,7 +1168,8 @@
<description>
The list of individuals around this project.
</description>
<association>
<association stash.part="true"
jpox.join="false">
<type>Individual</type>
<multiplicity>*</multiplicity>
</association>
@ -1150,7 +1181,8 @@
This element describes all of the dependencies associated with a
project.
]]></description>
<association>
<association stash.part="true"
jpox.join="false">
<type>Dependency</type>
<multiplicity>*</multiplicity>
</association>
@ -1161,7 +1193,8 @@
<description>
The list of dependency management settings.
</description>
<association>
<association stash.part="true"
jpox.join="false">
<type>Dependency</type>
<multiplicity>*</multiplicity>
</association>
@ -1172,7 +1205,8 @@
<description>
The list project repositories in use by this project.
</description>
<association>
<association stash.part="true"
jpox.join="false">
<type>ProjectRepository</type>
<multiplicity>*</multiplicity>
</association>
@ -1183,7 +1217,8 @@
<description>
The list of plugins that this project uses.
</description>
<association>
<association stash.part="true"
jpox.join="false">
<type>ArtifactReference</type>
<multiplicity>*</multiplicity>
</association>
@ -1194,7 +1229,8 @@
<description>
The list of reports that this project uses.
</description>
<association>
<association stash.part="true"
jpox.join="false">
<type>ArtifactReference</type>
<multiplicity>*</multiplicity>
</association>
@ -1205,7 +1241,8 @@
<description>
The list of build extensions that this project uses.
</description>
<association>
<association stash.part="true"
jpox.join="false">
<type>ArtifactReference</type>
<multiplicity>*</multiplicity>
</association>
@ -1673,7 +1710,8 @@
Lists a set of artifacts that should be excluded from this dependency's artifact list when it comes to
calculating transitive dependencies.
</description>
<association>
<association stash.part="true"
jpox.join="false">
<type>Exclusion</type>
<multiplicity>*</multiplicity>
</association>

View File

@ -105,6 +105,8 @@ public class ProjectModel400Reader
model.setReports( getReports( xml ) );
model.setProperties( getProperties( xml.getElement( "//project/properties" ) ) );
model.setBuildExtensions( getBuildExtensions( xml ) );
return model;
}
catch ( XMLException e )
@ -126,6 +128,31 @@ public class ProjectModel400Reader
return reference;
}
/**
* Get List of {@link ArtifactReference} objects from xpath expr.
*/
private List getArtifactReferenceList( XMLReader xml, String xpathExpr, String defaultType )
throws XMLException
{
List plugins = new ArrayList();
Iterator it = xml.getElementList( xpathExpr ).iterator();
while ( it.hasNext() )
{
Element elemPlugin = (Element) it.next();
plugins.add( getArtifactReference( elemPlugin, defaultType ) );
}
return plugins;
}
private List getBuildExtensions( XMLReader xml )
throws XMLException
{
return getArtifactReferenceList( xml, "//project/build/extensions/extension", "jar" );
}
private CiManagement getCiManagement( XMLReader xml )
throws XMLException
{
@ -305,6 +332,34 @@ public class ProjectModel400Reader
return null;
}
private List getLicenses( XMLReader xml )
throws XMLException
{
List licenses = new ArrayList();
Element elemLicenses = xml.getElement( "//project/licenses" );
if ( elemLicenses != null )
{
Iterator itLicense = elemLicenses.elements( "license" ).iterator();
while ( itLicense.hasNext() )
{
Element elemLicense = (Element) itLicense.next();
License license = new License();
// TODO: Create LicenseIdentity class to managed license ids.
// license.setId( elemLicense.elementTextTrim("id") );
license.setName( elemLicense.elementTextTrim( "name" ) );
license.setUrl( elemLicense.elementTextTrim( "url" ) );
license.setComments( elemLicense.elementTextTrim( "comments" ) );
licenses.add( license );
}
}
return licenses;
}
private List getMailingLists( XMLReader xml )
throws XMLException
{
@ -343,34 +398,6 @@ public class ProjectModel400Reader
return mailingLists;
}
private List getLicenses( XMLReader xml )
throws XMLException
{
List licenses = new ArrayList();
Element elemLicenses = xml.getElement( "//project/licenses" );
if ( elemLicenses != null )
{
Iterator itLicense = elemLicenses.elements( "license" ).iterator();
while ( itLicense.hasNext() )
{
Element elemLicense = (Element) itLicense.next();
License license = new License();
// TODO: Create LicenseIdentity class to managed license ids.
// license.setId( elemLicense.elementTextTrim("id") );
license.setName( elemLicense.elementTextTrim( "name" ) );
license.setUrl( elemLicense.elementTextTrim( "url" ) );
license.setComments( elemLicense.elementTextTrim( "comments" ) );
licenses.add( license );
}
}
return licenses;
}
private Organization getOrganization( XMLReader xml )
throws XMLException
{
@ -404,26 +431,7 @@ public class ProjectModel400Reader
private List getPlugins( XMLReader xml )
throws XMLException
{
return getPlugins( xml, "//project/build/plugins/plugin" );
}
/**
* Get List of {@link RepositoryContent} objects from plugin definitions.
*/
private List getPlugins( XMLReader xml, String xpathExpr )
throws XMLException
{
List plugins = new ArrayList();
Iterator it = xml.getElementList( xpathExpr ).iterator();
while ( it.hasNext() )
{
Element elemPlugin = (Element) it.next();
plugins.add( getArtifactReference( elemPlugin, "maven-plugin" ) );
}
return plugins;
return getArtifactReferenceList( xml, "//project/build/plugins/plugin", "maven-plugin" );
}
private Properties getProperties( Element elemProperties )
@ -448,7 +456,7 @@ public class ProjectModel400Reader
private List getReports( XMLReader xml )
throws XMLException
{
return getPlugins( xml, "//project/reporting/plugins/plugin" );
return getArtifactReferenceList( xml, "//project/reporting/plugins/plugin", "maven-plugin" );
}
private List getRepositories( XMLReader xml )

View File

@ -19,6 +19,8 @@ package org.apache.maven.archiva.database.jdo;
* under the License.
*/
import org.apache.commons.beanutils.PropertyUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.maven.archiva.database.AbstractArchivaDatabaseTestCase;
import org.apache.maven.archiva.database.ProjectModelDAO;
import org.apache.maven.archiva.model.ArchivaProjectModel;
@ -26,7 +28,9 @@ import org.apache.maven.archiva.model.jpox.ArchivaProjectModelKey;
import org.apache.maven.archiva.repository.project.ProjectModelReader;
import java.io.File;
import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import javax.jdo.JDOHelper;
@ -111,7 +115,7 @@ public class JdoProjectModelDAOTest
assertEquals( 0, projectDao.queryProjectModels( null ).size() );
}
public void disabled_testSaveGetRealProjectModel()
public void testSaveGetRealProjectModel()
throws Exception
{
String groupId = "org.apache.maven.shared";
@ -129,7 +133,12 @@ public class JdoProjectModelDAOTest
ArchivaProjectModel model = modelReader.read( pomFile );
assertNotNull( "Model should not be null.", model );
// Fill in missing (mandatory) fields
/* NOTE: We are intentionally using a basic project model in this unit test.
* The expansion of expressions, resolving of dependencies, and merging
* of parent poms is *NOT* performed to keep this unit test simple.
*/
// Fill in mandatory/missing fields
model.setGroupId( groupId );
model.setOrigin( "testcase" );
@ -139,6 +148,39 @@ public class JdoProjectModelDAOTest
assertNotNull( "Project model should not be null.", savedModel );
// Test proper detachment of sub-objects.
assertNotNull( "model.parent != null", savedModel.getParentProject() );
List exprs = new ArrayList();
exprs.add( "parentProject.groupId" );
exprs.add( "organization.name" );
exprs.add( "issueManagement.system" );
exprs.add( "ciManagement.system" );
exprs.add( "scm.url" );
exprs.add( "individuals[0].name" );
exprs.add( "dependencies[0].groupId" );
exprs.add( "dependencyManagement[0].artifactId" );
exprs.add( "repositories[0].id" );
exprs.add( "plugins[0].artifactId" );
exprs.add( "reports[0].artifactId" );
exprs.add( "buildExtensions[0].artifactId" );
exprs.add( "licenses[0].url" );
exprs.add( "mailingLists[0].name" );
Iterator it = exprs.iterator();
while ( it.hasNext() )
{
String expr = (String) it.next();
try
{
Object obj = PropertyUtils.getProperty( model, expr );
assertNotNull( "Expr \"" + expr + "\" != null", obj );
assertTrue( "Expr \"" + expr + "\" should be a String.", ( obj instanceof String ) );
String value = (String) obj;
assertTrue( "Expr \"" + expr + "\" value should not be blank.", StringUtils.isNotBlank( value ) );
}
catch ( IndexOutOfBoundsException e )
{
fail( "Expr \"" + expr + "\" unable to get indexed property: " + e.getClass().getName() + ": "
+ e.getMessage() );
}
}
}
}

View File

@ -39,7 +39,45 @@
<developerConnection>scm:svn:https://svn.apache.org/repos/asf/maven/sandbox/maven-shared-jar</developerConnection>
<url>http://svn.apache.org/viewcvs.cgi/maven/sandbox/maven-shared-jar</url>
</scm>
<organization>
<name>Apache</name>
</organization>
<issueManagement>
<system>jira</system>
</issueManagement>
<ciManagement>
<system>continuum</system>
</ciManagement>
<developers>
<developer>
<id>joakime</id>
<email>joakime@apache.org</email>
<name>Joakim Erdfelt</name>
</developer>
</developers>
<contributors>
<contributor>
<name>Someone Else</name>
</contributor>
</contributors>
<licenses>
<license>
<url>http://www.apache.org/licenses/LICENSE-2.0</url>
</license>
</licenses>
<mailingLists>
<mailingList>
<name>Shared Mailing List</name>
</mailingList>
</mailingLists>
<build>
<plugins>
<plugin>
@ -65,6 +103,13 @@
</executions>
</plugin>
</plugins>
<extensions>
<extension>
<groupId>org.apache.maven.wagon</groupId>
<artifactId>wagon-webdav</artifactId>
<version>1.0-beta-2</version>
</extension>
</extensions>
</build>
<reporting>
@ -134,12 +179,21 @@
</snapshots>
</repository>
</repositories>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-model</artifactId>
<version>2.0.5</version>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-model</artifactId>
<version>2.0.2</version>
<scope>compile</scope>
</dependency>