Updating with changes surrounding model, and database schema, change

git-svn-id: https://svn.apache.org/repos/asf/maven/archiva/branches/archiva-jpox-database-refactor@525951 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Joakim Erdfelt 2007-04-05 20:11:19 +00:00
parent 7e5d667be3
commit 379bbb7225
67 changed files with 6703 additions and 1239 deletions

View File

@ -35,24 +35,14 @@
archiva-dev@maven.apache.org mailing-list.
joakime@apache.org
-->
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-component-api</artifactId>
</dependency>
<!--
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-artifact-manager</artifactId>
</dependency>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-project</artifactId>
</dependency>
-->
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
</dependency>
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-component-api</artifactId>
</dependency>
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-container-default</artifactId>

View File

@ -19,8 +19,9 @@ package org.apache.maven.archiva.common.utils;
* under the License.
*/
import org.apache.commons.lang.StringUtils;
import junit.framework.TestCase;
import org.codehaus.plexus.util.StringUtils;
import java.io.File;

View File

@ -30,6 +30,10 @@
<packaging>jar</packaging>
<dependencies>
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-digest</artifactId>
</dependency>
<dependency>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-database</artifactId>

View File

@ -28,9 +28,10 @@ import org.apache.maven.archiva.database.ArchivaDAO;
import org.apache.maven.archiva.database.ArchivaDatabaseException;
import org.apache.maven.archiva.model.ArchivaArtifact;
import org.apache.maven.archiva.model.ArchivaRepository;
import org.apache.maven.archiva.model.RepositoryContent;
import org.apache.maven.archiva.repository.layout.BidirectionalRepositoryLayout;
import org.apache.maven.archiva.repository.layout.LayoutException;
import org.codehaus.plexus.digest.Digester;
import org.codehaus.plexus.digest.DigesterException;
import org.codehaus.plexus.personality.plexus.lifecycle.phase.Initializable;
import org.codehaus.plexus.personality.plexus.lifecycle.phase.InitializationException;
import org.codehaus.plexus.registry.Registry;
@ -38,6 +39,7 @@ import org.codehaus.plexus.registry.RegistryListener;
import java.io.File;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
@ -50,13 +52,16 @@ import java.util.Map;
* @plexus.component role-hint="update-db-artifact"
* instantiation-strategy="per-lookup"
*/
public class ArtifactUpdateDatabaseConsumer extends AbstractMonitoredConsumer
public class ArtifactUpdateDatabaseConsumer
extends AbstractMonitoredConsumer
implements RepositoryContentConsumer, RegistryListener, Initializable
{
private static final String TYPE_NOT_ARTIFACT = "file-not-artifact";
private static final String DB_ERROR = "db-error";
private static final String CHECKSUM_CALCULATION = null;
/**
* @plexus.configuration default-value="update-db-artifact"
*/
@ -66,7 +71,7 @@ public class ArtifactUpdateDatabaseConsumer extends AbstractMonitoredConsumer
* @plexus.configuration default-value="Update the Artifact in the Database"
*/
private String description;
/**
* @plexus.requirement role-hint="jdo"
*/
@ -82,6 +87,16 @@ public class ArtifactUpdateDatabaseConsumer extends AbstractMonitoredConsumer
*/
private Map bidirectionalLayoutMap;
/**
* @plexus.requirement role-hint="sha1"
*/
private Digester digestSha1;
/**
* @plexus.requirement role-hint="md5";
*/
private Digester digestMd5;
private ArchivaRepository repository;
private File repositoryDir;
@ -117,7 +132,8 @@ public class ArtifactUpdateDatabaseConsumer extends AbstractMonitoredConsumer
return this.includes;
}
public void beginScan( ArchivaRepository repository ) throws ConsumerException
public void beginScan( ArchivaRepository repository )
throws ConsumerException
{
if ( !repository.isManaged() )
{
@ -131,31 +147,53 @@ public class ArtifactUpdateDatabaseConsumer extends AbstractMonitoredConsumer
if ( !bidirectionalLayoutMap.containsKey( layoutName ) )
{
throw new ConsumerException( "Unable to process repository with layout [" + layoutName
+ "] as there is no coresponding " + BidirectionalRepositoryLayout.class.getName()
+ " implementation available." );
+ "] as there is no coresponding " + BidirectionalRepositoryLayout.class.getName()
+ " implementation available." );
}
this.layout = (BidirectionalRepositoryLayout) bidirectionalLayoutMap.get( layoutName );
}
public void processFile( String path ) throws ConsumerException
public void processFile( String path )
throws ConsumerException
{
try
{
ArchivaArtifact artifact = layout.toArtifact( path );
RepositoryContent repoContent = artifact.getModel().getContentKey();
repoContent.setRepositoryId( this.repository.getId() );
artifact.getModel().setRepositoryId( this.repository.getId() );
// Calculate the hashcodes.
File artifactFile = new File( this.repositoryDir, path );
try
{
artifact.getModel().setChecksumMD5( digestMd5.calc( artifactFile ) );
}
catch ( DigesterException e )
{
triggerConsumerWarning( CHECKSUM_CALCULATION, "Unable to calculate the MD5 checksum: " + e.getMessage() );
}
try
{
artifact.getModel().setChecksumSHA1( digestSha1.calc( artifactFile ) );
}
catch ( DigesterException e )
{
triggerConsumerWarning( CHECKSUM_CALCULATION, "Unable to calculate the SHA1 checksum: "
+ e.getMessage() );
}
artifact.getModel().setLastModified( new Date( artifactFile.lastModified() ) );
artifact.getModel().setSize( artifactFile.length() );
artifact.getModel().setOrigin( "FileSystem" );
dao.saveArtifact( artifact.getModel() );
}
catch ( LayoutException e )
{
triggerConsumerError( TYPE_NOT_ARTIFACT, "Path " + path + " cannot be converted to artifact: "
+ e.getMessage() );
+ e.getMessage() );
}
catch ( ArchivaDatabaseException e )
{
@ -192,7 +230,8 @@ public class ArtifactUpdateDatabaseConsumer extends AbstractMonitoredConsumer
}
}
public void initialize() throws InitializationException
public void initialize()
throws InitializationException
{
propertyNameTriggers = new ArrayList();
propertyNameTriggers.add( "repositoryScanning" );

View File

@ -71,7 +71,10 @@ public class ArchivaArtifact
model.setGroupId( groupId );
model.setArtifactId( artifactId );
model.setVersion( version );
model.setRepositoryId( repository.getId() );
if ( repository != null )
{
model.setRepositoryId( repository.getId() );
}
model.setClassifier( StringUtils.defaultString( classifier ) );
model.setType( type );

View File

@ -45,7 +45,7 @@ public class ArchivaModelCloner
cloned.setGroupId( model.getGroupId() );
cloned.setArtifactId( model.getArtifactId() );
cloned.setVersion( model.getVersion() );
cloned.setParentProject( clone( model.getParentProject() ) );
cloned.setName( model.getName() );
@ -75,15 +75,15 @@ public class ArchivaModelCloner
{
return null;
}
ArtifactReference cloned = new ArtifactReference();
cloned.setGroupId( artifactReference.getGroupId() );
cloned.setArtifactId( artifactReference.getArtifactId() );
cloned.setVersion( artifactReference.getVersion() );
cloned.setClassifier( artifactReference.getClassifier() );
cloned.setType( artifactReference.getType() );
return cloned;
}
@ -102,6 +102,30 @@ public class ArchivaModelCloner
return cloned;
}
public static Dependency clone( Dependency dependency )
{
if ( dependency == null )
{
return null;
}
Dependency cloned = new Dependency();
cloned.setGroupId( dependency.getGroupId() );
cloned.setArtifactId( dependency.getArtifactId() );
cloned.setVersion( dependency.getVersion() );
cloned.setClassifier( dependency.getClassifier() );
cloned.setType( dependency.getType() );
cloned.setScope( dependency.getScope() );
cloned.setOptional( dependency.isOptional() );
cloned.setSystemPath( dependency.getSystemPath() );
cloned.setUrl( dependency.getUrl() );
cloned.setExclusions( cloneExclusions( dependency.getExclusions() ) );
return cloned;
}
public static IssueManagement clone( IssueManagement issueManagement )
{
if ( issueManagement == null )
@ -175,13 +199,13 @@ public class ArchivaModelCloner
{
return null;
}
VersionedReference cloned = new VersionedReference();
cloned.setGroupId( versionedReference.getGroupId() );
cloned.setArtifactId( versionedReference.getArtifactId() );
cloned.setVersion( versionedReference.getVersion() );
return cloned;
}
@ -217,21 +241,13 @@ public class ArchivaModelCloner
while ( it.hasNext() )
{
Dependency dep = (Dependency) it.next();
Dependency cloned = new Dependency();
cloned.setGroupId( dep.getGroupId() );
cloned.setArtifactId( dep.getArtifactId() );
cloned.setVersion( dep.getVersion() );
cloned.setClassifier( dep.getClassifier() );
cloned.setType( dep.getType() );
cloned.setScope( dep.getScope() );
cloned.setOptional( dep.isOptional() );
cloned.setSystemPath( dep.getSystemPath() );
cloned.setUrl( dep.getUrl() );
cloned.setExclusions( cloneExclusions( dep.getExclusions() ) );
ret.add( cloned );
Dependency cloned = clone( dep );
if ( cloned != null )
{
ret.add( cloned );
}
}
return ret;

View File

@ -0,0 +1,60 @@
package org.apache.maven.archiva.model;
/*
* 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.codehaus.plexus.PlexusTestCase;
/**
* ArchivaModelClonerTest
*
* @author <a href="mailto:joakim@erdfelt.com">Joakim Erdfelt</a>
* @version $Id$
*/
public class ArchivaModelClonerTest
extends PlexusTestCase
{
public void testCloneProjectModelWithParent()
{
ArchivaProjectModel actualModel = new ArchivaProjectModel();
actualModel.setGroupId( null );
actualModel.setArtifactId( "archiva-common" );
actualModel.setVersion( null );
actualModel.setParentProject( new VersionedReference() );
actualModel.getParentProject().setGroupId( "org.apache.maven.archiva" );
actualModel.getParentProject().setArtifactId( "archiva-parent" );
actualModel.getParentProject().setVersion( "1.0" );
ArchivaProjectModel clonedModel = ArchivaModelCloner.clone( actualModel );
// Should not be the same object (in memory)
assertNotSame( clonedModel, actualModel );
// Should be equal in value.
assertEquals( clonedModel, actualModel );
// Test specific fields.
assertNull( "Group Id", clonedModel.getGroupId() );
assertNull( "Version", clonedModel.getVersion() );
assertNotNull( "Parent Reference", clonedModel.getParentProject() );
assertEquals( "Parent Group Id", "org.apache.maven.archiva", clonedModel.getParentProject().getGroupId() );
assertEquals( "Parent Artifact Id", "archiva-parent", clonedModel.getParentProject().getArtifactId() );
assertEquals( "Parent Version", "1.0", clonedModel.getParentProject().getVersion() );
}
}

View File

@ -43,6 +43,11 @@
<artifactId>archiva-xml-tools</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-expression-evaluator</artifactId>
<version>1.0-alpha-1</version>
</dependency>
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-utils</artifactId>

View File

@ -20,7 +20,6 @@ package org.apache.maven.archiva.repository.metadata;
*/
import org.apache.maven.archiva.model.ArchivaRepositoryMetadata;
import org.apache.maven.archiva.model.RepositoryContent;
import org.apache.maven.archiva.xml.XMLException;
import org.apache.maven.archiva.xml.XMLReader;
@ -49,13 +48,9 @@ public class RepositoryMetadataReader
XMLReader xml = new XMLReader( "metadata", metadataFile );
ArchivaRepositoryMetadata metadata = new ArchivaRepositoryMetadata();
RepositoryContent contentKey = new RepositoryContent();
contentKey.setGroupId( xml.getElementText( "//metadata/groupId" ) );
contentKey.setArtifactId( xml.getElementText( "//metadata/artifactId" ) );
metadata.setContentKey( contentKey );
metadata.setGroupId( xml.getElementText( "//metadata/groupId" ) );
metadata.setArtifactId( xml.getElementText( "//metadata/artifactId" ) );
metadata.setLastModified( new Date( metadataFile.lastModified() ) );
metadata.setSize( metadataFile.length() );
metadata.setWhenIndexed( new Date() );

View File

@ -0,0 +1,39 @@
package org.apache.maven.archiva.repository.project;
/*
* 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.model.ArchivaProjectModel;
/**
* Generic Filtering interface for {@link ArchivaProjectModel} objects.
*
* @author <a href="mailto:joakim@erdfelt.com">Joakim Erdfelt</a>
* @version $Id$
*/
public interface ProjectModelFilter
{
/**
* Filter a model and return the results of the filtering.
*
* @param model the model to filter.
* @return a new model representing the filtered state of the model.
*/
public ArchivaProjectModel filter( final ArchivaProjectModel model );
}

View File

@ -0,0 +1,661 @@
package org.apache.maven.archiva.repository.project;
/*
* 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.commons.lang.StringUtils;
import org.apache.maven.archiva.model.ArchivaModelCloner;
import org.apache.maven.archiva.model.ArchivaProjectModel;
import org.apache.maven.archiva.model.ArtifactReference;
import org.apache.maven.archiva.model.CiManagement;
import org.apache.maven.archiva.model.Dependency;
import org.apache.maven.archiva.model.Exclusion;
import org.apache.maven.archiva.model.Individual;
import org.apache.maven.archiva.model.IssueManagement;
import org.apache.maven.archiva.model.License;
import org.apache.maven.archiva.model.Organization;
import org.apache.maven.archiva.model.ProjectRepository;
import org.apache.maven.archiva.model.Scm;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.Map.Entry;
/**
* ProjectModelMerge
*
* @author <a href="mailto:joakim@erdfelt.com">Joakim Erdfelt</a>
* @version $Id$
*/
public class ProjectModelMerge
{
/**
* Merge the contents of a project with it's parent project.
*
* @param mainProject the main project.
* @param parentProject the parent project to merge.
* @throws ProjectModelException if there was a problem merging the model.
*/
public static ArchivaProjectModel merge( ArchivaProjectModel mainProject, ArchivaProjectModel parentProject )
throws ProjectModelException
{
System.out.println( "## Merging: " + mainProject + " with " + parentProject );
if ( mainProject == null )
{
throw new ProjectModelException( "Cannot copy a null main project." );
}
if ( parentProject == null )
{
throw new ProjectModelException( "Cannot copy to a null parent project." );
}
ArchivaProjectModel merged = new ArchivaProjectModel();
// Unmerged.
merged.setArtifactId( mainProject.getArtifactId() );
merged.setPackaging( StringUtils.defaultIfEmpty( mainProject.getPackaging(), "jar" ) );
// Merged
merged.setGroupId( merge( mainProject.getGroupId(), parentProject.getGroupId() ) );
merged.setVersion( merge( mainProject.getVersion(), parentProject.getVersion() ) );
merged.setName( merge( mainProject.getName(), parentProject.getName() ) );
merged.setUrl( merge( mainProject.getUrl(), parentProject.getUrl() ) );
merged.setDescription( merge( mainProject.getDescription(), parentProject.getDescription() ) );
merged.setOrigin( "merged" );
merged.setCiManagement( merge( mainProject.getCiManagement(), parentProject.getCiManagement() ) );
merged.setIndividuals( mergeIndividuals( mainProject.getIndividuals(), parentProject.getIndividuals() ) );
merged.setIssueManagement( merge( mainProject.getIssueManagement(), parentProject.getIssueManagement() ) );
merged.setLicenses( mergeLicenses( mainProject.getLicenses(), parentProject.getLicenses() ) );
merged.setOrganization( merge( mainProject.getOrganization(), parentProject.getOrganization() ) );
merged.setScm( merge( mainProject.getScm(), parentProject.getScm() ) );
merged.setRepositories( mergeRepositories( mainProject.getRepositories(), parentProject.getRepositories() ) );
merged.setDependencies( mergeDependencies( mainProject.getDependencies(), parentProject.getDependencies() ) );
merged.setDependencyManagement( mergeDependencyManagement( mainProject.getDependencyManagement(), parentProject
.getDependencyManagement() ) );
merged.setPlugins( mergePlugins( mainProject.getPlugins(), parentProject.getPlugins() ) );
merged.setReports( mergeReports( mainProject.getReports(), parentProject.getReports() ) );
merged.setProperties( merge( mainProject.getProperties(), parentProject.getProperties() ) );
return merged;
}
private static Map createArtifactReferenceMap( List artifactReferences )
{
Map ret = new HashMap();
Iterator it = artifactReferences.iterator();
while ( it.hasNext() )
{
ArtifactReference artifactReference = (ArtifactReference) it.next();
String key = toVersionlessArtifactKey( artifactReference );
ret.put( key, artifactReference );
}
return ret;
}
private static Map createDependencyMap( List dependencies )
{
Map ret = new HashMap();
Iterator it = dependencies.iterator();
while ( it.hasNext() )
{
Dependency dep = (Dependency) it.next();
String key = toVersionlessDependencyKey( dep );
ret.put( key, dep );
}
return ret;
}
private static Map createExclusionMap( List exclusions )
{
Map ret = new HashMap();
Iterator it = exclusions.iterator();
while ( it.hasNext() )
{
Exclusion exclusion = (Exclusion) it.next();
String key = exclusion.getGroupId() + ":" + exclusion.getArtifactId();
ret.put( key, exclusion );
}
return ret;
}
private static Map createLicensesMap( List licenses )
{
Map ret = new HashMap();
Iterator it = licenses.iterator();
while ( it.hasNext() )
{
License license = (License) it.next();
// TODO: Change to 'id' when LicenseTypeMapper is created.
String key = license.getName();
ret.put( key, license );
}
return ret;
}
private static Map createRepositoriesMap( List repositories )
{
Map ret = new HashMap();
Iterator it = repositories.iterator();
while ( it.hasNext() )
{
ProjectRepository repo = (ProjectRepository) it.next();
// Should this really be using repo.id ?
String key = repo.getUrl();
ret.put( key, repo );
}
return ret;
}
private static boolean empty( String val )
{
if ( val == null )
{
return true;
}
return ( val.trim().length() <= 0 );
}
private static ArtifactReference merge( ArtifactReference mainArtifactReference,
ArtifactReference parentArtifactReference )
{
if ( parentArtifactReference == null )
{
return mainArtifactReference;
}
if ( mainArtifactReference == null )
{
return ArchivaModelCloner.clone( parentArtifactReference );
}
ArtifactReference merged = new ArtifactReference();
// Unmerged.
merged.setGroupId( mainArtifactReference.getGroupId() );
merged.setArtifactId( mainArtifactReference.getArtifactId() );
// Merged.
merged.setVersion( merge( mainArtifactReference.getVersion(), parentArtifactReference.getVersion() ) );
merged.setClassifier( merge( mainArtifactReference.getClassifier(), parentArtifactReference.getClassifier() ) );
merged.setType( merge( mainArtifactReference.getType(), parentArtifactReference.getType() ) );
return merged;
}
private static CiManagement merge( CiManagement mainCim, CiManagement parentCim )
{
if ( parentCim == null )
{
return mainCim;
}
if ( mainCim == null )
{
return ArchivaModelCloner.clone( parentCim );
}
CiManagement merged = new CiManagement();
merged.setSystem( merge( mainCim.getSystem(), parentCim.getSystem() ) );
merged.setUrl( merge( mainCim.getUrl(), parentCim.getUrl() ) );
return merged;
}
private static Dependency merge( Dependency mainDep, Dependency parentDep )
{
if ( parentDep == null )
{
return mainDep;
}
if ( mainDep == null )
{
return ArchivaModelCloner.clone( parentDep );
}
Dependency merged = new Dependency();
// Unmerged.
merged.setGroupId( mainDep.getGroupId() );
merged.setArtifactId( mainDep.getArtifactId() );
// Merged.
merged.setVersion( merge( mainDep.getVersion(), parentDep.getVersion() ) );
merged.setClassifier( merge( mainDep.getClassifier(), parentDep.getClassifier() ) );
merged.setType( merge( mainDep.getType(), parentDep.getType() ) );
merged.setScope( merge( mainDep.getScope(), parentDep.getScope() ) );
if ( parentDep.isOptional() )
{
merged.setOptional( true );
}
merged.setSystemPath( merge( mainDep.getSystemPath(), parentDep.getSystemPath() ) );
merged.setUrl( merge( mainDep.getUrl(), parentDep.getUrl() ) );
merged.setExclusions( mergeExclusions( mainDep.getExclusions(), parentDep.getExclusions() ) );
return merged;
}
private static IssueManagement merge( IssueManagement mainIssueManagement, IssueManagement parentIssueManagement )
{
if ( parentIssueManagement == null )
{
return mainIssueManagement;
}
if ( mainIssueManagement == null )
{
return ArchivaModelCloner.clone( parentIssueManagement );
}
IssueManagement merged = new IssueManagement();
merged.setSystem( merge( mainIssueManagement.getSystem(), parentIssueManagement.getSystem() ) );
merged.setUrl( merge( mainIssueManagement.getUrl(), parentIssueManagement.getUrl() ) );
return merged;
}
private static Organization merge( Organization mainOrganization, Organization parentOrganization )
{
if ( parentOrganization == null )
{
return mainOrganization;
}
if ( mainOrganization == null )
{
return ArchivaModelCloner.clone( parentOrganization );
}
Organization merged = new Organization();
merged.setFavicon( merge( mainOrganization.getFavicon(), parentOrganization.getFavicon() ) );
merged.setName( merge( mainOrganization.getName(), parentOrganization.getName() ) );
merged.setUrl( merge( mainOrganization.getUrl(), parentOrganization.getUrl() ) );
return merged;
}
private static Properties merge( Properties mainProperties, Properties parentProperties )
{
if ( parentProperties == null )
{
return mainProperties;
}
if ( mainProperties == null )
{
return ArchivaModelCloner.clone( parentProperties );
}
Properties merged = new Properties();
Enumeration keys = parentProperties.propertyNames();
while ( keys.hasMoreElements() )
{
String key = (String) keys.nextElement();
merged.put( key, merge( mainProperties.getProperty( key ), parentProperties.getProperty( key ) ) );
}
return merged;
}
private static Scm merge( Scm mainScm, Scm parentScm )
{
if ( parentScm == null )
{
return mainScm;
}
if ( mainScm == null )
{
return ArchivaModelCloner.clone( parentScm );
}
Scm merged = new Scm();
merged.setConnection( merge( mainScm.getConnection(), parentScm.getConnection() ) );
merged.setDeveloperConnection( merge( mainScm.getDeveloperConnection(), parentScm.getDeveloperConnection() ) );
merged.setUrl( merge( mainScm.getUrl(), parentScm.getUrl() ) );
return merged;
}
private static String merge( String main, String parent )
{
if ( empty( main ) && !empty( parent ) )
{
return parent;
}
return main;
}
private static List mergeArtifactReferences( List mainArtifactReferences, List parentArtifactReferences )
{
if ( parentArtifactReferences == null )
{
return mainArtifactReferences;
}
if ( mainArtifactReferences == null )
{
return ArchivaModelCloner.cloneLicenses( parentArtifactReferences );
}
List merged = new ArrayList();
Map mainArtifactReferenceMap = createArtifactReferenceMap( mainArtifactReferences );
Map parentArtifactReferenceMap = createArtifactReferenceMap( parentArtifactReferences );
Iterator it = mainArtifactReferenceMap.entrySet().iterator();
while ( it.hasNext() )
{
Map.Entry entry = (Entry) it.next();
String key = (String) entry.getKey();
ArtifactReference mainArtifactReference = (ArtifactReference) entry.getValue();
ArtifactReference parentArtifactReference = (ArtifactReference) parentArtifactReferenceMap.get( key );
if ( parentArtifactReference == null )
{
merged.add( mainArtifactReference );
}
else
{
// Not merging. Local wins.
merged.add( merge( mainArtifactReference, parentArtifactReference ) );
}
}
return merged;
}
private static List mergeDependencies( List mainDependencies, List parentDependencies )
{
if ( parentDependencies == null )
{
return mainDependencies;
}
if ( mainDependencies == null )
{
return ArchivaModelCloner.cloneDependencies( parentDependencies );
}
List merged = ArchivaModelCloner.cloneDependencies( mainDependencies );
Map mainDepMap = createDependencyMap( mainDependencies );
Map parentDepMap = createDependencyMap( parentDependencies );
Iterator it = parentDepMap.entrySet().iterator();
while ( it.hasNext() )
{
Map.Entry entry = (Entry) it.next();
String key = (String) entry.getKey();
Dependency parentDep = (Dependency) entry.getValue();
Dependency mainDep = (Dependency) mainDepMap.get( key );
if ( parentDep == null )
{
merged.add( mainDep );
}
else
{
merged.add( merge( mainDep, parentDep ) );
}
}
return merged;
}
private static List mergeDependencyManagement( List mainDepMgmt, List parentDepMgmt )
{
if ( parentDepMgmt == null )
{
return mainDepMgmt;
}
if ( mainDepMgmt == null )
{
return ArchivaModelCloner.cloneDependencies( parentDepMgmt );
}
List merged = ArchivaModelCloner.cloneDependencies( mainDepMgmt );
Map mainDepMap = createDependencyMap( mainDepMgmt );
Map parentDepMap = createDependencyMap( parentDepMgmt );
Iterator it = parentDepMap.entrySet().iterator();
while ( it.hasNext() )
{
Map.Entry entry = (Entry) it.next();
String key = (String) entry.getKey();
Dependency parentDep = (Dependency) entry.getValue();
Dependency mainDep = (Dependency) mainDepMap.get( key );
if ( parentDep == null )
{
merged.add( mainDep );
}
else
{
merged.add( merge( mainDep, parentDep ) );
}
}
return merged;
}
public static List mergeExclusions( List mainExclusions, List parentExclusions )
{
if ( parentExclusions == null )
{
return mainExclusions;
}
if ( mainExclusions == null )
{
return ArchivaModelCloner.cloneExclusions( parentExclusions );
}
List merged = new ArrayList();
Map mainExclusionMap = createExclusionMap( mainExclusions );
Map parentExclusionMap = createExclusionMap( parentExclusions );
Iterator it = mainExclusionMap.entrySet().iterator();
while ( it.hasNext() )
{
Map.Entry entry = (Entry) it.next();
String key = (String) entry.getKey();
Exclusion mainExclusion = (Exclusion) entry.getValue();
Exclusion parentExclusion = (Exclusion) parentExclusionMap.get( key );
if ( parentExclusion == null )
{
merged.add( mainExclusion );
}
else
{
merged.add( parentExclusion );
}
}
return merged;
}
private static List mergeIndividuals( List mainIndividuals, List parentIndividuals )
{
if ( parentIndividuals == null )
{
return mainIndividuals;
}
if ( mainIndividuals == null )
{
return ArchivaModelCloner.cloneIndividuals( parentIndividuals );
}
List merged = ArchivaModelCloner.cloneIndividuals( mainIndividuals );
Iterator it = parentIndividuals.iterator();
while ( it.hasNext() )
{
Individual parentIndividual = (Individual) it.next();
if ( !mainIndividuals.contains( parentIndividual ) )
{
merged.add( parentIndividual );
}
}
return merged;
}
private static List mergeLicenses( List mainLicenses, List parentLicenses )
{
if ( parentLicenses == null )
{
return mainLicenses;
}
if ( mainLicenses == null )
{
return ArchivaModelCloner.cloneLicenses( parentLicenses );
}
List merged = new ArrayList();
Map mainLicensesMap = createLicensesMap( mainLicenses );
Map parentLicensesMap = createLicensesMap( parentLicenses );
Iterator it = mainLicensesMap.entrySet().iterator();
while ( it.hasNext() )
{
Map.Entry entry = (Entry) it.next();
String key = (String) entry.getKey();
License mainLicense = (License) entry.getValue();
License parentLicense = (License) parentLicensesMap.get( key );
if ( parentLicense == null )
{
merged.add( mainLicense );
}
else
{
// Not merging. Local wins.
merged.add( parentLicense );
}
}
return merged;
}
private static List mergePlugins( List mainPlugins, List parentPlugins )
{
return mergeArtifactReferences( mainPlugins, parentPlugins );
}
private static List mergeReports( List mainReports, List parentReports )
{
return mergeArtifactReferences( mainReports, parentReports );
}
private static List mergeRepositories( List mainRepositories, List parentRepositories )
{
if ( parentRepositories == null )
{
return mainRepositories;
}
if ( mainRepositories == null )
{
return ArchivaModelCloner.cloneLicenses( parentRepositories );
}
List merged = new ArrayList();
Map mainRepositoriesMap = createRepositoriesMap( mainRepositories );
Map parentRepositoriesMap = createRepositoriesMap( parentRepositories );
Iterator it = mainRepositoriesMap.entrySet().iterator();
while ( it.hasNext() )
{
Map.Entry entry = (Entry) it.next();
String key = (String) entry.getKey();
ProjectRepository mainProjectRepository = (ProjectRepository) entry.getValue();
ProjectRepository parentProjectRepository = (ProjectRepository) parentRepositoriesMap.get( key );
if ( parentProjectRepository == null )
{
merged.add( mainProjectRepository );
}
else
{
// Not merging. Local wins.
merged.add( parentProjectRepository );
}
}
return merged;
}
private static String toVersionlessArtifactKey( ArtifactReference artifactReference )
{
StringBuffer key = new StringBuffer();
key.append( artifactReference.getGroupId() ).append( ":" ).append( artifactReference.getArtifactId() );
key.append( StringUtils.defaultString( artifactReference.getClassifier() ) ).append( ":" );
key.append( artifactReference.getType() );
return key.toString();
}
private static String toVersionlessDependencyKey( Dependency dep )
{
StringBuffer key = new StringBuffer();
key.append( dep.getGroupId() ).append( ":" ).append( dep.getArtifactId() );
key.append( StringUtils.defaultString( dep.getClassifier() ) ).append( ":" );
key.append( dep.getType() );
return key.toString();
}
}

