From 379bbb72250011dd8586a9368c6aed7d8ce1c5fc Mon Sep 17 00:00:00 2001 From: Joakim Erdfelt Date: Thu, 5 Apr 2007 20:11:19 +0000 Subject: [PATCH] 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 --- archiva-base/archiva-common/pom.xml | 18 +- .../archiva/common/utils/BaseFileTest.java | 3 +- .../archiva-database-consumers/pom.xml | 4 + .../ArtifactUpdateDatabaseConsumer.java | 71 +- .../maven/archiva/model/ArchivaArtifact.java | 5 +- .../archiva/model/ArchivaModelCloner.java | 58 +- .../archiva/model/ArchivaModelClonerTest.java | 60 ++ archiva-base/archiva-repository-layer/pom.xml | 5 + .../metadata/RepositoryMetadataReader.java | 9 +- .../project/ProjectModelFilter.java | 39 + .../repository/project/ProjectModelMerge.java | 661 +++++++++++++++ .../project/ProjectModelMonitor.java | 40 + .../project/ProjectModelResolver.java | 42 + .../filters/EffectiveProjectModelBuilder.java | 269 ++++++ .../ProjectModelExpressionExpander.java | 92 ++ .../{ => readers}/ProjectModel300Reader.java | 4 +- .../{ => readers}/ProjectModel400Reader.java | 225 +++-- .../resolvers/RepositoryProjectResolver.java | 69 ++ .../archiva-model-effective.pom | 794 ++++++++++++++++++ .../RepositoryMetadataReaderTest.java | 4 +- .../archiva/repository/project/AllTests.java | 3 +- .../project/ProjectModel400ReaderTest.java | 53 -- .../repository/project/filters/AllTests.java | 33 +- .../EffectiveProjectModelBuilderTest.java | 143 ++++ .../ProjectModelExpressionExpanderTest.java | 84 ++ .../repository/project/readers}/AllTests.java | 6 +- .../readers/ProjectModel400ReaderTest.java | 98 +++ .../scanner/CentralScannerTiming.java | 231 ----- .../archiva-applet-1.0-SNAPSHOT.pom | 69 ++ .../archiva-base-1.0-SNAPSHOT.pom | 42 + .../1.0-SNAPSHOT/archiva-cli-1.0-SNAPSHOT.pom | 68 ++ .../archiva-common-1.0-SNAPSHOT.pom | 98 +++ .../archiva-configuration-1.0-SNAPSHOT.pom | 109 +++ .../archiva-consumer-api-1.0-SNAPSHOT.pom | 38 + .../archiva-consumers-1.0-SNAPSHOT.pom | 41 + .../archiva-converter-1.0-SNAPSHOT.pom | 79 ++ .../archiva-core-consumers-1.0-SNAPSHOT.pom | 50 ++ .../archiva-core-1.0-SNAPSHOT.pom | 113 +++ .../archiva-discoverer-1.0-SNAPSHOT.pom | 65 ++ .../archiva-indexer-1.0-SNAPSHOT.pom | 81 ++ .../archiva-model-1.0-SNAPSHOT.pom | 159 ++++ .../archiva-parent-1.0-SNAPSHOT.pom | 567 +++++++++++++ ...rchiva-plexus-application-1.0-SNAPSHOT.pom | 62 ++ .../archiva-plexus-runtime-1.0-SNAPSHOT.pom | 145 ++++ .../archiva-proxy-1.0-SNAPSHOT.pom | 31 +- .../archiva-reports-standard-1.0-SNAPSHOT.pom | 176 ++++ .../archiva-repository-layer-1.0-SNAPSHOT.pom | 103 +++ .../archiva-security-1.0-SNAPSHOT.pom | 45 + .../archiva-webapp-1.0-SNAPSHOT.pom | 335 ++++++++ .../archiva-xml-tools-1.0-SNAPSHOT.pom | 79 ++ .../archiva-1.0-20061126.005254-2.pom | 506 +++++++++++ .../archiva-1.0-SNAPSHOT-site.xml | 28 + .../1.0-SNAPSHOT/archiva-1.0-SNAPSHOT.pom | 557 ++++++++++++ .../maven-parent/4/maven-parent-4-site.xml | 0 .../maven-parent/4/maven-parent-4-site_en.xml | 0 .../maven/maven-parent/4/maven-parent-4.pom | 304 +++++++ .../maven-parent/4/maven-parent-4.pom.sha1 | 1 + .../apache/maven/archiva/xml/XMLReader.java | 74 +- .../archiva/cli/ProjectReaderConsumer.java | 2 +- .../consumers/AbstractConsumerTestCase.java | 152 ---- .../consumers/FileProblemsTracker.java | 115 --- .../GenericArtifactConsumerTest.java | 221 ----- .../consumers/MockArtifactConsumer.java | 72 -- .../archiva/consumers/MockModelConsumer.java | 71 -- .../MockRepositoryMetadataConsumer.java | 70 -- .../maven/archiva/database/ArchivaDAO.java | 25 +- .../archiva/database/jdo/JdoArchivaDAO.java | 62 +- 67 files changed, 6701 insertions(+), 1237 deletions(-) create mode 100644 archiva-base/archiva-model/src/test/java/org/apache/maven/archiva/model/ArchivaModelClonerTest.java create mode 100644 archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/project/ProjectModelFilter.java create mode 100644 archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/project/ProjectModelMerge.java create mode 100644 archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/project/ProjectModelMonitor.java create mode 100644 archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/project/ProjectModelResolver.java create mode 100644 archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/project/filters/EffectiveProjectModelBuilder.java create mode 100644 archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/project/filters/ProjectModelExpressionExpander.java rename archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/project/{ => readers}/ProjectModel300Reader.java (85%) rename archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/project/{ => readers}/ProjectModel400Reader.java (62%) create mode 100644 archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/project/resolvers/RepositoryProjectResolver.java create mode 100644 archiva-base/archiva-repository-layer/src/test/effective-poms/archiva-model-effective.pom delete mode 100644 archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/project/ProjectModel400ReaderTest.java rename archiva-consumer-api/src/test/java/org/apache/maven/archiva/consumers/AbstractGenericConsumerTestCase.java => archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/project/filters/AllTests.java (59%) create mode 100644 archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/project/filters/EffectiveProjectModelBuilderTest.java create mode 100644 archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/project/filters/ProjectModelExpressionExpanderTest.java rename {archiva-consumer-api/src/test/java/org/apache/maven/archiva/consumers => archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/project/readers}/AllTests.java (87%) create mode 100644 archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/project/readers/ProjectModel400ReaderTest.java delete mode 100644 archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/scanner/CentralScannerTiming.java create mode 100644 archiva-base/archiva-repository-layer/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-applet/1.0-SNAPSHOT/archiva-applet-1.0-SNAPSHOT.pom create mode 100644 archiva-base/archiva-repository-layer/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-base/1.0-SNAPSHOT/archiva-base-1.0-SNAPSHOT.pom create mode 100644 archiva-base/archiva-repository-layer/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-cli/1.0-SNAPSHOT/archiva-cli-1.0-SNAPSHOT.pom create mode 100644 archiva-base/archiva-repository-layer/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-common/1.0-SNAPSHOT/archiva-common-1.0-SNAPSHOT.pom create mode 100644 archiva-base/archiva-repository-layer/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-configuration/1.0-SNAPSHOT/archiva-configuration-1.0-SNAPSHOT.pom create mode 100644 archiva-base/archiva-repository-layer/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-consumer-api/1.0-SNAPSHOT/archiva-consumer-api-1.0-SNAPSHOT.pom create mode 100644 archiva-base/archiva-repository-layer/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-consumers/1.0-SNAPSHOT/archiva-consumers-1.0-SNAPSHOT.pom create mode 100644 archiva-base/archiva-repository-layer/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-converter/1.0-SNAPSHOT/archiva-converter-1.0-SNAPSHOT.pom create mode 100644 archiva-base/archiva-repository-layer/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-core-consumers/1.0-SNAPSHOT/archiva-core-consumers-1.0-SNAPSHOT.pom create mode 100644 archiva-base/archiva-repository-layer/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-core/1.0-SNAPSHOT/archiva-core-1.0-SNAPSHOT.pom create mode 100644 archiva-base/archiva-repository-layer/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-discoverer/1.0-SNAPSHOT/archiva-discoverer-1.0-SNAPSHOT.pom create mode 100644 archiva-base/archiva-repository-layer/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-indexer/1.0-SNAPSHOT/archiva-indexer-1.0-SNAPSHOT.pom create mode 100644 archiva-base/archiva-repository-layer/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-model/1.0-SNAPSHOT/archiva-model-1.0-SNAPSHOT.pom create mode 100644 archiva-base/archiva-repository-layer/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-parent/1.0-SNAPSHOT/archiva-parent-1.0-SNAPSHOT.pom create mode 100644 archiva-base/archiva-repository-layer/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-plexus-application/1.0-SNAPSHOT/archiva-plexus-application-1.0-SNAPSHOT.pom create mode 100644 archiva-base/archiva-repository-layer/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-plexus-runtime/1.0-SNAPSHOT/archiva-plexus-runtime-1.0-SNAPSHOT.pom rename archiva-consumer-api/pom.xml => archiva-base/archiva-repository-layer/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-proxy/1.0-SNAPSHOT/archiva-proxy-1.0-SNAPSHOT.pom (75%) mode change 100755 => 100644 create mode 100644 archiva-base/archiva-repository-layer/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-reports-standard/1.0-SNAPSHOT/archiva-reports-standard-1.0-SNAPSHOT.pom create mode 100644 archiva-base/archiva-repository-layer/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-repository-layer/1.0-SNAPSHOT/archiva-repository-layer-1.0-SNAPSHOT.pom create mode 100644 archiva-base/archiva-repository-layer/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-security/1.0-SNAPSHOT/archiva-security-1.0-SNAPSHOT.pom create mode 100644 archiva-base/archiva-repository-layer/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-webapp/1.0-SNAPSHOT/archiva-webapp-1.0-SNAPSHOT.pom create mode 100644 archiva-base/archiva-repository-layer/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-xml-tools/1.0-SNAPSHOT/archiva-xml-tools-1.0-SNAPSHOT.pom create mode 100644 archiva-base/archiva-repository-layer/src/test/repositories/default-repository/org/apache/maven/archiva/archiva/1.0-SNAPSHOT/archiva-1.0-20061126.005254-2.pom create mode 100644 archiva-base/archiva-repository-layer/src/test/repositories/default-repository/org/apache/maven/archiva/archiva/1.0-SNAPSHOT/archiva-1.0-SNAPSHOT-site.xml create mode 100644 archiva-base/archiva-repository-layer/src/test/repositories/default-repository/org/apache/maven/archiva/archiva/1.0-SNAPSHOT/archiva-1.0-SNAPSHOT.pom create mode 100644 archiva-base/archiva-repository-layer/src/test/repositories/default-repository/org/apache/maven/maven-parent/4/maven-parent-4-site.xml create mode 100644 archiva-base/archiva-repository-layer/src/test/repositories/default-repository/org/apache/maven/maven-parent/4/maven-parent-4-site_en.xml create mode 100644 archiva-base/archiva-repository-layer/src/test/repositories/default-repository/org/apache/maven/maven-parent/4/maven-parent-4.pom create mode 100644 archiva-base/archiva-repository-layer/src/test/repositories/default-repository/org/apache/maven/maven-parent/4/maven-parent-4.pom.sha1 delete mode 100644 archiva-consumer-api/src/test/java/org/apache/maven/archiva/consumers/AbstractConsumerTestCase.java delete mode 100644 archiva-consumer-api/src/test/java/org/apache/maven/archiva/consumers/FileProblemsTracker.java delete mode 100644 archiva-consumer-api/src/test/java/org/apache/maven/archiva/consumers/GenericArtifactConsumerTest.java delete mode 100644 archiva-consumer-api/src/test/java/org/apache/maven/archiva/consumers/MockArtifactConsumer.java delete mode 100644 archiva-consumer-api/src/test/java/org/apache/maven/archiva/consumers/MockModelConsumer.java delete mode 100644 archiva-consumer-api/src/test/java/org/apache/maven/archiva/consumers/MockRepositoryMetadataConsumer.java diff --git a/archiva-base/archiva-common/pom.xml b/archiva-base/archiva-common/pom.xml index 17a20abd5..c5f3ff269 100644 --- a/archiva-base/archiva-common/pom.xml +++ b/archiva-base/archiva-common/pom.xml @@ -35,24 +35,14 @@ archiva-dev@maven.apache.org mailing-list. joakime@apache.org --> - - org.codehaus.plexus - plexus-component-api - - commons-lang commons-lang + + org.codehaus.plexus + plexus-component-api + org.codehaus.plexus plexus-container-default diff --git a/archiva-base/archiva-common/src/test/java/org/apache/maven/archiva/common/utils/BaseFileTest.java b/archiva-base/archiva-common/src/test/java/org/apache/maven/archiva/common/utils/BaseFileTest.java index ab8c6718c..613e89012 100644 --- a/archiva-base/archiva-common/src/test/java/org/apache/maven/archiva/common/utils/BaseFileTest.java +++ b/archiva-base/archiva-common/src/test/java/org/apache/maven/archiva/common/utils/BaseFileTest.java @@ -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; diff --git a/archiva-base/archiva-consumers/archiva-database-consumers/pom.xml b/archiva-base/archiva-consumers/archiva-database-consumers/pom.xml index 15df257bd..32ab1336e 100644 --- a/archiva-base/archiva-consumers/archiva-database-consumers/pom.xml +++ b/archiva-base/archiva-consumers/archiva-database-consumers/pom.xml @@ -30,6 +30,10 @@ jar + + org.codehaus.plexus + plexus-digest + org.apache.maven.archiva archiva-database diff --git a/archiva-base/archiva-consumers/archiva-database-consumers/src/main/java/org/apache/maven/archiva/consumers/database/ArtifactUpdateDatabaseConsumer.java b/archiva-base/archiva-consumers/archiva-database-consumers/src/main/java/org/apache/maven/archiva/consumers/database/ArtifactUpdateDatabaseConsumer.java index 0ad7448bb..69fee0c85 100644 --- a/archiva-base/archiva-consumers/archiva-database-consumers/src/main/java/org/apache/maven/archiva/consumers/database/ArtifactUpdateDatabaseConsumer.java +++ b/archiva-base/archiva-consumers/archiva-database-consumers/src/main/java/org/apache/maven/archiva/consumers/database/ArtifactUpdateDatabaseConsumer.java @@ -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" ); diff --git a/archiva-base/archiva-model/src/main/java/org/apache/maven/archiva/model/ArchivaArtifact.java b/archiva-base/archiva-model/src/main/java/org/apache/maven/archiva/model/ArchivaArtifact.java index e3920f45c..34ce2e8fc 100644 --- a/archiva-base/archiva-model/src/main/java/org/apache/maven/archiva/model/ArchivaArtifact.java +++ b/archiva-base/archiva-model/src/main/java/org/apache/maven/archiva/model/ArchivaArtifact.java @@ -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 ); diff --git a/archiva-base/archiva-model/src/main/java/org/apache/maven/archiva/model/ArchivaModelCloner.java b/archiva-base/archiva-model/src/main/java/org/apache/maven/archiva/model/ArchivaModelCloner.java index 8b50de846..cdad4f850 100644 --- a/archiva-base/archiva-model/src/main/java/org/apache/maven/archiva/model/ArchivaModelCloner.java +++ b/archiva-base/archiva-model/src/main/java/org/apache/maven/archiva/model/ArchivaModelCloner.java @@ -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; diff --git a/archiva-base/archiva-model/src/test/java/org/apache/maven/archiva/model/ArchivaModelClonerTest.java b/archiva-base/archiva-model/src/test/java/org/apache/maven/archiva/model/ArchivaModelClonerTest.java new file mode 100644 index 000000000..263cd3253 --- /dev/null +++ b/archiva-base/archiva-model/src/test/java/org/apache/maven/archiva/model/ArchivaModelClonerTest.java @@ -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 Joakim Erdfelt + * @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() ); + } +} diff --git a/archiva-base/archiva-repository-layer/pom.xml b/archiva-base/archiva-repository-layer/pom.xml index 6ec87f431..33b2aaee9 100644 --- a/archiva-base/archiva-repository-layer/pom.xml +++ b/archiva-base/archiva-repository-layer/pom.xml @@ -43,6 +43,11 @@ archiva-xml-tools 1.0-SNAPSHOT + + org.codehaus.plexus + plexus-expression-evaluator + 1.0-alpha-1 + org.codehaus.plexus plexus-utils diff --git a/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/metadata/RepositoryMetadataReader.java b/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/metadata/RepositoryMetadataReader.java index 659a7de67..795c3a2c1 100644 --- a/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/metadata/RepositoryMetadataReader.java +++ b/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/metadata/RepositoryMetadataReader.java @@ -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() ); diff --git a/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/project/ProjectModelFilter.java b/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/project/ProjectModelFilter.java new file mode 100644 index 000000000..e00943360 --- /dev/null +++ b/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/project/ProjectModelFilter.java @@ -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 Joakim Erdfelt + * @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 ); +} diff --git a/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/project/ProjectModelMerge.java b/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/project/ProjectModelMerge.java new file mode 100644 index 000000000..ba32cf407 --- /dev/null +++ b/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/project/ProjectModelMerge.java @@ -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 Joakim Erdfelt + * @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(); + } +} diff --git a/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/project/ProjectModelMonitor.java b/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/project/ProjectModelMonitor.java new file mode 100644 index 000000000..316f144f2 --- /dev/null +++ b/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/project/ProjectModelMonitor.java @@ -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 Joakim Erdfelt + * @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 ); +} \ No newline at end of file diff --git a/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/project/ProjectModelResolver.java b/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/project/ProjectModelResolver.java new file mode 100644 index 000000000..de2fc43a8 --- /dev/null +++ b/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/project/ProjectModelResolver.java @@ -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 Joakim Erdfelt + * @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; +} diff --git a/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/project/filters/EffectiveProjectModelBuilder.java b/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/project/filters/EffectiveProjectModelBuilder.java new file mode 100644 index 000000000..549c049a0 --- /dev/null +++ b/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/project/filters/EffectiveProjectModelBuilder.java @@ -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 Joakim Erdfelt + * @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 + * and 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 + * and 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(); + } +} diff --git a/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/project/filters/ProjectModelExpressionExpander.java b/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/project/filters/ProjectModelExpressionExpander.java new file mode 100644 index 000000000..764c7302e --- /dev/null +++ b/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/project/filters/ProjectModelExpressionExpander.java @@ -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 Joakim Erdfelt + * @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() ) ); + } + } +} diff --git a/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/project/ProjectModel300Reader.java b/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/project/readers/ProjectModel300Reader.java similarity index 85% rename from archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/project/ProjectModel300Reader.java rename to archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/project/readers/ProjectModel300Reader.java index 1cb9d86e8..b3ad6bbd6 100644 --- a/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/project/ProjectModel300Reader.java +++ b/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/project/readers/ProjectModel300Reader.java @@ -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; diff --git a/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/project/ProjectModel400Reader.java b/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/project/readers/ProjectModel400Reader.java similarity index 62% rename from archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/project/ProjectModel400Reader.java rename to archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/project/readers/ProjectModel400Reader.java index 0e64d11fb..77c28c84f 100644 --- a/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/project/ProjectModel400Reader.java +++ b/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/project/readers/ProjectModel400Reader.java @@ -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 Joakim Erdfelt * @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 ); + } + + xml.removeNamespaces(); + + Element project = xml.getElement( "//project" ); - 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" ) ); + 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.setParentContentKey( getParentContentKey( xml ) ); + 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 + { + return getDependencyList( xml, new String[] { "dependencies" } ); + } + + private List getDependencyList( XMLReader xml, String parts[] ) + throws XMLException { - List dependencies = new ArrayList(); + List dependencyList = new ArrayList(); + + Element project = xml.getElement( "//project" ); - Iterator it = xml.getElementList( "//project/dependencies/dependency" ).iterator(); + 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() + "]"; + } + } diff --git a/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/project/resolvers/RepositoryProjectResolver.java b/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/project/resolvers/RepositoryProjectResolver.java new file mode 100644 index 000000000..d33d74102 --- /dev/null +++ b/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/project/resolvers/RepositoryProjectResolver.java @@ -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 Joakim Erdfelt + * @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 ); + } + +} diff --git a/archiva-base/archiva-repository-layer/src/test/effective-poms/archiva-model-effective.pom b/archiva-base/archiva-repository-layer/src/test/effective-poms/archiva-model-effective.pom new file mode 100644 index 000000000..9129a9db4 --- /dev/null +++ b/archiva-base/archiva-repository-layer/src/test/effective-poms/archiva-model-effective.pom @@ -0,0 +1,794 @@ + + + + archiva-base + org.apache.maven.archiva + 1.0-SNAPSHOT + + 4.0.0 + org.apache.maven.archiva + archiva-model + Archiva Base :: Model + 1.0-SNAPSHOT + Archiva is an application for managing one or more remote repositories, including + administration, artifact handling, + browsing and searching. + http://maven.apache.org/archiva/archiva-base/archiva-model + + jira + http://jira.codehaus.org/browse/MRM + + + continuum + http://maven.zones.apache.org:8080/continuum + + + +
notifications@maven.apache.org
+
+
+
+
+ 2002 + + + Maven Archiva User List + archiva-users-subscribe@maven.apache.org + archiva-users-unsubscribe@maven.apache.org + archiva-users@maven.apache.org + http://mail-archives.apache.org/mod_mbox/maven-archiva-users + + + Maven Archiva Developer List + archiva-dev-subscribe@maven.apache.org + archiva-dev-unsubscribe@maven.apache.org + archiva-dev@maven.apache.org + http://mail-archives.apache.org/mod_mbox/maven-archiva-dev + + + Maven Archiva Commits List + archiva-commits-subscribe@maven.apache.org + archiva-commits-unsubscribe@maven.apache.org + archiva-commits@maven.apache.org + http://mail-archives.apache.org/mod_mbox/maven-archiva-commits + + + + + jvanzyl + Jason van Zyl + jason@maven.org + ASF + + PMC Chair + + -5 + + + brett + Brett Porter + brett@apache.org + ASF + + PMC Member + + +10 + + + evenisse + Emmanuel Venisse + evenisse@apache.org + ASF + + PMC Member + + +1 + + + kenney + Kenney Westerhof + kenney@apache.org + Neonics + + PMC Member + + + + snicoll + Stephane Nicoll + snicoll@apache.org + ASF + + PMC Member + + +1 + + + vmassol + Vincent Massol + vmassol@apache.org + ASF + + PMC Member + + +1 + + + fgiust + Fabrizio Giustina + fgiust@apache.org + openmind + + PMC Member + + +1 + + + epunzalan + Edwin Punzalan + epunzalan@mergere.com + Mergere + + Committer + + +8 + + + mperham + Mike Perham + mperham@gmail.com + IBM + + PMC Member + + -6 + + + jdcasey + John Casey + jdcasey@apache.org + ASF + + PMC Member + + -5 + + + trygvis + Trygve Laugstol + trygvis@apache.org + ASF + + PMC Member + + +1 + + + vsiveton + Vincent Siveton + vsiveton@apache.org + ASF + + PMC Member + + -5 + + + carlos + Carlos Sanchez + carlos@apache.org + ASF + + PMC Member + + +1 + + + dennisl + Dennis Lundberg + dennisl@apache.org + ASF + + PMC Member + + +1 + + + + + The Apache Software License, Version 2.0 + http://www.apache.org/licenses/LICENSE-2.0.txt + repo + + + + scm:svn:http://svn.apache.org/repos/asf/maven/archiva/trunk/archiva-base/archiva-model + scm:svn:https://svn.apache.org/repos/asf/maven/archiva/trunk/archiva-base/archiva-model + http://svn.apache.org/viewcvs.cgi/maven/archiva/trunk/archiva-base/archiva-model + + + Apache Software Foundation + http://www.apache.org/ + + + /home/joakim/code/maven/branches/archiva-jpox-database-refactor/archiva-base/archiva-model/src/main/java + src/main/scripts + /home/joakim/code/maven/branches/archiva-jpox-database-refactor/archiva-base/archiva-model/src/test/java + /home/joakim/code/maven/branches/archiva-jpox-database-refactor/archiva-base/archiva-model/target/classes + /home/joakim/code/maven/branches/archiva-jpox-database-refactor/archiva-base/archiva-model/target/test-classes + + + /home/joakim/code/maven/branches/archiva-jpox-database-refactor/archiva-base/archiva-model/src/main/resources + + + + + /home/joakim/code/maven/branches/archiva-jpox-database-refactor/archiva-base/archiva-model/src/test/resources + + + /home/joakim/code/maven/branches/archiva-jpox-database-refactor/archiva-base/archiva-model/target + archiva-model-1.0-SNAPSHOT + + + + maven-idea-plugin + + 1.4 + + + + maven-release-plugin + + https://svn.apache.org/repos/asf/maven/archiva/tags + + + + + + + org.codehaus.plexus + plexus-maven-plugin + 1.3.3 + + + generate + + descriptor + + + + + + maven-compiler-plugin + + 1.4 + 1.4 + + + + maven-surefire-plugin + 2.2 + + + org.codehaus.modello + modello-maven-plugin + 1.0-alpha-15-SNAPSHOT + + + archiva-base + + java + xsd + jpox-jdo-mapping + jpox-metadata-class + + + + + 1.0.0 + false + src/main/mdo/archiva-base.xml + + + + org.codehaus.mojo + jpox-maven-plugin + 1.1.6 + + + create-ddl + generate-test-resources + + schema-create + + + /home/joakim/code/maven/branches/archiva-jpox-database-refactor/archiva-base/archiva-model/target/classes/org/apache/maven/archiva/model/schema.ddl + + + javax.jdo.option.ConnectionDriverName + org.apache.derby.jdbc.EmbeddedDriver + + + javax.jdo.option.ConnectionURL + jdbc:derby:target/jdo-schema-create;create=true + + + javax.jdo.option.ConnectionUserName + sa + + + javax.jdo.option.ConnectionPassword + + + + log4j.configuration + /home/joakim/code/maven/branches/archiva-jpox-database-refactor/archiva-base/archiva-model/src/test/resources/log4j.xml + + + org.jpox.autoCreateTables + true + + + + + + enhance + + enhance + + + + + + org.apache.derby + derby + 10.2.1.6 + + + + + org.codehaus.mojo + cobertura-maven-plugin + + + + org/apache/maven/archiva/reporting/model/** + + + + + + maven-help-plugin + 2.0.1 + + + + + + + + false + + codehaus.org + http://repository.codehaus.org + + + + false + + + snapshots.codehaus.org + http://snapshots.repository.codehaus.org + + + + false + + apache.snapshots + Apache Snapshot Repository + http://people.apache.org/repo/m2-snapshot-repository + + + + false + + central + Maven Repository Switchboard + http://repo1.maven.org/maven2 + + + + + + false + + + snapshots.codehaus.org + http://snapshots.repository.codehaus.org + + + + never + + + false + + central + Maven Plugin Repository + http://repo1.maven.org/maven2 + + + + + junit + junit + 3.8.1 + test + + + org.apache.maven.archiva + archiva-common + 1.0-SNAPSHOT + + + org.codehaus.plexus + plexus-utils + 1.4 + + + javax.jdo + jdo2-api + 2.0 + + + org.codehaus.plexus + plexus-container-default + 1.0-alpha-18 + + + commons-lang + commons-lang + 2.2 + + + commons-io + commons-io + 1.2 + + + + target/site + + + maven-checkstyle-plugin + + config/maven_checks.xml + + + + maven-javadoc-plugin + + 1.4 + true + + + + maven-jxr-plugin + + true + + + + maven-pmd-plugin + + + maven-surefire-report-plugin + + + org.codehaus.mojo + changelog-maven-plugin + + + org.codehaus.mojo + cobertura-maven-plugin + + + org.codehaus.mojo + taglist-maven-plugin + + + + + + + org.apache.maven.shared + maven-app-configuration-model + 1.0-SNAPSHOT + + + org.apache.maven.shared + maven-app-configuration-web + 1.0-SNAPSHOT + + + org.codehaus.plexus + plexus-container-default + 1.0-alpha-18 + + + org.codehaus.plexus + plexus-component-api + 1.0-alpha-18 + + + org.codehaus.plexus + plexus-utils + 1.4 + + + org.slf4j + slf4j-log4j12 + 1.2 + + + org.apache.maven + maven-repository-metadata + 2.0.5 + + + org.apache.maven + maven-model + 2.0.5 + + + org.apache.maven + maven-artifact + 2.0.5 + + + org.apache.maven + maven-artifact-manager + 2.0.5 + + + org.apache.maven + maven-project + 2.0.5 + + + org.apache.maven.shared + maven-model-converter + 2.0.5-SNAPSHOT + + + org.apache.maven.wagon + wagon-provider-api + 1.0-beta-2 + + + org.apache.maven.wagon + wagon-ssh + 1.0-beta-2 + + + org.apache.maven.wagon + wagon-file + 1.0-beta-2 + + + org.apache.maven.wagon + wagon-http-lightweight + 1.0-beta-2 + + + org.apache.maven.archiva + archiva-common + 1.0-SNAPSHOT + + + org.apache.maven.archiva + archiva-core + 1.0-SNAPSHOT + + + org.apache.maven.archiva + archiva-reports-standard + 1.0-SNAPSHOT + + + org.apache.maven.archiva + archiva-model + 1.0-SNAPSHOT + + + org.apache.maven.archiva + archiva-database + 1.0-SNAPSHOT + + + org.apache.maven.archiva + archiva-consumer-api + 1.0-SNAPSHOT + + + org.apache.maven.archiva + archiva-model + 1.0-SNAPSHOT + + + org.apache.maven.archiva + archiva-database + 1.0-SNAPSHOT + + + org.apache.maven.archiva + archiva-discoverer + 1.0-SNAPSHOT + + + org.apache.maven.archiva + archiva-repository-layer + 1.0-SNAPSHOT + + + org.apache.maven.archiva + archiva-indexer + 1.0-SNAPSHOT + + + org.apache.maven.archiva + archiva-proxy + 1.0-SNAPSHOT + + + org.apache.maven.archiva + archiva-applet + 1.0-SNAPSHOT + + + org.apache.maven.archiva + archiva-security + 1.0-SNAPSHOT + + + org.apache.maven.archiva + archiva-configuration + 1.0-SNAPSHOT + + + org.apache.maven.archiva + archiva-converter + 1.0-SNAPSHOT + + + org.apache.maven.archiva + archiva-utils + 1.0-SNAPSHOT + + + org.apache.maven.archiva + archiva-webapp + 1.0-SNAPSHOT + war + + + org.codehaus.plexus + plexus-digest + 1.1-SNAPSHOT + + + org.codehaus.plexus.security + plexus-security-rbac-profile + 1.0-alpha-11-SNAPSHOT + + + org.codehaus.plexus.security + plexus-security-system + 1.0-alpha-11-SNAPSHOT + + + org.codehaus.plexus.security + plexus-security-system + 1.0-alpha-11-SNAPSHOT + + + org.codehaus.plexus.security + plexus-security-ui-web + 1.0-alpha-11-SNAPSHOT + war + + + org.codehaus.plexus.security + plexus-security-ui-web-integration + 1.0-alpha-11-SNAPSHOT + + + org.codehaus.plexus.security + plexus-security-ui-web-taglib + 1.0-alpha-11-SNAPSHOT + + + org.codehaus.plexus.security + plexus-security-authentication-provider-user-manager + 1.0-alpha-11-SNAPSHOT + + + org.codehaus.plexus.security + plexus-security-authentication-provider-keystore + 1.0-alpha-11-SNAPSHOT + + + org.codehaus.plexus.security + plexus-security-user-management-api + 1.0-alpha-11-SNAPSHOT + + + org.codehaus.plexus.security + plexus-security-user-management-provider-jdo + 1.0-alpha-11-SNAPSHOT + + + org.codehaus.plexus.security + plexus-security-authorization-rbac-store-cached + 1.0-alpha-11-SNAPSHOT + + + org.codehaus.plexus.security + plexus-security-authorization-rbac-store-jdo + 1.0-alpha-11-SNAPSHOT + + + org.codehaus.plexus.security + plexus-security-authorization-api + 1.0-alpha-11-SNAPSHOT + + + org.codehaus.plexus.security + plexus-security-authorization-rbac-authorizer + 1.0-alpha-11-SNAPSHOT + + + org.codehaus.plexus.security + plexus-security-keys-jdo + 1.0-alpha-11-SNAPSHOT + + + commons-lang + commons-lang + 2.2 + + + commons-io + commons-io + 1.2 + + + org.apache.derby + derby + 10.1.3.1 + + + + + + apache.releases + Apache Release Distribution Repository + scp://people.apache.org/www/people.apache.org/repo/m2-ibiblio-rsync-repository + + + apache.snapshots + Apache Development Snapshot Repository + scp://people.apache.org/www/people.apache.org/repo/m2-snapshot-repository + + + apache.website + scpexe://people.apache.org/www/maven.apache.org/archiva/archiva-base/archiva-model + + + + 1.0-alpha-11-SNAPSHOT + 1.0-beta-2 + 2.0.5 + 1.0-SNAPSHOT + +
diff --git a/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/metadata/RepositoryMetadataReaderTest.java b/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/metadata/RepositoryMetadataReaderTest.java index 5b6af02a8..676872b2d 100644 --- a/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/metadata/RepositoryMetadataReaderTest.java +++ b/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/metadata/RepositoryMetadataReaderTest.java @@ -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" ) ); diff --git a/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/project/AllTests.java b/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/project/AllTests.java index a9646e935..7ff3c1ccf 100644 --- a/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/project/AllTests.java +++ b/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/project/AllTests.java @@ -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; } diff --git a/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/project/ProjectModel400ReaderTest.java b/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/project/ProjectModel400ReaderTest.java deleted file mode 100644 index a413ed2a1..000000000 --- a/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/project/ProjectModel400ReaderTest.java +++ /dev/null @@ -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 Joakim Erdfelt - * @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" ) ); - } -} diff --git a/archiva-consumer-api/src/test/java/org/apache/maven/archiva/consumers/AbstractGenericConsumerTestCase.java b/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/project/filters/AllTests.java similarity index 59% rename from archiva-consumer-api/src/test/java/org/apache/maven/archiva/consumers/AbstractGenericConsumerTestCase.java rename to archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/project/filters/AllTests.java index bbb5610bd..a4bf59f96 100644 --- a/archiva-consumer-api/src/test/java/org/apache/maven/archiva/consumers/AbstractGenericConsumerTestCase.java +++ b/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/project/filters/AllTests.java @@ -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 Joakim Erdfelt * @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(); - } } diff --git a/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/project/filters/EffectiveProjectModelBuilderTest.java b/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/project/filters/EffectiveProjectModelBuilderTest.java new file mode 100644 index 000000000..fd82b345a --- /dev/null +++ b/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/project/filters/EffectiveProjectModelBuilderTest.java @@ -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 Joakim Erdfelt + * @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 ) ); + } + } +} diff --git a/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/project/filters/ProjectModelExpressionExpanderTest.java b/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/project/filters/ProjectModelExpressionExpanderTest.java new file mode 100644 index 000000000..ed06ac95a --- /dev/null +++ b/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/project/filters/ProjectModelExpressionExpanderTest.java @@ -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 Joakim Erdfelt + * @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; + } + +} diff --git a/archiva-consumer-api/src/test/java/org/apache/maven/archiva/consumers/AllTests.java b/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/project/readers/AllTests.java similarity index 87% rename from archiva-consumer-api/src/test/java/org/apache/maven/archiva/consumers/AllTests.java rename to archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/project/readers/AllTests.java index 783fb8547..0c55a71c7 100644 --- a/archiva-consumer-api/src/test/java/org/apache/maven/archiva/consumers/AllTests.java +++ b/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/project/readers/AllTests.java @@ -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; } diff --git a/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/project/readers/ProjectModel400ReaderTest.java b/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/project/readers/ProjectModel400ReaderTest.java new file mode 100644 index 000000000..3735ea766 --- /dev/null +++ b/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/project/readers/ProjectModel400ReaderTest.java @@ -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 Joakim Erdfelt + * @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() ); + } +} diff --git a/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/scanner/CentralScannerTiming.java b/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/scanner/CentralScannerTiming.java deleted file mode 100644 index 1472313e1..000000000 --- a/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/scanner/CentralScannerTiming.java +++ /dev/null @@ -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 Joakim Erdfelt - * @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 */ - } - } -} diff --git a/archiva-base/archiva-repository-layer/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-applet/1.0-SNAPSHOT/archiva-applet-1.0-SNAPSHOT.pom b/archiva-base/archiva-repository-layer/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-applet/1.0-SNAPSHOT/archiva-applet-1.0-SNAPSHOT.pom new file mode 100644 index 000000000..d48ebf7a8 --- /dev/null +++ b/archiva-base/archiva-repository-layer/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-applet/1.0-SNAPSHOT/archiva-applet-1.0-SNAPSHOT.pom @@ -0,0 +1,69 @@ + + + + + 4.0.0 + + org.apache.maven.archiva + archiva + 1.0-SNAPSHOT + + archiva-applet + Archiva Applet + + Applet for performing local operations on files such as creating a checksum of an artifact + before uploading it. + + + + + org.apache.maven.plugins + maven-jar-plugin + 2.1 + + src/keystore/keystore + mykey + password + password + + + + + sign + + + + + + org.codehaus.mojo + cobertura-maven-plugin + + + + + **/** + + + + + + + diff --git a/archiva-base/archiva-repository-layer/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-base/1.0-SNAPSHOT/archiva-base-1.0-SNAPSHOT.pom b/archiva-base/archiva-repository-layer/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-base/1.0-SNAPSHOT/archiva-base-1.0-SNAPSHOT.pom new file mode 100644 index 000000000..cd51f1edc --- /dev/null +++ b/archiva-base/archiva-repository-layer/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-base/1.0-SNAPSHOT/archiva-base-1.0-SNAPSHOT.pom @@ -0,0 +1,42 @@ + + + + + 4.0.0 + + org.apache.maven.archiva + archiva-parent + 1.0-SNAPSHOT + ../pom.xml + + + archiva-base + Archiva Base + pom + + + archiva-common + archiva-configuration + archiva-consumers + archiva-indexer + archiva-model + + archiva-repository-layer + archiva-xml-tools + + diff --git a/archiva-base/archiva-repository-layer/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-cli/1.0-SNAPSHOT/archiva-cli-1.0-SNAPSHOT.pom b/archiva-base/archiva-repository-layer/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-cli/1.0-SNAPSHOT/archiva-cli-1.0-SNAPSHOT.pom new file mode 100644 index 000000000..115bc99ea --- /dev/null +++ b/archiva-base/archiva-repository-layer/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-cli/1.0-SNAPSHOT/archiva-cli-1.0-SNAPSHOT.pom @@ -0,0 +1,68 @@ + + + + + + org.apache.maven.archiva + archiva-parent + 1.0-SNAPSHOT + + 4.0.0 + archiva-cli + Archiva Command Line Client + + + org.apache.maven.archiva + archiva-converter + + + org.apache.maven.archiva + archiva-repository-layer + + + org.codehaus.plexus + plexus-component-api + + + org.codehaus.plexus + plexus-cli + 1.0 + + + commons-lang + commons-lang + + + + + + maven-assembly-plugin + + src/main/assembly/archiva-cli-assembly.xml + + + org.apache.maven.archiva.cli.ArchivaCli + + + + + + + diff --git a/archiva-base/archiva-repository-layer/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-common/1.0-SNAPSHOT/archiva-common-1.0-SNAPSHOT.pom b/archiva-base/archiva-repository-layer/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-common/1.0-SNAPSHOT/archiva-common-1.0-SNAPSHOT.pom new file mode 100644 index 000000000..17a20abd5 --- /dev/null +++ b/archiva-base/archiva-repository-layer/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-common/1.0-SNAPSHOT/archiva-common-1.0-SNAPSHOT.pom @@ -0,0 +1,98 @@ + + + + + + org.apache.maven.archiva + archiva-base + 1.0-SNAPSHOT + + 4.0.0 + archiva-common + Archiva Base :: Common + + + + org.codehaus.plexus + plexus-component-api + + + + commons-lang + commons-lang + + + org.codehaus.plexus + plexus-container-default + + + + + + + org.codehaus.plexus + plexus-maven-plugin + + + + + diff --git a/archiva-base/archiva-repository-layer/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-configuration/1.0-SNAPSHOT/archiva-configuration-1.0-SNAPSHOT.pom b/archiva-base/archiva-repository-layer/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-configuration/1.0-SNAPSHOT/archiva-configuration-1.0-SNAPSHOT.pom new file mode 100644 index 000000000..790d0cfa4 --- /dev/null +++ b/archiva-base/archiva-repository-layer/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-configuration/1.0-SNAPSHOT/archiva-configuration-1.0-SNAPSHOT.pom @@ -0,0 +1,109 @@ + + + + + + org.apache.maven.archiva + archiva-base + 1.0-SNAPSHOT + + 4.0.0 + archiva-configuration + Archiva Base :: Configuration + + + org.codehaus.plexus + plexus-component-api + + + org.codehaus.plexus + plexus-utils + + + commons-lang + commons-lang + + + commons-io + commons-io + + + org.codehaus.plexus.registry + plexus-registry-api + 1.0-alpha-2-SNAPSHOT + + + org.codehaus.plexus.registry + plexus-registry-commons + 1.0-alpha-2-SNAPSHOT + test + + + + easymock + easymock + 1.2_Java1.3 + test + + + org.codehaus.plexus + plexus-container-default + test + + + + + + org.codehaus.modello + modello-maven-plugin + 1.0-alpha-15-SNAPSHOT + + + + java + registry-reader + registry-writer + + + + + 1.0.0 + src/main/mdo/configuration.mdo + + + + org.codehaus.mojo + cobertura-maven-plugin + + + + + org/apache/maven/archiva/configuration/io/** + org/apache/maven/archiva/configuration/*RepositoryConfiguration.* + org/apache/maven/archiva/configuration/Configuration.* + org/apache/maven/archiva/configuration/Proxy.* + + + + + + + diff --git a/archiva-base/archiva-repository-layer/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-consumer-api/1.0-SNAPSHOT/archiva-consumer-api-1.0-SNAPSHOT.pom b/archiva-base/archiva-repository-layer/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-consumer-api/1.0-SNAPSHOT/archiva-consumer-api-1.0-SNAPSHOT.pom new file mode 100644 index 000000000..f331ed074 --- /dev/null +++ b/archiva-base/archiva-repository-layer/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-consumer-api/1.0-SNAPSHOT/archiva-consumer-api-1.0-SNAPSHOT.pom @@ -0,0 +1,38 @@ + + + + + 4.0.0 + + org.apache.maven.archiva + archiva-consumers + 1.0-SNAPSHOT + ../pom.xml + + + archiva-consumer-api + Archiva Consumer API + jar + + + + org.apache.maven.archiva + archiva-model + + + diff --git a/archiva-base/archiva-repository-layer/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-consumers/1.0-SNAPSHOT/archiva-consumers-1.0-SNAPSHOT.pom b/archiva-base/archiva-repository-layer/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-consumers/1.0-SNAPSHOT/archiva-consumers-1.0-SNAPSHOT.pom new file mode 100644 index 000000000..8969b9ed3 --- /dev/null +++ b/archiva-base/archiva-repository-layer/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-consumers/1.0-SNAPSHOT/archiva-consumers-1.0-SNAPSHOT.pom @@ -0,0 +1,41 @@ + + + + + 4.0.0 + + org.apache.maven.archiva + archiva-base + 1.0-SNAPSHOT + ../pom.xml + + + archiva-consumers + Archiva Consumers + pom + + + archiva-consumer-api + archiva-core-consumers + + + diff --git a/archiva-base/archiva-repository-layer/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-converter/1.0-SNAPSHOT/archiva-converter-1.0-SNAPSHOT.pom b/archiva-base/archiva-repository-layer/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-converter/1.0-SNAPSHOT/archiva-converter-1.0-SNAPSHOT.pom new file mode 100644 index 000000000..49bde7bd2 --- /dev/null +++ b/archiva-base/archiva-repository-layer/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-converter/1.0-SNAPSHOT/archiva-converter-1.0-SNAPSHOT.pom @@ -0,0 +1,79 @@ + + + + + + org.apache.maven.archiva + archiva + 1.0-SNAPSHOT + + 4.0.0 + archiva-converter + Archiva Repository Converter + + + org.apache.maven.archiva + archiva-discoverer + + + org.codehaus.plexus + plexus-utils + + + org.codehaus.plexus + plexus-component-api + + + org.apache.maven + maven-artifact + + + org.apache.maven.shared + maven-model-converter + + + org.codehaus.plexus + plexus-digest + + + org.codehaus.plexus + plexus-i18n + 1.0-beta-6 + + + commons-io + commons-io + + + + hsqldb + hsqldb + 1.7.3.3 + test + + + + org.codehaus.plexus + plexus-container-default + test + + + diff --git a/archiva-base/archiva-repository-layer/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-core-consumers/1.0-SNAPSHOT/archiva-core-consumers-1.0-SNAPSHOT.pom b/archiva-base/archiva-repository-layer/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-core-consumers/1.0-SNAPSHOT/archiva-core-consumers-1.0-SNAPSHOT.pom new file mode 100644 index 000000000..182578f57 --- /dev/null +++ b/archiva-base/archiva-repository-layer/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-core-consumers/1.0-SNAPSHOT/archiva-core-consumers-1.0-SNAPSHOT.pom @@ -0,0 +1,50 @@ + + + + + 4.0.0 + + org.apache.maven.archiva + archiva-consumers + 1.0-SNAPSHOT + ../pom.xml + + + archiva-core-consumers + Archiva Consumers :: Core Consumers + jar + + + + org.apache.maven.archiva + archiva-configuration + + + org.apache.maven.archiva + archiva-consumer-api + + + org.apache.maven.archiva + archiva-repository-layer + + + org.codehaus.plexus + plexus-digest + + + diff --git a/archiva-base/archiva-repository-layer/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-core/1.0-SNAPSHOT/archiva-core-1.0-SNAPSHOT.pom b/archiva-base/archiva-repository-layer/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-core/1.0-SNAPSHOT/archiva-core-1.0-SNAPSHOT.pom new file mode 100644 index 000000000..18b98fc7b --- /dev/null +++ b/archiva-base/archiva-repository-layer/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-core/1.0-SNAPSHOT/archiva-core-1.0-SNAPSHOT.pom @@ -0,0 +1,113 @@ + + + + + + archiva + org.apache.maven.archiva + 1.0-SNAPSHOT + + 4.0.0 + archiva-core + Archiva Core + + + org.apache.maven.archiva + archiva-configuration + + + org.apache.maven.archiva + archiva-discoverer + + + org.apache.maven.archiva + archiva-proxy + + + org.apache.maven.archiva + archiva-reports-standard + + + org.codehaus.plexus + plexus-component-api + + + org.codehaus.plexus + plexus-quartz + 1.0-alpha-3 + + + org.codehaus.plexus.cache + plexus-cache-ehcache + 1.0-alpha-1-SNAPSHOT + + + org.codehaus.plexus + plexus-taskqueue + 1.0-alpha-6 + + + commons-lang + commons-lang + + + org.codehaus.plexus.registry + plexus-registry-commons + 1.0-SNAPSHOT + test + + + + hsqldb + hsqldb + 1.7.3.3 + test + + + + org.codehaus.plexus + plexus-container-default + test + + + + + + org.codehaus.plexus + plexus-maven-plugin + + + merge + + merge-descriptors + + + + ${basedir}/src/main/resources/META-INF/plexus/components.xml + ${project.build.directory}/generated-resources/plexus/META-INF/plexus/components.xml + + + + + + + + diff --git a/archiva-base/archiva-repository-layer/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-discoverer/1.0-SNAPSHOT/archiva-discoverer-1.0-SNAPSHOT.pom b/archiva-base/archiva-repository-layer/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-discoverer/1.0-SNAPSHOT/archiva-discoverer-1.0-SNAPSHOT.pom new file mode 100644 index 000000000..8a96e39c5 --- /dev/null +++ b/archiva-base/archiva-repository-layer/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-discoverer/1.0-SNAPSHOT/archiva-discoverer-1.0-SNAPSHOT.pom @@ -0,0 +1,65 @@ + + + + + + org.apache.maven.archiva + archiva + 1.0-SNAPSHOT + + 4.0.0 + archiva-discoverer + Archiva Discoverer + + + org.apache.maven.archiva + archiva-common + + + org.codehaus.plexus + plexus-utils + + + org.codehaus.plexus + plexus-container-default + + + org.apache.maven + maven-artifact + + + org.apache.maven + maven-repository-metadata + + + org.apache.maven + maven-artifact-manager + + + org.apache.maven + maven-model + + + commons-lang + commons-lang + + + diff --git a/archiva-base/archiva-repository-layer/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-indexer/1.0-SNAPSHOT/archiva-indexer-1.0-SNAPSHOT.pom b/archiva-base/archiva-repository-layer/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-indexer/1.0-SNAPSHOT/archiva-indexer-1.0-SNAPSHOT.pom new file mode 100644 index 000000000..7d77d445f --- /dev/null +++ b/archiva-base/archiva-repository-layer/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-indexer/1.0-SNAPSHOT/archiva-indexer-1.0-SNAPSHOT.pom @@ -0,0 +1,81 @@ + + + + + + org.apache.maven.archiva + archiva-base + 1.0-SNAPSHOT + + 4.0.0 + archiva-indexer + Archiva Base :: Indexer + + + org.apache.maven.archiva + archiva-configuration + + + org.apache.maven.archiva + archiva-model + + + org.apache.lucene + lucene-core + 2.0.0 + + + org.codehaus.plexus + plexus-utils + + + org.codehaus.plexus + plexus-container-default + + + org.codehaus.plexus + plexus-digest + + + commons-lang + commons-lang + + + commons-io + commons-io + + + + + + org.codehaus.mojo + cobertura-maven-plugin + + + + 80 + 80 + + + + + + diff --git a/archiva-base/archiva-repository-layer/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-model/1.0-SNAPSHOT/archiva-model-1.0-SNAPSHOT.pom b/archiva-base/archiva-repository-layer/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-model/1.0-SNAPSHOT/archiva-model-1.0-SNAPSHOT.pom new file mode 100644 index 000000000..52c185ea7 --- /dev/null +++ b/archiva-base/archiva-repository-layer/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-model/1.0-SNAPSHOT/archiva-model-1.0-SNAPSHOT.pom @@ -0,0 +1,159 @@ + + + + + + org.apache.maven.archiva + archiva-base + 1.0-SNAPSHOT + + 4.0.0 + archiva-model + Archiva Base :: Model + + + org.apache.maven.archiva + archiva-common + + + org.codehaus.plexus + plexus-utils + + + javax.jdo + jdo2-api + 2.0 + + + org.codehaus.plexus + plexus-container-default + + + commons-lang + commons-lang + + + commons-io + commons-io + + + + + + org.codehaus.plexus + plexus-maven-plugin + + + org.codehaus.modello + modello-maven-plugin + 1.0-alpha-15-SNAPSHOT + + 1.0.0 + false + src/main/mdo/archiva-base.xml + + + + archiva-base + + java + xsd + jpox-jdo-mapping + jpox-metadata-class + + + + + + + org.codehaus.mojo + jpox-maven-plugin + 1.1.6 + + + org.apache.derby + derby + 10.2.1.6 + + + + + create-ddl + generate-test-resources + + schema-create + + + ${basedir}/target/classes/org/apache/maven/archiva/model/schema.ddl + + + javax.jdo.option.ConnectionDriverName + org.apache.derby.jdbc.EmbeddedDriver + + + javax.jdo.option.ConnectionURL + jdbc:derby:target/jdo-schema-create;create=true + + + javax.jdo.option.ConnectionUserName + sa + + + javax.jdo.option.ConnectionPassword + + + + log4j.configuration + ${basedir}/src/test/resources/log4j.xml + + + org.jpox.autoCreateTables + true + + + + + + enhance + + enhance + + + + + + org.codehaus.mojo + cobertura-maven-plugin + + + + + org/apache/maven/archiva/reporting/model/** + + + + + + + diff --git a/archiva-base/archiva-repository-layer/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-parent/1.0-SNAPSHOT/archiva-parent-1.0-SNAPSHOT.pom b/archiva-base/archiva-repository-layer/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-parent/1.0-SNAPSHOT/archiva-parent-1.0-SNAPSHOT.pom new file mode 100644 index 000000000..c3a69b1a2 --- /dev/null +++ b/archiva-base/archiva-repository-layer/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-parent/1.0-SNAPSHOT/archiva-parent-1.0-SNAPSHOT.pom @@ -0,0 +1,567 @@ + + + + + 4.0.0 + + org.apache.maven + maven-parent + 4 + ../pom/maven/pom.xml + + org.apache.maven.archiva + archiva-parent + pom + Archiva + 1.0-SNAPSHOT + + Archiva is an application for managing one or more remote repositories, including + administration, artifact handling, + browsing and searching. + + http://maven.apache.org/archiva + + jira + http://jira.codehaus.org/browse/MRM + + + + Maven Archiva User List + archiva-users-subscribe@maven.apache.org + archiva-users-unsubscribe@maven.apache.org + archiva-users@maven.apache.org + http://mail-archives.apache.org/mod_mbox/maven-archiva-users + + + Maven Archiva Developer List + archiva-dev-subscribe@maven.apache.org + archiva-dev-unsubscribe@maven.apache.org + archiva-dev@maven.apache.org + http://mail-archives.apache.org/mod_mbox/maven-archiva-dev + + + Maven Archiva Commits List + archiva-commits-subscribe@maven.apache.org + archiva-commits-unsubscribe@maven.apache.org + archiva-commits@maven.apache.org + http://mail-archives.apache.org/mod_mbox/maven-archiva-commits + + + + scm:svn:http://svn.apache.org/repos/asf/maven/archiva/trunk + scm:svn:https://svn.apache.org/repos/asf/maven/archiva/trunk + http://svn.apache.org/viewcvs.cgi/maven/archiva/trunk + + + + apache.website + scpexe://people.apache.org/www/maven.apache.org/archiva/ + + + + + + org.codehaus.plexus + plexus-maven-plugin + 1.3.3 + + + generate + + descriptor + + + + + + maven-compiler-plugin + + 1.4 + 1.4 + + + + maven-surefire-plugin + 2.2 + + + + + + maven-idea-plugin + + 1.4 + + + + maven-release-plugin + + https://svn.apache.org/repos/asf/maven/archiva/tags + + + + + + + archiva-api + archiva-base + archiva-database + archiva-reporting + archiva-web + archiva-cli + maven-meeper + + + + junit + junit + 3.8.1 + test + + + + + + org.apache.maven.shared + maven-app-configuration-model + 1.0-SNAPSHOT + + + org.apache.maven.shared + maven-app-configuration-web + 1.0-SNAPSHOT + + + org.codehaus.plexus + plexus-container-default + 1.0-alpha-18 + + + org.codehaus.plexus + plexus-component-api + 1.0-alpha-18 + + + org.codehaus.plexus + plexus-utils + 1.4 + + + org.slf4j + slf4j-log4j12 + 1.2 + + + org.apache.maven + maven-repository-metadata + ${maven.version} + + + org.apache.maven + maven-model + ${maven.version} + + + org.apache.maven + maven-artifact + ${maven.version} + + + org.apache.maven + maven-artifact-manager + ${maven.version} + + + org.apache.maven + maven-project + ${maven.version} + + + org.apache.maven.shared + maven-model-converter + 2.0.5-SNAPSHOT + + + org.apache.maven.wagon + wagon-provider-api + ${wagon.version} + + + org.apache.maven.wagon + wagon-ssh + ${wagon.version} + + + org.apache.maven.wagon + wagon-file + ${wagon.version} + + + org.apache.maven.wagon + wagon-http-lightweight + ${wagon.version} + + + org.apache.maven.archiva + archiva-common + ${archiva.version} + + + org.apache.maven.archiva + archiva-core + ${archiva.version} + + + org.apache.maven.archiva + archiva-reports-standard + ${archiva.version} + + + org.apache.maven.archiva + archiva-model + ${archiva.version} + + + org.apache.maven.archiva + archiva-database + ${archiva.version} + + + org.apache.maven.archiva + archiva-consumer-api + ${archiva.version} + + + org.apache.maven.archiva + archiva-model + ${archiva.version} + + + org.apache.maven.archiva + archiva-database + ${archiva.version} + + + org.apache.maven.archiva + archiva-discoverer + ${archiva.version} + + + org.apache.maven.archiva + archiva-repository-layer + ${archiva.version} + + + org.apache.maven.archiva + archiva-indexer + ${archiva.version} + + + org.apache.maven.archiva + archiva-proxy + ${archiva.version} + + + org.apache.maven.archiva + archiva-applet + ${archiva.version} + + + org.apache.maven.archiva + archiva-security + ${archiva.version} + + + org.apache.maven.archiva + archiva-configuration + ${archiva.version} + + + org.apache.maven.archiva + archiva-converter + ${archiva.version} + + + org.apache.maven.archiva + archiva-utils + ${archiva.version} + + + org.apache.maven.archiva + archiva-webapp + ${archiva.version} + war + + + org.codehaus.plexus + plexus-digest + 1.1-SNAPSHOT + + + org.codehaus.plexus.security + plexus-security-rbac-profile + ${plexus-security.version} + + + org.codehaus.plexus.security + plexus-security-system + ${plexus-security.version} + + + org.codehaus.plexus.security + plexus-security-system + ${plexus-security.version} + + + org.codehaus.plexus.security + plexus-security-ui-web + ${plexus-security.version} + war + + + org.codehaus.plexus.security + plexus-security-ui-web-integration + ${plexus-security.version} + + + org.codehaus.plexus.security + plexus-security-ui-web-taglib + ${plexus-security.version} + + + org.codehaus.plexus.security + plexus-security-authentication-provider-user-manager + ${plexus-security.version} + + + org.codehaus.plexus.security + plexus-security-authentication-provider-keystore + ${plexus-security.version} + + + org.codehaus.plexus.security + plexus-security-user-management-api + ${plexus-security.version} + + + org.codehaus.plexus.security + plexus-security-user-management-provider-jdo + ${plexus-security.version} + + + org.codehaus.plexus.security + plexus-security-authorization-rbac-store-cached + ${plexus-security.version} + + + org.codehaus.plexus.security + plexus-security-authorization-rbac-store-jdo + ${plexus-security.version} + + + org.codehaus.plexus.security + plexus-security-authorization-api + ${plexus-security.version} + + + org.codehaus.plexus.security + plexus-security-authorization-rbac-authorizer + ${plexus-security.version} + + + org.codehaus.plexus.security + plexus-security-keys-jdo + ${plexus-security.version} + + + commons-lang + commons-lang + 2.2 + + + commons-io + commons-io + 1.2 + + + org.apache.derby + derby + 10.1.3.1 + + + + + + + org.codehaus.mojo + cobertura-maven-plugin + + + maven-checkstyle-plugin + + config/maven_checks.xml + + + + org.codehaus.mojo + changelog-maven-plugin + + + org.codehaus.mojo + taglist-maven-plugin + + + maven-jxr-plugin + + true + + + + maven-surefire-report-plugin + + + maven-javadoc-plugin + + 1.4 + true + + + + maven-pmd-plugin + + + + + + + ci + + + enableCiProfile + true + + + + + + org.apache.maven.plugins + maven-pmd-plugin + + + process-sources + + + cpd-check + + + + + + org.apache.maven.plugins + maven-checkstyle-plugin + + + process-sources + + + + + + + + org.codehaus.mojo + cobertura-maven-plugin + + + + 77 + 95 + + + + + **/*$* + + + + + + clean + + clean + + + + check + + check + + + + + + + + + + + codehaus.org + http://repository.codehaus.org + + true + + + false + + + + + snapshots.codehaus.org + http://snapshots.repository.codehaus.org + + false + + + true + + + + + + + snapshots.codehaus.org + http://snapshots.repository.codehaus.org + + false + + + true + + + + + 1.0-SNAPSHOT + 2.0.5 + 1.0-beta-2 + 1.0-alpha-11-SNAPSHOT + + diff --git a/archiva-base/archiva-repository-layer/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-plexus-application/1.0-SNAPSHOT/archiva-plexus-application-1.0-SNAPSHOT.pom b/archiva-base/archiva-repository-layer/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-plexus-application/1.0-SNAPSHOT/archiva-plexus-application-1.0-SNAPSHOT.pom new file mode 100644 index 000000000..21edbff05 --- /dev/null +++ b/archiva-base/archiva-repository-layer/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-plexus-application/1.0-SNAPSHOT/archiva-plexus-application-1.0-SNAPSHOT.pom @@ -0,0 +1,62 @@ + + + + + + archiva + org.apache.maven.archiva + 1.0-SNAPSHOT + + 4.0.0 + archiva-plexus-application + plexus-application + Archiva Plexus Application + + + + org.codehaus.plexus + plexus-appserver-maven-plugin + 2.0-alpha-7 + true + + src/conf/application.xml + src/conf + src/plexus.properties + archiva + src/conf/plexus.xml + src/plexus.properties + target/plexus-archiva-runtime + + + + + + + org.apache.maven.archiva + archiva-webapp + war + + + + + ${project.version} + + diff --git a/archiva-base/archiva-repository-layer/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-plexus-runtime/1.0-SNAPSHOT/archiva-plexus-runtime-1.0-SNAPSHOT.pom b/archiva-base/archiva-repository-layer/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-plexus-runtime/1.0-SNAPSHOT/archiva-plexus-runtime-1.0-SNAPSHOT.pom new file mode 100644 index 000000000..1c675dc62 --- /dev/null +++ b/archiva-base/archiva-repository-layer/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-plexus-runtime/1.0-SNAPSHOT/archiva-plexus-runtime-1.0-SNAPSHOT.pom @@ -0,0 +1,145 @@ + + + + + + org.apache.maven.archiva + archiva + 1.0-SNAPSHOT + + 4.0.0 + archiva-plexus-runtime + Archiva Runtime Generator + + + org.codehaus.plexus + plexus-container-default + + + org.codehaus.plexus + plexus-utils + + + org.codehaus.plexus + plexus-appserver-host + 2.0-alpha-7 + + + + org.codehaus.plexus + plexus-appserver-service-jetty + 2.0-alpha-7 + plexus-service + + + + org.apache.maven.archiva + archiva-plexus-application + ${project.version} + plexus-application + + + + + log4j + log4j + 1.2.8 + + + commons-logging + commons-logging-api + 1.0.4 + + + org.apache.derby + derby + runtime + + + org.codehaus.plexus + plexus-naming + 1.0-alpha-3-SNAPSHOT + runtime + + + javax.mail + mail + 1.4 + runtime + + + + + + org.codehaus.plexus + plexus-appserver-maven-plugin + 2.0-alpha-7 + true + + + process-resources + + assemble-runtime + add-services + add-apps + + + + + src/conf/plexus.xml + src/plexus.properties + target/plexus-archiva-runtime + + commons-logging:commons-logging-api + log4j:log4j + org.apache.derby:derby + org.codehaus.plexus:plexus-naming + commons-pool:commons-pool + commons-dbcp:commons-dbcp + commons-collections:commons-collections + directory-naming:naming-core + directory-naming:naming-factory + directory-naming:naming-java + directory-naming:naming-config + javax.mail:mail + javax.activation:activation + + + + + maven-assembly-plugin + 2.1 + + + package + + single + + + + + src/main/assembly/bin.xml + archiva + + + + + diff --git a/archiva-consumer-api/pom.xml b/archiva-base/archiva-repository-layer/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-proxy/1.0-SNAPSHOT/archiva-proxy-1.0-SNAPSHOT.pom old mode 100755 new mode 100644 similarity index 75% rename from archiva-consumer-api/pom.xml rename to archiva-base/archiva-repository-layer/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-proxy/1.0-SNAPSHOT/archiva-proxy-1.0-SNAPSHOT.pom index e20018f76..23488ee0a --- a/archiva-consumer-api/pom.xml +++ b/archiva-base/archiva-repository-layer/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-proxy/1.0-SNAPSHOT/archiva-proxy-1.0-SNAPSHOT.pom @@ -26,36 +26,35 @@ 1.0-SNAPSHOT 4.0.0 - archiva-consumer-api-OLD - Archiva Consumer API + archiva-proxy + Archiva Proxy org.apache.maven.archiva - archiva-model + archiva-common - org.codehaus.plexus - plexus-utils + org.apache.maven.wagon + wagon-file + test + + + org.apache.maven.wagon + wagon-provider-api org.codehaus.plexus - plexus-container-default + plexus-digest - commons-lang - commons-lang + easymock + easymock + 1.2_Java1.3 + test commons-io commons-io - - - - org.codehaus.plexus - plexus-maven-plugin - - - diff --git a/archiva-base/archiva-repository-layer/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-reports-standard/1.0-SNAPSHOT/archiva-reports-standard-1.0-SNAPSHOT.pom b/archiva-base/archiva-repository-layer/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-reports-standard/1.0-SNAPSHOT/archiva-reports-standard-1.0-SNAPSHOT.pom new file mode 100644 index 000000000..24eb19954 --- /dev/null +++ b/archiva-base/archiva-repository-layer/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-reports-standard/1.0-SNAPSHOT/archiva-reports-standard-1.0-SNAPSHOT.pom @@ -0,0 +1,176 @@ + + + + + + org.apache.maven.archiva + archiva + 1.0-SNAPSHOT + + 4.0.0 + archiva-reports-standard + Archiva Standard Reports + + + org.codehaus.plexus + plexus-utils + + + org.codehaus.plexus + plexus-container-default + + + org.apache.maven + maven-artifact + + + org.apache.maven + maven-artifact-manager + + + org.apache.maven + maven-model + + + org.apache.maven + maven-repository-metadata + + + org.apache.maven.wagon + wagon-provider-api + + + org.apache.maven.archiva + archiva-repository-layer + + + org.apache.maven.archiva + archiva-indexer + + + org.apache.maven.archiva + archiva-discoverer + + + commons-lang + commons-lang + + + commons-io + commons-io + + + org.codehaus.plexus + plexus-jdo2 + 1.0-alpha-8 + + + xerces + xercesImpl + + + xerces + xmlParserAPIs + + + + + jpox + jpox + 1.1.6 + compile + + + + javax.sql + jdbc-stdext + + + + + + hsqldb + hsqldb + 1.7.3.3 + test + + + + + + org.codehaus.modello + modello-maven-plugin + 1.0-alpha-14-SNAPSHOT + + 1.0.0 + false + src/main/mdo/reporting.mdo + + + + modello-java + + java + jpox-metadata-class + + + + + jpox-jdo-mapping + + jpox-jdo-mapping + + + ${basedir}/target/classes/org/apache/maven/archiva/reporting/model/ + + + + + + org.codehaus.mojo + jpox-maven-plugin + 1.1.6-SNAPSHOT + + + + enhance + + + + + + org.codehaus.mojo + cobertura-maven-plugin + + + + + org/apache/maven/archiva/reporting/model/** + + + + + + + diff --git a/archiva-base/archiva-repository-layer/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-repository-layer/1.0-SNAPSHOT/archiva-repository-layer-1.0-SNAPSHOT.pom b/archiva-base/archiva-repository-layer/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-repository-layer/1.0-SNAPSHOT/archiva-repository-layer-1.0-SNAPSHOT.pom new file mode 100644 index 000000000..6ec87f431 --- /dev/null +++ b/archiva-base/archiva-repository-layer/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-repository-layer/1.0-SNAPSHOT/archiva-repository-layer-1.0-SNAPSHOT.pom @@ -0,0 +1,103 @@ + + + + + + org.apache.maven.archiva + archiva-base + 1.0-SNAPSHOT + + 4.0.0 + archiva-repository-layer + Archiva Repository Interface Layer + + + org.apache.maven.archiva + archiva-consumer-api + + + org.apache.maven.archiva + archiva-model + 1.0-SNAPSHOT + + + org.apache.maven.archiva + archiva-xml-tools + 1.0-SNAPSHOT + + + org.codehaus.plexus + plexus-utils + + + org.codehaus.plexus.cache + plexus-cache-api + 1.0-alpha-2-SNAPSHOT + compile + + + org.codehaus.plexus.cache + plexus-cache-ehcache + 1.0-alpha-2-SNAPSHOT + compile + + + + org.slf4j + slf4j-log4j12 + + + + + + org.codehaus.plexus + plexus-maven-plugin + + + merge + + merge-descriptors + + + + ${basedir}/src/main/resources/META-INF/plexus/components.xml + ${project.build.directory}/generated-resources/plexus/META-INF/plexus/components.xml + + + + + + + + diff --git a/archiva-base/archiva-repository-layer/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-security/1.0-SNAPSHOT/archiva-security-1.0-SNAPSHOT.pom b/archiva-base/archiva-repository-layer/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-security/1.0-SNAPSHOT/archiva-security-1.0-SNAPSHOT.pom new file mode 100644 index 000000000..78cbd1282 --- /dev/null +++ b/archiva-base/archiva-repository-layer/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-security/1.0-SNAPSHOT/archiva-security-1.0-SNAPSHOT.pom @@ -0,0 +1,45 @@ + + + + + + archiva + org.apache.maven.archiva + 1.0-SNAPSHOT + + 4.0.0 + archiva-security + Archiva Security Configuration + + + org.codehaus.plexus.security + plexus-security-rbac-profile + + + org.codehaus.plexus.security + plexus-security-system + + + org.codehaus.plexus + plexus-component-api + + + diff --git a/archiva-base/archiva-repository-layer/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-webapp/1.0-SNAPSHOT/archiva-webapp-1.0-SNAPSHOT.pom b/archiva-base/archiva-repository-layer/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-webapp/1.0-SNAPSHOT/archiva-webapp-1.0-SNAPSHOT.pom new file mode 100644 index 000000000..2d58dbf40 --- /dev/null +++ b/archiva-base/archiva-repository-layer/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-webapp/1.0-SNAPSHOT/archiva-webapp-1.0-SNAPSHOT.pom @@ -0,0 +1,335 @@ + + + + + 4.0.0 + + org.apache.maven.archiva + archiva + 1.0-SNAPSHOT + + archiva-webapp + war + Archiva Web Application + + + javax.servlet + servlet-api + 2.4 + provided + + + javax.servlet + jsp-api + 2.0 + provided + + + opensymphony + sitemesh + 2.2.1 + + + taglibs + standard + 1.1.2 + + + javax.servlet + jstl + 1.1.2 + + + org.apache.maven.shared + maven-app-configuration-model + + + org.apache.maven.shared + maven-app-configuration-web + + + org.codehaus.plexus + plexus-log4j-logging + 1.1-alpha-2 + runtime + + + commons-logging + commons-logging + 1.0.4 + runtime + + + commons-lang + commons-lang + 2.2 + + + org.apache.maven.wagon + wagon-http-lightweight + runtime + + + org.apache.maven.wagon + wagon-file + runtime + + + opensymphony + webwork + 2.2.4 + + + org.codehaus.plexus.registry + plexus-registry-commons + 1.0-SNAPSHOT + + + org.codehaus.plexus + plexus-component-api + + + org.codehaus.plexus + plexus-container-default + + + org.apache.maven.archiva + archiva-proxy + + + org.apache.maven.archiva + archiva-core + + + org.apache.maven.archiva + archiva-common + + + org.apache.maven.archiva + archiva-security + + + org.apache.maven.archiva + archiva-applet + + provided + + + org.apache.maven + maven-project + + + org.apache.maven.shared + maven-dependency-tree + 1.0-alpha-2 + + + + org.codehaus.plexus.security + plexus-security-ui-web + war + runtime + + + org.codehaus.plexus.security + plexus-security-ui-web-taglib + + + + org.codehaus.plexus.webdav + plexus-webdav-simple + 1.0-alpha-1-SNAPSHOT + + + org.codehaus.plexus + plexus-xwork-integration + 1.0-alpha-5 + + + org.codehaus.plexus + plexus-utils + + + org.apache.derby + derby + 10.1.3.1 + provided + + + javax.mail + mail + 1.4 + provided + + + javax.activation + activation + 1.1 + provided + + + + + + org.apache.maven.plugins + maven-clean-plugin + 2.1.1 + + + + + ${basedir}/src/main/webapp + + + META-INF + images/pss + + template/pss + + WEB-INF/classes + + WEB-INF/lib + + WEB-INF/database + + WEB-INF/logs + + pss + + css/pss + WEB-INF/jsp/pss + + WEB-INF/template/pss + + WEB-INF/logs + + WEB-INF/temp + + + + + + + + org.apache.maven.plugins + maven-war-plugin + 2.0.1 + + + false + META-INF/**,WEB-INF/web.xml,WEB-INF/classes/xwork.xml + + + + + compile + + + inplace + + + + + + org.mortbay.jetty + maven-jetty-plugin + 6.1.1 + + 10 + / + src/jetty-env.xml + + + 9091 + 60000 + + + + + appserver.base + ${project.build.directory}/appserver-base + + + derby.system.home + ${project.build.directory}/appserver-base/logs + + + + + + org.apache.derby + derby + 10.1.3.1 + + + + + org.codehaus.mojo + dependency-maven-plugin + + + copy + process-resources + + copy + + + + + ${project.groupId} + archiva-applet + ${project.version} + src/main/webapp + archiva-applet.jar + + + + + + + + org.codehaus.plexus + plexus-maven-plugin + + + + com.opensymphony.xwork.Action + per-lookup + + + + + + org.codehaus.mojo + cobertura-maven-plugin + + + + + **/** + + + + + + + diff --git a/archiva-base/archiva-repository-layer/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-xml-tools/1.0-SNAPSHOT/archiva-xml-tools-1.0-SNAPSHOT.pom b/archiva-base/archiva-repository-layer/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-xml-tools/1.0-SNAPSHOT/archiva-xml-tools-1.0-SNAPSHOT.pom new file mode 100644 index 000000000..efa42d3f0 --- /dev/null +++ b/archiva-base/archiva-repository-layer/src/test/repositories/default-repository/org/apache/maven/archiva/archiva-xml-tools/1.0-SNAPSHOT/archiva-xml-tools-1.0-SNAPSHOT.pom @@ -0,0 +1,79 @@ + + + + + + org.apache.maven.archiva + archiva-base + 1.0-SNAPSHOT + + 4.0.0 + archiva-xml-tools + Archiva Base :: XML Tools + + + org.apache.maven.archiva + archiva-common + + + dom4j + dom4j + 1.6.1 + + + jaxen + jaxen + 1.1 + + + org.codehaus.plexus + plexus-utils + + + org.slf4j + slf4j-log4j12 + + + + diff --git a/archiva-base/archiva-repository-layer/src/test/repositories/default-repository/org/apache/maven/archiva/archiva/1.0-SNAPSHOT/archiva-1.0-20061126.005254-2.pom b/archiva-base/archiva-repository-layer/src/test/repositories/default-repository/org/apache/maven/archiva/archiva/1.0-SNAPSHOT/archiva-1.0-20061126.005254-2.pom new file mode 100644 index 000000000..b99001024 --- /dev/null +++ b/archiva-base/archiva-repository-layer/src/test/repositories/default-repository/org/apache/maven/archiva/archiva/1.0-SNAPSHOT/archiva-1.0-20061126.005254-2.pom @@ -0,0 +1,506 @@ + + + + + 4.0.0 + + org.apache.maven + maven-parent + 4 + ../pom/maven/pom.xml + + org.apache.maven.archiva + archiva + pom + Archiva + 1.0-SNAPSHOT + + Archiva is an application for managing one or more remote repositories, including + administration, artifact handling, + browsing and searching. + + http://maven.apache.org/archiva + + jira + http://jira.codehaus.org/browse/MRM + + + + Maven Archiva User List + archiva-users-subscribe@maven.apache.org + archiva-users-unsubscribe@maven.apache.org + archiva-users@maven.apache.org + http://mail-archives.apache.org/mod_mbox/maven-archiva-users + + + Maven Archiva Developer List + archiva-dev-subscribe@maven.apache.org + archiva-dev-unsubscribe@maven.apache.org + archiva-dev@maven.apache.org + http://mail-archives.apache.org/mod_mbox/maven-archiva-dev + + + Maven Archiva Commits List + archiva-commits-subscribe@maven.apache.org + archiva-commits-unsubscribe@maven.apache.org + archiva-commits@maven.apache.org + http://mail-archives.apache.org/mod_mbox/maven-archiva-commits + + + + scm:svn:http://svn.apache.org/repos/asf/maven/archiva/trunk + scm:svn:https://svn.apache.org/repos/asf/maven/archiva/trunk + http://svn.apache.org/viewcvs.cgi/maven/archiva/trunk + + + + apache.website + scpexe://people.apache.org/www/maven.apache.org/archiva/ + + + + + + org.apache.maven.wagon + wagon-ssh-external + 1.0-alpha-5 + + + + + org.codehaus.plexus + plexus-maven-plugin + 1.3 + + + + descriptor + merge-descriptors + + + + + + maven-compiler-plugin + + 1.4 + 1.4 + + + + maven-surefire-plugin + 2.2 + + + + + + maven-idea-plugin + + 1.4 + + + + maven-release-plugin + + https://svn.apache.org/repos/asf/maven/archiva/tags + + + + + + + archiva-applet + archiva-converter + archiva-discoverer + archiva-reports-standard + archiva-indexer + archiva-webapp + archiva-proxy + archiva-core + archiva-configuration + maven-meeper + archiva-repository-layer + archiva-plexus-application + archiva-plexus-runtime + archiva-security + archiva-cli + + + + junit + junit + 3.8.1 + test + + + + + + org.codehaus.plexus + plexus-container-default + 1.0-alpha-10 + + + org.codehaus.plexus + plexus-utils + 1.3 + + + org.apache.maven + maven-repository-metadata + ${maven.version} + + + org.apache.maven + maven-model + ${maven.version} + + + org.apache.maven + maven-artifact + ${maven.version} + + + org.apache.maven + maven-artifact-manager + ${maven.version} + + + org.apache.maven + maven-project + ${maven.version} + + + org.apache.maven + maven-model-converter + 2.0.4 + + + org.apache.maven.wagon + wagon-provider-api + ${wagon.version} + + + org.apache.maven.wagon + wagon-ssh + ${wagon.version} + + + org.apache.maven.wagon + wagon-file + ${wagon.version} + + + org.apache.maven.wagon + wagon-http-lightweight + ${wagon.version} + + + org.apache.maven.archiva + archiva-core + ${pom.version} + + + org.apache.maven.archiva + archiva-reports-standard + ${pom.version} + + + org.apache.maven.archiva + archiva-discoverer + ${pom.version} + + + org.apache.maven.archiva + archiva-repository-layer + ${pom.version} + + + org.apache.maven.archiva + archiva-indexer + ${pom.version} + + + org.apache.maven.archiva + archiva-proxy + ${pom.version} + + + org.apache.maven.archiva + archiva-applet + ${pom.version} + + + org.apache.maven.archiva + archiva-security + ${pom.version} + + + org.apache.maven.archiva + archiva-configuration + ${pom.version} + + + org.apache.maven.archiva + archiva-converter + ${pom.version} + + + org.apache.maven.archiva + archiva-webapp + ${pom.version} + war + + + org.codehaus.plexus + plexus-digest + 1.0-SNAPSHOT + + + org.codehaus.plexus.security + plexus-security-rbac-profile + ${plexus-security.version} + + + org.codehaus.plexus.security + plexus-security-system + ${plexus-security.version} + + + org.codehaus.plexus.security + plexus-security-system + ${plexus-security.version} + + + org.codehaus.plexus.security + plexus-security-ui-web + ${plexus-security.version} + war + + + org.codehaus.plexus.security + plexus-security-ui-web-integration + ${plexus-security.version} + + + org.codehaus.plexus.security + plexus-security-ui-web-taglib + ${plexus-security.version} + + + org.codehaus.plexus.security + plexus-security-authentication-provider-user-manager + ${plexus-security.version} + + + org.codehaus.plexus.security + plexus-security-authentication-provider-keystore + ${plexus-security.version} + + + org.codehaus.plexus.security + plexus-security-user-management-api + ${plexus-security.version} + + + org.codehaus.plexus.security + plexus-security-user-management-provider-jdo + ${plexus-security.version} + + + org.codehaus.plexus.security + plexus-security-authorization-rbac-store-jdo + ${plexus-security.version} + + + org.codehaus.plexus.security + plexus-security-authorization-api + ${plexus-security.version} + + + org.codehaus.plexus.security + plexus-security-authorization-rbac-authorizer + ${plexus-security.version} + + + org.codehaus.plexus.security + plexus-security-keys-jdo + ${plexus-security.version} + + + + + + + org.codehaus.mojo + cobertura-maven-plugin + + + maven-checkstyle-plugin + + config/maven_checks.xml + + + + org.codehaus.mojo + changelog-maven-plugin + + + org.codehaus.mojo + taglist-maven-plugin + + + maven-jxr-plugin + + true + + + + maven-surefire-report-plugin + + + maven-javadoc-plugin + + true + + + + maven-pmd-plugin + + + + + + + ci + + + enableCiProfile + true + + + + + + org.apache.maven.plugins + maven-pmd-plugin + + + process-sources + + + cpd-check + + + + + + org.apache.maven.plugins + maven-checkstyle-plugin + + + process-sources + + + + + + + + org.codehaus.mojo + cobertura-maven-plugin + + + + 77 + 95 + + + + + **/*$* + + + + + + clean + + clean + + + + check + + check + + + + + + + + + + + + codehaus.org + http://snapshots.repository.codehaus.org + + false + + + true + + + + + + codehaus.org + http://snapshots.repository.codehaus.org + + false + + + true + + + + + + apache.org + http://people.apache.org/repo/m2-snapshot-repository + + false + + + true + + + + + 2.0.4 + 1.0-beta-1 + 1.0-alpha-6-SNAPSHOT + + diff --git a/archiva-base/archiva-repository-layer/src/test/repositories/default-repository/org/apache/maven/archiva/archiva/1.0-SNAPSHOT/archiva-1.0-SNAPSHOT-site.xml b/archiva-base/archiva-repository-layer/src/test/repositories/default-repository/org/apache/maven/archiva/archiva/1.0-SNAPSHOT/archiva-1.0-SNAPSHOT-site.xml new file mode 100644 index 000000000..ac3c2e716 --- /dev/null +++ b/archiva-base/archiva-repository-layer/src/test/repositories/default-repository/org/apache/maven/archiva/archiva/1.0-SNAPSHOT/archiva-1.0-SNAPSHOT-site.xml @@ -0,0 +1,28 @@ + + + Maven + http://maven.apache.org/images/apache-maven-project-2.png + http://maven.apache.org/ + + + images/archiva-logo-banner.jpg + + + + org.apache.maven.skins + maven-stylus-skin + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/archiva-base/archiva-repository-layer/src/test/repositories/default-repository/org/apache/maven/archiva/archiva/1.0-SNAPSHOT/archiva-1.0-SNAPSHOT.pom b/archiva-base/archiva-repository-layer/src/test/repositories/default-repository/org/apache/maven/archiva/archiva/1.0-SNAPSHOT/archiva-1.0-SNAPSHOT.pom new file mode 100644 index 000000000..4992be115 --- /dev/null +++ b/archiva-base/archiva-repository-layer/src/test/repositories/default-repository/org/apache/maven/archiva/archiva/1.0-SNAPSHOT/archiva-1.0-SNAPSHOT.pom @@ -0,0 +1,557 @@ + + + + + 4.0.0 + + org.apache.maven + maven-parent + 4 + ../pom/maven/pom.xml + + + 2.0.5 + + org.apache.maven.archiva + archiva + pom + Archiva + 1.0-SNAPSHOT + + Archiva is an application for managing one or more remote repositories, including + administration, artifact handling, + browsing and searching. + + http://maven.apache.org/archiva + + jira + http://jira.codehaus.org/browse/MRM + + + + Maven Archiva User List + archiva-users-subscribe@maven.apache.org + archiva-users-unsubscribe@maven.apache.org + archiva-users@maven.apache.org + http://mail-archives.apache.org/mod_mbox/maven-archiva-users + + + Maven Archiva Developer List + archiva-dev-subscribe@maven.apache.org + archiva-dev-unsubscribe@maven.apache.org + archiva-dev@maven.apache.org + http://mail-archives.apache.org/mod_mbox/maven-archiva-dev + + + Maven Archiva Commits List + archiva-commits-subscribe@maven.apache.org + archiva-commits-unsubscribe@maven.apache.org + archiva-commits@maven.apache.org + http://mail-archives.apache.org/mod_mbox/maven-archiva-commits + + + + scm:svn:http://svn.apache.org/repos/asf/maven/archiva/trunk + scm:svn:https://svn.apache.org/repos/asf/maven/archiva/trunk + http://svn.apache.org/viewcvs.cgi/maven/archiva/trunk + + + + apache.website + scpexe://people.apache.org/www/maven.apache.org/archiva/ + + + + + + org.codehaus.plexus + plexus-maven-plugin + 1.3.3 + + + generate + + descriptor + + + + + + maven-compiler-plugin + + 1.4 + 1.4 + + + + maven-surefire-plugin + 2.2 + + + + + + maven-idea-plugin + + 1.4 + + + + maven-release-plugin + + https://svn.apache.org/repos/asf/maven/archiva/tags + + + + + + + archiva-applet + archiva-converter + archiva-common + archiva-discoverer + archiva-reports-standard + archiva-indexer + archiva-webapp + archiva-proxy + archiva-core + archiva-configuration + maven-meeper + archiva-repository-layer + archiva-plexus-application + archiva-plexus-runtime + archiva-security + archiva-cli + + + + junit + junit + 3.8.1 + test + + + + + + org.apache.maven.shared + maven-app-configuration-model + 1.0-SNAPSHOT + + + org.apache.maven.shared + maven-app-configuration-web + 1.0-SNAPSHOT + + + org.codehaus.plexus + plexus-container-default + 1.0-alpha-17 + + + org.codehaus.plexus + plexus-component-api + 1.0-alpha-17 + + + org.codehaus.plexus + plexus-utils + 1.4 + + + org.apache.maven + maven-repository-metadata + ${maven.version} + + + org.apache.maven + maven-model + ${maven.version} + + + org.apache.maven + maven-artifact + ${maven.version} + + + org.apache.maven + maven-artifact-manager + ${maven.version} + + + org.apache.maven + maven-project + ${maven.version} + + + org.apache.maven.shared + maven-model-converter + 2.0.5-SNAPSHOT + + + org.apache.maven.wagon + wagon-provider-api + ${wagon.version} + + + org.apache.maven.wagon + wagon-ssh + ${wagon.version} + + + org.apache.maven.wagon + wagon-file + ${wagon.version} + + + org.apache.maven.wagon + wagon-http-lightweight + ${wagon.version} + + + org.apache.maven.archiva + archiva-common + ${pom.version} + + + + org.apache.maven.archiva + archiva-core + ${pom.version} + + + org.apache.maven.archiva + archiva-reports-standard + ${pom.version} + + + org.apache.maven.archiva + archiva-discoverer + ${pom.version} + + + org.apache.maven.archiva + archiva-repository-layer + ${pom.version} + + + org.apache.maven.archiva + archiva-indexer + ${pom.version} + + + org.apache.maven.archiva + archiva-proxy + ${pom.version} + + + org.apache.maven.archiva + archiva-applet + ${pom.version} + + + org.apache.maven.archiva + archiva-security + ${pom.version} + + + org.apache.maven.archiva + archiva-configuration + ${pom.version} + + + org.apache.maven.archiva + archiva-converter + ${pom.version} + + + org.apache.maven.archiva + archiva-utils + ${pom.version} + + + org.apache.maven.archiva + archiva-webapp + ${pom.version} + war + + + org.codehaus.plexus + plexus-digest + 1.0 + + + org.codehaus.plexus.security + plexus-security-rbac-profile + ${plexus-security.version} + + + org.codehaus.plexus.security + plexus-security-system + ${plexus-security.version} + + + org.codehaus.plexus.security + plexus-security-system + ${plexus-security.version} + + + org.codehaus.plexus.security + plexus-security-ui-web + ${plexus-security.version} + war + + + org.codehaus.plexus.security + plexus-security-ui-web-integration + ${plexus-security.version} + + + org.codehaus.plexus.security + plexus-security-ui-web-taglib + ${plexus-security.version} + + + org.codehaus.plexus.security + plexus-security-authentication-provider-user-manager + ${plexus-security.version} + + + org.codehaus.plexus.security + plexus-security-authentication-provider-keystore + ${plexus-security.version} + + + org.codehaus.plexus.security + plexus-security-user-management-api + ${plexus-security.version} + + + org.codehaus.plexus.security + plexus-security-user-management-provider-jdo + ${plexus-security.version} + + + org.codehaus.plexus.security + plexus-security-authorization-rbac-store-cached + ${plexus-security.version} + + + org.codehaus.plexus.security + plexus-security-authorization-rbac-store-jdo + ${plexus-security.version} + + + org.codehaus.plexus.security + plexus-security-authorization-api + ${plexus-security.version} + + + org.codehaus.plexus.security + plexus-security-authorization-rbac-authorizer + ${plexus-security.version} + + + org.codehaus.plexus.security + plexus-security-keys-jdo + ${plexus-security.version} + + + commons-lang + commons-lang + 2.2 + + + commons-io + commons-io + 1.2 + + + org.apache.derby + derby + 10.1.3.1 + + + + + + + org.codehaus.mojo + cobertura-maven-plugin + + + maven-checkstyle-plugin + + config/maven_checks.xml + + + + org.codehaus.mojo + changelog-maven-plugin + + + org.codehaus.mojo + taglist-maven-plugin + + + maven-jxr-plugin + + true + + + + maven-surefire-report-plugin + + + maven-javadoc-plugin + + 1.4 + true + + + + maven-pmd-plugin + + + + + + + ci + + + enableCiProfile + true + + + + + + org.apache.maven.plugins + maven-pmd-plugin + + + process-sources + + + cpd-check + + + + + + org.apache.maven.plugins + maven-checkstyle-plugin + + + process-sources + + + + + + + + org.codehaus.mojo + cobertura-maven-plugin + + + + 77 + 95 + + + + + **/*$* + + + + + + clean + + clean + + + + check + + check + + + + + + + + + + + codehaus.org + http://repository.codehaus.org + + true + + + false + + + + + codehaus.org + http://snapshots.repository.codehaus.org + + false + + + true + + + + + + + codehaus.org + http://snapshots.repository.codehaus.org + + false + + + true + + + + + 2.0.5 + 1.0-beta-2 + 1.0-alpha-10-SNAPSHOT + + diff --git a/archiva-base/archiva-repository-layer/src/test/repositories/default-repository/org/apache/maven/maven-parent/4/maven-parent-4-site.xml b/archiva-base/archiva-repository-layer/src/test/repositories/default-repository/org/apache/maven/maven-parent/4/maven-parent-4-site.xml new file mode 100644 index 000000000..e69de29bb diff --git a/archiva-base/archiva-repository-layer/src/test/repositories/default-repository/org/apache/maven/maven-parent/4/maven-parent-4-site_en.xml b/archiva-base/archiva-repository-layer/src/test/repositories/default-repository/org/apache/maven/maven-parent/4/maven-parent-4-site_en.xml new file mode 100644 index 000000000..e69de29bb diff --git a/archiva-base/archiva-repository-layer/src/test/repositories/default-repository/org/apache/maven/maven-parent/4/maven-parent-4.pom b/archiva-base/archiva-repository-layer/src/test/repositories/default-repository/org/apache/maven/maven-parent/4/maven-parent-4.pom new file mode 100644 index 000000000..132d9d736 --- /dev/null +++ b/archiva-base/archiva-repository-layer/src/test/repositories/default-repository/org/apache/maven/maven-parent/4/maven-parent-4.pom @@ -0,0 +1,304 @@ + + + + + + 4.0.0 + + org.apache + apache + 3 + ../asf/pom.xml + + org.apache.maven + maven-parent + 4 + pom + Apache Maven + + 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. + + http://maven.apache.org/ + + jira + http://jira.codehaus.org/browse/MPA + + + continuum + http://maven.zones.apache.org:8080/continuum + + + mail + +
notifications@maven.apache.org
+
+
+
+
+ 2002 + + + Maven Announcements List + announce@maven.apache.org + announce-subscribe@maven.apache.org + announce-unsubscribe@maven.apache.org + http://mail-archives.apache.org/mod_mbox/maven-announce/ + + + Maven Issues List + issues@maven.apache.org + issues-subscribe@maven.apache.org + issues-unsubscribe@maven.apache.org + http://mail-archives.apache.org/mod_mbox/maven-issues/ + + + Maven Notifications List + notifications@maven.apache.org + notifications-subscribe@maven.apache.org + notifications-unsubscribe@maven.apache.org + http://mail-archives.apache.org/mod_mbox/maven-notifications/ + + + + + + jvanzyl + Jason van Zyl + jason@maven.org + ASF + + PMC Chair + + -5 + + + brett + Brett Porter + brett@apache.org + ASF + + PMC Member + + +10 + + + evenisse + Emmanuel Venisse + evenisse@apache.org + ASF + + PMC Member + + +1 + + + kenney + Kenney Westerhof + kenney@apache.org + Neonics + + PMC Member + + + + snicoll + Stephane Nicoll + snicoll@apache.org + ASF + + PMC Member + + +1 + + + vmassol + Vincent Massol + vmassol@apache.org + ASF + + PMC Member + + +1 + + + fgiust + Fabrizio Giustina + fgiust@apache.org + openmind + + PMC Member + + +1 + + + epunzalan + Edwin Punzalan + epunzalan@mergere.com + Mergere + + Committer + + +8 + + + mperham + Mike Perham + mperham@gmail.com + IBM + + PMC Member + + -6 + + + jdcasey + John Casey + jdcasey@apache.org + ASF + + PMC Member + + -5 + + + trygvis + Trygve Laugstol + trygvis@apache.org + ASF + + PMC Member + + +1 + + + vsiveton + Vincent Siveton + vsiveton@apache.org + ASF + + PMC Member + + -5 + + + carlos + Carlos Sanchez + carlos@apache.org + ASF + + PMC Member + + +1 + + + dennisl + Dennis Lundberg + dennisl@apache.org + ASF + + PMC Member + + +1 + + + + + + apache.website + scp://people.apache.org/www/maven.apache.org + + + + + + + + + org.apache.maven.plugins + maven-surefire-report-plugin + + + org.apache.maven.plugins + maven-checkstyle-plugin + + http://svn.apache.org/repos/asf/maven/plugins/trunk/maven-checkstyle-plugin/src/main/resources/config/maven_checks.xml + http://svn.apache.org/repos/asf/maven/plugins/trunk/maven-checkstyle-plugin/src/main/resources/config/maven-header.txt + + + + org.apache.maven.plugins + maven-pmd-plugin + + + org.codehaus.mojo + cobertura-maven-plugin + + + org.codehaus.mojo + taglist-maven-plugin + + + org.apache.maven.plugins + maven-jxr-plugin + + + org.apache.maven.plugins + maven-javadoc-plugin + + + http://java.sun.com/j2ee/1.4/docs/api + http://java.sun.com/j2se/1.5.0/docs/api + http://jakarta.apache.org/commons/collections/apidocs-COLLECTIONS_3_0/ + http://jakarta.apache.org/commons/dbcp/apidocs/ + http://jakarta.apache.org/commons/fileupload/apidocs/ + http://jakarta.apache.org/commons/httpclient/apidocs/ + http://jakarta.apache.org/commons/logging/apidocs/ + http://jakarta.apache.org/commons/pool/apidocs/ + http://www.junit.org/junit/javadoc/ + http://logging.apache.org/log4j/docs/api/ + http://jakarta.apache.org/regexp/apidocs/ + http://jakarta.apache.org/velocity/api/ + + + + + + + + scm:svn:http://svn.apache.org/repos/asf/maven/pom/maven/tags/maven-parent-4 + scm:svn:https://svn.apache.org/repos/asf/maven/pom/maven/tags/maven-parent-4 + http://svn.apache.org/viewvc/maven/pom/maven/tags/maven-parent-4 + +
+ diff --git a/archiva-base/archiva-repository-layer/src/test/repositories/default-repository/org/apache/maven/maven-parent/4/maven-parent-4.pom.sha1 b/archiva-base/archiva-repository-layer/src/test/repositories/default-repository/org/apache/maven/maven-parent/4/maven-parent-4.pom.sha1 new file mode 100644 index 000000000..b6caacf5e --- /dev/null +++ b/archiva-base/archiva-repository-layer/src/test/repositories/default-repository/org/apache/maven/maven-parent/4/maven-parent-4.pom.sha1 @@ -0,0 +1 @@ +0fc039b0bd4d17d7c147a30e1d83994629c5297c \ No newline at end of file diff --git a/archiva-base/archiva-xml-tools/src/main/java/org/apache/maven/archiva/xml/XMLReader.java b/archiva-base/archiva-xml-tools/src/main/java/org/apache/maven/archiva/xml/XMLReader.java index e06f872c7..6985ef06a 100644 --- a/archiva-base/archiva-xml-tools/src/main/java/org/apache/maven/archiva/xml/XMLReader.java +++ b/archiva-base/archiva-xml-tools/src/main/java/org/apache/maven/archiva/xml/XMLReader.java @@ -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 diff --git a/archiva-cli/src/main/java/org/apache/maven/archiva/cli/ProjectReaderConsumer.java b/archiva-cli/src/main/java/org/apache/maven/archiva/cli/ProjectReaderConsumer.java index 7832ff5be..23c66cef0 100644 --- a/archiva-cli/src/main/java/org/apache/maven/archiva/cli/ProjectReaderConsumer.java +++ b/archiva-cli/src/main/java/org/apache/maven/archiva/cli/ProjectReaderConsumer.java @@ -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; diff --git a/archiva-consumer-api/src/test/java/org/apache/maven/archiva/consumers/AbstractConsumerTestCase.java b/archiva-consumer-api/src/test/java/org/apache/maven/archiva/consumers/AbstractConsumerTestCase.java deleted file mode 100644 index a6a90e3f3..000000000 --- a/archiva-consumer-api/src/test/java/org/apache/maven/archiva/consumers/AbstractConsumerTestCase.java +++ /dev/null @@ -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 Joakim Erdfelt - * @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; - } -} diff --git a/archiva-consumer-api/src/test/java/org/apache/maven/archiva/consumers/FileProblemsTracker.java b/archiva-consumer-api/src/test/java/org/apache/maven/archiva/consumers/FileProblemsTracker.java deleted file mode 100644 index bc96f03ec..000000000 --- a/archiva-consumer-api/src/test/java/org/apache/maven/archiva/consumers/FileProblemsTracker.java +++ /dev/null @@ -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 Joakim Erdfelt - * @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; - } - -} diff --git a/archiva-consumer-api/src/test/java/org/apache/maven/archiva/consumers/GenericArtifactConsumerTest.java b/archiva-consumer-api/src/test/java/org/apache/maven/archiva/consumers/GenericArtifactConsumerTest.java deleted file mode 100644 index a436cdd94..000000000 --- a/archiva-consumer-api/src/test/java/org/apache/maven/archiva/consumers/GenericArtifactConsumerTest.java +++ /dev/null @@ -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 Joakim Erdfelt - * @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 ); - } -} diff --git a/archiva-consumer-api/src/test/java/org/apache/maven/archiva/consumers/MockArtifactConsumer.java b/archiva-consumer-api/src/test/java/org/apache/maven/archiva/consumers/MockArtifactConsumer.java deleted file mode 100644 index 66ad9a209..000000000 --- a/archiva-consumer-api/src/test/java/org/apache/maven/archiva/consumers/MockArtifactConsumer.java +++ /dev/null @@ -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 Joakim Erdfelt - * @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; - } -} \ No newline at end of file diff --git a/archiva-consumer-api/src/test/java/org/apache/maven/archiva/consumers/MockModelConsumer.java b/archiva-consumer-api/src/test/java/org/apache/maven/archiva/consumers/MockModelConsumer.java deleted file mode 100644 index 98adf8ee9..000000000 --- a/archiva-consumer-api/src/test/java/org/apache/maven/archiva/consumers/MockModelConsumer.java +++ /dev/null @@ -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 Joakim Erdfelt - * @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; - } - -} \ No newline at end of file diff --git a/archiva-consumer-api/src/test/java/org/apache/maven/archiva/consumers/MockRepositoryMetadataConsumer.java b/archiva-consumer-api/src/test/java/org/apache/maven/archiva/consumers/MockRepositoryMetadataConsumer.java deleted file mode 100644 index b58dc57a9..000000000 --- a/archiva-consumer-api/src/test/java/org/apache/maven/archiva/consumers/MockRepositoryMetadataConsumer.java +++ /dev/null @@ -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 Joakim Erdfelt - * @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; - } -} \ No newline at end of file diff --git a/archiva-database/src/main/java/org/apache/maven/archiva/database/ArchivaDAO.java b/archiva-database/src/main/java/org/apache/maven/archiva/database/ArchivaDAO.java index 5dbd6bfe8..34db1d9bb 100644 --- a/archiva-database/src/main/java/org/apache/maven/archiva/database/ArchivaDAO.java +++ b/archiva-database/src/main/java/org/apache/maven/archiva/database/ArchivaDAO.java @@ -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 /**/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 /**/queryArtifacts( Constraint constraint ) diff --git a/archiva-database/src/main/java/org/apache/maven/archiva/database/jdo/JdoArchivaDAO.java b/archiva-database/src/main/java/org/apache/maven/archiva/database/jdo/JdoArchivaDAO.java index 87565a825..4eb9cd06e 100644 --- a/archiva-database/src/main/java/org/apache/maven/archiva/database/jdo/JdoArchivaDAO.java +++ b/archiva-database/src/main/java/org/apache/maven/archiva/database/jdo/JdoArchivaDAO.java @@ -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 { -- 2.39.5