Author: brett
Date: Wed Nov 25 11:45:49 2009
New Revision: 884062
URL: http://svn.apache.org/viewvc?rev=884062&view=rev
Log:
[MRM-1282] more reading of Maven POM into metadata
Modified:
archiva/branches/MRM-1025/archiva-modules/metadata/metadata-model/src/main/java/org/apache/archiva/metadata/model/License.java
archiva/branches/MRM-1025/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryMetadataResolver.java
archiva/branches/MRM-1025/archiva-modules/plugins/maven2-repository/src/test/java/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryMetadataResolverTest.java
Modified:
archiva/branches/MRM-1025/archiva-modules/metadata/metadata-model/src/main/java/org/apache/archiva/metadata/model/License.java
URL:
http://svn.apache.org/viewvc/archiva/branches/MRM-1025/archiva-modules/metadata/metadata-model/src/main/java/org/apache/archiva/metadata/model/License.java?rev=884062&r1=884061&r2=884062&view=diff
==============================================================================
---
archiva/branches/MRM-1025/archiva-modules/metadata/metadata-model/src/main/java/org/apache/archiva/metadata/model/License.java
(original)
+++
archiva/branches/MRM-1025/archiva-modules/metadata/metadata-model/src/main/java/org/apache/archiva/metadata/model/License.java
Wed Nov 25 11:45:49 2009
@@ -25,6 +25,16 @@
private String url;
+ public License( String name, String url )
+ {
+ this.name = name;
+ this.url = url;
+ }
+
+ public License()
+ {
+ }
+
public String getName()
{
return name;
@@ -44,4 +54,44 @@
{
this.url = url;
}
+
+ @Override
+ public boolean equals( Object o )
+ {
+ if ( this == o )
+ {
+ return true;
+ }
+ if ( o == null || getClass() != o.getClass() )
+ {
+ return false;
+ }
+
+ License license = (License) o;
+
+ if ( name != null ? !name.equals( license.name ) : license.name !=
null )
+ {
+ return false;
+ }
+ if ( url != null ? !url.equals( license.url ) : license.url != null )
+ {
+ return false;
+ }
+
+ return true;
+ }
+
+ @Override
+ public int hashCode()
+ {
+ int result = name != null ? name.hashCode() : 0;
+ result = 31 * result + ( url != null ? url.hashCode() : 0 );
+ return result;
+ }
+
+ @Override
+ public String toString()
+ {
+ return "License{" + "name='" + name + '\'' + ", url='" + url + '\'' +
'}';
+ }
}
Modified:
archiva/branches/MRM-1025/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryMetadataResolver.java
URL:
http://svn.apache.org/viewvc/archiva/branches/MRM-1025/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryMetadataResolver.java?rev=884062&r1=884061&r2=884062&view=diff
==============================================================================
---
archiva/branches/MRM-1025/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryMetadataResolver.java
(original)
+++
archiva/branches/MRM-1025/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryMetadataResolver.java
Wed Nov 25 11:45:49 2009
@@ -20,7 +20,9 @@
*/
import java.io.File;
+import java.util.ArrayList;
import java.util.Collection;
+import java.util.List;
import org.apache.archiva.metadata.model.ProjectMetadata;
import org.apache.archiva.metadata.model.ProjectVersionMetadata;
@@ -30,7 +32,12 @@
import org.apache.maven.archiva.configuration.ArchivaConfiguration;
import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration;
import org.apache.maven.archiva.xml.XMLException;
+import org.apache.maven.model.CiManagement;
+import org.apache.maven.model.IssueManagement;
+import org.apache.maven.model.License;
import org.apache.maven.model.Model;
+import org.apache.maven.model.Organization;
+import org.apache.maven.model.Scm;
import org.apache.maven.model.building.DefaultModelBuildingRequest;
import org.apache.maven.model.building.ModelBuilder;
import org.apache.maven.model.building.ModelBuildingException;
@@ -65,8 +72,6 @@
public ProjectVersionMetadata getProjectVersion( String repoId, String
namespace, String projectId,
String projectVersion )
{
- // TODO: artifactVersion translation
-
ManagedRepositoryConfiguration repositoryConfiguration =
archivaConfiguration.getConfiguration().findManagedRepositoryById(
repoId );
@@ -113,6 +118,17 @@
throw new RuntimeException( e );
}
+ ProjectVersionMetadata metadata = new ProjectVersionMetadata();
+ metadata.setCiManagement( convertCiManagement( model.getCiManagement()
) );
+ metadata.setDescription( model.getDescription() );
+ metadata.setId( projectVersion );
+ metadata.setIssueManagement( convertIssueManagement(
model.getIssueManagement() ) );
+ metadata.setLicenses( convertLicenses( model.getLicenses() ) );
+ metadata.setName( model.getName() );
+ metadata.setOrganization( convertOrganization( model.getOrganization()
) );
+ metadata.setScm( convertScm( model.getScm() ) );
+ metadata.setUrl( model.getUrl() );
+
MavenProjectFacet facet = new MavenProjectFacet();
facet.setGroupId( model.getGroupId() != null ? model.getGroupId() :
model.getParent().getGroupId() );
facet.setArtifactId( model.getArtifactId() );
@@ -125,14 +141,73 @@
parent.setVersion( model.getParent().getVersion() );
facet.setParent( parent );
}
- ProjectVersionMetadata metadata = new ProjectVersionMetadata();
- metadata.setUrl( model.getUrl() );
metadata.addFacet( facet );
- // TODO: convert project
return metadata;
}
+ private org.apache.archiva.metadata.model.Scm convertScm( Scm scm )
+ {
+ org.apache.archiva.metadata.model.Scm newScm = null;
+ if ( scm != null )
+ {
+ newScm = new org.apache.archiva.metadata.model.Scm();
+ newScm.setConnection( scm.getConnection() );
+ newScm.setDeveloperConnection( scm.getDeveloperConnection() );
+ newScm.setUrl( scm.getUrl() );
+ }
+ return newScm;
+ }
+
+ private org.apache.archiva.metadata.model.Organization
convertOrganization( Organization organization )
+ {
+ org.apache.archiva.metadata.model.Organization org = null;
+ if ( organization != null )
+ {
+ org = new org.apache.archiva.metadata.model.Organization();
+ org.setName( organization.getName() );
+ org.setUrl( organization.getUrl() );
+ }
+ return org;
+ }
+
+ private List<org.apache.archiva.metadata.model.License> convertLicenses(
List<License> licenses )
+ {
+ List<org.apache.archiva.metadata.model.License> l = new
ArrayList<org.apache.archiva.metadata.model.License>();
+ for ( License license : licenses )
+ {
+ org.apache.archiva.metadata.model.License newLicense = new
org.apache.archiva.metadata.model.License();
+ newLicense.setName( license.getName() );
+ newLicense.setUrl( license.getUrl() );
+ l.add( newLicense );
+ }
+ return l;
+ }
+
+ private org.apache.archiva.metadata.model.IssueManagement
convertIssueManagement( IssueManagement issueManagement )
+ {
+ org.apache.archiva.metadata.model.IssueManagement im = null;
+ if ( issueManagement != null )
+ {
+ im = new org.apache.archiva.metadata.model.IssueManagement();
+ im.setSystem( issueManagement.getSystem() );
+ im.setUrl( issueManagement.getUrl() );
+ }
+ return im;
+ }
+
+ private org.apache.archiva.metadata.model.CiManagement
convertCiManagement( CiManagement ciManagement )
+ {
+ org.apache.archiva.metadata.model.CiManagement ci = null;
+ if ( ciManagement != null )
+ {
+ ci = new org.apache.archiva.metadata.model.CiManagement();
+ ci.setSystem( ciManagement.getSystem() );
+ ci.setUrl( ciManagement.getUrl() );
+ }
+ return ci;
+ }
+
public Collection<String> getArtifactVersions( String repoId, String
namespace, String projectId,
String projectVersion )
{
Modified:
archiva/branches/MRM-1025/archiva-modules/plugins/maven2-repository/src/test/java/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryMetadataResolverTest.java
URL:
http://svn.apache.org/viewvc/archiva/branches/MRM-1025/archiva-modules/plugins/maven2-repository/src/test/java/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryMetadataResolverTest.java?rev=884062&r1=884061&r2=884062&view=diff
==============================================================================
---
archiva/branches/MRM-1025/archiva-modules/plugins/maven2-repository/src/test/java/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryMetadataResolverTest.java
(original)
+++
archiva/branches/MRM-1025/archiva-modules/plugins/maven2-repository/src/test/java/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryMetadataResolverTest.java
Wed Nov 25 11:45:49 2009
@@ -19,6 +19,9 @@
* under the License.
*/
+import java.util.Arrays;
+
+import org.apache.archiva.metadata.model.License;
import org.apache.archiva.metadata.model.ProjectVersionMetadata;
import org.apache.archiva.metadata.repository.MetadataResolver;
import org.apache.maven.archiva.configuration.ArchivaConfiguration;
@@ -33,6 +36,12 @@
private static final String TEST_REPO_ID = "test";
+ private static final String ASF_SCM_CONN_BASE =
"scm:svn:http://svn.apache.org/repos/asf/";
+
+ private static final String ASF_SCM_DEV_CONN_BASE =
"scm:svn:https://svn.apache.org/repos/asf/";
+
+ private static final String ASF_SCM_VIEWVC_BASE =
"http://svn.apache.org/viewvc/";
+
public void setUp()
throws Exception
{
@@ -56,7 +65,28 @@
MavenProjectFacet facet = (MavenProjectFacet) metadata.getFacet(
MavenProjectFacet.FACET_ID );
assertEquals( "jar", facet.getPackaging() );
assertEquals(
"http://archiva.apache.org/ref/1.2.1/archiva-base/archiva-common",
metadata.getUrl() );
- // TODO: more testing
+ assertEquals( "org.apache.archiva", facet.getParent().getGroupId() );
+ assertEquals( "archiva-base", facet.getParent().getArtifactId() );
+ assertEquals( "1.2.1", facet.getParent().getVersion() );
+ assertEquals( "archiva-common", facet.getArtifactId() );
+ assertEquals( "org.apache.archiva", facet.getGroupId() );
+ assertEquals( "continuum", metadata.getCiManagement().getSystem() );
+ assertEquals( "http://vmbuild.apache.org/continuum",
metadata.getCiManagement().getUrl() );
+ assertNotNull( metadata.getDescription() );
+ // TODO: this would be better
+// assertEquals(
+// "Archiva is an application for managing one or more remote
repositories, including administration, artifact handling, browsing and
searching.",
+// metadata.getDescription() );
+ assertEquals( "1.2.1", metadata.getId() );
+ assertEquals( "jira", metadata.getIssueManagement().getSystem() );
+ assertEquals( "http://jira.codehaus.org/browse/MRM",
metadata.getIssueManagement().getUrl() );
+ checkApacheLicense( metadata );
+ assertEquals( "Archiva Base :: Common", metadata.getName() );
+ String path =
"archiva/tags/archiva-1.2.1/archiva-modules/archiva-base/archiva-common";
+ assertEquals( ASF_SCM_CONN_BASE + path,
metadata.getScm().getConnection() );
+ assertEquals( ASF_SCM_DEV_CONN_BASE + path,
metadata.getScm().getDeveloperConnection() );
+ assertEquals( ASF_SCM_VIEWVC_BASE + path, metadata.getScm().getUrl() );
+ checkOrganizationApache( metadata );
}
public void testGetProjectVersionMetadataForTimestampedSnapshot()
@@ -66,6 +96,39 @@
MavenProjectFacet facet = (MavenProjectFacet) metadata.getFacet(
MavenProjectFacet.FACET_ID );
assertEquals( "pom", facet.getPackaging() );
assertEquals( "http://www.apache.org/", metadata.getUrl() );
- // TODO: more testing
+ assertNull( facet.getParent() );
+ assertEquals( "org.apache", facet.getGroupId() );
+ assertEquals( "apache", facet.getArtifactId() );
+ assertNull( metadata.getCiManagement() );
+ assertNotNull( metadata.getDescription() );
+ // TODO: this would be better
+// assertEquals(
+// "The Apache Software Foundation provides support for the Apache
community of open-source software projects. " +
+// "The Apache projects are characterized by a collaborative,
consensus based development process, an open " +
+// "and pragmatic software license, and a desire to create high
quality software that leads the way in its " +
+// "field. We consider ourselves not simply a group of projects
sharing a server, but rather a community of " +
+// "developers and users.", metadata.getDescription() );
+ assertEquals( "5-SNAPSHOT", metadata.getId() );
+ assertNull( metadata.getIssueManagement() );
+ checkApacheLicense( metadata );
+ assertEquals( "The Apache Software Foundation", metadata.getName() );
+ String path = "maven/pom/trunk/asf";
+ assertEquals( ASF_SCM_CONN_BASE + path,
metadata.getScm().getConnection() );
+ assertEquals( ASF_SCM_DEV_CONN_BASE + path,
metadata.getScm().getDeveloperConnection() );
+ assertEquals( ASF_SCM_VIEWVC_BASE + path, metadata.getScm().getUrl() );
+ checkOrganizationApache( metadata );
+ }
+
+ private void checkApacheLicense( ProjectVersionMetadata metadata )
+ {
+ assertEquals( Arrays.asList( new License( "The Apache Software
License, Version 2.0",
+
"http://www.apache.org/licenses/LICENSE-2.0.txt" ) ),
+ metadata.getLicenses() );
+ }
+
+ private void checkOrganizationApache( ProjectVersionMetadata metadata )
+ {
+ assertEquals( "The Apache Software Foundation",
metadata.getOrganization().getName() );
+ assertEquals( "http://www.apache.org/",
metadata.getOrganization().getUrl() );
}
}