View File

@ -0,0 +1,40 @@
package org.apache.maven.archiva.repository.project;
/*
* 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.model.ArchivaProjectModel;
/**
* ProjectModelMonitor
*
* @author <a href="mailto:joakim@erdfelt.com">Joakim Erdfelt</a>
* @version $Id$
*/
public interface ProjectModelMonitor
{
/**
* Report a problem encountered with a model.
*
* @param model the model that caused the problem.
* @param type the type of problem.
* @param problem the problem description.
*/
public void modelProblem( ArchivaProjectModel model, String type, String problem );
}

View File

@ -0,0 +1,42 @@
package org.apache.maven.archiva.repository.project;
/*
* 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.model.ArchivaProjectModel;
import org.apache.maven.archiva.model.VersionedReference;
/**
* Interface for ProjectModel resolution.
*
* @author <a href="mailto:joakim@erdfelt.com">Joakim Erdfelt</a>
* @version $Id$
*/
public interface ProjectModelResolver
{
/**
* Get the ProjectModel given a specific {@link RepositoryContent} key.
*
* @param reference the reference to the other project.
* @return the ArchivaProjectModel representing the provided {@link RepositoryContent} key.
* @throws ProjectModelException if the project model cannot be resolved.
*/
public ArchivaProjectModel resolveProjectModel( VersionedReference reference )
throws ProjectModelException;
}

View File

@ -0,0 +1,269 @@
package org.apache.maven.archiva.repository.project.filters;
/*
* 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.commons.lang.StringUtils;
import org.apache.maven.archiva.model.ArchivaModelCloner;
import org.apache.maven.archiva.model.ArchivaProjectModel;
import org.apache.maven.archiva.model.Dependency;
import org.apache.maven.archiva.model.VersionedReference;
import org.apache.maven.archiva.repository.project.ProjectModelException;
import org.apache.maven.archiva.repository.project.ProjectModelMerge;
import org.apache.maven.archiva.repository.project.ProjectModelResolver;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
/**
* Builder for the Effective Project Model.
*
* @author <a href="mailto:joakim@erdfelt.com">Joakim Erdfelt</a>
* @version $Id$
*/
public class EffectiveProjectModelBuilder
{
private List projectModelResolvers;
public EffectiveProjectModelBuilder()
{
projectModelResolvers = new ArrayList();
}
public void addProjectModelResolver( ProjectModelResolver resolver )
{
if ( resolver == null )
{
return;
}
this.projectModelResolvers.add( resolver );
}
/**
* Take the provided {@link ArchivaProjectModel} and build the effective {@link ArchivaProjectModel}.
*
* Steps:
* 1) Expand any expressions / properties.
* 2) Walk the parent project references and merge.
* 3) Apply dependency management settings.
*
* @param project the project to create the effective {@link ArchivaProjectModel} from.
* @return a the effective {@link ArchivaProjectModel}.
* @throws ProjectModelException if there was a problem building the effective pom.
*/
public ArchivaProjectModel buildEffectiveProjectModel( ArchivaProjectModel project )
throws ProjectModelException
{
if ( project == null )
{
return null;
}
if ( this.projectModelResolvers.isEmpty() )
{
throw new IllegalStateException( "Unable to build effective pom with no project model resolvers defined." );
}
// Clone submitted project (so that we don't mess with it)
ArchivaProjectModel effectiveProject = ArchivaModelCloner.clone( project );
// Setup Expression Evaluation pieces.
ProjectModelExpressionExpander.evaluateExpressions( effectiveProject );
debug( "Starting build of effective with: " + effectiveProject );
// Merge in all the parent poms.
effectiveProject = mergeParent( effectiveProject );
// Resolve dependency versions from dependency management.
applyDependencyManagement( effectiveProject );
// Return what we got.
return effectiveProject;
}
public void removeResolver( ProjectModelResolver resolver )
{
this.projectModelResolvers.remove( resolver );
}
private void applyDependencyManagement( ArchivaProjectModel pom )
{
if ( ( pom.getDependencyManagement() == null ) || ( pom.getDependencies() == null ) )
{
// Nothing to do. All done!
return;
}
if ( pom.getDependencyManagement().isEmpty() || pom.getDependencies().isEmpty() )
{
// Nothing to do. All done!
return;
}
Map managedDependencies = createDependencyMap( pom.getDependencyManagement() );
Iterator it = pom.getDependencies().iterator();
while ( it.hasNext() )
{
Dependency dep = (Dependency) it.next();
String key = toVersionlessDependencyKey( dep );
// Do we need to do anything?
if ( managedDependencies.containsKey( key ) )
{
Dependency mgmtDep = (Dependency) managedDependencies.get( key );
dep.setVersion( mgmtDep.getVersion() );
dep.setScope( mgmtDep.getScope() );
dep.setExclusions( ProjectModelMerge.mergeExclusions( dep.getExclusions(), mgmtDep.getExclusions() ) );
}
}
}
private void debug( String msg )
{
System.out.println( "## " + msg );
}
private ArchivaProjectModel findProject( VersionedReference projectRef )
{
debug( "Trying to find project: " + projectRef );
Iterator it = this.projectModelResolvers.iterator();
while ( it.hasNext() )
{
ProjectModelResolver resolver = (ProjectModelResolver) it.next();
try
{
debug( "Trying to find in " + resolver.getClass().getName() );
ArchivaProjectModel model = resolver.resolveProjectModel( projectRef );
if ( model != null )
{
debug( "Found it!: " + model );
return model;
}
debug( "Not found." );
}
catch ( ProjectModelException e )
{
// TODO: trigger notifier of problem?
e.printStackTrace();
}
}
// TODO: Document that project was not found. (Use monitor?)
return null;
}
private ArchivaProjectModel mergeParent( ArchivaProjectModel pom )
throws ProjectModelException
{
ArchivaProjectModel mixedProject;
debug( "Parent: " + pom.getParentProject() );
if ( pom.getParentProject() != null )
{
// Use parent reference.
VersionedReference parentRef = pom.getParentProject();
debug( "Has parent: " + parentRef );
// Find parent using resolvers.
ArchivaProjectModel parentProject = findProject( parentRef );
if ( parentProject != null )
{
ProjectModelExpressionExpander.evaluateExpressions( parentProject );
parentProject = mergeParent( parentProject );
mixedProject = ProjectModelMerge.merge( pom, parentProject );
}
else
{
// Shortcircuit due to missing parent pom.
// TODO: Document this via monitor.
mixedProject = mixinSuperPom( pom );
}
}
else
{
debug( "No parent found" );
/* Mix in the super-pom.
*
* Super POM from maven/components contains many things.
* However, for purposes of archiva, only the <repositories>
* and <pluginRepositories> sections are of any value.
*/
mixedProject = mixinSuperPom( pom );
}
return mixedProject;
}
/**
* Super POM from maven/components contains many things.
* However, for purposes of archiva, only the <repositories>
* and <pluginRepositories> sections are of any value.
*
* @param pom
* @return
*/
private ArchivaProjectModel mixinSuperPom( ArchivaProjectModel pom )
{
// TODO: add super pom repositories.
debug( "Mix in Super POM: " + pom );
return pom;
}
private static Map createDependencyMap( List dependencies )
{
Map ret = new HashMap();
Iterator it = dependencies.iterator();
while ( it.hasNext() )
{
Dependency dep = (Dependency) it.next();
String key = toVersionlessDependencyKey( dep );
ret.put( key, dep );
}
return ret;
}
private static String toVersionlessDependencyKey( Dependency dep )
{
StringBuffer key = new StringBuffer();
key.append( dep.getGroupId() ).append( ":" ).append( dep.getArtifactId() );
key.append( StringUtils.defaultString( dep.getClassifier() ) ).append( ":" );
key.append( dep.getType() );
return key.toString();
}
}

View File

@ -0,0 +1,92 @@
package org.apache.maven.archiva.repository.project.filters;
/*
* 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.model.ArchivaProjectModel;
import org.apache.maven.archiva.model.Dependency;
import org.apache.maven.archiva.repository.project.ProjectModelException;
import org.codehaus.plexus.evaluator.DefaultExpressionEvaluator;
import org.codehaus.plexus.evaluator.EvaluatorException;
import org.codehaus.plexus.evaluator.ExpressionEvaluator;
import org.codehaus.plexus.evaluator.sources.PropertiesExpressionSource;
import org.codehaus.plexus.evaluator.sources.SystemPropertyExpressionSource;
import java.util.Iterator;
import java.util.List;
/**
* ProjectModelExpressionExpander
*
* @author <a href="mailto:joakim@erdfelt.com">Joakim Erdfelt</a>
* @version $Id$
* @plexus.component role="org.apache.maven.archiva.repository.project.ProjectModelExpressionExpander"
*/
public class ProjectModelExpressionExpander
{
/**
* Find and Evaluate the Expressions present in the model.
*
* @param model the model to correct.
*/
public static void evaluateExpressions( ArchivaProjectModel model )
throws ProjectModelException
{
ExpressionEvaluator evaluator = new DefaultExpressionEvaluator();
if ( model.getProperties() != null )
{
PropertiesExpressionSource propsSource = new PropertiesExpressionSource();
propsSource.setProperties( model.getProperties() );
evaluator.addExpressionSource( propsSource );
}
evaluator.addExpressionSource( new SystemPropertyExpressionSource() );
try
{
model.setVersion( evaluator.expand( model.getVersion() ) );
model.setGroupId( evaluator.expand( model.getGroupId() ) );
evaluateExpressionsInDependencyList( evaluator, model.getDependencies() );
evaluateExpressionsInDependencyList( evaluator, model.getDependencyManagement() );
}
catch ( EvaluatorException e )
{
throw new ProjectModelException( "Unable to evaluate expression in model: " + e.getMessage(), e );
}
}
private static void evaluateExpressionsInDependencyList( ExpressionEvaluator evaluator, List dependencies )
throws EvaluatorException
{
if ( dependencies == null )
{
return;
}
Iterator it = dependencies.iterator();
while ( it.hasNext() )
{
Dependency dependency = (Dependency) it.next();
dependency.setGroupId( evaluator.expand( dependency.getGroupId() ) );
dependency.setVersion( evaluator.expand( dependency.getVersion() ) );
}
}
}

View File

@ -1,4 +1,4 @@
package org.apache.maven.archiva.repository.project;
package org.apache.maven.archiva.repository.project.readers;
/*
* Licensed to the Apache Software Foundation (ASF) under one
@ -20,6 +20,8 @@ package org.apache.maven.archiva.repository.project;
*/
import org.apache.maven.archiva.model.ArchivaProjectModel;
import org.apache.maven.archiva.repository.project.ProjectModelException;
import org.apache.maven.archiva.repository.project.ProjectModelReader;
import java.io.File;

View File

@ -1,4 +1,4 @@
package org.apache.maven.archiva.repository.project;
package org.apache.maven.archiva.repository.project.readers;
/*
* Licensed to the Apache Software Foundation (ASF) under one
@ -21,6 +21,7 @@ package org.apache.maven.archiva.repository.project;
import org.apache.commons.lang.StringUtils;
import org.apache.maven.archiva.model.ArchivaProjectModel;
import org.apache.maven.archiva.model.ArtifactReference;
import org.apache.maven.archiva.model.CiManagement;
import org.apache.maven.archiva.model.Dependency;
import org.apache.maven.archiva.model.DependencyScope;
@ -30,8 +31,10 @@ import org.apache.maven.archiva.model.IssueManagement;
import org.apache.maven.archiva.model.License;
import org.apache.maven.archiva.model.Organization;
import org.apache.maven.archiva.model.ProjectRepository;
import org.apache.maven.archiva.model.RepositoryContent;
import org.apache.maven.archiva.model.Scm;
import org.apache.maven.archiva.model.VersionedReference;
import org.apache.maven.archiva.repository.project.ProjectModelException;
import org.apache.maven.archiva.repository.project.ProjectModelReader;
import org.apache.maven.archiva.xml.XMLException;
import org.apache.maven.archiva.xml.XMLReader;
import org.dom4j.Element;
@ -40,17 +43,20 @@ import java.io.File;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Properties;
/**
* ProjectModel400Reader
* ProjectModel400Reader - read in modelVersion 4.0.0 pom files into archiva-model structures.
*
* @author <a href="mailto:joakim@erdfelt.com">Joakim Erdfelt</a>
* @version $Id$
*/
public class ProjectModel400Reader implements ProjectModelReader
public class ProjectModel400Reader
implements ProjectModelReader
{
public ArchivaProjectModel read( File pomFile ) throws ProjectModelException
public ArchivaProjectModel read( File pomFile )
throws ProjectModelException
{
try
{
@ -58,18 +64,26 @@ public class ProjectModel400Reader implements ProjectModelReader
ArchivaProjectModel model = new ArchivaProjectModel();
RepositoryContent contentKey = new RepositoryContent();
contentKey.setGroupId( xml.getElementText( "//project/groupId" ) );
contentKey.setArtifactId( xml.getElementText( "//project/artifactId" ) );
contentKey.setVersion( xml.getElementText( "//project/version" ) );
model.setContentKey( contentKey );
if ( !"http://maven.apache.org/POM/4.0.0".equals( xml.getDefaultNamespaceURI() ) )
{
// TODO: Output to monitor the problem with the Namespace.
System.out.println( "No namespace defined: " + pomFile );
}
model.setName( xml.getElementText( "//project/name" ) );
model.setDescription( xml.getElementText( "//project/description" ) );
model.setUrl( xml.getElementText( "//project/url" ) );
model.setPackaging( StringUtils.defaultIfEmpty( xml.getElementText( "//project/packaging" ), "jar" ) );
xml.removeNamespaces();
model.setParentContentKey( getParentContentKey( xml ) );
Element project = xml.getElement( "//project" );
model.setGroupId( project.elementTextTrim( "groupId" ) );
model.setArtifactId( project.elementTextTrim( "artifactId" ) );
model.setVersion( project.elementTextTrim( "version" ) );
model.setName( project.elementTextTrim( "name" ) );
model.setDescription( project.elementTextTrim( "description" ) );
model.setUrl( project.elementTextTrim( "url" ) );
model.setPackaging( StringUtils.defaultIfEmpty( project.elementTextTrim( "packaging" ), "jar" ) );
model.setParentProject( getParentProject( xml ) );
model.setCiManagement( getCiManagement( xml ) );
model.setIndividuals( getIndividuals( xml ) );
@ -80,8 +94,10 @@ public class ProjectModel400Reader implements ProjectModelReader
model.setRepositories( getRepositories( xml ) );
model.setDependencies( getDependencies( xml ) );
model.setDependencyManagement( getDependencyManagement( xml ) );
model.setPlugins( getPlugins( xml ) );
model.setReports( getReports( xml ) );
model.setProperties( getProperties( xml.getElement( "//project/properties" ) ) );
return model;
}
@ -91,7 +107,21 @@ public class ProjectModel400Reader implements ProjectModelReader
}
}
private CiManagement getCiManagement( XMLReader xml ) throws XMLException
private ArtifactReference getArtifactReference( Element elemPlugin )
{
ArtifactReference reference = new ArtifactReference();
reference.setGroupId( elemPlugin.elementTextTrim( "groupId" ) );
reference.setArtifactId( elemPlugin.elementTextTrim( "artifactId" ) );
reference.setVersion( elemPlugin.elementTextTrim( "version" ) );
reference.setClassifier( elemPlugin.elementTextTrim( "classifier" ) );
reference.setType( elemPlugin.elementTextTrim( "type" ) );
return reference;
}
private CiManagement getCiManagement( XMLReader xml )
throws XMLException
{
Element elemCiMgmt = xml.getElement( "//project/ciManagement" );
if ( elemCiMgmt != null )
@ -105,22 +135,45 @@ public class ProjectModel400Reader implements ProjectModelReader
return null;
}
private List getDependencies( XMLReader xml ) throws XMLException
private List getDependencies( XMLReader xml )
throws XMLException
{
List dependencies = new ArrayList();
return getDependencyList( xml, new String[] { "dependencies" } );
}
Iterator it = xml.getElementList( "//project/dependencies/dependency" ).iterator();
private List getDependencyList( XMLReader xml, String parts[] )
throws XMLException
{
List dependencyList = new ArrayList();
Element project = xml.getElement( "//project" );
Element depsParent = project;
for ( int i = 0; i < parts.length; i++ )
{
String part = parts[i];
depsParent = depsParent.element( part );
if ( depsParent == null )
{
return dependencyList;
}
}
Iterator it = depsParent.elementIterator( "dependency" );
while ( it.hasNext() )
{
Element elemDependency = (Element) it.next();
Dependency dependency = new Dependency();
dependency.setContentKey( getContentKey( elemDependency ) );
dependency.setGroupId( elemDependency.elementTextTrim( "groupId" ) );
dependency.setArtifactId( elemDependency.elementTextTrim( "artifactId" ) );
dependency.setVersion( elemDependency.elementTextTrim( "version" ) );
dependency.setClassifier( elemDependency.elementTextTrim( "classifier" ) );
dependency.setType( StringUtils.defaultIfEmpty( elemDependency.elementTextTrim( "type" ), "jar" ) );
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") );
dependency.setOptional( toBoolean( elemDependency.elementTextTrim( "optional" ), false ) );
if ( DependencyScope.isSystemScoped( dependency ) )
{
@ -129,10 +182,26 @@ public class ProjectModel400Reader implements ProjectModelReader
dependency.setExclusions( getExclusions( elemDependency ) );
dependencies.add( dependency );
if ( dependencyList.contains( dependency ) )
{
// TODO: throw into monitor as issue.
System.err.println( "Duplicate non-unique dependency detected [" + StringUtils.join(parts, ":") + "]: "
+ toDependencyKey( dependency ) );
}
dependencyList.add( dependency );
System.out.println( "Added (list.size:" + dependencyList.size() + ") dependency: "
+ toDependencyKey( dependency ) );
}
return dependencies;
System.out.println( "## Returning dependency list: size=" + dependencyList.size() );
return dependencyList;
}
private List getDependencyManagement( XMLReader xml )
throws XMLException
{
return getDependencyList( xml, new String[] { "dependencyManagement", "dependencies" } );
}
private List getExclusions( Element elemDependency )
@ -159,7 +228,8 @@ public class ProjectModel400Reader implements ProjectModelReader
return exclusions;
}
private List getIndividuals( XMLReader xml ) throws XMLException
private List getIndividuals( XMLReader xml )
throws XMLException
{
List individuals = new ArrayList();
@ -169,7 +239,8 @@ public class ProjectModel400Reader implements ProjectModelReader
return individuals;
}
private List getIndividuals( XMLReader xml, boolean isCommitor, String xpathExpr ) throws XMLException
private List getIndividuals( XMLReader xml, boolean isCommitor, String xpathExpr )
throws XMLException
{
List ret = new ArrayList();
@ -203,16 +274,7 @@ public class ProjectModel400Reader implements ProjectModelReader
}
// Properties
Element elemProperties = elemPerson.element( "properties" );
if ( elemProperties != null )
{
Iterator itProps = elemProperties.elements().iterator();
while ( itProps.hasNext() )
{
Element elemProp = (Element) itProps.next();
individual.addProperty( elemProp.getName(), elemProp.getText() );
}
}
individual.setProperties( getProperties( elemPerson.element( "properties" ) ) );
ret.add( individual );
}
@ -220,7 +282,8 @@ public class ProjectModel400Reader implements ProjectModelReader
return ret;
}
private IssueManagement getIssueManagement( XMLReader xml ) throws XMLException
private IssueManagement getIssueManagement( XMLReader xml )
throws XMLException
{
Element elemIssueMgmt = xml.getElement( "//project/issueManagement" );
if ( elemIssueMgmt != null )
@ -236,7 +299,8 @@ public class ProjectModel400Reader implements ProjectModelReader
return null;
}
private List getLicenses( XMLReader xml ) throws XMLException
private List getLicenses( XMLReader xml )
throws XMLException
{
List licenses = new ArrayList();
@ -251,7 +315,7 @@ public class ProjectModel400Reader implements ProjectModelReader
License license = new License();
// TODO: Create LicenseIdentity class to managed license ids.
// license.setId( elemLicense.elementTextTrim( "id" ) );
// license.setId( elemLicense.elementTextTrim("id") );
license.setName( elemLicense.elementTextTrim( "name" ) );
license.setUrl( elemLicense.elementTextTrim( "url" ) );
license.setComments( elemLicense.elementTextTrim( "comments" ) );
@ -263,7 +327,8 @@ public class ProjectModel400Reader implements ProjectModelReader
return licenses;
}
private Organization getOrganization( XMLReader xml ) throws XMLException
private Organization getOrganization( XMLReader xml )
throws XMLException
{
Element elemOrg = xml.getElement( "//project/organization" );
if ( elemOrg != null )
@ -279,43 +344,30 @@ public class ProjectModel400Reader implements ProjectModelReader
return null;
}
private RepositoryContent getParentContentKey( XMLReader xml ) throws XMLException
private VersionedReference getParentProject( XMLReader xml )
throws XMLException
{
Element elemParent = xml.getElement( "//project/parent" );
if ( elemParent != null )
{
return getContentKey( elemParent );
return getVersionedReference( elemParent );
}
return null;
}
private RepositoryContent getContentKey( Element elem )
{
RepositoryContent contentKey = new RepositoryContent();
contentKey.setGroupId( elem.elementTextTrim( "groupId" ) );
contentKey.setArtifactId( elem.elementTextTrim( "artifactId" ) );
contentKey.setVersion( elem.elementTextTrim( "version" ) );
return contentKey;
}
private List getPlugins( XMLReader xml ) throws XMLException
private List getPlugins( XMLReader xml )
throws XMLException
{
return getPlugins( xml, "//project/build/plugins/plugin" );
}
private List getReports( XMLReader xml ) throws XMLException
{
return getPlugins( xml, "//project/reporting/plugins/plugin" );
}
/**
* Get List of {@link RepositoryContent} objects from plugin definitions.
*/
private List getPlugins( XMLReader xml, String xpathExpr ) throws XMLException
private List getPlugins( XMLReader xml, String xpathExpr )
throws XMLException
{
List plugins = new ArrayList();
@ -324,13 +376,39 @@ public class ProjectModel400Reader implements ProjectModelReader
{
Element elemPlugin = (Element) it.next();
plugins.add( getContentKey( elemPlugin ) );
plugins.add( getArtifactReference( elemPlugin ) );
}
return plugins;
}
private List getRepositories( XMLReader xml ) throws XMLException
private Properties getProperties( Element elemProperties )
{
if ( elemProperties == null )
{
return null;
}
Properties ret = new Properties();
Iterator itProps = elemProperties.elements().iterator();
while ( itProps.hasNext() )
{
Element elemProp = (Element) itProps.next();
ret.setProperty( elemProp.getName(), elemProp.getText() );
}
return ret;
}
private List getReports( XMLReader xml )
throws XMLException
{
return getPlugins( xml, "//project/reporting/plugins/plugin" );
}
private List getRepositories( XMLReader xml )
throws XMLException
{
List repos = new ArrayList();
@ -340,7 +418,8 @@ public class ProjectModel400Reader implements ProjectModelReader
return repos;
}
private List getRepositories( XMLReader xml, boolean isPluginRepo, String xpathExpr ) throws XMLException
private List getRepositories( XMLReader xml, boolean isPluginRepo, String xpathExpr )
throws XMLException
{
List ret = new ArrayList();
@ -359,7 +438,7 @@ public class ProjectModel400Reader implements ProjectModelReader
repo.setPlugins( isPluginRepo );
repo.setReleases( toBoolean( xml.getElementText( elemRepo, "releases/enabled" ), true ) );
repo.setReleases( toBoolean( xml.getElementText( elemRepo, "snapshots/enabled" ), false ) );
repo.setSnapshots( toBoolean( xml.getElementText( elemRepo, "snapshots/enabled" ), false ) );
ret.add( repo );
}
@ -367,7 +446,8 @@ public class ProjectModel400Reader implements ProjectModelReader
return ret;
}
private Scm getSCM( XMLReader xml ) throws XMLException
private Scm getSCM( XMLReader xml )
throws XMLException
{
Element elemScm = xml.getElement( "//project/scm" );
@ -385,6 +465,17 @@ public class ProjectModel400Reader implements ProjectModelReader
return null;
}
private VersionedReference getVersionedReference( Element elem )
{
VersionedReference reference = new VersionedReference();
reference.setGroupId( elem.elementTextTrim( "groupId" ) );
reference.setArtifactId( elem.elementTextTrim( "artifactId" ) );
reference.setVersion( elem.elementTextTrim( "version" ) );
return reference;
}
private boolean toBoolean( String value, boolean defaultValue )
{
if ( StringUtils.equalsIgnoreCase( value, "true" ) )
@ -402,4 +493,10 @@ public class ProjectModel400Reader implements ProjectModelReader
}
}
private String toDependencyKey( Dependency dep )
{
return "[" + dep.getGroupId() + ":" + dep.getArtifactId() + ":" + dep.getVersion() + ":" + dep.getClassifier()
+ ":" + dep.getType() + "]";
}
}

View File

@ -0,0 +1,69 @@
package org.apache.maven.archiva.repository.project.resolvers;
/*
* 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.model.ArchivaArtifact;
import org.apache.maven.archiva.model.ArchivaProjectModel;
import org.apache.maven.archiva.model.ArchivaRepository;
import org.apache.maven.archiva.model.VersionedReference;
import org.apache.maven.archiva.repository.layout.BidirectionalRepositoryLayout;
import org.apache.maven.archiva.repository.layout.DefaultBidirectionalRepositoryLayout;
import org.apache.maven.archiva.repository.project.ProjectModelException;
import org.apache.maven.archiva.repository.project.ProjectModelReader;
import org.apache.maven.archiva.repository.project.ProjectModelResolver;
import org.apache.maven.archiva.repository.project.readers.ProjectModel400Reader;
import java.io.File;
/**
* RepositoryProjectResolver
*
* @author <a href="mailto:joakim@erdfelt.com">Joakim Erdfelt</a>
* @version $Id$
*/
public class RepositoryProjectResolver
implements ProjectModelResolver
{
private ArchivaRepository repository;
private ProjectModelReader reader;
private BidirectionalRepositoryLayout layout;
public RepositoryProjectResolver( ArchivaRepository repository )
{
this.repository = repository;
this.reader = new ProjectModel400Reader();
this.layout = new DefaultBidirectionalRepositoryLayout();
}
public ArchivaProjectModel resolveProjectModel( VersionedReference reference )
throws ProjectModelException
{
ArchivaArtifact artifact = new ArchivaArtifact( reference.getGroupId(), reference.getArtifactId(), reference
.getVersion(), "", "pom" );
String path = layout.pathOf( artifact );
File repoFile = new File( this.repository.getUrl().getPath(), path );
return reader.read( repoFile );
}
}

View File

@ -0,0 +1,794 @@
<?xml version="1.0" encoding="UTF-8"?>
<project>
<parent>
<artifactId>archiva-base</artifactId>
<groupId>org.apache.maven.archiva</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-model</artifactId>
<name>Archiva Base :: Model</name>
<version>1.0-SNAPSHOT</version>
<description>Archiva is an application for managing one or more remote repositories, including
administration, artifact handling,
browsing and searching.</description>
<url>http://maven.apache.org/archiva/archiva-base/archiva-model</url>
<issueManagement>
<system>jira</system>
<url>http://jira.codehaus.org/browse/MRM</url>
</issueManagement>
<ciManagement>
<system>continuum</system>
<url>http://maven.zones.apache.org:8080/continuum</url>
<notifiers>
<notifier>
<configuration>
<address>notifications@maven.apache.org</address>
</configuration>
</notifier>
</notifiers>
</ciManagement>
<inceptionYear>2002</inceptionYear>
<mailingLists>
<mailingList>
<name>Maven Archiva User List</name>
<subscribe>archiva-users-subscribe@maven.apache.org</subscribe>
<unsubscribe>archiva-users-unsubscribe@maven.apache.org</unsubscribe>
<post>archiva-users@maven.apache.org</post>
<archive>http://mail-archives.apache.org/mod_mbox/maven-archiva-users</archive>
</mailingList>
<mailingList>
<name>Maven Archiva Developer List</name>
<subscribe>archiva-dev-subscribe@maven.apache.org</subscribe>
<unsubscribe>archiva-dev-unsubscribe@maven.apache.org</unsubscribe>
<post>archiva-dev@maven.apache.org</post>
<archive>http://mail-archives.apache.org/mod_mbox/maven-archiva-dev</archive>
</mailingList>
<mailingList>
<name>Maven Archiva Commits List</name>
<subscribe>archiva-commits-subscribe@maven.apache.org</subscribe>
<unsubscribe>archiva-commits-unsubscribe@maven.apache.org</unsubscribe>
<post>archiva-commits@maven.apache.org</post>
<archive>http://mail-archives.apache.org/mod_mbox/maven-archiva-commits</archive>
</mailingList>
</mailingLists>
<developers>
<developer>
<id>jvanzyl</id>
<name>Jason van Zyl</name>
<email>jason@maven.org</email>
<organization>ASF</organization>
<roles>
<role>PMC Chair</role>
</roles>
<timezone>-5</timezone>
</developer>
<developer>
<id>brett</id>
<name>Brett Porter</name>
<email>brett@apache.org</email>
<organization>ASF</organization>
<roles>
<role>PMC Member</role>
</roles>
<timezone>+10</timezone>
</developer>
<developer>
<id>evenisse</id>
<name>Emmanuel Venisse</name>
<email>evenisse@apache.org</email>
<organization>ASF</organization>
<roles>
<role>PMC Member</role>
</roles>
<timezone>+1</timezone>
</developer>
<developer>
<id>kenney</id>
<name>Kenney Westerhof</name>
<email>kenney@apache.org</email>
<organization>Neonics</organization>
<roles>
<role>PMC Member</role>
</roles>
</developer>
<developer>
<id>snicoll</id>
<name>Stephane Nicoll</name>
<email>snicoll@apache.org</email>
<organization>ASF</organization>
<roles>
<role>PMC Member</role>
</roles>
<timezone>+1</timezone>
</developer>
<developer>
<id>vmassol</id>
<name>Vincent Massol</name>
<email>vmassol@apache.org</email>
<organization>ASF</organization>
<roles>
<role>PMC Member</role>
</roles>
<timezone>+1</timezone>
</developer>
<developer>
<id>fgiust</id>
<name>Fabrizio Giustina</name>
<email>fgiust@apache.org</email>
<organization>openmind</organization>
<roles>
<role>PMC Member</role>
</roles>
<timezone>+1</timezone>
</developer>
<developer>
<id>epunzalan</id>
<name>Edwin Punzalan</name>
<email>epunzalan@mergere.com</email>
<organization>Mergere</organization>
<roles>
<role>Committer</role>
</roles>
<timezone>+8</timezone>
</developer>
<developer>
<id>mperham</id>
<name>Mike Perham</name>
<email>mperham@gmail.com</email>
<organization>IBM</organization>
<roles>
<role>PMC Member</role>
</roles>
<timezone>-6</timezone>
</developer>
<developer>
<id>jdcasey</id>
<name>John Casey</name>
<email>jdcasey@apache.org</email>
<organization>ASF</organization>
<roles>
<role>PMC Member</role>
</roles>
<timezone>-5</timezone>
</developer>
<developer>
<id>trygvis</id>
<name>Trygve Laugstol</name>
<email>trygvis@apache.org</email>
<organization>ASF</organization>
<roles>
<role>PMC Member</role>
</roles>
<timezone>+1</timezone>
</developer>
<developer>
<id>vsiveton</id>
<name>Vincent Siveton</name>
<email>vsiveton@apache.org</email>
<organization>ASF</organization>
<roles>
<role>PMC Member</role>
</roles>
<timezone>-5</timezone>
</developer>
<developer>
<id>carlos</id>
<name>Carlos Sanchez</name>
<email>carlos@apache.org</email>
<organization>ASF</organization>
<roles>
<role>PMC Member</role>
</roles>
<timezone>+1</timezone>
</developer>
<developer>
<id>dennisl</id>
<name>Dennis Lundberg</name>
<email>dennisl@apache.org</email>
<organization>ASF</organization>
<roles>
<role>PMC Member</role>
</roles>
<timezone>+1</timezone>
</developer>
</developers>
<licenses>
<license>
<name>The Apache Software License, Version 2.0</name>
<url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
<distribution>repo</distribution>
</license>
</licenses>
<scm>
<connection>scm:svn:http://svn.apache.org/repos/asf/maven/archiva/trunk/archiva-base/archiva-model</connection>
<developerConnection>scm:svn:https://svn.apache.org/repos/asf/maven/archiva/trunk/archiva-base/archiva-model</developerConnection>
<url>http://svn.apache.org/viewcvs.cgi/maven/archiva/trunk/archiva-base/archiva-model</url>
</scm>
<organization>
<name>Apache Software Foundation</name>
<url>http://www.apache.org/</url>
</organization>
<build>
<sourceDirectory>/home/joakim/code/maven/branches/archiva-jpox-database-refactor/archiva-base/archiva-model/src/main/java</sourceDirectory>
<scriptSourceDirectory>src/main/scripts</scriptSourceDirectory>
<testSourceDirectory>/home/joakim/code/maven/branches/archiva-jpox-database-refactor/archiva-base/archiva-model/src/test/java</testSourceDirectory>
<outputDirectory>/home/joakim/code/maven/branches/archiva-jpox-database-refactor/archiva-base/archiva-model/target/classes</outputDirectory>
<testOutputDirectory>/home/joakim/code/maven/branches/archiva-jpox-database-refactor/archiva-base/archiva-model/target/test-classes</testOutputDirectory>
<resources>
<resource>
<directory>/home/joakim/code/maven/branches/archiva-jpox-database-refactor/archiva-base/archiva-model/src/main/resources</directory>
</resource>
</resources>
<testResources>
<testResource>
<directory>/home/joakim/code/maven/branches/archiva-jpox-database-refactor/archiva-base/archiva-model/src/test/resources</directory>
</testResource>
</testResources>
<directory>/home/joakim/code/maven/branches/archiva-jpox-database-refactor/archiva-base/archiva-model/target</directory>
<finalName>archiva-model-1.0-SNAPSHOT</finalName>
<pluginManagement>
<plugins>
<plugin>
<artifactId>maven-idea-plugin</artifactId>
<configuration>
<jdkLevel>1.4</jdkLevel>
</configuration>
</plugin>
<plugin>
<artifactId>maven-release-plugin</artifactId>
<configuration>
<tagBase>https://svn.apache.org/repos/asf/maven/archiva/tags</tagBase>
</configuration>
</plugin>
</plugins>
</pluginManagement>
<plugins>
<plugin>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-maven-plugin</artifactId>
<version>1.3.3</version>
<executions>
<execution>
<id>generate</id>
<goals>
<goal>descriptor</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.4</source>
<target>1.4</target>
</configuration>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.2</version>
</plugin>
<plugin>
<groupId>org.codehaus.modello</groupId>
<artifactId>modello-maven-plugin</artifactId>
<version>1.0-alpha-15-SNAPSHOT</version>
<executions>
<execution>
<id>archiva-base</id>
<goals>
<goal>java</goal>
<goal>xsd</goal>
<goal>jpox-jdo-mapping</goal>
<goal>jpox-metadata-class</goal>
</goals>
</execution>
</executions>
<configuration>
<version>1.0.0</version>
<packageWithVersion>false</packageWithVersion>
<model>src/main/mdo/archiva-base.xml</model>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>jpox-maven-plugin</artifactId>
<version>1.1.6</version>
<executions>
<execution>
<id>create-ddl</id>
<phase>generate-test-resources</phase>
<goals>
<goal>schema-create</goal>
</goals>
<configuration>
<outputFile>/home/joakim/code/maven/branches/archiva-jpox-database-refactor/archiva-base/archiva-model/target/classes/org/apache/maven/archiva/model/schema.ddl</outputFile>
<toolProperties>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>org.apache.derby.jdbc.EmbeddedDriver</value>
</property>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:derby:target/jdo-schema-create;create=true</value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>sa</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value></value>
</property>
<property>
<name>log4j.configuration</name>
<value>/home/joakim/code/maven/branches/archiva-jpox-database-refactor/archiva-base/archiva-model/src/test/resources/log4j.xml</value>
</property>
<property>
<name>org.jpox.autoCreateTables</name>
<value>true</value>
</property>
</toolProperties>
</configuration>
</execution>
<execution>
<id>enhance</id>
<goals>
<goal>enhance</goal>
</goals>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>org.apache.derby</groupId>
<artifactId>derby</artifactId>
<version>10.2.1.6</version>
</dependency>
</dependencies>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>cobertura-maven-plugin</artifactId>
<configuration>
<instrumentation>
<excludes>
<exclude>org/apache/maven/archiva/reporting/model/**</exclude>
</excludes>
</instrumentation>
</configuration>
</plugin>
<plugin>
<artifactId>maven-help-plugin</artifactId>
<version>2.0.1</version>
</plugin>
</plugins>
</build>
<repositories>
<repository>
<releases />
<snapshots>
<enabled>false</enabled>
</snapshots>
<id>codehaus.org</id>
<url>http://repository.codehaus.org</url>
</repository>
<repository>
<releases>
<enabled>false</enabled>
</releases>
<snapshots />
<id>snapshots.codehaus.org</id>
<url>http://snapshots.repository.codehaus.org</url>
</repository>
<repository>
<releases>
<enabled>false</enabled>
</releases>
<id>apache.snapshots</id>
<name>Apache Snapshot Repository</name>
<url>http://people.apache.org/repo/m2-snapshot-repository</url>
</repository>
<repository>
<snapshots>
<enabled>false</enabled>
</snapshots>
<id>central</id>
<name>Maven Repository Switchboard</name>
<url>http://repo1.maven.org/maven2</url>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<releases>
<enabled>false</enabled>
</releases>
<snapshots />
<id>snapshots.codehaus.org</id>
<url>http://snapshots.repository.codehaus.org</url>
</pluginRepository>
<pluginRepository>
<releases>
<updatePolicy>never</updatePolicy>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
<id>central</id>
<name>Maven Plugin Repository</name>
<url>http://repo1.maven.org/maven2</url>
</pluginRepository>
</pluginRepositories>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-common</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-utils</artifactId>
<version>1.4</version>
</dependency>
<dependency>
<groupId>javax.jdo</groupId>
<artifactId>jdo2-api</artifactId>
<version>2.0</version>
</dependency>
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-container-default</artifactId>
<version>1.0-alpha-18</version>
</dependency>
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>2.2</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>1.2</version>
</dependency>
</dependencies>
<reporting>
<outputDirectory>target/site</outputDirectory>
<plugins>
<plugin>
<artifactId>maven-checkstyle-plugin</artifactId>
<configuration>
<configLocation>config/maven_checks.xml</configLocation>
</configuration>
</plugin>
<plugin>
<artifactId>maven-javadoc-plugin</artifactId>
<configuration>
<source>1.4</source>
<aggregate>true</aggregate>
</configuration>
</plugin>
<plugin>
<artifactId>maven-jxr-plugin</artifactId>
<configuration>
<aggregate>true</aggregate>
</configuration>
</plugin>
<plugin>
<artifactId>maven-pmd-plugin</artifactId>
</plugin>
<plugin>
<artifactId>maven-surefire-report-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>changelog-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>cobertura-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>taglist-maven-plugin</artifactId>
</plugin>
</plugins>
</reporting>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.apache.maven.shared</groupId>
<artifactId>maven-app-configuration-model</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.maven.shared</groupId>
<artifactId>maven-app-configuration-web</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-container-default</artifactId>
<version>1.0-alpha-18</version>
</dependency>
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-component-api</artifactId>
<version>1.0-alpha-18</version>
</dependency>
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-utils</artifactId>
<version>1.4</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-repository-metadata</artifactId>
<version>2.0.5</version>
</dependency>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-model</artifactId>
<version>2.0.5</version>
</dependency>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-artifact</artifactId>
<version>2.0.5</version>
</dependency>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-artifact-manager</artifactId>
<version>2.0.5</version>
</dependency>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-project</artifactId>
<version>2.0.5</version>
</dependency>
<dependency>
<groupId>org.apache.maven.shared</groupId>
<artifactId>maven-model-converter</artifactId>
<version>2.0.5-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.maven.wagon</groupId>
<artifactId>wagon-provider-api</artifactId>
<version>1.0-beta-2</version>
</dependency>
<dependency>
<groupId>org.apache.maven.wagon</groupId>
<artifactId>wagon-ssh</artifactId>
<version>1.0-beta-2</version>
</dependency>
<dependency>
<groupId>org.apache.maven.wagon</groupId>
<artifactId>wagon-file</artifactId>
<version>1.0-beta-2</version>
</dependency>
<dependency>
<groupId>org.apache.maven.wagon</groupId>
<artifactId>wagon-http-lightweight</artifactId>
<version>1.0-beta-2</version>
</dependency>
<dependency>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-common</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-core</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-reports-standard</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-model</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-database</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-consumer-api</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-model</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-database</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-discoverer</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-repository-layer</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-indexer</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-proxy</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-applet</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-security</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-configuration</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-converter</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-utils</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-webapp</artifactId>
<version>1.0-SNAPSHOT</version>
<type>war</type>
</dependency>
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-digest</artifactId>
<version>1.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.codehaus.plexus.security</groupId>
<artifactId>plexus-security-rbac-profile</artifactId>
<version>1.0-alpha-11-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.codehaus.plexus.security</groupId>
<artifactId>plexus-security-system</artifactId>
<version>1.0-alpha-11-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.codehaus.plexus.security</groupId>
<artifactId>plexus-security-system</artifactId>
<version>1.0-alpha-11-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.codehaus.plexus.security</groupId>
<artifactId>plexus-security-ui-web</artifactId>
<version>1.0-alpha-11-SNAPSHOT</version>
<type>war</type>
</dependency>
<dependency>
<groupId>org.codehaus.plexus.security</groupId>
<artifactId>plexus-security-ui-web-integration</artifactId>
<version>1.0-alpha-11-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.codehaus.plexus.security</groupId>
<artifactId>plexus-security-ui-web-taglib</artifactId>
<version>1.0-alpha-11-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.codehaus.plexus.security</groupId>
<artifactId>plexus-security-authentication-provider-user-manager</artifactId>
<version>1.0-alpha-11-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.codehaus.plexus.security</groupId>
<artifactId>plexus-security-authentication-provider-keystore</artifactId>
<version>1.0-alpha-11-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.codehaus.plexus.security</groupId>
<artifactId>plexus-security-user-management-api</artifactId>
<version>1.0-alpha-11-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.codehaus.plexus.security</groupId>
<artifactId>plexus-security-user-management-provider-jdo</artifactId>
<version>1.0-alpha-11-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.codehaus.plexus.security</groupId>
<artifactId>plexus-security-authorization-rbac-store-cached</artifactId>
<version>1.0-alpha-11-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.codehaus.plexus.security</groupId>
<artifactId>plexus-security-authorization-rbac-store-jdo</artifactId>
<version>1.0-alpha-11-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.codehaus.plexus.security</groupId>
<artifactId>plexus-security-authorization-api</artifactId>
<version>1.0-alpha-11-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.codehaus.plexus.security</groupId>
<artifactId>plexus-security-authorization-rbac-authorizer</artifactId>
<version>1.0-alpha-11-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.codehaus.plexus.security</groupId>
<artifactId>plexus-security-keys-jdo</artifactId>
<version>1.0-alpha-11-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>2.2</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>org.apache.derby</groupId>
<artifactId>derby</artifactId>
<version>10.1.3.1</version>
</dependency>
</dependencies>
</dependencyManagement>
<distributionManagement>
<repository>
<id>apache.releases</id>
<name>Apache Release Distribution Repository</name>
<url>scp://people.apache.org/www/people.apache.org/repo/m2-ibiblio-rsync-repository</url>
</repository>
<snapshotRepository>
<id>apache.snapshots</id>
<name>Apache Development Snapshot Repository</name>
<url>scp://people.apache.org/www/people.apache.org/repo/m2-snapshot-repository</url>
</snapshotRepository>
<site>
<id>apache.website</id>
<url>scpexe://people.apache.org/www/maven.apache.org/archiva/archiva-base/archiva-model</url>
</site>
</distributionManagement>
<properties>
<plexus-security.version>1.0-alpha-11-SNAPSHOT</plexus-security.version>
<wagon.version>1.0-beta-2</wagon.version>
<maven.version>2.0.5</maven.version>
<archiva.version>1.0-SNAPSHOT</archiva.version>
</properties>
</project>

View File

@ -42,8 +42,8 @@ public class RepositoryMetadataReaderTest extends PlexusTestCase
ArchivaRepositoryMetadata metadata = reader.read( metadataFile );
assertNotNull( metadata );
assertEquals( "Group Id", "org.apache.maven.shared", metadata.getContentKey().getGroupId() );
assertEquals( "Artifact Id", "maven-downloader", metadata.getContentKey().getArtifactId() );
assertEquals( "Group Id", "org.apache.maven.shared", metadata.getGroupId() );
assertEquals( "Artifact Id", "maven-downloader", metadata.getArtifactId() );
assertEquals( "Released Version", "1.1", metadata.getReleasedVersion() );
assertEquals( "List of Available Versions", 2, metadata.getAvailableVersions().size() );
assertTrue( "Available version 1.0", metadata.getAvailableVersions().contains( "1.0" ) );

View File

@ -35,7 +35,8 @@ public class AllTests
{
TestSuite suite = new TestSuite( "Test for org.apache.maven.archiva.repository.project" );
//$JUnit-BEGIN$
suite.addTestSuite( ProjectModel400ReaderTest.class );
suite.addTest( org.apache.maven.archiva.repository.project.filters.AllTests.suite() );
suite.addTest( org.apache.maven.archiva.repository.project.readers.AllTests.suite() );
//$JUnit-END$
return suite;
}

View File

@ -1,53 +0,0 @@
package org.apache.maven.archiva.repository.project;
/*
* 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.model.ArchivaProjectModel;
import org.codehaus.plexus.PlexusTestCase;
import java.io.File;
/**
* ProjectModel400ReaderTest
*
* @author <a href="mailto:joakim@erdfelt.com">Joakim Erdfelt</a>
* @version $Id$
*/
public class ProjectModel400ReaderTest extends PlexusTestCase
{
public void testLoadSimple() throws ProjectModelException
{
File defaultRepoDir = new File( getBasedir(), "src/test/repositories/default-repository" );
File pomFile = new File( defaultRepoDir, "org/apache/maven/shared/maven-downloader/1.0/maven-downloader-1.0.pom" );
ProjectModelReader reader = new ProjectModel400Reader();
ArchivaProjectModel project = reader.read( pomFile );
assertNotNull( project );
assertEquals( "Group Id", "org.apache.maven.shared", project.getContentKey().getGroupId() );
assertEquals( "Artifact Id", "maven-downloader", project.getContentKey().getArtifactId() );
assertEquals( "Released Version", "1.0", project.getContentKey().getVersion() );
assertEquals( "Name", "Maven Downloader", project.getName() );
assertEquals( "Description", "Provide a super simple interface for downloading a single artifact.", project.getDescription() );
// assertTrue( "Available version 1.0", project.getAvailableVersions().contains( "1.0" ) );
// assertTrue( "Available version 1.1", project.getAvailableVersions().contains( "1.1" ) );
}
}

View File

@ -1,6 +1,4 @@
package org.apache.maven.archiva.consumers;
import org.apache.maven.archiva.repository.consumer.ConsumerFactory;
package org.apache.maven.archiva.repository.project.filters;
/*
* Licensed to the Apache Software Foundation (ASF) under one
@ -21,33 +19,26 @@ import org.apache.maven.archiva.repository.consumer.ConsumerFactory;
* under the License.
*/
import junit.framework.Test;
import junit.framework.TestSuite;
/**
* AbstractGenericConsumerTestCase
* AllTests
*
* @author <a href="mailto:joakim@erdfelt.com">Joakim Erdfelt</a>
* @version $Id$
*/
public abstract class AbstractGenericConsumerTestCase
extends AbstractConsumerTestCase
public class AllTests
{
protected ConsumerFactory consumerFactory;
protected void setUp()
throws Exception
public static Test suite()
{
super.setUp();
consumerFactory = (ConsumerFactory) lookup( ConsumerFactory.ROLE );
TestSuite suite = new TestSuite( "Test for org.apache.maven.archiva.repository.project.filters" );
//$JUnit-BEGIN$
suite.addTestSuite( ProjectModelExpressionExpanderTest.class );
suite.addTestSuite( EffectiveProjectModelBuilderTest.class );
//$JUnit-END$
return suite;
}
protected void tearDown()
throws Exception
{
if ( consumerFactory != null )
{
release( consumerFactory );
}
super.tearDown();
}
}

View File

@ -0,0 +1,143 @@
package org.apache.maven.archiva.repository.project.filters;
/*
* 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.model.ArchivaProjectModel;
import org.apache.maven.archiva.model.ArchivaRepository;
import org.apache.maven.archiva.model.Dependency;
import org.apache.maven.archiva.repository.project.ProjectModelException;
import org.apache.maven.archiva.repository.project.ProjectModelReader;
import org.apache.maven.archiva.repository.project.ProjectModelResolver;
import org.apache.maven.archiva.repository.project.filters.EffectiveProjectModelBuilder;
import org.apache.maven.archiva.repository.project.readers.ProjectModel400Reader;
import org.apache.maven.archiva.repository.project.resolvers.RepositoryProjectResolver;
import org.codehaus.plexus.PlexusTestCase;
import java.io.File;
import java.util.Iterator;
import java.util.List;
/**
* EffectiveProjectModelBuilderTest
*
* @author <a href="mailto:joakim@erdfelt.com">Joakim Erdfelt</a>
* @version $Id$
*/
public class EffectiveProjectModelBuilderTest
extends PlexusTestCase
{
private static final String DEFAULT_REPOSITORY = "src/test/repositories/default-repository";
private ArchivaProjectModel createArchivaProjectModel( String path )
throws ProjectModelException
{
ProjectModelReader reader = new ProjectModel400Reader();
File pomFile = new File( getBasedir(), path );
return reader.read( pomFile );
}
private ProjectModelResolver createDefaultRepositoryResolver()
{
File defaultRepoDir = new File( getBasedir(), DEFAULT_REPOSITORY );
ArchivaRepository repo = new ArchivaRepository( "defaultTestRepo", "Default Test Repo", "file://"
+ defaultRepoDir.getAbsolutePath() );
RepositoryProjectResolver resolver = new RepositoryProjectResolver( repo );
return resolver;
}
public void testBuildEffectiveProject()
throws Exception
{
EffectiveProjectModelBuilder builder = new EffectiveProjectModelBuilder();
builder.addProjectModelResolver( createDefaultRepositoryResolver() );
ArchivaProjectModel startModel = createArchivaProjectModel( DEFAULT_REPOSITORY
+ "/org/apache/maven/archiva/archiva-model/1.0-SNAPSHOT/archiva-model-1.0-SNAPSHOT.pom" );
ArchivaProjectModel effectiveModel = builder.buildEffectiveProjectModel( startModel );
ArchivaProjectModel expectedModel = createArchivaProjectModel( "src/test/effective-poms/"
+ "/archiva-model-effective.pom" );
assertModel( expectedModel, effectiveModel );
}
private void assertModel( ArchivaProjectModel expectedModel, ArchivaProjectModel effectiveModel )
{
assertEquals( "Equivalent Models", expectedModel, effectiveModel );
assertContainsSame( "Individuals", expectedModel.getIndividuals(), effectiveModel.getIndividuals() );
dumpDependencyList( "Expected", expectedModel.getDependencies() );
dumpDependencyList( "Effective", effectiveModel.getDependencies() );
assertContainsSame( "Dependencies", expectedModel.getDependencies(), effectiveModel.getDependencies() );
assertContainsSame( "DependencyManagement", expectedModel.getDependencyManagement(), effectiveModel
.getDependencyManagement() );
}
private void dumpDependencyList( String type, List deps )
{
System.out.println( ".\\ [" + type + "] Dependency List (size:" + deps.size() + ") \\.________________" );
Iterator it = deps.iterator();
while ( it.hasNext() )
{
Dependency dep = (Dependency) it.next();
System.out.println( " " + toDependencyKey( dep ) );
}
System.out.println( "" );
}
private String toDependencyKey( Dependency dep )
{
return "[" + dep.getGroupId() + ":" + dep.getArtifactId() + ":" + dep.getVersion() + ":" + dep.getClassifier()
+ ":" + dep.getType() + "]";
}
private void assertContainsSame( String listId, List expectedList, List effectiveList )
{
if ( ( expectedList == null ) && ( effectiveList == null ) )
{
return;
}
if ( ( expectedList == null ) && ( effectiveList != null ) )
{
fail( "Effective [" + listId + "] List is instantiated, while expected List is null." );
}
if ( ( expectedList != null ) && ( effectiveList == null ) )
{
fail( "Effective [" + listId + "] List is null, while expected List is instantiated." );
}
assertEquals( "[" + listId + "] List Size", expectedList.size(), expectedList.size() );
Iterator it = expectedList.iterator();
while ( it.hasNext() )
{
Object o = it.next();
assertTrue( "Should exist in Effective [" + listId + "] list: " + o, effectiveList.contains( o ) );
}
}
}

View File

@ -0,0 +1,84 @@
package org.apache.maven.archiva.repository.project.filters;
/*
* 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.model.ArchivaProjectModel;
import org.apache.maven.archiva.model.Dependency;
import org.apache.maven.archiva.repository.project.ProjectModelException;
import org.apache.maven.archiva.repository.project.filters.ProjectModelExpressionExpander;
import java.util.Iterator;
import junit.framework.TestCase;
/**
* ProjectModelExpressionExpanderTest
*
* @author <a href="mailto:joakim@erdfelt.com">Joakim Erdfelt</a>
* @version $Id$
*/
public class ProjectModelExpressionExpanderTest
extends TestCase
{
public void testExpressionEvaluation()
throws ProjectModelException
{
ArchivaProjectModel model = new ArchivaProjectModel();
model.setGroupId( "org.apache.maven.archiva" );
model.setArtifactId( "archiva-test-project" );
model.setVersion( "1.0-SNAPSHOT" );
model.addDependency( createDependency( "org.apache.maven.archiva", "archiva-model", "${archiva.version}" ) );
model.addDependency( createDependency( "org.apache.maven.archiva", "archiva-common", "${archiva.version}" ) );
model.addDependency( createDependency( "org.apache.maven.archiva", "archiva-indexer", "${archiva.version}" ) );
model.addProperty( "archiva.version", "1.0-SNAPSHOT" );
ProjectModelExpressionExpander.evaluateExpressions( model );
assertNotNull( model );
assertEquals( "Group ID", "org.apache.maven.archiva", model.getGroupId() );
assertEquals( "Artifact ID", "archiva-test-project", model.getArtifactId() );
assertEquals( "Version", "1.0-SNAPSHOT", model.getVersion() );
assertNotNull( "Dependencies", model.getDependencies() );
assertEquals( "Dependencies Size", 3, model.getDependencies().size() );
Iterator it = model.getDependencies().iterator();
while ( it.hasNext() )
{
Dependency dep = (Dependency) it.next();
assertEquals( "Dependency [" + dep.getArtifactId() + "] Group ID", "org.apache.maven.archiva", dep
.getGroupId() );
assertEquals( "Dependency [" + dep.getArtifactId() + "] Version", "1.0-SNAPSHOT", dep.getVersion() );
}
}
private Dependency createDependency( String groupId, String artifactId, String version )
{
Dependency dep = new Dependency();
dep.setGroupId( groupId );
dep.setArtifactId( artifactId );
dep.setVersion( version );
return dep;
}
}

View File

@ -1,4 +1,4 @@
package org.apache.maven.archiva.consumers;
package org.apache.maven.archiva.repository.project.readers;
/*
* Licensed to the Apache Software Foundation (ASF) under one
@ -33,9 +33,9 @@ public class AllTests
public static Test suite()
{
TestSuite suite = new TestSuite( "Test for org.apache.maven.archiva.common.consumers" );
TestSuite suite = new TestSuite( "Test for org.apache.maven.archiva.repository.project.readers" );
//$JUnit-BEGIN$
suite.addTestSuite( GenericArtifactConsumerTest.class );
suite.addTestSuite( ProjectModel400ReaderTest.class );
//$JUnit-END$
return suite;
}

View File

@ -0,0 +1,98 @@
package org.apache.maven.archiva.repository.project.readers;
/*
* 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.model.ArchivaProjectModel;
import org.apache.maven.archiva.model.VersionedReference;
import org.apache.maven.archiva.repository.project.ProjectModelException;
import org.apache.maven.archiva.repository.project.ProjectModelReader;
import org.apache.maven.archiva.repository.project.readers.ProjectModel400Reader;
import org.codehaus.plexus.PlexusTestCase;
import java.io.File;
/**
* ProjectModel400ReaderTest
*
* @author <a href="mailto:joakim@erdfelt.com">Joakim Erdfelt</a>
* @version $Id$
*/
public class ProjectModel400ReaderTest
extends PlexusTestCase
{
public void testLoadSimple()
throws ProjectModelException
{
File defaultRepoDir = new File( getBasedir(), "src/test/repositories/default-repository" );
File pomFile = new File( defaultRepoDir,
"org/apache/maven/shared/maven-downloader/1.0/maven-downloader-1.0.pom" );
ProjectModelReader reader = new ProjectModel400Reader();
ArchivaProjectModel project = reader.read( pomFile );
assertNotNull( project );
assertEquals( "Group Id", "org.apache.maven.shared", project.getGroupId() );
assertEquals( "Artifact Id", "maven-downloader", project.getArtifactId() );
assertEquals( "Version", "1.0", project.getVersion() );
assertEquals( "Name", "Maven Downloader", project.getName() );
assertEquals( "Description", "Provide a super simple interface for downloading a single artifact.", project
.getDescription() );
// Test for parent
VersionedReference parentRef = project.getParentProject();
assertNotNull( "Parent Reference", parentRef );
assertEquals( "Parent Group ID", "org.apache.maven.shared", parentRef.getGroupId() );
assertEquals( "Parent Artifact ID", "maven-shared-components", parentRef.getArtifactId() );
assertEquals( "Parent Version", "4", parentRef.getVersion() );
assertNotNull( "Dependencies", project.getDependencies() );
assertEquals( "Dependencies.size", 3, project.getDependencies().size() );
}
public void testLoadWithNamespace()
throws ProjectModelException
{
File defaultRepoDir = new File( getBasedir(), "src/test/repositories/default-repository" );
File pomFile = new File( defaultRepoDir,
"org/apache/maven/archiva/archiva-model/1.0-SNAPSHOT/archiva-model-1.0-SNAPSHOT.pom" );
ProjectModelReader reader = new ProjectModel400Reader();
ArchivaProjectModel project = reader.read( pomFile );
assertNotNull( project );
assertEquals( "Group Id", null, project.getGroupId() );
assertEquals( "Artifact Id", "archiva-model", project.getArtifactId() );
assertEquals( "Version", null, project.getVersion() );
assertEquals( "Name", "Archiva Base :: Model", project.getName() );
assertEquals( "Description", null, project.getDescription() );
// Test for parent
VersionedReference parentRef = project.getParentProject();
assertNotNull( "Parent Reference", parentRef );
assertEquals( "Parent Group ID", "org.apache.maven.archiva", parentRef.getGroupId() );
assertEquals( "Parent Artifact ID", "archiva-base", parentRef.getArtifactId() );
assertEquals( "Parent Version", "1.0-SNAPSHOT", parentRef.getVersion() );
assertNotNull( "Dependencies", project.getDependencies() );
assertEquals( "Dependencies.size", 6, project.getDependencies().size() );
}
}

View File

@ -1,231 +0,0 @@
package org.apache.maven.archiva.repository.scanner;
/*
* 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.common.utils.DateUtil;
import org.apache.maven.archiva.consumers.AbstractMonitoredConsumer;
import org.apache.maven.archiva.consumers.ConsumerException;
import org.apache.maven.archiva.consumers.RepositoryContentConsumer;
import org.apache.maven.archiva.model.ArchivaProjectModel;
import org.apache.maven.archiva.model.ArchivaRepository;
import org.apache.maven.archiva.model.RepositoryContentStatistics;
import org.apache.maven.archiva.repository.RepositoryException;
import org.apache.maven.archiva.repository.project.ProjectModel400Reader;
import org.apache.maven.archiva.repository.project.ProjectModelException;
import org.apache.maven.archiva.repository.project.ProjectModelReader;
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
/**
* CentralScannerTiming
*
* @author <a href="mailto:joakim@erdfelt.com">Joakim Erdfelt</a>
* @version $Id$
*/
public class CentralScannerTiming
{
public static void main( String[] args )
{
String pathToCentral = "/home/repo1/ibiblio";
( new CentralScannerTiming() ).scanIt( pathToCentral );
}
public void scanIt( String path )
{
ArchivaRepository centralRepo = new ArchivaRepository( "central", "Central Mirror", "file://" + path );
List consumerList = new ArrayList();
// Basic - find the artifacts (no real processing)
consumerList.add( new BasicConsumer() );
timeIt( "Basic Scan", centralRepo, consumerList );
// POM - find the poms and read them.
consumerList.clear();
consumerList.add( new POMConsumer() );
timeIt( "POM Read", centralRepo, consumerList );
}
private void timeIt( String type, ArchivaRepository repo, List consumerList )
{
RepositoryScanner scanner = new RepositoryScanner();
try
{
RepositoryContentStatistics stats = scanner.scan( repo, consumerList, true );
SimpleDateFormat df = new SimpleDateFormat();
System.out.println( ".\\ " + type + " \\.__________________________________________" );
System.out.println( " Repository ID : " + stats.getRepositoryId() );
System.out.println( " Duration : " + DateUtil.getDuration( stats.getDuration() ) );
System.out.println( " When Gathered : " + df.format( stats.getWhenGathered() ) );
System.out.println( " Total File Count: " + stats.getTotalFileCount() );
System.out.println( " New File Count : " + stats.getNewFileCount() );
System.out.println( "______________________________________________________________" );
}
catch ( RepositoryException e )
{
e.printStackTrace( System.err );
}
}
class POMConsumer extends AbstractMonitoredConsumer implements RepositoryContentConsumer
{
private int count = 0;
private ProjectModelReader reader;
private ArchivaRepository repo;
public POMConsumer()
{
reader = new ProjectModel400Reader();
}
public List getExcludes()
{
return Collections.EMPTY_LIST;
}
public List getIncludes()
{
List includes = new ArrayList();
includes.add( "**/*.pom" );
return includes;
}
public String getId()
{
return "pom-consumer";
}
public String getDescription()
{
return "Basic POM Consumer";
}
public boolean isPermanent()
{
return false;
}
public void beginScan( ArchivaRepository repository ) throws ConsumerException
{
repo = repository;
}
public void processFile( String path ) throws ConsumerException
{
count++;
if ( ( count % 1000 ) == 0 )
{
System.out.println( "Files Processed: " + count );
}
File pomFile = new File( repo.getUrl().getPath(), path );
try
{
ArchivaProjectModel model = reader.read( pomFile );
}
catch ( ProjectModelException e )
{
System.err.println( "Unable to process: " + pomFile );
e.printStackTrace( System.out );
}
}
public void completeScan()
{
/* do nothing */
}
}
class BasicConsumer extends AbstractMonitoredConsumer implements RepositoryContentConsumer
{
int count = 0;
public List getExcludes()
{
return Collections.EMPTY_LIST;
}
public List getIncludes()
{
List includes = new ArrayList();
includes.add( "**/*.pom" );
includes.add( "**/*.jar" );
includes.add( "**/*.war" );
includes.add( "**/*.ear" );
includes.add( "**/*.sar" );
includes.add( "**/*.car" );
includes.add( "**/*.mar" );
// includes.add( "**/*.sha1" );
// includes.add( "**/*.md5" );
// includes.add( "**/*.asc" );
includes.add( "**/*.dtd" );
includes.add( "**/*.tld" );
includes.add( "**/*.gz" );
includes.add( "**/*.bz2" );
includes.add( "**/*.zip" );
return includes;
}
public String getId()
{
return "test-scan-timing";
}
public String getDescription()
{
return "Basic No-op Consumer";
}
public boolean isPermanent()
{
return false;
}
public void beginScan( ArchivaRepository repository ) throws ConsumerException
{
/* do nothing */
}
public void processFile( String path ) throws ConsumerException
{
count++;
if ( ( count % 1000 ) == 0 )
{
System.out.println( "Files Processed: " + count );
}
}
public void completeScan()
{
/* do nothing */
}
}
}

View File

@ -0,0 +1,69 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
~ 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.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<artifactId>archiva-applet</artifactId>
<name>Archiva Applet</name>
<description>
Applet for performing local operations on files such as creating a checksum of an artifact
before uploading it.
</description>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.1</version>
<configuration>
<keystore>src/keystore/keystore</keystore>
<alias>mykey</alias>
<storepass>password</storepass>
<keypass>password</keypass>
</configuration>
<executions>
<execution>
<goals>
<goal>sign</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>cobertura-maven-plugin</artifactId>
<configuration>
<instrumentation>
<!-- TODO: should this module have tests? -->
<excludes>
<exclude>**/**</exclude>
</excludes>
</instrumentation>
</configuration>
</plugin>
</plugins>
</build>
</project>

View File

@ -0,0 +1,42 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
~ Copyright 2005-2006 The Apache Software Foundation.
~
~ Licensed 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.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-parent</artifactId>
<version>1.0-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
<artifactId>archiva-base</artifactId>
<name>Archiva Base</name>
<packaging>pom</packaging>
<modules>
<module>archiva-common</module>
<module>archiva-configuration</module>
<module>archiva-consumers</module>
<module>archiva-indexer</module>
<module>archiva-model</module>
<!-- <module>archiva-proxy</module> -->
<module>archiva-repository-layer</module>
<module>archiva-xml-tools</module>
</modules>
</project>

View File

@ -0,0 +1,68 @@
<?xml version="1.0"?>
<!--
~ 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.
-->
<project>
<parent>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-parent</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>archiva-cli</artifactId>
<name>Archiva Command Line Client</name>
<dependencies>
<dependency>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-converter</artifactId>
</dependency>
<dependency>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-repository-layer</artifactId>
</dependency>
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-component-api</artifactId>
</dependency>
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-cli</artifactId>
<version>1.0</version>
</dependency>
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<descriptor>src/main/assembly/archiva-cli-assembly.xml</descriptor>
<archive>
<manifest>
<mainClass>org.apache.maven.archiva.cli.ArchivaCli</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
</plugins>
</build>
</project>

View File

@ -0,0 +1,98 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
~ 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.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<parent>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-base</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>archiva-common</artifactId>
<name>Archiva Base :: Common</name>
<dependencies>
<!-- TO OTHER DEVELOPERS:
This module should depend on NO OTHER ARCHIVA MODULES.
If you feel tempted to add one, discuss it first in the
archiva-dev@maven.apache.org mailing-list.
joakime@apache.org
-->
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-component-api</artifactId>
</dependency>
<!--
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-artifact-manager</artifactId>
</dependency>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-project</artifactId>
</dependency>
-->
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
</dependency>
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-container-default</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<!--
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<executions>
<execution>
<id>test-jar</id>
<goals>
<goal>test-jar</goal>
</goals>
</execution>
</executions>
</plugin>
-->
<plugin>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-maven-plugin</artifactId>
<!--
<executions>
<execution>
<id>merge</id>
<goals>
<goal>merge-descriptors</goal>
</goals>
<configuration>
<descriptors>
<descriptor>${basedir}/src/main/resources/META-INF/plexus/components.xml</descriptor>
<descriptor>${project.build.directory}/generated-resources/plexus/META-INF/plexus/components.xml</descriptor>
</descriptors>
</configuration>
</execution>
</executions>
-->
</plugin>
</plugins>
</build>
</project>

View File

@ -0,0 +1,109 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
~ 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.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<parent>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-base</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>archiva-configuration</artifactId>
<name>Archiva Base :: Configuration</name>
<dependencies>
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-component-api</artifactId>
</dependency>
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-utils</artifactId>
</dependency>
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
</dependency>
<dependency>
<groupId>org.codehaus.plexus.registry</groupId>
<artifactId>plexus-registry-api</artifactId>
<version>1.0-alpha-2-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.codehaus.plexus.registry</groupId>
<artifactId>plexus-registry-commons</artifactId>
<version>1.0-alpha-2-SNAPSHOT</version>
<scope>test</scope>
</dependency>
<!-- Test Deps -->
<dependency>
<groupId>easymock</groupId>
<artifactId>easymock</artifactId>
<version>1.2_Java1.3</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-container-default</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.modello</groupId>
<artifactId>modello-maven-plugin</artifactId>
<version>1.0-alpha-15-SNAPSHOT</version>
<executions>
<execution>
<goals>
<goal>java</goal>
<goal>registry-reader</goal>
<goal>registry-writer</goal>
</goals>
</execution>
</executions>
<configuration>
<version>1.0.0</version>
<model>src/main/mdo/configuration.mdo</model>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>cobertura-maven-plugin</artifactId>
<configuration>
<instrumentation>
<!-- exclude generated -->
<excludes>
<exclude>org/apache/maven/archiva/configuration/io/**</exclude>
<exclude>org/apache/maven/archiva/configuration/*RepositoryConfiguration.*</exclude>
<exclude>org/apache/maven/archiva/configuration/Configuration.*</exclude>
<exclude>org/apache/maven/archiva/configuration/Proxy.*</exclude>
</excludes>
</instrumentation>
</configuration>
</plugin>
</plugins>
</build>
</project>

View File

@ -0,0 +1,38 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
~ Copyright 2005-2006 The Apache Software Foundation.
~
~ Licensed 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.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-consumers</artifactId>
<version>1.0-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
<artifactId>archiva-consumer-api</artifactId>
<name>Archiva Consumer API</name>
<packaging>jar</packaging>
<dependencies>
<dependency>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-model</artifactId>
</dependency>
</dependencies>
</project>

View File

@ -0,0 +1,41 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
~ Copyright 2005-2006 The Apache Software Foundation.
~
~ Licensed 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.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-base</artifactId>
<version>1.0-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
<artifactId>archiva-consumers</artifactId>
<name>Archiva Consumers</name>
<packaging>pom</packaging>
<modules>
<module>archiva-consumer-api</module>
<module>archiva-core-consumers</module>
<!--
<module>archiva-database-consumers</module>
<module>archiva-lucene-consumers</module>
<module>archiva-signature-consumers</module>
-->
</modules>
</project>

View File

@ -0,0 +1,79 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
~ 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.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<parent>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>archiva-converter</artifactId>
<name>Archiva Repository Converter</name>
<dependencies>
<dependency>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-discoverer</artifactId>
</dependency>
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-utils</artifactId>
</dependency>
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-component-api</artifactId>
</dependency>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-artifact</artifactId>
</dependency>
<dependency>
<groupId>org.apache.maven.shared</groupId>
<artifactId>maven-model-converter</artifactId>
</dependency>
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-digest</artifactId>
</dependency>
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-i18n</artifactId>
<version>1.0-beta-6</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
</dependency>
<!-- TEST DEPS -->
<dependency>
<groupId>hsqldb</groupId>
<artifactId>hsqldb</artifactId>
<version>1.7.3.3</version>
<scope>test</scope>
</dependency>
<!-- Needed for PlexusTestCase -->
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-container-default</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
</project>

View File

@ -0,0 +1,50 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
~ Copyright 2005-2006 The Apache Software Foundation.
~
~ Licensed 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.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-consumers</artifactId>
<version>1.0-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
<artifactId>archiva-core-consumers</artifactId>
<name>Archiva Consumers :: Core Consumers</name>
<packaging>jar</packaging>
<dependencies>
<dependency>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-configuration</artifactId>
</dependency>
<dependency>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-consumer-api</artifactId>
</dependency>
<dependency>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-repository-layer</artifactId>
</dependency>
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-digest</artifactId>
</dependency>
</dependencies>
</project>

View File

@ -0,0 +1,113 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
~ 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.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<parent>
<artifactId>archiva</artifactId>
<groupId>org.apache.maven.archiva</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>archiva-core</artifactId>
<name>Archiva Core</name>
<dependencies>
<dependency>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-configuration</artifactId>
</dependency>
<dependency>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-discoverer</artifactId>
</dependency>
<dependency>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-proxy</artifactId>
</dependency>
<dependency>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-reports-standard</artifactId>
</dependency>
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-component-api</artifactId>
</dependency>
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-quartz</artifactId>
<version>1.0-alpha-3</version>
</dependency>
<dependency>
<groupId>org.codehaus.plexus.cache</groupId>
<artifactId>plexus-cache-ehcache</artifactId>
<version>1.0-alpha-1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-taskqueue</artifactId>
<version>1.0-alpha-6</version>
</dependency>
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
</dependency>
<dependency>
<groupId>org.codehaus.plexus.registry</groupId>
<artifactId>plexus-registry-commons</artifactId>
<version>1.0-SNAPSHOT</version>
<scope>test</scope>
</dependency>
<!-- TEST DEPS -->
<dependency>
<groupId>hsqldb</groupId>
<artifactId>hsqldb</artifactId>
<version>1.7.3.3</version>
<scope>test</scope>
</dependency>
<!-- needed for PlexusTestCase -->
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-container-default</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-maven-plugin</artifactId>
<executions>
<execution>
<id>merge</id>
<goals>
<goal>merge-descriptors</goal>
</goals>
<configuration>
<descriptors>
<descriptor>${basedir}/src/main/resources/META-INF/plexus/components.xml</descriptor>
<descriptor>${project.build.directory}/generated-resources/plexus/META-INF/plexus/components.xml</descriptor>
</descriptors>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>

View File

@ -0,0 +1,65 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
~ 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.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<parent>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>archiva-discoverer</artifactId>
<name>Archiva Discoverer</name>
<dependencies>
<dependency>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-common</artifactId>
</dependency>
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-utils</artifactId>
</dependency>
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-container-default</artifactId>
</dependency>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-artifact</artifactId>
</dependency>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-repository-metadata</artifactId>
</dependency>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-artifact-manager</artifactId>
</dependency>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-model</artifactId>
</dependency>
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
</dependency>
</dependencies>
</project>

View File

@ -0,0 +1,81 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
~ 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.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<parent>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-base</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>archiva-indexer</artifactId>
<name>Archiva Base :: Indexer</name>
<dependencies>
<dependency>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-configuration</artifactId>
</dependency>
<dependency>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-model</artifactId>
</dependency>
<dependency>
<groupId>org.apache.lucene</groupId>
<artifactId>lucene-core</artifactId>
<version>2.0.0</version>
</dependency>
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-utils</artifactId>
</dependency>
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-container-default</artifactId>
</dependency>
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-digest</artifactId>
</dependency>
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>cobertura-maven-plugin</artifactId>
<configuration>
<check>
<!-- TODO: increase coverage -->
<totalLineRate>80</totalLineRate>
<totalBranchRate>80</totalBranchRate>
</check>
</configuration>
</plugin>
</plugins>
</build>
</project>

View File

@ -0,0 +1,159 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
~ 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.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<parent>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-base</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>archiva-model</artifactId>
<name>Archiva Base :: Model</name>
<dependencies>
<dependency>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-common</artifactId>
</dependency>
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-utils</artifactId>
</dependency>
<dependency>
<groupId>javax.jdo</groupId>
<artifactId>jdo2-api</artifactId>
<version>2.0</version>
</dependency>
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-container-default</artifactId>
</dependency>
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.codehaus.modello</groupId>
<artifactId>modello-maven-plugin</artifactId>
<version>1.0-alpha-15-SNAPSHOT</version>
<configuration>
<version>1.0.0</version>
<packageWithVersion>false</packageWithVersion>
<model>src/main/mdo/archiva-base.xml</model>
</configuration>
<executions>
<execution>
<id>archiva-base</id>
<goals>
<goal>java</goal>
<goal>xsd</goal>
<goal>jpox-jdo-mapping</goal>
<goal>jpox-metadata-class</goal>
<!--
<goal>xpp3-writer</goal>
<goal>xpp3-reader</goal>
-->
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>jpox-maven-plugin</artifactId>
<version>1.1.6</version>
<dependencies>
<dependency>
<groupId>org.apache.derby</groupId>
<artifactId>derby</artifactId>
<version>10.2.1.6</version>
</dependency>
</dependencies>
<executions>
<execution>
<id>create-ddl</id>
<phase>generate-test-resources</phase>
<goals>
<goal>schema-create</goal>
</goals>
<configuration>
<outputFile>${basedir}/target/classes/org/apache/maven/archiva/model/schema.ddl</outputFile>
<toolProperties>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>org.apache.derby.jdbc.EmbeddedDriver</value>
</property>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:derby:target/jdo-schema-create;create=true</value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>sa</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value></value>
</property>
<property>
<name>log4j.configuration</name>
<value>${basedir}/src/test/resources/log4j.xml</value>
</property>
<property>
<name>org.jpox.autoCreateTables</name>
<value>true</value>
</property>
</toolProperties>
</configuration>
</execution>
<execution>
<id>enhance</id>
<goals>
<goal>enhance</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>cobertura-maven-plugin</artifactId>
<configuration>
<instrumentation>
<!-- exclude generated -->
<excludes>
<exclude>org/apache/maven/archiva/reporting/model/**</exclude>
</excludes>
</instrumentation>
</configuration>
</plugin>
</plugins>
</build>
</project>

View File

@ -0,0 +1,567 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
~ Copyright 2005-2006 The Apache Software Foundation.
~
~ Licensed 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.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.apache.maven</groupId>
<artifactId>maven-parent</artifactId>
<version>4</version>
<relativePath>../pom/maven/pom.xml</relativePath>
</parent>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-parent</artifactId>
<packaging>pom</packaging>
<name>Archiva</name>
<version>1.0-SNAPSHOT</version>
<description>
Archiva is an application for managing one or more remote repositories, including
administration, artifact handling,
browsing and searching.
</description>
<url>http://maven.apache.org/archiva</url>
<issueManagement>
<system>jira</system>
<url>http://jira.codehaus.org/browse/MRM</url>
</issueManagement>
<mailingLists>
<mailingList>
<name>Maven Archiva User List</name>
<subscribe>archiva-users-subscribe@maven.apache.org</subscribe>
<unsubscribe>archiva-users-unsubscribe@maven.apache.org</unsubscribe>
<post>archiva-users@maven.apache.org</post>
<archive>http://mail-archives.apache.org/mod_mbox/maven-archiva-users</archive>
</mailingList>
<mailingList>
<name>Maven Archiva Developer List</name>
<subscribe>archiva-dev-subscribe@maven.apache.org</subscribe>
<unsubscribe>archiva-dev-unsubscribe@maven.apache.org</unsubscribe>
<post>archiva-dev@maven.apache.org</post>
<archive>http://mail-archives.apache.org/mod_mbox/maven-archiva-dev</archive>
</mailingList>
<mailingList>
<name>Maven Archiva Commits List</name>
<subscribe>archiva-commits-subscribe@maven.apache.org</subscribe>
<unsubscribe>archiva-commits-unsubscribe@maven.apache.org</unsubscribe>
<post>archiva-commits@maven.apache.org</post>
<archive>http://mail-archives.apache.org/mod_mbox/maven-archiva-commits</archive>
</mailingList>
</mailingLists>
<scm>
<connection>scm:svn:http://svn.apache.org/repos/asf/maven/archiva/trunk</connection>
<developerConnection>scm:svn:https://svn.apache.org/repos/asf/maven/archiva/trunk</developerConnection>
<url>http://svn.apache.org/viewcvs.cgi/maven/archiva/trunk</url>
</scm>
<distributionManagement>
<site>
<id>apache.website</id>
<url>scpexe://people.apache.org/www/maven.apache.org/archiva/</url>
</site>
</distributionManagement>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-maven-plugin</artifactId>
<version>1.3.3</version>
<executions>
<execution>
<id>generate</id>
<goals>
<goal>descriptor</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.4</source>
<target>1.4</target>
</configuration>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.2</version>
</plugin>
</plugins>
<pluginManagement>
<plugins>
<plugin>
<artifactId>maven-idea-plugin</artifactId>
<configuration>
<jdkLevel>1.4</jdkLevel>
</configuration>
</plugin>
<plugin>
<artifactId>maven-release-plugin</artifactId>
<configuration>
<tagBase>https://svn.apache.org/repos/asf/maven/archiva/tags</tagBase>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
<modules>
<module>archiva-api</module>
<module>archiva-base</module>
<module>archiva-database</module>
<module>archiva-reporting</module>
<module>archiva-web</module>
<module>archiva-cli</module>
<module>maven-meeper</module>
</modules>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.apache.maven.shared</groupId>
<artifactId>maven-app-configuration-model</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.maven.shared</groupId>
<artifactId>maven-app-configuration-web</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-container-default</artifactId>
<version>1.0-alpha-18</version>
</dependency>
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-component-api</artifactId>
<version>1.0-alpha-18</version>
</dependency>
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-utils</artifactId>
<version>1.4</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-repository-metadata</artifactId>
<version>${maven.version}</version>
</dependency>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-model</artifactId>
<version>${maven.version}</version>
</dependency>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-artifact</artifactId>
<version>${maven.version}</version>
</dependency>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-artifact-manager</artifactId>
<version>${maven.version}</version>
</dependency>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-project</artifactId>
<version>${maven.version}</version>
</dependency>
<dependency>
<groupId>org.apache.maven.shared</groupId>
<artifactId>maven-model-converter</artifactId>
<version>2.0.5-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.maven.wagon</groupId>
<artifactId>wagon-provider-api</artifactId>
<version>${wagon.version}</version>
</dependency>
<dependency>
<groupId>org.apache.maven.wagon</groupId>
<artifactId>wagon-ssh</artifactId>
<version>${wagon.version}</version>
</dependency>
<dependency>
<groupId>org.apache.maven.wagon</groupId>
<artifactId>wagon-file</artifactId>
<version>${wagon.version}</version>
</dependency>
<dependency>
<groupId>org.apache.maven.wagon</groupId>
<artifactId>wagon-http-lightweight</artifactId>
<version>${wagon.version}</version>
</dependency>
<dependency>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-common</artifactId>
<version>${archiva.version}</version>
</dependency>
<dependency>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-core</artifactId>
<version>${archiva.version}</version>
</dependency>
<dependency>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-reports-standard</artifactId>
<version>${archiva.version}</version>
</dependency>
<dependency>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-model</artifactId>
<version>${archiva.version}</version>
</dependency>
<dependency>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-database</artifactId>
<version>${archiva.version}</version>
</dependency>
<dependency>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-consumer-api</artifactId>
<version>${archiva.version}</version>
</dependency>
<dependency>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-model</artifactId>
<version>${archiva.version}</version>
</dependency>
<dependency>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-database</artifactId>
<version>${archiva.version}</version>
</dependency>
<dependency>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-discoverer</artifactId>
<version>${archiva.version}</version>
</dependency>
<dependency>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-repository-layer</artifactId>
<version>${archiva.version}</version>
</dependency>
<dependency>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-indexer</artifactId>
<version>${archiva.version}</version>
</dependency>
<dependency>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-proxy</artifactId>
<version>${archiva.version}</version>
</dependency>
<dependency>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-applet</artifactId>
<version>${archiva.version}</version>
</dependency>
<dependency>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-security</artifactId>
<version>${archiva.version}</version>
</dependency>
<dependency>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-configuration</artifactId>
<version>${archiva.version}</version>
</dependency>
<dependency>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-converter</artifactId>
<version>${archiva.version}</version>
</dependency>
<dependency>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-utils</artifactId>
<version>${archiva.version}</version>
</dependency>
<dependency>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-webapp</artifactId>
<version>${archiva.version}</version>
<type>war</type>
</dependency>
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-digest</artifactId>
<version>1.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.codehaus.plexus.security</groupId>
<artifactId>plexus-security-rbac-profile</artifactId>
<version>${plexus-security.version}</version>
</dependency>
<dependency>
<groupId>org.codehaus.plexus.security</groupId>
<artifactId>plexus-security-system</artifactId>
<version>${plexus-security.version}</version>
</dependency>
<dependency>
<groupId>org.codehaus.plexus.security</groupId>
<artifactId>plexus-security-system</artifactId>
<version>${plexus-security.version}</version>
</dependency>
<dependency>
<groupId>org.codehaus.plexus.security</groupId>
<artifactId>plexus-security-ui-web</artifactId>
<version>${plexus-security.version}</version>
<type>war</type>
</dependency>
<dependency>
<groupId>org.codehaus.plexus.security</groupId>
<artifactId>plexus-security-ui-web-integration</artifactId>
<version>${plexus-security.version}</version>
</dependency>
<dependency>
<groupId>org.codehaus.plexus.security</groupId>
<artifactId>plexus-security-ui-web-taglib</artifactId>
<version>${plexus-security.version}</version>
</dependency>
<dependency>
<groupId>org.codehaus.plexus.security</groupId>
<artifactId>plexus-security-authentication-provider-user-manager</artifactId>
<version>${plexus-security.version}</version>
</dependency>
<dependency>
<groupId>org.codehaus.plexus.security</groupId>
<artifactId>plexus-security-authentication-provider-keystore</artifactId>
<version>${plexus-security.version}</version>
</dependency>
<dependency>
<groupId>org.codehaus.plexus.security</groupId>
<artifactId>plexus-security-user-management-api</artifactId>
<version>${plexus-security.version}</version>
</dependency>
<dependency>
<groupId>org.codehaus.plexus.security</groupId>
<artifactId>plexus-security-user-management-provider-jdo</artifactId>
<version>${plexus-security.version}</version>
</dependency>
<dependency>
<groupId>org.codehaus.plexus.security</groupId>
<artifactId>plexus-security-authorization-rbac-store-cached</artifactId>
<version>${plexus-security.version}</version>
</dependency>
<dependency>
<groupId>org.codehaus.plexus.security</groupId>
<artifactId>plexus-security-authorization-rbac-store-jdo</artifactId>
<version>${plexus-security.version}</version>
</dependency>
<dependency>
<groupId>org.codehaus.plexus.security</groupId>
<artifactId>plexus-security-authorization-api</artifactId>
<version>${plexus-security.version}</version>
</dependency>
<dependency>
<groupId>org.codehaus.plexus.security</groupId>
<artifactId>plexus-security-authorization-rbac-authorizer</artifactId>
<version>${plexus-security.version}</version>
</dependency>
<dependency>
<groupId>org.codehaus.plexus.security</groupId>
<artifactId>plexus-security-keys-jdo</artifactId>
<version>${plexus-security.version}</version>
</dependency>
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>2.2</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>org.apache.derby</groupId>
<artifactId>derby</artifactId>
<version>10.1.3.1</version>
</dependency>
</dependencies>
</dependencyManagement>
<reporting>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>cobertura-maven-plugin</artifactId>
</plugin>
<plugin>
<artifactId>maven-checkstyle-plugin</artifactId>
<configuration>
<configLocation>config/maven_checks.xml</configLocation>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>changelog-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>taglist-maven-plugin</artifactId>
</plugin>
<plugin>
<artifactId>maven-jxr-plugin</artifactId>
<configuration>
<aggregate>true</aggregate>
</configuration>
</plugin>
<plugin>
<artifactId>maven-surefire-report-plugin</artifactId>
</plugin>
<plugin>
<artifactId>maven-javadoc-plugin</artifactId>
<configuration>
<source>1.4</source>
<aggregate>true</aggregate>
</configuration>
</plugin>
<plugin>
<artifactId>maven-pmd-plugin</artifactId>
<!-- TODO: choose appropriate rulesets -->
</plugin>
</plugins>
</reporting>
<profiles>
<profile>
<id>ci</id>
<activation>
<property>
<name>enableCiProfile</name>
<value>true</value>
</property>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-pmd-plugin</artifactId>
<executions>
<execution>
<phase>process-sources</phase>
<goals>
<!-- TODO: after rules are set
<goal>check</goal>
-->
<goal>cpd-check</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
<executions>
<execution>
<phase>process-sources</phase>
<goals>
<!-- TODO: reformat first, and correct the checks (some are not consistent with the Maven style)
<goal>check</goal>
-->
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>cobertura-maven-plugin</artifactId>
<configuration>
<check>
<!-- TODO! raise to 85/100 -->
<totalLineRate>77</totalLineRate>
<totalBranchRate>95</totalBranchRate>
</check>
<instrumentation>
<excludes>
<exclude>**/*$*</exclude>
</excludes>
</instrumentation>
</configuration>
<executions>
<execution>
<id>clean</id>
<goals>
<goal>clean</goal>
</goals>
</execution>
<execution>
<id>check</id>
<goals>
<goal>check</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>
<repositories>
<repository>
<id>codehaus.org</id>
<url>http://repository.codehaus.org</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
<!-- TODO: remove once ehcache, p-sec, registry, webdav, xwork, naming released -->
<repository>
<id>snapshots.codehaus.org</id>
<url>http://snapshots.repository.codehaus.org</url>
<releases>
<enabled>false</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<!-- TODO: remove once modello is released -->
<pluginRepositories>
<pluginRepository>
<id>snapshots.codehaus.org</id>
<url>http://snapshots.repository.codehaus.org</url>
<releases>
<enabled>false</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
<properties>
<archiva.version>1.0-SNAPSHOT</archiva.version>
<maven.version>2.0.5</maven.version>
<wagon.version>1.0-beta-2</wagon.version>
<plexus-security.version>1.0-alpha-11-SNAPSHOT</plexus-security.version>
</properties>
</project>

View File

@ -0,0 +1,62 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
~ 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.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<parent>
<artifactId>archiva</artifactId>
<groupId>org.apache.maven.archiva</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>archiva-plexus-application</artifactId>
<packaging>plexus-application</packaging>
<name>Archiva Plexus Application</name>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-appserver-maven-plugin</artifactId>
<version>2.0-alpha-7</version>
<extensions>true</extensions>
<configuration>
<applicationConfiguration>src/conf/application.xml</applicationConfiguration>
<configurationsDirectory>src/conf</configurationsDirectory>
<configurationProperties>src/plexus.properties</configurationProperties>
<applicationName>archiva</applicationName>
<runtimeConfiguration>src/conf/plexus.xml</runtimeConfiguration>
<runtimeConfigurationProperties>src/plexus.properties</runtimeConfigurationProperties>
<runtimePath>target/plexus-archiva-runtime</runtimePath>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-webapp</artifactId>
<type>war</type>
</dependency>
</dependencies>
<!-- For filtering -->
<properties>
<archivaVersion>${project.version}</archivaVersion>
</properties>
</project>

View File

@ -0,0 +1,145 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
~ 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.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<parent>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>archiva-plexus-runtime</artifactId>
<name>Archiva Runtime Generator</name>
<dependencies>
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-container-default</artifactId>
</dependency>
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-utils</artifactId>
</dependency>
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-appserver-host</artifactId>
<version>2.0-alpha-7</version>
</dependency>
<!-- Services -->
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-appserver-service-jetty</artifactId>
<version>2.0-alpha-7</version>
<type>plexus-service</type>
</dependency>
<!-- Plexus applications -->
<dependency>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-plexus-application</artifactId>
<version>${project.version}</version>
<type>plexus-application</type>
</dependency>
<!-- Additional Core Artifacts -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.8</version>
</dependency>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging-api</artifactId>
<version>1.0.4</version>
</dependency>
<dependency>
<groupId>org.apache.derby</groupId>
<artifactId>derby</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-naming</artifactId>
<version>1.0-alpha-3-SNAPSHOT</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4</version>
<scope>runtime</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-appserver-maven-plugin</artifactId>
<version>2.0-alpha-7</version>
<extensions>true</extensions>
<executions>
<execution>
<phase>process-resources</phase>
<goals>
<goal>assemble-runtime</goal>
<goal>add-services</goal>
<goal>add-apps</goal>
</goals>
</execution>
</executions>
<configuration>
<runtimeConfiguration>src/conf/plexus.xml</runtimeConfiguration>
<runtimeConfigurationProperties>src/plexus.properties</runtimeConfigurationProperties>
<runtimePath>target/plexus-archiva-runtime</runtimePath>
<additionalCoreArtifacts>
<additionalCoreArtifact>commons-logging:commons-logging-api</additionalCoreArtifact>
<additionalCoreArtifact>log4j:log4j</additionalCoreArtifact>
<additionalCoreArtifact>org.apache.derby:derby</additionalCoreArtifact>
<additionalCoreArtifact>org.codehaus.plexus:plexus-naming</additionalCoreArtifact>
<additionalCoreArtifact>commons-pool:commons-pool</additionalCoreArtifact>
<additionalCoreArtifact>commons-dbcp:commons-dbcp</additionalCoreArtifact>
<additionalCoreArtifact>commons-collections:commons-collections</additionalCoreArtifact>
<additionalCoreArtifact>directory-naming:naming-core</additionalCoreArtifact>
<additionalCoreArtifact>directory-naming:naming-factory</additionalCoreArtifact>
<additionalCoreArtifact>directory-naming:naming-java</additionalCoreArtifact>
<additionalCoreArtifact>directory-naming:naming-config</additionalCoreArtifact>
<additionalCoreArtifact>javax.mail:mail</additionalCoreArtifact>
<additionalCoreArtifact>javax.activation:activation</additionalCoreArtifact>
</additionalCoreArtifacts>
</configuration>
</plugin>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.1</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
<configuration>
<descriptor>src/main/assembly/bin.xml</descriptor>
<finalName>archiva</finalName>
</configuration>
</plugin>
</plugins>
</build>
</project>

View File

@ -26,36 +26,35 @@
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>archiva-consumer-api-OLD</artifactId>
<name>Archiva Consumer API</name>
<artifactId>archiva-proxy</artifactId>
<name>Archiva Proxy</name>
<dependencies>
<dependency>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-model</artifactId>
<artifactId>archiva-common</artifactId>
</dependency>
<dependency>
<groupId>org.apache.maven.wagon</groupId>
<artifactId>wagon-file</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.maven.wagon</groupId>
<artifactId>wagon-provider-api</artifactId>
</dependency>
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-utils</artifactId>
<artifactId>plexus-digest</artifactId>
</dependency>
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-container-default</artifactId>
</dependency>
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<groupId>easymock</groupId>
<artifactId>easymock</artifactId>
<version>1.2_Java1.3</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>

View File

@ -0,0 +1,176 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
~ 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.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<parent>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>archiva-reports-standard</artifactId>
<name>Archiva Standard Reports</name>
<dependencies>
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-utils</artifactId>
</dependency>
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-container-default</artifactId>
</dependency>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-artifact</artifactId>
</dependency>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-artifact-manager</artifactId>
</dependency>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-model</artifactId>
</dependency>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-repository-metadata</artifactId>
</dependency>
<dependency>
<groupId>org.apache.maven.wagon</groupId>
<artifactId>wagon-provider-api</artifactId>
</dependency>
<dependency>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-repository-layer</artifactId>
</dependency>
<dependency>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-indexer</artifactId>
</dependency>
<dependency>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-discoverer</artifactId>
</dependency>
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
</dependency>
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-jdo2</artifactId>
<version>1.0-alpha-8</version>
<exclusions>
<exclusion>
<groupId>xerces</groupId>
<artifactId>xercesImpl</artifactId>
</exclusion>
<exclusion>
<groupId>xerces</groupId>
<artifactId>xmlParserAPIs</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>jpox</groupId>
<artifactId>jpox</artifactId>
<version>1.1.6</version>
<scope>compile</scope>
<exclusions>
<!-- targeting JDK 1.4 we don't need this -->
<exclusion>
<groupId>javax.sql</groupId>
<artifactId>jdbc-stdext</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- TEST DEPS -->
<dependency>
<groupId>hsqldb</groupId>
<artifactId>hsqldb</artifactId>
<version>1.7.3.3</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.modello</groupId>
<artifactId>modello-maven-plugin</artifactId>
<version>1.0-alpha-14-SNAPSHOT</version>
<configuration>
<version>1.0.0</version>
<packageWithVersion>false</packageWithVersion>
<model>src/main/mdo/reporting.mdo</model>
</configuration>
<executions>
<execution>
<id>modello-java</id>
<goals>
<goal>java</goal>
<goal>jpox-metadata-class</goal>
<!--
<goal>xpp3-writer</goal>
<goal>xpp3-reader</goal>
-->
</goals>
</execution>
<execution>
<id>jpox-jdo-mapping</id>
<goals>
<goal>jpox-jdo-mapping</goal>
</goals>
<configuration>
<outputDirectory>${basedir}/target/classes/org/apache/maven/archiva/reporting/model/</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>jpox-maven-plugin</artifactId>
<version>1.1.6-SNAPSHOT</version>
<executions>
<execution>
<goals>
<goal>enhance</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>cobertura-maven-plugin</artifactId>
<configuration>
<instrumentation>
<!-- exclude generated -->
<excludes>
<exclude>org/apache/maven/archiva/reporting/model/**</exclude>
</excludes>
</instrumentation>
</configuration>
</plugin>
</plugins>
</build>
</project>

View File

@ -0,0 +1,103 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
~ 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.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<parent>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-base</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>archiva-repository-layer</artifactId>
<name>Archiva Repository Interface Layer</name>
<dependencies>
<dependency>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-consumer-api</artifactId>
</dependency>
<dependency>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-model</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-xml-tools</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-utils</artifactId>
</dependency>
<dependency>
<groupId>org.codehaus.plexus.cache</groupId>
<artifactId>plexus-cache-api</artifactId>
<version>1.0-alpha-2-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.codehaus.plexus.cache</groupId>
<artifactId>plexus-cache-ehcache</artifactId>
<version>1.0-alpha-2-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
<!--
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-artifact</artifactId>
</dependency>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-artifact-manager</artifactId>
</dependency>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-repository-metadata</artifactId>
</dependency>
-->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-maven-plugin</artifactId>
<executions>
<execution>
<id>merge</id>
<goals>
<goal>merge-descriptors</goal>
</goals>
<configuration>
<descriptors>
<descriptor>${basedir}/src/main/resources/META-INF/plexus/components.xml</descriptor>
<descriptor>${project.build.directory}/generated-resources/plexus/META-INF/plexus/components.xml</descriptor>
</descriptors>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>

View File

@ -0,0 +1,45 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
~ 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.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<parent>
<artifactId>archiva</artifactId>
<groupId>org.apache.maven.archiva</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>archiva-security</artifactId>
<name>Archiva Security Configuration</name>
<dependencies>
<dependency>
<groupId>org.codehaus.plexus.security</groupId>
<artifactId>plexus-security-rbac-profile</artifactId>
</dependency>
<dependency>
<groupId>org.codehaus.plexus.security</groupId>
<artifactId>plexus-security-system</artifactId>
</dependency>
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-component-api</artifactId>
</dependency>
</dependencies>
</project>

View File

@ -0,0 +1,335 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
~ 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.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<artifactId>archiva-webapp</artifactId>
<packaging>war</packaging>
<name>Archiva Web Application</name>
<dependencies>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.4</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jsp-api</artifactId>
<version>2.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>opensymphony</groupId>
<artifactId>sitemesh</artifactId>
<version>2.2.1</version>
</dependency>
<dependency>
<groupId>taglibs</groupId>
<artifactId>standard</artifactId>
<version>1.1.2</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.1.2</version>
</dependency>
<dependency>
<groupId>org.apache.maven.shared</groupId>
<artifactId>maven-app-configuration-model</artifactId>
</dependency>
<dependency>
<groupId>org.apache.maven.shared</groupId>
<artifactId>maven-app-configuration-web</artifactId>
</dependency>
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-log4j-logging</artifactId>
<version>1.1-alpha-2</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.0.4</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>2.2</version>
</dependency>
<dependency>
<groupId>org.apache.maven.wagon</groupId>
<artifactId>wagon-http-lightweight</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.apache.maven.wagon</groupId>
<artifactId>wagon-file</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>opensymphony</groupId>
<artifactId>webwork</artifactId>
<version>2.2.4</version>
</dependency>
<dependency>
<groupId>org.codehaus.plexus.registry</groupId>
<artifactId>plexus-registry-commons</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-component-api</artifactId>
</dependency>
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-container-default</artifactId>
</dependency>
<dependency>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-proxy</artifactId>
</dependency>
<dependency>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-core</artifactId>
</dependency>
<dependency>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-common</artifactId>
</dependency>
<dependency>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-security</artifactId>
</dependency>
<dependency>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-applet</artifactId>
<!-- TODO: actually, just exclude from WAR plugin -->
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-project</artifactId>
</dependency>
<dependency>
<groupId>org.apache.maven.shared</groupId>
<artifactId>maven-dependency-tree</artifactId>
<version>1.0-alpha-2</version>
</dependency>
<!-- Plexus Security Dependencies -->
<dependency>
<groupId>org.codehaus.plexus.security</groupId>
<artifactId>plexus-security-ui-web</artifactId>
<type>war</type>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.codehaus.plexus.security</groupId>
<artifactId>plexus-security-ui-web-taglib</artifactId>
</dependency>
<!-- Other dependencies -->
<dependency>
<groupId>org.codehaus.plexus.webdav</groupId>
<artifactId>plexus-webdav-simple</artifactId>
<version>1.0-alpha-1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-xwork-integration</artifactId>
<version>1.0-alpha-5</version>
</dependency>
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-utils</artifactId>
</dependency>
<dependency>
<groupId>org.apache.derby</groupId>
<artifactId>derby</artifactId>
<version>10.1.3.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.activation</groupId>
<artifactId>activation</artifactId>
<version>1.1</version>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-clean-plugin</artifactId>
<version>2.1.1</version>
<!-- This configuration is added to cleanup from war:inplace -->
<configuration>
<filesets>
<fileset>
<directory>${basedir}/src/main/webapp</directory>
<includes>
<!-- TODO: META-INF shouldn't be required, seems to be an issue with the current war plugin -->
<include>META-INF</include>
<include>images/pss</include>
<!-- Images from other wars -->
<include>template/pss</include>
<!-- Templates from other wars -->
<include>WEB-INF/classes</include>
<!-- Classes and Resources from other wars -->
<include>WEB-INF/lib</include>
<!-- Dependencies from other wars -->
<include>WEB-INF/database</include>
<!-- Database location configured in application.xml -->
<include>WEB-INF/logs</include>
<!-- Log file location specified in application.xml -->
<include>pss</include>
<!-- plexus-security css and javascript -->
<include>css/pss</include>
<include>WEB-INF/jsp/pss</include>
<!-- plexus-security jsps -->
<include>WEB-INF/template/pss</include>
<!-- plexus-security xwork templates -->
<include>WEB-INF/logs</include>
<!-- Directory created by jetty:run -->
<include>WEB-INF/temp</include>
<!-- Directory created by jetty:run -->
</includes>
</fileset>
</filesets>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.0.1</version>
<configuration>
<!-- Some versions of maven-war-plugin (snapshots) have this incorrectly defaulted to true.
Specifically setting this to false to avoid accidental jar file creation. -->
<archiveClasses>false</archiveClasses>
<dependentWarExcludes>META-INF/**,WEB-INF/web.xml,WEB-INF/classes/xwork.xml</dependentWarExcludes>
</configuration>
<!-- TODO: would be good to make the jetty plugin aware of these and remove the below -->
<executions>
<execution>
<phase>compile</phase>
<goals>
<!-- Needed to get the plexus-security war overlay to do its thing before jetty:run -->
<goal>inplace</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>maven-jetty-plugin</artifactId>
<version>6.1.1</version>
<configuration>
<scanIntervalSeconds>10</scanIntervalSeconds>
<contextPath>/</contextPath>
<jettyEnvXml>src/jetty-env.xml</jettyEnvXml>
<connectors>
<connector implementation="org.mortbay.jetty.nio.SelectChannelConnector">
<port>9091</port>
<maxIdleTime>60000</maxIdleTime>
</connector>
</connectors>
<systemProperties>
<systemProperty>
<name>appserver.base</name>
<value>${project.build.directory}/appserver-base</value>
</systemProperty>
<systemProperty>
<name>derby.system.home</name>
<value>${project.build.directory}/appserver-base/logs</value>
</systemProperty>
</systemProperties>
</configuration>
<dependencies>
<dependency>
<groupId>org.apache.derby</groupId>
<artifactId>derby</artifactId>
<version>10.1.3.1</version>
</dependency>
</dependencies>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>dependency-maven-plugin</artifactId>
<executions>
<execution>
<id>copy</id>
<phase>process-resources</phase>
<goals>
<goal>copy</goal>
</goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>${project.groupId}</groupId>
<artifactId>archiva-applet</artifactId>
<version>${project.version}</version>
<outputDirectory>src/main/webapp</outputDirectory>
<destFileName>archiva-applet.jar</destFileName>
</artifactItem>
</artifactItems>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-maven-plugin</artifactId>
<configuration>
<roleDefaults>
<roleDefault>
<role>com.opensymphony.xwork.Action</role>
<instantiation-strategy>per-lookup</instantiation-strategy>
</roleDefault>
</roleDefaults>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>cobertura-maven-plugin</artifactId>
<!-- TODO! add unit tests -->
<configuration>
<instrumentation>
<excludes>
<exclude>**/**</exclude>
</excludes>
</instrumentation>
</configuration>
</plugin>
</plugins>
</build>
</project>

View File

@ -0,0 +1,79 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
~ 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.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<parent>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-base</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>archiva-xml-tools</artifactId>
<name>Archiva Base :: XML Tools</name>
<dependencies>
<dependency>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-common</artifactId>
</dependency>
<dependency>
<groupId>dom4j</groupId>
<artifactId>dom4j</artifactId>
<version>1.6.1</version>
</dependency>
<dependency>
<groupId>jaxen</groupId>
<artifactId>jaxen</artifactId>
<version>1.1</version>
</dependency>
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-utils</artifactId>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</dependency>
</dependencies>
<!--
<build>
<plugins>
<plugin>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-maven-plugin</artifactId>
<executions>
<execution>
<id>merge</id>
<goals>
<goal>merge-descriptors</goal>
</goals>
<configuration>
<descriptors>
<descriptor>${basedir}/src/main/resources/META-INF/plexus/components.xml</descriptor>
<descriptor>${project.build.directory}/generated-resources/plexus/META-INF/plexus/components.xml</descriptor>
</descriptors>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
-->
</project>

View File

@ -0,0 +1,506 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
~ Copyright 2005-2006 The Apache Software Foundation.
~
~ Licensed 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.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.apache.maven</groupId>
<artifactId>maven-parent</artifactId>
<version>4</version>
<relativePath>../pom/maven/pom.xml</relativePath>
</parent>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva</artifactId>
<packaging>pom</packaging>
<name>Archiva</name>
<version>1.0-SNAPSHOT</version>
<description>
Archiva is an application for managing one or more remote repositories, including
administration, artifact handling,
browsing and searching.
</description>
<url>http://maven.apache.org/archiva</url>
<issueManagement>
<system>jira</system>
<url>http://jira.codehaus.org/browse/MRM</url>
</issueManagement>
<mailingLists>
<mailingList>
<name>Maven Archiva User List</name>
<subscribe>archiva-users-subscribe@maven.apache.org</subscribe>
<unsubscribe>archiva-users-unsubscribe@maven.apache.org</unsubscribe>
<post>archiva-users@maven.apache.org</post>
<archive>http://mail-archives.apache.org/mod_mbox/maven-archiva-users</archive>
</mailingList>
<mailingList>
<name>Maven Archiva Developer List</name>
<subscribe>archiva-dev-subscribe@maven.apache.org</subscribe>
<unsubscribe>archiva-dev-unsubscribe@maven.apache.org</unsubscribe>
<post>archiva-dev@maven.apache.org</post>
<archive>http://mail-archives.apache.org/mod_mbox/maven-archiva-dev</archive>
</mailingList>
<mailingList>
<name>Maven Archiva Commits List</name>
<subscribe>archiva-commits-subscribe@maven.apache.org</subscribe>
<unsubscribe>archiva-commits-unsubscribe@maven.apache.org</unsubscribe>
<post>archiva-commits@maven.apache.org</post>
<archive>http://mail-archives.apache.org/mod_mbox/maven-archiva-commits</archive>
</mailingList>
</mailingLists>
<scm>
<connection>scm:svn:http://svn.apache.org/repos/asf/maven/archiva/trunk</connection>
<developerConnection>scm:svn:https://svn.apache.org/repos/asf/maven/archiva/trunk</developerConnection>
<url>http://svn.apache.org/viewcvs.cgi/maven/archiva/trunk</url>
</scm>
<distributionManagement>
<site>
<id>apache.website</id>
<url>scpexe://people.apache.org/www/maven.apache.org/archiva/</url>
</site>
</distributionManagement>
<build>
<extensions>
<extension>
<groupId>org.apache.maven.wagon</groupId>
<artifactId>wagon-ssh-external</artifactId>
<version>1.0-alpha-5</version>
</extension>
</extensions>
<plugins>
<plugin>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-maven-plugin</artifactId>
<version>1.3</version>
<executions>
<execution>
<goals>
<goal>descriptor</goal>
<goal>merge-descriptors</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.4</source>
<target>1.4</target>
</configuration>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.2</version>
</plugin>
</plugins>
<pluginManagement>
<plugins>
<plugin>
<artifactId>maven-idea-plugin</artifactId>
<configuration>
<jdkLevel>1.4</jdkLevel>
</configuration>
</plugin>
<plugin>
<artifactId>maven-release-plugin</artifactId>
<configuration>
<tagBase>https://svn.apache.org/repos/asf/maven/archiva/tags</tagBase>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
<modules>
<module>archiva-applet</module>
<module>archiva-converter</module>
<module>archiva-discoverer</module>
<module>archiva-reports-standard</module>
<module>archiva-indexer</module>
<module>archiva-webapp</module>
<module>archiva-proxy</module>
<module>archiva-core</module>
<module>archiva-configuration</module>
<module>maven-meeper</module>
<module>archiva-repository-layer</module>
<module>archiva-plexus-application</module>
<module>archiva-plexus-runtime</module>
<module>archiva-security</module>
<module>archiva-cli</module>
</modules>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-container-default</artifactId>
<version>1.0-alpha-10</version>
</dependency>
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-utils</artifactId>
<version>1.3</version>
</dependency>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-repository-metadata</artifactId>
<version>${maven.version}</version>
</dependency>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-model</artifactId>
<version>${maven.version}</version>
</dependency>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-artifact</artifactId>
<version>${maven.version}</version>
</dependency>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-artifact-manager</artifactId>
<version>${maven.version}</version>
</dependency>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-project</artifactId>
<version>${maven.version}</version>
</dependency>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-model-converter</artifactId>
<version>2.0.4</version>
</dependency>
<dependency>
<groupId>org.apache.maven.wagon</groupId>
<artifactId>wagon-provider-api</artifactId>
<version>${wagon.version}</version>
</dependency>
<dependency>
<groupId>org.apache.maven.wagon</groupId>
<artifactId>wagon-ssh</artifactId>
<version>${wagon.version}</version>
</dependency>
<dependency>
<groupId>org.apache.maven.wagon</groupId>
<artifactId>wagon-file</artifactId>
<version>${wagon.version}</version>
</dependency>
<dependency>
<groupId>org.apache.maven.wagon</groupId>
<artifactId>wagon-http-lightweight</artifactId>
<version>${wagon.version}</version>
</dependency>
<dependency>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-core</artifactId>
<version>${pom.version}</version>
</dependency>
<dependency>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-reports-standard</artifactId>
<version>${pom.version}</version>
</dependency>
<dependency>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-discoverer</artifactId>
<version>${pom.version}</version>
</dependency>
<dependency>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-repository-layer</artifactId>
<version>${pom.version}</version>
</dependency>
<dependency>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-indexer</artifactId>
<version>${pom.version}</version>
</dependency>
<dependency>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-proxy</artifactId>
<version>${pom.version}</version>
</dependency>
<dependency>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-applet</artifactId>
<version>${pom.version}</version>
</dependency>
<dependency>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-security</artifactId>
<version>${pom.version}</version>
</dependency>
<dependency>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-configuration</artifactId>
<version>${pom.version}</version>
</dependency>
<dependency>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-converter</artifactId>
<version>${pom.version}</version>
</dependency>
<dependency>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-webapp</artifactId>
<version>${pom.version}</version>
<type>war</type>
</dependency>
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-digest</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.codehaus.plexus.security</groupId>
<artifactId>plexus-security-rbac-profile</artifactId>
<version>${plexus-security.version}</version>
</dependency>
<dependency>
<groupId>org.codehaus.plexus.security</groupId>
<artifactId>plexus-security-system</artifactId>
<version>${plexus-security.version}</version>
</dependency>
<dependency>
<groupId>org.codehaus.plexus.security</groupId>
<artifactId>plexus-security-system</artifactId>
<version>${plexus-security.version}</version>
</dependency>
<dependency>
<groupId>org.codehaus.plexus.security</groupId>
<artifactId>plexus-security-ui-web</artifactId>
<version>${plexus-security.version}</version>
<type>war</type>
</dependency>
<dependency>
<groupId>org.codehaus.plexus.security</groupId>
<artifactId>plexus-security-ui-web-integration</artifactId>
<version>${plexus-security.version}</version>
</dependency>
<dependency>
<groupId>org.codehaus.plexus.security</groupId>
<artifactId>plexus-security-ui-web-taglib</artifactId>
<version>${plexus-security.version}</version>
</dependency>
<dependency>
<groupId>org.codehaus.plexus.security</groupId>
<artifactId>plexus-security-authentication-provider-user-manager</artifactId>
<version>${plexus-security.version}</version>
</dependency>
<dependency>
<groupId>org.codehaus.plexus.security</groupId>
<artifactId>plexus-security-authentication-provider-keystore</artifactId>
<version>${plexus-security.version}</version>
</dependency>
<dependency>
<groupId>org.codehaus.plexus.security</groupId>
<artifactId>plexus-security-user-management-api</artifactId>
<version>${plexus-security.version}</version>
</dependency>
<dependency>
<groupId>org.codehaus.plexus.security</groupId>
<artifactId>plexus-security-user-management-provider-jdo</artifactId>
<version>${plexus-security.version}</version>
</dependency>
<dependency>
<groupId>org.codehaus.plexus.security</groupId>
<artifactId>plexus-security-authorization-rbac-store-jdo</artifactId>
<version>${plexus-security.version}</version>
</dependency>
<dependency>
<groupId>org.codehaus.plexus.security</groupId>
<artifactId>plexus-security-authorization-api</artifactId>
<version>${plexus-security.version}</version>
</dependency>
<dependency>
<groupId>org.codehaus.plexus.security</groupId>
<artifactId>plexus-security-authorization-rbac-authorizer</artifactId>
<version>${plexus-security.version}</version>
</dependency>
<dependency>
<groupId>org.codehaus.plexus.security</groupId>
<artifactId>plexus-security-keys-jdo</artifactId>
<version>${plexus-security.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
<reporting>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>cobertura-maven-plugin</artifactId>
</plugin>
<plugin>
<artifactId>maven-checkstyle-plugin</artifactId>
<configuration>
<configLocation>config/maven_checks.xml</configLocation>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>changelog-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>taglist-maven-plugin</artifactId>
</plugin>
<plugin>
<artifactId>maven-jxr-plugin</artifactId>
<configuration>
<aggregate>true</aggregate>
</configuration>
</plugin>
<plugin>
<artifactId>maven-surefire-report-plugin</artifactId>
</plugin>
<plugin>
<artifactId>maven-javadoc-plugin</artifactId>
<configuration>
<aggregate>true</aggregate>
</configuration>
</plugin>
<plugin>
<artifactId>maven-pmd-plugin</artifactId>
<!-- TODO: choose appropriate rulesets -->
</plugin>
</plugins>
</reporting>
<profiles>
<profile>
<id>ci</id>
<activation>
<property>
<name>enableCiProfile</name>
<value>true</value>
</property>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-pmd-plugin</artifactId>
<executions>
<execution>
<phase>process-sources</phase>
<goals>
<!-- TODO: after rules are set
<goal>check</goal>
-->
<goal>cpd-check</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
<executions>
<execution>
<phase>process-sources</phase>
<goals>
<!-- TODO: reformat first, and correct the checks (some are not consistent with the Maven style)
<goal>check</goal>
-->
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>cobertura-maven-plugin</artifactId>
<configuration>
<check>
<!-- TODO! raise to 85/100 -->
<totalLineRate>77</totalLineRate>
<totalBranchRate>95</totalBranchRate>
</check>
<instrumentation>
<excludes>
<exclude>**/*$*</exclude>
</excludes>
</instrumentation>
</configuration>
<executions>
<execution>
<id>clean</id>
<goals>
<goal>clean</goal>
</goals>
</execution>
<execution>
<id>check</id>
<goals>
<goal>check</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>
<!-- TODO: remove once xwork integration, plexus container is released -->
<repositories>
<repository>
<id>codehaus.org</id>
<url>http://snapshots.repository.codehaus.org</url>
<releases>
<enabled>false</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>codehaus.org</id>
<url>http://snapshots.repository.codehaus.org</url>
<releases>
<enabled>false</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</pluginRepository>
<!-- See: http://www.nabble.com/NoClassDefFoundError-from-shared-in-project-info-reports-tf2678299s177.html#a7489595 -->
<pluginRepository>
<id>apache.org</id>
<url>http://people.apache.org/repo/m2-snapshot-repository</url>
<releases>
<enabled>false</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
<properties>
<maven.version>2.0.4</maven.version>
<wagon.version>1.0-beta-1</wagon.version>
<plexus-security.version>1.0-alpha-6-SNAPSHOT</plexus-security.version>
</properties>
</project>

View File

@ -0,0 +1,28 @@
<?xml version="1.0" encoding="ISO-8859-1"?><project>
<bannerLeft>
<name>Maven</name>
<src>http://maven.apache.org/images/apache-maven-project-2.png</src>
<href>http://maven.apache.org/</href>
</bannerLeft>
<bannerRight>
<src>images/archiva-logo-banner.jpg</src>
</bannerRight>
<publishDate format="dd MMM yyyy" />
<skin>
<groupId>org.apache.maven.skins</groupId>
<artifactId>maven-stylus-skin</artifactId>
</skin>
<body>
<links>
<item name="Maven" href="http://maven.apache.org/" />
</links>
<menu name="Documentation">
<item name="Welcome" href="/index.html" />
<item name="Getting Started" href="/guides/getting-started/index.html" />
<item name="FAQ" href="http://docs.codehaus.org/display/MAVENUSER/Archiva+FAQ" />
<item name="Maven Configuration" href="/guides/getting-started/maven-configuration.html" />
<item name="Developing" href="/guides/developing/index.html" />
</menu>
<menu inherit="bottom" ref="reports" />
</body>
</project>

View File

@ -0,0 +1,557 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
~ Copyright 2005-2006 The Apache Software Foundation.
~
~ Licensed 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.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.apache.maven</groupId>
<artifactId>maven-parent</artifactId>
<version>4</version>
<relativePath>../pom/maven/pom.xml</relativePath>
</parent>
<prerequisites>
<maven>2.0.5</maven>
</prerequisites>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva</artifactId>
<packaging>pom</packaging>
<name>Archiva</name>
<version>1.0-SNAPSHOT</version>
<description>
Archiva is an application for managing one or more remote repositories, including
administration, artifact handling,
browsing and searching.
</description>
<url>http://maven.apache.org/archiva</url>
<issueManagement>
<system>jira</system>
<url>http://jira.codehaus.org/browse/MRM</url>
</issueManagement>
<mailingLists>
<mailingList>
<name>Maven Archiva User List</name>
<subscribe>archiva-users-subscribe@maven.apache.org</subscribe>
<unsubscribe>archiva-users-unsubscribe@maven.apache.org</unsubscribe>
<post>archiva-users@maven.apache.org</post>
<archive>http://mail-archives.apache.org/mod_mbox/maven-archiva-users</archive>
</mailingList>
<mailingList>
<name>Maven Archiva Developer List</name>
<subscribe>archiva-dev-subscribe@maven.apache.org</subscribe>
<unsubscribe>archiva-dev-unsubscribe@maven.apache.org</unsubscribe>
<post>archiva-dev@maven.apache.org</post>
<archive>http://mail-archives.apache.org/mod_mbox/maven-archiva-dev</archive>
</mailingList>
<mailingList>
<name>Maven Archiva Commits List</name>
<subscribe>archiva-commits-subscribe@maven.apache.org</subscribe>
<unsubscribe>archiva-commits-unsubscribe@maven.apache.org</unsubscribe>
<post>archiva-commits@maven.apache.org</post>
<archive>http://mail-archives.apache.org/mod_mbox/maven-archiva-commits</archive>
</mailingList>
</mailingLists>
<scm>
<connection>scm:svn:http://svn.apache.org/repos/asf/maven/archiva/trunk</connection>
<developerConnection>scm:svn:https://svn.apache.org/repos/asf/maven/archiva/trunk</developerConnection>
<url>http://svn.apache.org/viewcvs.cgi/maven/archiva/trunk</url>
</scm>
<distributionManagement>
<site>
<id>apache.website</id>
<url>scpexe://people.apache.org/www/maven.apache.org/archiva/</url>
</site>
</distributionManagement>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-maven-plugin</artifactId>
<version>1.3.3</version>
<executions>
<execution>
<id>generate</id>
<goals>
<goal>descriptor</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.4</source>
<target>1.4</target>
</configuration>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.2</version>
</plugin>
</plugins>
<pluginManagement>
<plugins>
<plugin>
<artifactId>maven-idea-plugin</artifactId>
<configuration>
<jdkLevel>1.4</jdkLevel>
</configuration>
</plugin>
<plugin>
<artifactId>maven-release-plugin</artifactId>
<configuration>
<tagBase>https://svn.apache.org/repos/asf/maven/archiva/tags</tagBase>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
<modules>
<module>archiva-applet</module>
<module>archiva-converter</module>
<module>archiva-common</module>
<module>archiva-discoverer</module>
<module>archiva-reports-standard</module>
<module>archiva-indexer</module>
<module>archiva-webapp</module>
<module>archiva-proxy</module>
<module>archiva-core</module>
<module>archiva-configuration</module>
<module>maven-meeper</module>
<module>archiva-repository-layer</module>
<module>archiva-plexus-application</module>
<module>archiva-plexus-runtime</module>
<module>archiva-security</module>
<module>archiva-cli</module>
</modules>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.apache.maven.shared</groupId>
<artifactId>maven-app-configuration-model</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.maven.shared</groupId>
<artifactId>maven-app-configuration-web</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-container-default</artifactId>
<version>1.0-alpha-17</version>
</dependency>
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-component-api</artifactId>
<version>1.0-alpha-17</version>
</dependency>
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-utils</artifactId>
<version>1.4</version>
</dependency>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-repository-metadata</artifactId>
<version>${maven.version}</version>
</dependency>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-model</artifactId>
<version>${maven.version}</version>
</dependency>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-artifact</artifactId>
<version>${maven.version}</version>
</dependency>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-artifact-manager</artifactId>
<version>${maven.version}</version>
</dependency>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-project</artifactId>
<version>${maven.version}</version>
</dependency>
<dependency>
<groupId>org.apache.maven.shared</groupId>
<artifactId>maven-model-converter</artifactId>
<version>2.0.5-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.maven.wagon</groupId>
<artifactId>wagon-provider-api</artifactId>
<version>${wagon.version}</version>
</dependency>
<dependency>
<groupId>org.apache.maven.wagon</groupId>
<artifactId>wagon-ssh</artifactId>
<version>${wagon.version}</version>
</dependency>
<dependency>
<groupId>org.apache.maven.wagon</groupId>
<artifactId>wagon-file</artifactId>
<version>${wagon.version}</version>
</dependency>
<dependency>
<groupId>org.apache.maven.wagon</groupId>
<artifactId>wagon-http-lightweight</artifactId>
<version>${wagon.version}</version>
</dependency>
<dependency>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-common</artifactId>
<version>${pom.version}</version>
</dependency>
<!--
<dependency>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-common</artifactId>
<version>${pom.version}</version>
<classifier>tests</classifier>
<scope>test</scope>
</dependency>
-->
<dependency>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-core</artifactId>
<version>${pom.version}</version>
</dependency>
<dependency>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-reports-standard</artifactId>
<version>${pom.version}</version>
</dependency>
<dependency>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-discoverer</artifactId>
<version>${pom.version}</version>
</dependency>
<dependency>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-repository-layer</artifactId>
<version>${pom.version}</version>
</dependency>
<dependency>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-indexer</artifactId>
<version>${pom.version}</version>
</dependency>
<dependency>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-proxy</artifactId>
<version>${pom.version}</version>
</dependency>
<dependency>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-applet</artifactId>
<version>${pom.version}</version>
</dependency>
<dependency>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-security</artifactId>
<version>${pom.version}</version>
</dependency>
<dependency>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-configuration</artifactId>
<version>${pom.version}</version>
</dependency>
<dependency>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-converter</artifactId>
<version>${pom.version}</version>
</dependency>
<dependency>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-utils</artifactId>
<version>${pom.version}</version>
</dependency>
<dependency>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-webapp</artifactId>
<version>${pom.version}</version>
<type>war</type>
</dependency>
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-digest</artifactId>
<version>1.0</version>
</dependency>
<dependency>
<groupId>org.codehaus.plexus.security</groupId>
<artifactId>plexus-security-rbac-profile</artifactId>
<version>${plexus-security.version}</version>
</dependency>
<dependency>
<groupId>org.codehaus.plexus.security</groupId>
<artifactId>plexus-security-system</artifactId>
<version>${plexus-security.version}</version>
</dependency>
<dependency>
<groupId>org.codehaus.plexus.security</groupId>
<artifactId>plexus-security-system</artifactId>
<version>${plexus-security.version}</version>
</dependency>
<dependency>
<groupId>org.codehaus.plexus.security</groupId>
<artifactId>plexus-security-ui-web</artifactId>
<version>${plexus-security.version}</version>
<type>war</type>
</dependency>
<dependency>
<groupId>org.codehaus.plexus.security</groupId>
<artifactId>plexus-security-ui-web-integration</artifactId>
<version>${plexus-security.version}</version>
</dependency>
<dependency>
<groupId>org.codehaus.plexus.security</groupId>
<artifactId>plexus-security-ui-web-taglib</artifactId>
<version>${plexus-security.version}</version>
</dependency>
<dependency>
<groupId>org.codehaus.plexus.security</groupId>
<artifactId>plexus-security-authentication-provider-user-manager</artifactId>
<version>${plexus-security.version}</version>
</dependency>
<dependency>
<groupId>org.codehaus.plexus.security</groupId>
<artifactId>plexus-security-authentication-provider-keystore</artifactId>
<version>${plexus-security.version}</version>
</dependency>
<dependency>
<groupId>org.codehaus.plexus.security</groupId>
<artifactId>plexus-security-user-management-api</artifactId>
<version>${plexus-security.version}</version>
</dependency>
<dependency>
<groupId>org.codehaus.plexus.security</groupId>
<artifactId>plexus-security-user-management-provider-jdo</artifactId>
<version>${plexus-security.version}</version>
</dependency>
<dependency>
<groupId>org.codehaus.plexus.security</groupId>
<artifactId>plexus-security-authorization-rbac-store-cached</artifactId>
<version>${plexus-security.version}</version>
</dependency>
<dependency>
<groupId>org.codehaus.plexus.security</groupId>
<artifactId>plexus-security-authorization-rbac-store-jdo</artifactId>
<version>${plexus-security.version}</version>
</dependency>
<dependency>
<groupId>org.codehaus.plexus.security</groupId>
<artifactId>plexus-security-authorization-api</artifactId>
<version>${plexus-security.version}</version>
</dependency>
<dependency>
<groupId>org.codehaus.plexus.security</groupId>
<artifactId>plexus-security-authorization-rbac-authorizer</artifactId>
<version>${plexus-security.version}</version>
</dependency>
<dependency>
<groupId>org.codehaus.plexus.security</groupId>
<artifactId>plexus-security-keys-jdo</artifactId>
<version>${plexus-security.version}</version>
</dependency>
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>2.2</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>org.apache.derby</groupId>
<artifactId>derby</artifactId>
<version>10.1.3.1</version>
</dependency>
</dependencies>
</dependencyManagement>
<reporting>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>cobertura-maven-plugin</artifactId>
</plugin>
<plugin>
<artifactId>maven-checkstyle-plugin</artifactId>
<configuration>
<configLocation>config/maven_checks.xml</configLocation>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>changelog-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>taglist-maven-plugin</artifactId>
</plugin>
<plugin>
<artifactId>maven-jxr-plugin</artifactId>
<configuration>
<aggregate>true</aggregate>
</configuration>
</plugin>
<plugin>
<artifactId>maven-surefire-report-plugin</artifactId>
</plugin>
<plugin>
<artifactId>maven-javadoc-plugin</artifactId>
<configuration>
<source>1.4</source>
<aggregate>true</aggregate>
</configuration>
</plugin>
<plugin>
<artifactId>maven-pmd-plugin</artifactId>
<!-- TODO: choose appropriate rulesets -->
</plugin>
</plugins>
</reporting>
<profiles>
<profile>
<id>ci</id>
<activation>
<property>
<name>enableCiProfile</name>
<value>true</value>
</property>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-pmd-plugin</artifactId>
<executions>
<execution>
<phase>process-sources</phase>
<goals>
<!-- TODO: after rules are set
<goal>check</goal>
-->
<goal>cpd-check</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
<executions>
<execution>
<phase>process-sources</phase>
<goals>
<!-- TODO: reformat first, and correct the checks (some are not consistent with the Maven style)
<goal>check</goal>
-->
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>cobertura-maven-plugin</artifactId>
<configuration>
<check>
<!-- TODO! raise to 85/100 -->
<totalLineRate>77</totalLineRate>
<totalBranchRate>95</totalBranchRate>
</check>
<instrumentation>
<excludes>
<exclude>**/*$*</exclude>
</excludes>
</instrumentation>
</configuration>
<executions>
<execution>
<id>clean</id>
<goals>
<goal>clean</goal>
</goals>
</execution>
<execution>
<id>check</id>
<goals>
<goal>check</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>
<repositories>
<repository>
<id>codehaus.org</id>
<url>http://repository.codehaus.org</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
<!-- TODO: remove once ehcache, p-sec, registry, webdav, xwork, naming released -->
<repository>
<id>codehaus.org</id>
<url>http://snapshots.repository.codehaus.org</url>
<releases>
<enabled>false</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<!-- TODO: remove once modello is released -->
<pluginRepositories>
<pluginRepository>
<id>codehaus.org</id>
<url>http://snapshots.repository.codehaus.org</url>
<releases>
<enabled>false</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
<properties>
<maven.version>2.0.5</maven.version>
<wagon.version>1.0-beta-2</wagon.version>
<plexus-security.version>1.0-alpha-10-SNAPSHOT</plexus-security.version>
</properties>
</project>

View File

@ -0,0 +1,304 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
~ Copyright 2005-2006 The Apache Software Foundation.
~
~ Licensed 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.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.apache</groupId>
<artifactId>apache</artifactId>
<version>3</version>
<relativePath>../asf/pom.xml</relativePath>
</parent>
<groupId>org.apache.maven</groupId>
<artifactId>maven-parent</artifactId>
<version>4</version>
<packaging>pom</packaging>
<name>Apache Maven</name>
<description>
Maven is a software project management and comprehension tool. Based on the concept of a project object model
(POM), Maven can manage a project's build, reporting and documentation from a central piece of information.
</description>
<url>http://maven.apache.org/</url>
<issueManagement>
<system>jira</system>
<url>http://jira.codehaus.org/browse/MPA</url>
</issueManagement>
<ciManagement>
<system>continuum</system>
<url>http://maven.zones.apache.org:8080/continuum</url>
<notifiers>
<notifier>
<type>mail</type>
<configuration>
<address>notifications@maven.apache.org</address>
</configuration>
</notifier>
</notifiers>
</ciManagement>
<inceptionYear>2002</inceptionYear>
<mailingLists>
<mailingList>
<name>Maven Announcements List</name>
<post>announce@maven.apache.org</post>
<subscribe>announce-subscribe@maven.apache.org</subscribe>
<unsubscribe>announce-unsubscribe@maven.apache.org</unsubscribe>
<archive>http://mail-archives.apache.org/mod_mbox/maven-announce/</archive>
</mailingList>
<mailingList>
<name>Maven Issues List</name>
<post>issues@maven.apache.org</post>
<subscribe>issues-subscribe@maven.apache.org</subscribe>
<unsubscribe>issues-unsubscribe@maven.apache.org</unsubscribe>
<archive>http://mail-archives.apache.org/mod_mbox/maven-issues/</archive>
</mailingList>
<mailingList>
<name>Maven Notifications List</name>
<post>notifications@maven.apache.org</post>
<subscribe>notifications-subscribe@maven.apache.org</subscribe>
<unsubscribe>notifications-unsubscribe@maven.apache.org</unsubscribe>
<archive>http://mail-archives.apache.org/mod_mbox/maven-notifications/</archive>
</mailingList>
</mailingLists>
<developers>
<developer>
<id>jvanzyl</id>
<name>Jason van Zyl</name>
<email>jason@maven.org</email>
<organization>ASF</organization>
<roles>
<role>PMC Chair</role>
</roles>
<timezone>-5</timezone>
</developer>
<developer>
<id>brett</id>
<name>Brett Porter</name>
<email>brett@apache.org</email>
<organization>ASF</organization>
<roles>
<role>PMC Member</role>
</roles>
<timezone>+10</timezone>
</developer>
<developer>
<id>evenisse</id>
<name>Emmanuel Venisse</name>
<email>evenisse@apache.org</email>
<organization>ASF</organization>
<roles>
<role>PMC Member</role>
</roles>
<timezone>+1</timezone>
</developer>
<developer>
<id>kenney</id>
<name>Kenney Westerhof</name>
<email>kenney@apache.org</email>
<organization>Neonics</organization>
<roles>
<role>PMC Member</role>
</roles>
</developer>
<developer>
<id>snicoll</id>
<name>Stephane Nicoll</name>
<email>snicoll@apache.org</email>
<organization>ASF</organization>
<roles>
<role>PMC Member</role>
</roles>
<timezone>+1</timezone>
</developer>
<developer>
<id>vmassol</id>
<name>Vincent Massol</name>
<email>vmassol@apache.org</email>
<organization>ASF</organization>
<roles>
<role>PMC Member</role>
</roles>
<timezone>+1</timezone>
</developer>
<developer>
<id>fgiust</id>
<name>Fabrizio Giustina</name>
<email>fgiust@apache.org</email>
<organization>openmind</organization>
<roles>
<role>PMC Member</role>
</roles>
<timezone>+1</timezone>
</developer>
<developer>
<id>epunzalan</id>
<name>Edwin Punzalan</name>
<email>epunzalan@mergere.com</email>
<organization>Mergere</organization>
<roles>
<role>Committer</role>
</roles>
<timezone>+8</timezone>
</developer>
<developer>
<id>mperham</id>
<name>Mike Perham</name>
<email>mperham@gmail.com</email>
<organization>IBM</organization>
<roles>
<role>PMC Member</role>
</roles>
<timezone>-6</timezone>
</developer>
<developer>
<id>jdcasey</id>
<name>John Casey</name>
<email>jdcasey@apache.org</email>
<organization>ASF</organization>
<roles>
<role>PMC Member</role>
</roles>
<timezone>-5</timezone>
</developer>
<developer>
<id>trygvis</id>
<name>Trygve Laugstol</name>
<email>trygvis@apache.org</email>
<organization>ASF</organization>
<roles>
<role>PMC Member</role>
</roles>
<timezone>+1</timezone>
</developer>
<developer>
<id>vsiveton</id>
<name>Vincent Siveton</name>
<email>vsiveton@apache.org</email>
<organization>ASF</organization>
<roles>
<role>PMC Member</role>
</roles>
<timezone>-5</timezone>
</developer>
<developer>
<id>carlos</id>
<name>Carlos Sanchez</name>
<email>carlos@apache.org</email>
<organization>ASF</organization>
<roles>
<role>PMC Member</role>
</roles>
<timezone>+1</timezone>
</developer>
<developer>
<id>dennisl</id>
<name>Dennis Lundberg</name>
<email>dennisl@apache.org</email>
<organization>ASF</organization>
<roles>
<role>PMC Member</role>
</roles>
<timezone>+1</timezone>
</developer>
</developers>
<distributionManagement>
<site>
<id>apache.website</id>
<url>scp://people.apache.org/www/maven.apache.org</url>
</site>
</distributionManagement>
<!-- Disabled until projects have been made to comply
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-pmd-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>cpd-check</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
-->
<reporting>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-report-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
<configuration>
<configLocation>http://svn.apache.org/repos/asf/maven/plugins/trunk/maven-checkstyle-plugin/src/main/resources/config/maven_checks.xml</configLocation>
<headerLocation>http://svn.apache.org/repos/asf/maven/plugins/trunk/maven-checkstyle-plugin/src/main/resources/config/maven-header.txt</headerLocation>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-pmd-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>cobertura-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>taglist-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jxr-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<configuration>
<links>
<link>http://java.sun.com/j2ee/1.4/docs/api</link>
<link>http://java.sun.com/j2se/1.5.0/docs/api</link>
<link>http://jakarta.apache.org/commons/collections/apidocs-COLLECTIONS_3_0/</link>
<link>http://jakarta.apache.org/commons/dbcp/apidocs/</link>
<link>http://jakarta.apache.org/commons/fileupload/apidocs/</link>
<link>http://jakarta.apache.org/commons/httpclient/apidocs/</link>
<link>http://jakarta.apache.org/commons/logging/apidocs/</link>
<link>http://jakarta.apache.org/commons/pool/apidocs/</link>
<link>http://www.junit.org/junit/javadoc/</link>
<link>http://logging.apache.org/log4j/docs/api/</link>
<link>http://jakarta.apache.org/regexp/apidocs/</link>
<link>http://jakarta.apache.org/velocity/api/</link>
</links>
</configuration>
</plugin>
</plugins>
</reporting>
<scm>
<connection>scm:svn:http://svn.apache.org/repos/asf/maven/pom/maven/tags/maven-parent-4</connection>
<developerConnection>scm:svn:https://svn.apache.org/repos/asf/maven/pom/maven/tags/maven-parent-4</developerConnection>
<url>http://svn.apache.org/viewvc/maven/pom/maven/tags/maven-parent-4</url>
</scm>
</project>

View File

@ -20,10 +20,13 @@ package org.apache.maven.archiva.xml;
*/
import org.apache.commons.lang.StringUtils;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.Namespace;
import org.dom4j.Node;
import org.dom4j.QName;
import org.dom4j.XPath;
import org.dom4j.io.SAXReader;
@ -34,8 +37,10 @@ import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
/**
* XMLReader - a set of common xml utility methods for reading content out of an xml file.
@ -51,6 +56,8 @@ public class XMLReader
private Document document;
private Map namespaceMap = new HashMap();
public XMLReader( String type, File file )
throws XMLException
{
@ -121,10 +128,21 @@ public class XMLReader
}
}
public String getDefaultNamespaceURI()
{
Namespace namespace = this.document.getRootElement().getNamespace();
return namespace.getURI();
}
public void addNamespaceMapping( String elementName, String uri )
{
this.namespaceMap.put( elementName, uri );
}
public Element getElement( String xpathExpr )
throws XMLException
{
XPath xpath = document.createXPath( xpathExpr );
XPath xpath = createXPath( xpathExpr );
Object evaluated = xpath.selectSingleNode( document );
if ( evaluated == null )
@ -145,10 +163,20 @@ public class XMLReader
}
}
private XPath createXPath( String xpathExpr )
{
XPath xpath = document.createXPath( xpathExpr );
if ( !this.namespaceMap.isEmpty() )
{
xpath.setNamespaceURIs( this.namespaceMap );
}
return xpath;
}
public boolean hasElement( String xpathExpr )
throws XMLException
{
XPath xpath = document.createXPath( xpathExpr );
XPath xpath = createXPath( xpathExpr );
Object evaluated = xpath.selectSingleNode( document );
if ( evaluated == null )
@ -159,10 +187,44 @@ public class XMLReader
return true;
}
/**
* Remove namespaces from entire document.
*/
public void removeNamespaces()
{
removeNamespaces( this.document.getRootElement() );
}
/**
* Remove namespaces from element recursively.
*/
public void removeNamespaces( Element elem )
{
elem.setQName( QName.get( elem.getName(), Namespace.NO_NAMESPACE, elem.getQualifiedName() ) );
Node n;
Iterator it = elem.elementIterator();
while ( it.hasNext() )
{
n = (Node) it.next();
switch ( n.getNodeType() )
{
case Node.ATTRIBUTE_NODE:
( (Attribute) n ).setNamespace( Namespace.NO_NAMESPACE );
break;
case Node.ELEMENT_NODE:
removeNamespaces( (Element) n );
break;
}
}
}
public String getElementText( Node context, String xpathExpr )
throws XMLException
{
XPath xpath = document.createXPath( xpathExpr );
XPath xpath = createXPath( xpathExpr );
Object evaluated = xpath.selectSingleNode( context );
if ( evaluated == null )
@ -186,7 +248,7 @@ public class XMLReader
public String getElementText( String xpathExpr )
throws XMLException
{
XPath xpath = document.createXPath( xpathExpr );
XPath xpath = createXPath( xpathExpr );
Object evaluated = xpath.selectSingleNode( document );
if ( evaluated == null )
@ -210,7 +272,7 @@ public class XMLReader
public List getElementList( String xpathExpr )
throws XMLException
{
XPath xpath = document.createXPath( xpathExpr );
XPath xpath = createXPath( xpathExpr );
Object evaluated = xpath.evaluate( document );
if ( evaluated == null )
@ -230,7 +292,7 @@ public class XMLReader
else if ( evaluated instanceof Node )
{
List ret = new ArrayList();
ret.add( (Node) evaluated );
ret.add( evaluated );
return ret;
}
else

View File

@ -23,9 +23,9 @@ import org.apache.maven.archiva.consumers.ConsumerException;
import org.apache.maven.archiva.consumers.RepositoryContentConsumer;
import org.apache.maven.archiva.model.ArchivaProjectModel;
import org.apache.maven.archiva.model.ArchivaRepository;
import org.apache.maven.archiva.repository.project.ProjectModel400Reader;
import org.apache.maven.archiva.repository.project.ProjectModelException;
import org.apache.maven.archiva.repository.project.ProjectModelReader;
import org.apache.maven.archiva.repository.project.readers.ProjectModel400Reader;
import java.io.File;
import java.util.ArrayList;

View File

@ -1,152 +0,0 @@
package org.apache.maven.archiva.consumers;
/*
* 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.repository.ArchivaRepository;
import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout;
import org.codehaus.plexus.PlexusTestCase;
import org.codehaus.plexus.util.FileUtils;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
/**
* AbstractConsumerTestCase
*
* @author <a href="mailto:joakim@erdfelt.com">Joakim Erdfelt</a>
* @version $Id$
*/
public class AbstractConsumerTestCase extends PlexusTestCase
{
protected ArchivaRepository getLegacyRepository() throws Exception
{
File repoBaseDir = new File( getBasedir(), "src/test/legacy-repository" );
ArchivaRepository repository = createRepository( repoBaseDir, "legacy" );
resetRepositoryState( repository );
return repository;
}
protected ArchivaRepository getDefaultRepository() throws Exception
{
File repoBaseDir = new File( getBasedir(), "src/test/repository" );
ArchivaRepository repository = createRepository( repoBaseDir, "default" );
resetRepositoryState( repository );
return repository;
}
private void resetRepositoryState( ArchivaRepository repository ) throws IOException
{
File repoBaseDir = new File( repository.getRepositoryURL().getPath() );
List tmpfiles = FileUtils.getFiles( repoBaseDir, ".*", "" );
for ( Iterator it = tmpfiles.iterator(); it.hasNext(); )
{
File hit = (File) it.next();
if ( hit.exists() )
{
if ( hit.isFile() )
{
hit.delete();
}
if ( hit.isDirectory() )
{
FileUtils.deleteDirectory( hit );
}
}
}
}
protected ArchivaRepository createRepository( File basedir, String layout ) throws Exception
{
ArtifactRepositoryLayout repoLayout = (ArtifactRepositoryLayout) lookup( ArtifactRepositoryLayout.ROLE, layout );
ArchivaRepository repo = new ArchivaRepository();
repo.setId( "discoveryRepo" );
repo.setUrl( "file://" + basedir );
repo.setLayout( repoLayout );
return repo;
}
public List getLegacyLayoutArtifactPaths()
{
List files = new ArrayList();
files.add( "invalid/jars/1.0/invalid-1.0.jar" );
files.add( "invalid/jars/invalid-1.0.rar" );
files.add( "invalid/jars/invalid.jar" );
files.add( "invalid/invalid-1.0.jar" );
files.add( "javax.sql/jars/jdbc-2.0.jar" );
files.add( "org.apache.maven/jars/some-ejb-1.0-client.jar" );
files.add( "org.apache.maven/jars/testing-1.0.jar" );
files.add( "org.apache.maven/jars/testing-1.0-sources.jar" );
files.add( "org.apache.maven/jars/testing-UNKNOWN.jar" );
files.add( "org.apache.maven/jars/testing-1.0.zip" );
files.add( "org.apache.maven/jars/testing-1.0-20050611.112233-1.jar" );
files.add( "org.apache.maven/jars/testing-1.0.tar.gz" );
files.add( "org.apache.maven.update/jars/test-not-updated-1.0.jar" );
files.add( "org.apache.maven.update/jars/test-updated-1.0.jar" );
return files;
}
public List getDefaultLayoutArtifactPaths()
{
List files = new ArrayList();
files.add( "invalid/invalid/1.0-20050611.123456-1/invalid-1.0-20050611.123456-1.jar" );
files.add( "invalid/invalid/1.0-SNAPSHOT/invalid-1.0.jar" );
files.add( "invalid/invalid/1.0/invalid-1.0b.jar" );
files.add( "invalid/invalid/1.0/invalid-2.0.jar" );
files.add( "invalid/invalid-1.0.jar" );
files.add( "org/apache/maven/test/1.0-SNAPSHOT/wrong-artifactId-1.0-20050611.112233-1.jar" );
files.add( "org/apache/maven/test/1.0-SNAPSHOT/test-1.0-20050611.112233-1-javadoc.jar" );
files.add( "org/apache/maven/test/1.0-SNAPSHOT/test-1.0-20050611.112233-1.jar" );
files.add( "org/apache/maven/A/1.0/A-1.0.war" );
files.add( "org/apache/maven/A/1.0/A-1.0.pom" );
files.add( "org/apache/maven/B/2.0/B-2.0.pom" );
files.add( "org/apache/maven/B/1.0/B-1.0.pom" );
files.add( "org/apache/maven/some-ejb/1.0/some-ejb-1.0-client.jar" );
files.add( "org/apache/maven/C/1.0/C-1.0.war" );
files.add( "org/apache/maven/C/1.0/C-1.0.pom" );
files.add( "org/apache/maven/update/test-not-updated/1.0/test-not-updated-1.0.pom" );
files.add( "org/apache/maven/update/test-not-updated/1.0/test-not-updated-1.0.jar" );
files.add( "org/apache/maven/update/test-updated/1.0/test-updated-1.0.pom" );
files.add( "org/apache/maven/update/test-updated/1.0/test-updated-1.0.jar" );
files.add( "org/apache/maven/discovery/1.0/discovery-1.0.pom" );
files.add( "org/apache/maven/testing/1.0/testing-1.0-test-sources.jar" );
files.add( "org/apache/maven/testing/1.0/testing-1.0.jar" );
files.add( "org/apache/maven/testing/1.0/testing-1.0-sources.jar" );
files.add( "org/apache/maven/testing/1.0/testing-1.0.zip" );
files.add( "org/apache/maven/testing/1.0/testing-1.0.tar.gz" );
files.add( "org/apache/maven/samplejar/2.0/samplejar-2.0.pom" );
files.add( "org/apache/maven/samplejar/2.0/samplejar-2.0.jar" );
files.add( "org/apache/maven/samplejar/1.0/samplejar-1.0.pom" );
files.add( "org/apache/maven/samplejar/1.0/samplejar-1.0.jar" );
files.add( "org/apache/testgroup/discovery/1.0/discovery-1.0.pom" );
files.add( "javax/sql/jdbc/2.0/jdbc-2.0.jar" );
return files;
}
}

View File

@ -1,115 +0,0 @@
package org.apache.maven.archiva.consumers;
/*
* 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.common.utils.BaseFile;
import org.apache.maven.archiva.repository.consumer.ConsumerException;
import org.codehaus.plexus.util.StringUtils;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
/**
* FileProblemsTracker
*
* @author <a href="mailto:joakim@erdfelt.com">Joakim Erdfelt</a>
* @version $Id$
*/
public class FileProblemsTracker
{
private Map problemMap = new HashMap();
public void addProblem( BaseFile file, String message )
{
String path = file.getRelativePath();
addProblem( path, message );
}
private void addProblem( String path, String message )
{
path = StringUtils.replace( path, "\\", "/" );
List problems = getProblems( path );
problems.add( message );
problemMap.put( path, problems );
}
public void addProblem( ConsumerException e )
{
if ( e.getFile() != null )
{
this.addProblem( e.getFile(), e.getMessage() );
}
else
{
this.addProblem( "|fatal|", e.getMessage() );
}
}
public boolean hasProblems( String path )
{
if ( !problemMap.containsKey( path ) )
{
// No tracking of path at all.
return false;
}
List problems = (List) problemMap.get( path );
if ( problems == null )
{
// found path, but no list.
return false;
}
return !problems.isEmpty();
}
public Set getPaths()
{
return problemMap.keySet();
}
public List getProblems( String path )
{
List problems = (List) problemMap.get( path );
if ( problems == null )
{
problems = new ArrayList();
}
return problems;
}
public int getProblemCount()
{
int count = 0;
for ( Iterator it = problemMap.values().iterator(); it.hasNext(); )
{
List problems = (List) it.next();
count += problems.size();
}
return count;
}
}

View File

@ -1,221 +0,0 @@
package org.apache.maven.archiva.consumers;
/*
* 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.commons.lang.StringUtils;
import org.apache.maven.archiva.common.utils.BaseFile;
import org.apache.maven.archiva.repository.ArchivaRepository;
import org.apache.maven.archiva.repository.consumer.ConsumerException;
import org.apache.maven.artifact.Artifact;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
/**
* GenericArtifactConsumerTest
*
* @author <a href="mailto:joakim@erdfelt.com">Joakim Erdfelt</a>
* @version $Id$
*/
public class GenericArtifactConsumerTest
extends AbstractGenericConsumerTestCase
{
private MockArtifactConsumer getMockArtifactConsumer()
throws Exception
{
return (MockArtifactConsumer) consumerFactory.createConsumer( "mock-artifact" );
}
public void testScanLegacy()
throws Exception
{
ArchivaRepository repository = getLegacyRepository();
List consumers = new ArrayList();
MockArtifactConsumer mockConsumer = getMockArtifactConsumer();
mockConsumer.init( repository );
consumers.add( mockConsumer );
List files = getLegacyLayoutArtifactPaths();
for ( Iterator it = files.iterator(); it.hasNext(); )
{
String path = (String) it.next();
try
{
mockConsumer.processFile( new BaseFile( repository.getRepositoryURL().getPath(), path ) );
}
catch ( ConsumerException e )
{
mockConsumer.getProblemsTracker().addProblem( e );
}
}
assertNotNull( consumers );
FileProblemsTracker tracker = mockConsumer.getProblemsTracker();
assertTracker( tracker, 16 );
assertHasFailureMessage( "Path does not match a legacy repository path for an artifact",
"invalid/invalid-1.0.jar", tracker );
assertHasFailureMessage( "Path filename version is empty", "invalid/jars/invalid.jar", tracker );
assertHasFailureMessage( "Path does not match a legacy repository path for an artifact",
"invalid/jars/1.0/invalid-1.0.jar", tracker );
assertEquals( 10, mockConsumer.getArtifactMap().size() );
}
public void testScanDefault()
throws Exception
{
ArchivaRepository repository = getDefaultRepository();
List consumers = new ArrayList();
MockArtifactConsumer mockConsumer = getMockArtifactConsumer();
mockConsumer.init( repository );
consumers.add( mockConsumer );
List files = getDefaultLayoutArtifactPaths();
for ( Iterator it = files.iterator(); it.hasNext(); )
{
String path = (String) it.next();
try
{
mockConsumer.processFile( new BaseFile( repository.getRepositoryURL().getPath(), path ) );
}
catch ( ConsumerException e )
{
mockConsumer.getProblemsTracker().addProblem( e );
}
}
// Test gathered information from Mock consumer.
assertNotNull( consumers );
FileProblemsTracker tracker = mockConsumer.getProblemsTracker();
assertTracker( tracker, 21 );
assertHasFailureMessage( "Failed to create a snapshot artifact: invalid:invalid:jar:1.0:runtime",
"invalid/invalid/1.0-SNAPSHOT/invalid-1.0.jar", tracker );
assertHasFailureMessage( "Path is too short to build an artifact from.", "invalid/invalid-1.0.jar", tracker );
assertHasFailureMessage( "Built artifact version does not match path version",
"invalid/invalid/1.0/invalid-2.0.jar", tracker );
assertEquals( 25, mockConsumer.getArtifactMap().size() );
// Test for known include artifacts
Collection artifacts = mockConsumer.getArtifactMap().values();
assertHasArtifact( "org.apache.maven", "testing", "1.0", "jar", null, artifacts );
assertHasArtifact( "org.apache.maven", "some-ejb", "1.0", "jar", "client", artifacts );
assertHasArtifact( "org.apache.maven", "testing", "1.0", "java-source", "sources", artifacts );
assertHasArtifact( "org.apache.maven", "testing", "1.0", "java-source", "test-sources", artifacts );
assertHasArtifact( "org.apache.maven", "testing", "1.0", "distribution-zip", null, artifacts );
assertHasArtifact( "org.apache.maven", "testing", "1.0", "distribution-tgz", null, artifacts );
assertHasArtifact( "javax.sql", "jdbc", "2.0", "jar", null, artifacts );
assertHasArtifact( "org.apache.maven", "test", "1.0-20050611.112233-1", "jar", null, artifacts );
assertHasArtifact( "org.apache.maven", "test", "1.0-20050611.112233-1", "jar", "javadoc", artifacts );
// Test for known excluded files and dirs to validate exclusions.
Iterator it = mockConsumer.getArtifactMap().values().iterator();
while ( it.hasNext() )
{
Artifact a = (Artifact) it.next();
assertTrue( "Artifact " + a + " should have it's .getFile() set.", a.getFile() != null );
assertTrue( "Artifact " + a + " should have it's .getRepository() set.", a.getRepository() != null );
assertTrue( "Artifact " + a + " should have non-null repository url.", a.getRepository().getUrl() != null );
assertFalse( "Check not CVS", a.getFile().getPath().indexOf( "CVS" ) >= 0 );
assertFalse( "Check not .svn", a.getFile().getPath().indexOf( ".svn" ) >= 0 );
}
}
private void dumpProblems( FileProblemsTracker tracker )
{
int problemNum = 0;
System.out.println( "-- ProblemTracker dump -------------------------" );
for ( Iterator itPaths = tracker.getPaths().iterator(); itPaths.hasNext(); )
{
String path = (String) itPaths.next();
System.out.println( " [" + problemNum + "]: " + path );
int messageNum = 0;
for ( Iterator itProblems = tracker.getProblems( path ).iterator(); itProblems.hasNext(); )
{
String message = (String) itProblems.next();
System.out.println( " [" + messageNum + "]: " + message );
messageNum++;
}
problemNum++;
}
}
private void assertTracker( FileProblemsTracker tracker, int expectedProblemCount )
{
assertNotNull( "ProblemsTracker should not be null.", tracker );
int actualProblemCount = tracker.getProblemCount();
if ( expectedProblemCount != actualProblemCount )
{
dumpProblems( tracker );
fail( "Problem count (across all paths) expected:<" + expectedProblemCount + ">, actual:<"
+ actualProblemCount + ">" );
}
}
private void assertHasFailureMessage( String message, String path, FileProblemsTracker tracker )
{
if ( !tracker.hasProblems( path ) )
{
fail( "There are no messages for expected path [" + path + "]" );
}
assertTrue( "Unable to find message [" + message + "] in path [" + path + "]", tracker.getProblems( path )
.contains( message ) );
}
private void assertHasArtifact( String groupId, String artifactId, String version, String type, String classifier,
Collection collection )
{
for ( Iterator it = collection.iterator(); it.hasNext(); )
{
Artifact artifact = (Artifact) it.next();
if ( StringUtils.equals( groupId, artifact.getGroupId() )
&& StringUtils.equals( artifactId, artifact.getArtifactId() )
&& StringUtils.equals( version, artifact.getVersion() )
&& StringUtils.equals( type, artifact.getType() )
&& StringUtils.equals( classifier, artifact.getClassifier() ) )
{
// Found it!
return;
}
}
fail( "Was unable to find artifact " + groupId + ":" + artifactId + ":" + version + ":" + type + ":"
+ classifier );
}
}

View File

@ -1,72 +0,0 @@
package org.apache.maven.archiva.consumers;
/*
* 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.common.utils.BaseFile;
import org.apache.maven.archiva.common.utils.PathUtil;
import org.apache.maven.archiva.consumers.core.GenericArtifactConsumer;
import org.apache.maven.artifact.Artifact;
import java.util.HashMap;
import java.util.Map;
/**
* MockArtifactConsumer
*
* @author <a href="mailto:joakim@erdfelt.com">Joakim Erdfelt</a>
* @version $Id$
*
* @plexus.component role="org.apache.maven.archiva.common.consumers.Consumers"
* role-hint="mock-artifact"
* instantiation-strategy="per-lookup"
*/
public class MockArtifactConsumer
extends GenericArtifactConsumer
{
private Map artifactMap = new HashMap();
private FileProblemsTracker problemsTracker = new FileProblemsTracker();
public void processArtifact( Artifact artifact, BaseFile file )
{
String relpath = PathUtil.getRelative( repository.getRepositoryURL().getPath(), file );
artifactMap.put( relpath, artifact );
}
public void processFileProblem( BaseFile file, String message )
{
problemsTracker.addProblem( file, message );
}
public Map getArtifactMap()
{
return artifactMap;
}
public String getName()
{
return "Mock Artifact Consumer (Testing Only)";
}
public FileProblemsTracker getProblemsTracker()
{
return problemsTracker;
}
}

View File

@ -1,71 +0,0 @@
package org.apache.maven.archiva.consumers;
/*
* 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.common.utils.BaseFile;
import org.apache.maven.archiva.consumers.core.GenericModelConsumer;
import org.apache.maven.model.Model;
import java.util.HashMap;
import java.util.Map;
/**
* MockModelConsumer
*
* @author <a href="mailto:joakim@erdfelt.com">Joakim Erdfelt</a>
* @version $Id$
*
* @plexus.component role="org.apache.maven.archiva.common.consumers.Consumers"
* role-hint="mock-model"
* instantiation-strategy="per-lookup"
*/
public class MockModelConsumer
extends GenericModelConsumer
{
private Map modelMap = new HashMap();
private FileProblemsTracker problemsTracker = new FileProblemsTracker();
public void processModel( Model model, BaseFile file )
{
modelMap.put( file.getRelativePath(), model );
}
public void processFileProblem( BaseFile file, String message )
{
problemsTracker.addProblem( file, message );
}
public Map getModelMap()
{
return modelMap;
}
public String getName()
{
return "Mock Model Consumer (Testing Only)";
}
public FileProblemsTracker getProblemsTracker()
{
return problemsTracker;
}
}

View File

@ -1,70 +0,0 @@
package org.apache.maven.archiva.consumers;
/*
* 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.common.utils.BaseFile;
import org.apache.maven.archiva.consumers.core.GenericRepositoryMetadataConsumer;
import org.apache.maven.artifact.repository.metadata.RepositoryMetadata;
import java.util.HashMap;
import java.util.Map;
/**
* MockRepositoryMetadataConsumer
*
* @author <a href="mailto:joakim@erdfelt.com">Joakim Erdfelt</a>
* @version $Id$
*
* @plexus.component role="org.apache.maven.archiva.common.consumers.Consumers"
* role-hint="mock-metadata"
* instantiation-strategy="per-lookup"
*/
public class MockRepositoryMetadataConsumer
extends GenericRepositoryMetadataConsumer
{
private Map repositoryMetadataMap = new HashMap();
private FileProblemsTracker problemsTracker = new FileProblemsTracker();
public void processRepositoryMetadata( RepositoryMetadata metadata, BaseFile file )
{
repositoryMetadataMap.put( file.getRelativePath(), metadata );
}
public void processFileProblem( BaseFile file, String message )
{
problemsTracker.addProblem( file, message );
}
public Map getRepositoryMetadataMap()
{
return repositoryMetadataMap;
}
public String getName()
{
return "Mock RepositoryMetadata Consumer (Testing Only)";
}
public FileProblemsTracker getProblemsTracker()
{
return problemsTracker;
}
}

View File

@ -21,7 +21,6 @@ package org.apache.maven.archiva.database;
import org.apache.maven.archiva.model.ArchivaArtifactModel;
import org.apache.maven.archiva.model.ArchivaRepositoryModel;
import org.apache.maven.archiva.model.RepositoryContent;
import java.util.List;
@ -73,29 +72,13 @@ public interface ArchivaDAO
public void deleteRepository( ArchivaRepositoryModel repository )
throws ArchivaDatabaseException;
/* .\ Repository Content \.____________________________________________________________ */
public RepositoryContent createRepositoryContent( String groupId, String artifactId, String version,
String repositoryId );
public RepositoryContent getRepositoryContent( String groupId, String artifactId, String version,
String repositoryId )
throws ObjectNotFoundException, ArchivaDatabaseException;
public List /*<RepositoryContent>*/queryRepositoryContents( Constraint constraint )
throws ObjectNotFoundException, ArchivaDatabaseException;
public RepositoryContent saveRepositoryContent( RepositoryContent repoContent )
throws ArchivaDatabaseException;
public void deleteRepositoryContent( RepositoryContent repoContent )
throws ArchivaDatabaseException;
/* .\ Archiva Artifact \. _____________________________________________________________ */
public ArchivaArtifactModel createArtifact( RepositoryContent repoContent, String classifier, String type );
public ArchivaArtifactModel createArtifact( String groupId, String artifactId, String version, String classifier,
String type );
public ArchivaArtifactModel getArtifact( RepositoryContent repoContent, String classifier, String type )
public ArchivaArtifactModel getArtifact( String groupId, String artifactId, String version, String classifier,
String type )
throws ObjectNotFoundException, ArchivaDatabaseException;
public List /*<ArchivaArtifactModel>*/queryArtifacts( Constraint constraint )

View File

@ -6,8 +6,6 @@ import org.apache.maven.archiva.database.Constraint;
import org.apache.maven.archiva.database.ObjectNotFoundException;
import org.apache.maven.archiva.model.ArchivaArtifactModel;
import org.apache.maven.archiva.model.ArchivaRepositoryModel;
import org.apache.maven.archiva.model.RepositoryContent;
import org.apache.maven.archiva.model.RepositoryContentKey;
import org.codehaus.plexus.logging.AbstractLogEnabled;
import java.util.List;
@ -78,70 +76,22 @@ public class JdoArchivaDAO
jdo.removeObject( repository );
}
/* .\ Repository Content \.____________________________________________________________ */
public RepositoryContent createRepositoryContent( String groupId, String artifactId, String version,
String repositoryId )
{
RepositoryContent repoContent;
try
{
repoContent = getRepositoryContent( groupId, artifactId, version, repositoryId );
}
catch ( ArchivaDatabaseException e )
{
repoContent = new RepositoryContent( repositoryId, groupId, artifactId, version );
}
return repoContent;
}
public RepositoryContent getRepositoryContent( String groupId, String artifactId, String version,
String repositoryId )
throws ObjectNotFoundException, ArchivaDatabaseException
{
RepositoryContentKey key = new RepositoryContentKey();
key.groupId = groupId;
key.artifactId = artifactId;
key.version = version;
key.repositoryId = repositoryId;
return (RepositoryContent) jdo.getObjectById( RepositoryContent.class, key, null );
}
public List queryRepositoryContents( Constraint constraint )
throws ObjectNotFoundException, ArchivaDatabaseException
{
return jdo.getAllObjects( RepositoryContent.class, constraint );
}
public RepositoryContent saveRepositoryContent( RepositoryContent repoContent )
throws ArchivaDatabaseException
{
return (RepositoryContent) jdo.saveObject( repoContent );
}
public void deleteRepositoryContent( RepositoryContent repoContent )
throws ArchivaDatabaseException
{
jdo.removeObject( repoContent );
}
/* .\ Archiva Artifact \. _____________________________________________________________ */
public ArchivaArtifactModel createArtifact( RepositoryContent repoContent, String classifier, String type )
public ArchivaArtifactModel createArtifact( String groupId, String artifactId, String version, String classifier, String type )
{
ArchivaArtifactModel artifact;
try
{
artifact = getArtifact( repoContent, classifier, type );
artifact = getArtifact( groupId, artifactId, version, classifier, type );
}
catch ( ArchivaDatabaseException e )
{
artifact = new ArchivaArtifactModel();
artifact.setContentKey( repoContent );
artifact.setGroupId( groupId );
artifact.setArtifactId( artifactId );
artifact.setVersion( version );
artifact.setClassifier( classifier );
artifact.setType( type );
}
@ -149,7 +99,7 @@ public class JdoArchivaDAO
return artifact;
}
public ArchivaArtifactModel getArtifact( RepositoryContent repoContent, String classifier, String type )
public ArchivaArtifactModel getArtifact( String groupId, String artifactId, String version, String classifier, String type )
throws ObjectNotFoundException, ArchivaDatabaseException
{