aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoakim Erdfelt <joakime@apache.org>2007-03-15 16:48:40 +0000
committerJoakim Erdfelt <joakime@apache.org>2007-03-15 16:48:40 +0000
commit7a5f50c9f625ed9fdf291dfc1d7d95a2eebc59ba (patch)
tree75b2471103bc683ac5c23e66da013e3e4d593743
parent344fe5c34e0487dede12feee7950aaaa2ec3c3cf (diff)
downloadarchiva-7a5f50c9f625ed9fdf291dfc1d7d95a2eebc59ba.tar.gz
archiva-7a5f50c9f625ed9fdf291dfc1d7d95a2eebc59ba.zip
Partial work against jpox database refactoring.
git-svn-id: https://svn.apache.org/repos/asf/maven/archiva/branches/archiva-jpox-database-refactor@518686 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r--archiva-common/src/main/java/org/apache/maven/archiva/common/utils/RepositoryURL.java (renamed from archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/RepositoryURL.java)2
-rw-r--r--archiva-common/src/test/java/org/apache/maven/archiva/common/AbstractArchivaCommonTestCase.java45
-rw-r--r--archiva-common/src/test/java/org/apache/maven/archiva/common/AllTests.java1
-rwxr-xr-xarchiva-consumer-api/pom.xml61
-rw-r--r--archiva-consumer-api/src/main/java/org/apache/maven/archiva/consumers/AbstractConsumer.java (renamed from archiva-common/src/main/java/org/apache/maven/archiva/common/consumers/AbstractConsumer.java)8
-rw-r--r--archiva-consumer-api/src/main/java/org/apache/maven/archiva/consumers/Consumer.java (renamed from archiva-common/src/main/java/org/apache/maven/archiva/common/consumers/Consumer.java)5
-rw-r--r--archiva-consumer-api/src/main/java/org/apache/maven/archiva/consumers/ConsumerException.java (renamed from archiva-common/src/main/java/org/apache/maven/archiva/common/consumers/ConsumerException.java)2
-rw-r--r--archiva-consumer-api/src/main/java/org/apache/maven/archiva/consumers/ConsumerFactory.java (renamed from archiva-common/src/main/java/org/apache/maven/archiva/common/consumers/ConsumerFactory.java)2
-rw-r--r--archiva-consumer-api/src/main/java/org/apache/maven/archiva/consumers/GenericArtifactConsumer.java (renamed from archiva-common/src/main/java/org/apache/maven/archiva/common/consumers/GenericArtifactConsumer.java)8
-rw-r--r--archiva-consumer-api/src/main/java/org/apache/maven/archiva/consumers/GenericModelConsumer.java (renamed from archiva-common/src/main/java/org/apache/maven/archiva/common/consumers/GenericModelConsumer.java)2
-rw-r--r--archiva-consumer-api/src/main/java/org/apache/maven/archiva/consumers/GenericRepositoryMetadataConsumer.java (renamed from archiva-common/src/main/java/org/apache/maven/archiva/common/consumers/GenericRepositoryMetadataConsumer.java)2
-rw-r--r--archiva-consumer-api/src/test/java/org/apache/maven/archiva/consumers/AbstractConsumerTestCase.java152
-rw-r--r--archiva-consumer-api/src/test/java/org/apache/maven/archiva/consumers/AbstractGenericConsumerTestCase.java (renamed from archiva-common/src/test/java/org/apache/maven/archiva/common/consumers/AbstractGenericConsumerTestCase.java)5
-rw-r--r--archiva-consumer-api/src/test/java/org/apache/maven/archiva/consumers/AllTests.java (renamed from archiva-common/src/test/java/org/apache/maven/archiva/common/consumers/AllTests.java)2
-rw-r--r--archiva-consumer-api/src/test/java/org/apache/maven/archiva/consumers/FileProblemsTracker.java (renamed from archiva-common/src/test/java/org/apache/maven/archiva/common/consumers/FileProblemsTracker.java)3
-rw-r--r--archiva-consumer-api/src/test/java/org/apache/maven/archiva/consumers/GenericArtifactConsumerTest.java (renamed from archiva-common/src/test/java/org/apache/maven/archiva/common/consumers/GenericArtifactConsumerTest.java)12
-rw-r--r--archiva-consumer-api/src/test/java/org/apache/maven/archiva/consumers/MockArtifactConsumer.java (renamed from archiva-common/src/test/java/org/apache/maven/archiva/common/consumers/MockArtifactConsumer.java)4
-rw-r--r--archiva-consumer-api/src/test/java/org/apache/maven/archiva/consumers/MockModelConsumer.java (renamed from archiva-common/src/test/java/org/apache/maven/archiva/common/consumers/MockModelConsumer.java)3
-rw-r--r--archiva-consumer-api/src/test/java/org/apache/maven/archiva/consumers/MockRepositoryMetadataConsumer.java (renamed from archiva-common/src/test/java/org/apache/maven/archiva/common/consumers/MockRepositoryMetadataConsumer.java)3
-rw-r--r--archiva-converter/pom.xml4
-rw-r--r--archiva-converter/src/main/java/org/apache/maven/archiva/converter/legacy/LegacyConverterArtifactConsumer.java2
-rw-r--r--archiva-core/pom.xml4
-rw-r--r--archiva-core/src/main/java/org/apache/maven/archiva/consumers/ArtifactHealthConsumer.java1
-rw-r--r--archiva-core/src/main/java/org/apache/maven/archiva/consumers/IndexArtifactConsumer.java1
-rw-r--r--archiva-core/src/main/java/org/apache/maven/archiva/consumers/RepositoryMetadataHealthConsumer.java1
-rw-r--r--archiva-core/src/main/java/org/apache/maven/archiva/scheduler/executors/DataRefreshExecutor.java6
-rwxr-xr-xarchiva-database/pom.xml45
-rw-r--r--archiva-database/src/main/java/org/apache/maven/archiva/database/AbstractIbatisStore.java180
-rw-r--r--archiva-database/src/main/java/org/apache/maven/archiva/database/AbstractMetadataKeyDatabase.java288
-rw-r--r--archiva-database/src/main/java/org/apache/maven/archiva/database/ArchivaDAO.java110
-rw-r--r--archiva-database/src/main/java/org/apache/maven/archiva/database/Constraint.java42
-rw-r--r--archiva-database/src/main/java/org/apache/maven/archiva/database/ObjectNotFoundException.java (renamed from archiva-model/src/main/java/org/apache/maven/archiva/model/health/ArtifactHealth.java)38
-rw-r--r--archiva-database/src/main/java/org/apache/maven/archiva/database/RepositoryMetadataDatabase.java232
-rw-r--r--archiva-database/src/main/java/org/apache/maven/archiva/database/artifact/ArtifactKey.java101
-rw-r--r--archiva-database/src/main/java/org/apache/maven/archiva/database/artifact/ArtifactPersistence.java137
-rw-r--r--archiva-database/src/main/java/org/apache/maven/archiva/database/constraints/ArchivaRepositoryByUrlConstraint.java40
-rw-r--r--archiva-database/src/main/java/org/apache/maven/archiva/database/jdo/JdoAccess.java459
-rw-r--r--archiva-database/src/main/java/org/apache/maven/archiva/database/jdo/JdoArchivaDAO.java182
-rw-r--r--archiva-database/src/main/java/org/apache/maven/archiva/database/key/MetadataKey.java46
-rw-r--r--archiva-database/src/test/java/org/apache/maven/archiva/database/RepositoryMetadataDatabaseTest.java87
-rw-r--r--archiva-database/src/test/java/org/apache/maven/archiva/database/artifact/ArtifactPersistenceTest.java70
-rwxr-xr-xarchiva-discoverer/pom.xml4
-rw-r--r--archiva-discoverer/src/main/java/org/apache/maven/archiva/discoverer/DefaultDiscoverer.java2
-rw-r--r--archiva-discoverer/src/main/java/org/apache/maven/archiva/discoverer/RepositoryScanner.java2
-rw-r--r--archiva-discoverer/src/test/java/org/apache/maven/archiva/discoverer/MockConsumer.java4
-rwxr-xr-xarchiva-model/pom.xml68
-rw-r--r--archiva-model/src/main/java/org/apache/maven/archiva/model/AbstractArchivaArtifact.java (renamed from archiva-model/src/main/java/org/apache/maven/archiva/model/ArchivaArtifact.java)43
-rw-r--r--archiva-model/src/main/java/org/apache/maven/archiva/model/AbstractArchivaRepository.java125
-rw-r--r--archiva-model/src/main/java/org/apache/maven/archiva/model/ArchivaRepositoryMetadata.java77
-rw-r--r--archiva-model/src/main/java/org/apache/maven/archiva/model/RepositoryContentKey.java157
-rw-r--r--archiva-model/src/main/java/org/apache/maven/archiva/model/health/HealthProblem.java77
-rw-r--r--archiva-model/src/main/java/org/apache/maven/archiva/model/health/RepositoryMetadataHealth.java63
-rw-r--r--archiva-model/src/main/mdo/archiva.xml454
-rw-r--r--archiva-repository-layer/pom.xml9
-rw-r--r--archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/DefinedRepositories.java74
-rw-r--r--archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/Repository.java211
-rw-r--r--archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/connector/RepositoryConnector.java6
-rw-r--r--archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/content/BidirectionalRepositoryLayout.java (renamed from archiva-model/src/main/java/org/apache/maven/archiva/model/RepositoryContent.java)19
-rw-r--r--archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/scanner/RepositoryScanner.java13
-rw-r--r--archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/scanner/RepositoryScannerInstance.java33
-rw-r--r--archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/scanner/ScanStatistics.java198
-rw-r--r--archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/RepositoryURLTest.java2
-rw-r--r--pom.xml44
63 files changed, 1987 insertions, 2096 deletions
diff --git a/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/RepositoryURL.java b/archiva-common/src/main/java/org/apache/maven/archiva/common/utils/RepositoryURL.java
index 13ed57fc9..5ad550e6e 100644
--- a/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/RepositoryURL.java
+++ b/archiva-common/src/main/java/org/apache/maven/archiva/common/utils/RepositoryURL.java
@@ -1,4 +1,4 @@
-package org.apache.maven.archiva.repository;
+package org.apache.maven.archiva.common.utils;
/*
* Licensed to the Apache Software Foundation (ASF) under one
diff --git a/archiva-common/src/test/java/org/apache/maven/archiva/common/AbstractArchivaCommonTestCase.java b/archiva-common/src/test/java/org/apache/maven/archiva/common/AbstractArchivaCommonTestCase.java
index 11b2d1c2c..4ee9785d0 100644
--- a/archiva-common/src/test/java/org/apache/maven/archiva/common/AbstractArchivaCommonTestCase.java
+++ b/archiva-common/src/test/java/org/apache/maven/archiva/common/AbstractArchivaCommonTestCase.java
@@ -23,12 +23,9 @@ import org.apache.maven.artifact.repository.ArtifactRepository;
import org.apache.maven.artifact.repository.ArtifactRepositoryFactory;
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;
/**
@@ -40,48 +37,6 @@ import java.util.List;
public abstract class AbstractArchivaCommonTestCase
extends PlexusTestCase
{
- protected ArtifactRepository getLegacyRepository()
- throws Exception
- {
- File repoBaseDir = new File( getBasedir(), "src/test/legacy-repository" );
- ArtifactRepository repository = createRepository( repoBaseDir, "legacy" );
- resetRepositoryState( repository );
- return repository;
- }
-
- protected ArtifactRepository getDefaultRepository()
- throws Exception
- {
- File repoBaseDir = new File( getBasedir(), "src/test/repository" );
- ArtifactRepository repository = createRepository( repoBaseDir, "default" );
- resetRepositoryState( repository );
- return repository;
- }
-
- private void resetRepositoryState( ArtifactRepository repository )
- throws IOException
- {
- File repoBaseDir = new File( repository.getBasedir() );
-
- 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 ArtifactRepository createRepository( File basedir, String layout )
throws Exception
{
diff --git a/archiva-common/src/test/java/org/apache/maven/archiva/common/AllTests.java b/archiva-common/src/test/java/org/apache/maven/archiva/common/AllTests.java
index 878f7fe1a..b6bde475a 100644
--- a/archiva-common/src/test/java/org/apache/maven/archiva/common/AllTests.java
+++ b/archiva-common/src/test/java/org/apache/maven/archiva/common/AllTests.java
@@ -36,7 +36,6 @@ public class AllTests
TestSuite suite = new TestSuite( "Test for org.apache.maven.archiva.common" );
//$JUnit-BEGIN$
suite.addTest( org.apache.maven.archiva.common.artifact.builder.AllTests.suite() );
- suite.addTest( org.apache.maven.archiva.common.consumers.AllTests.suite() );
suite.addTest( org.apache.maven.archiva.common.utils.AllTests.suite() );
//$JUnit-END$
return suite;
diff --git a/archiva-consumer-api/pom.xml b/archiva-consumer-api/pom.xml
new file mode 100755
index 000000000..b305f96c2
--- /dev/null
+++ b/archiva-consumer-api/pom.xml
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Licensed to the Apache Software Foundation (ASF) under one
+ ~ or more contributor license agreements. See the NOTICE file
+ ~ distributed with this work for additional information
+ ~ regarding copyright ownership. The ASF licenses this file
+ ~ to you under the Apache License, Version 2.0 (the
+ ~ "License"); you may not use this file except in compliance
+ ~ with the License. You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing,
+ ~ software distributed under the License is distributed on an
+ ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ ~ KIND, either express or implied. See the License for the
+ ~ specific language governing permissions and limitations
+ ~ under the License.
+ -->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ <parent>
+ <groupId>org.apache.maven.archiva</groupId>
+ <artifactId>archiva</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+ <artifactId>archiva-consumer-api</artifactId>
+ <name>Archiva Consumer API</name>
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.maven.archiva</groupId>
+ <artifactId>archiva-model</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.codehaus.plexus</groupId>
+ <artifactId>plexus-utils</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.codehaus.plexus</groupId>
+ <artifactId>plexus-container-default</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>commons-lang</groupId>
+ <artifactId>commons-lang</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>commons-io</groupId>
+ <artifactId>commons-io</artifactId>
+ </dependency>
+ </dependencies>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.codehaus.plexus</groupId>
+ <artifactId>plexus-maven-plugin</artifactId>
+ </plugin>
+ </plugins>
+ </build>
+</project>
diff --git a/archiva-common/src/main/java/org/apache/maven/archiva/common/consumers/AbstractConsumer.java b/archiva-consumer-api/src/main/java/org/apache/maven/archiva/consumers/AbstractConsumer.java
index 603434630..200844a11 100644
--- a/archiva-common/src/main/java/org/apache/maven/archiva/common/consumers/AbstractConsumer.java
+++ b/archiva-consumer-api/src/main/java/org/apache/maven/archiva/consumers/AbstractConsumer.java
@@ -1,4 +1,4 @@
-package org.apache.maven.archiva.common.consumers;
+package org.apache.maven.archiva.consumers;
/*
* Licensed to the Apache Software Foundation (ASF) under one
@@ -19,8 +19,8 @@ package org.apache.maven.archiva.common.consumers;
* under the License.
*/
+import org.apache.maven.archiva.model.ArchivaRepository;
import org.apache.maven.artifact.factory.ArtifactFactory;
-import org.apache.maven.artifact.repository.ArtifactRepository;
import org.codehaus.plexus.logging.AbstractLogEnabled;
import java.util.Collections;
@@ -41,7 +41,7 @@ public abstract class AbstractConsumer
*/
protected ArtifactFactory artifactFactory;
- protected ArtifactRepository repository;
+ protected ArchivaRepository repository;
protected AbstractConsumer()
{
@@ -53,7 +53,7 @@ public abstract class AbstractConsumer
return Collections.EMPTY_LIST;
}
- public boolean init( ArtifactRepository repository )
+ public boolean init( ArchivaRepository repository )
{
this.repository = repository;
return isEnabled();
diff --git a/archiva-common/src/main/java/org/apache/maven/archiva/common/consumers/Consumer.java b/archiva-consumer-api/src/main/java/org/apache/maven/archiva/consumers/Consumer.java
index fad6f2fa8..2ed0f1b72 100644
--- a/archiva-common/src/main/java/org/apache/maven/archiva/common/consumers/Consumer.java
+++ b/archiva-consumer-api/src/main/java/org/apache/maven/archiva/consumers/Consumer.java
@@ -1,4 +1,4 @@
-package org.apache.maven.archiva.common.consumers;
+package org.apache.maven.archiva.consumers;
/*
* Licensed to the Apache Software Foundation (ASF) under one
@@ -20,6 +20,7 @@ package org.apache.maven.archiva.common.consumers;
*/
import org.apache.maven.archiva.common.utils.BaseFile;
+import org.apache.maven.archiva.model.ArchivaRepository;
import org.apache.maven.artifact.repository.ArtifactRepository;
import java.util.List;
@@ -51,7 +52,7 @@ public interface Consumer
* @return true if the repository is valid for this consumer. false will result in consumer being disabled
* for the provided repository.
*/
- public boolean init( ArtifactRepository repository );
+ public boolean init( ArchivaRepository repository );
/**
* Get the List of excluded file patterns for this consumer.
diff --git a/archiva-common/src/main/java/org/apache/maven/archiva/common/consumers/ConsumerException.java b/archiva-consumer-api/src/main/java/org/apache/maven/archiva/consumers/ConsumerException.java
index 0c4c6451a..790620b0c 100644
--- a/archiva-common/src/main/java/org/apache/maven/archiva/common/consumers/ConsumerException.java
+++ b/archiva-consumer-api/src/main/java/org/apache/maven/archiva/consumers/ConsumerException.java
@@ -1,4 +1,4 @@
-package org.apache.maven.archiva.common.consumers;
+package org.apache.maven.archiva.consumers;
/*
* Licensed to the Apache Software Foundation (ASF) under one
diff --git a/archiva-common/src/main/java/org/apache/maven/archiva/common/consumers/ConsumerFactory.java b/archiva-consumer-api/src/main/java/org/apache/maven/archiva/consumers/ConsumerFactory.java
index eb08afef4..d95bfda0e 100644
--- a/archiva-common/src/main/java/org/apache/maven/archiva/common/consumers/ConsumerFactory.java
+++ b/archiva-consumer-api/src/main/java/org/apache/maven/archiva/consumers/ConsumerFactory.java
@@ -1,4 +1,4 @@
-package org.apache.maven.archiva.common.consumers;
+package org.apache.maven.archiva.consumers;
/*
* Licensed to the Apache Software Foundation (ASF) under one
diff --git a/archiva-common/src/main/java/org/apache/maven/archiva/common/consumers/GenericArtifactConsumer.java b/archiva-consumer-api/src/main/java/org/apache/maven/archiva/consumers/GenericArtifactConsumer.java
index c9e5437b7..4c6f57bdb 100644
--- a/archiva-common/src/main/java/org/apache/maven/archiva/common/consumers/GenericArtifactConsumer.java
+++ b/archiva-consumer-api/src/main/java/org/apache/maven/archiva/consumers/GenericArtifactConsumer.java
@@ -1,4 +1,4 @@
-package org.apache.maven.archiva.common.consumers;
+package org.apache.maven.archiva.consumers;
/*
* Licensed to the Apache Software Foundation (ASF) under one
@@ -24,8 +24,8 @@ import org.apache.maven.archiva.common.artifact.builder.DefaultLayoutArtifactBui
import org.apache.maven.archiva.common.artifact.builder.LayoutArtifactBuilder;
import org.apache.maven.archiva.common.artifact.builder.LegacyLayoutArtifactBuilder;
import org.apache.maven.archiva.common.utils.BaseFile;
+import org.apache.maven.archiva.model.ArchivaRepository;
import org.apache.maven.artifact.Artifact;
-import org.apache.maven.artifact.repository.ArtifactRepository;
import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout;
import org.apache.maven.artifact.repository.layout.DefaultRepositoryLayout;
import org.apache.maven.artifact.repository.layout.LegacyRepositoryLayout;
@@ -66,7 +66,7 @@ public abstract class GenericArtifactConsumer
private String layoutId = "default";
- public boolean init( ArtifactRepository repository )
+ public boolean init( ArchivaRepository repository )
{
this.artifactBuilders.clear();
this.artifactBuilders.put( "default", new DefaultLayoutArtifactBuilder( artifactFactory ) );
@@ -122,7 +122,7 @@ public abstract class GenericArtifactConsumer
LayoutArtifactBuilder builder = (LayoutArtifactBuilder) artifactBuilders.get( layoutId );
Artifact artifact = builder.build( file.getRelativePath() );
- artifact.setRepository( repository );
+// artifact.setRepository( repository );
artifact.setFile( file );
return artifact;
diff --git a/archiva-common/src/main/java/org/apache/maven/archiva/common/consumers/GenericModelConsumer.java b/archiva-consumer-api/src/main/java/org/apache/maven/archiva/consumers/GenericModelConsumer.java
index efcd7af64..4fe0c429b 100644
--- a/archiva-common/src/main/java/org/apache/maven/archiva/common/consumers/GenericModelConsumer.java
+++ b/archiva-consumer-api/src/main/java/org/apache/maven/archiva/consumers/GenericModelConsumer.java
@@ -1,4 +1,4 @@
-package org.apache.maven.archiva.common.consumers;
+package org.apache.maven.archiva.consumers;
/*
* Licensed to the Apache Software Foundation (ASF) under one
diff --git a/archiva-common/src/main/java/org/apache/maven/archiva/common/consumers/GenericRepositoryMetadataConsumer.java b/archiva-consumer-api/src/main/java/org/apache/maven/archiva/consumers/GenericRepositoryMetadataConsumer.java
index 1f4433c49..a575f156a 100644
--- a/archiva-common/src/main/java/org/apache/maven/archiva/common/consumers/GenericRepositoryMetadataConsumer.java
+++ b/archiva-consumer-api/src/main/java/org/apache/maven/archiva/consumers/GenericRepositoryMetadataConsumer.java
@@ -1,4 +1,4 @@
-package org.apache.maven.archiva.common.consumers;
+package org.apache.maven.archiva.consumers;
/*
* Licensed to the Apache Software Foundation (ASF) under one
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
new file mode 100644
index 000000000..dc35fc44d
--- /dev/null
+++ b/archiva-consumer-api/src/test/java/org/apache/maven/archiva/consumers/AbstractConsumerTestCase.java
@@ -0,0 +1,152 @@
+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.model.ArchivaRepository;
+import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout;
+import org.codehaus.plexus.PlexusTestCase;
+import org.codehaus.plexus.util.FileUtils;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+/**
+ * AbstractConsumerTestCase
+ *
+ * @author <a href="mailto:joakim@erdfelt.com">Joakim Erdfelt</a>
+ * @version $Id$
+ */
+public class AbstractConsumerTestCase extends PlexusTestCase
+{
+ protected ArchivaRepository getLegacyRepository() throws Exception
+ {
+ File repoBaseDir = new File( getBasedir(), "src/test/legacy-repository" );
+ ArchivaRepository repository = createRepository( repoBaseDir, "legacy" );
+ resetRepositoryState( repository );
+ return repository;
+ }
+
+ protected ArchivaRepository getDefaultRepository() throws Exception
+ {
+ File repoBaseDir = new File( getBasedir(), "src/test/repository" );
+ ArchivaRepository repository = createRepository( repoBaseDir, "default" );
+ resetRepositoryState( repository );
+ return repository;
+ }
+
+ private void resetRepositoryState( ArchivaRepository repository ) throws IOException
+ {
+ File repoBaseDir = new File( repository.getRepositoryURL().getPath() );
+
+ List tmpfiles = FileUtils.getFiles( repoBaseDir, ".*", "" );
+ for ( Iterator it = tmpfiles.iterator(); it.hasNext(); )
+ {
+ File hit = (File) it.next();
+ if ( hit.exists() )
+ {
+ if ( hit.isFile() )
+ {
+ hit.delete();
+ }
+
+ if ( hit.isDirectory() )
+ {
+ FileUtils.deleteDirectory( hit );
+ }
+ }
+ }
+ }
+
+ protected ArchivaRepository createRepository( File basedir, String layout ) throws Exception
+ {
+ ArtifactRepositoryLayout repoLayout = (ArtifactRepositoryLayout) lookup( ArtifactRepositoryLayout.ROLE, layout );
+
+ ArchivaRepository repo = new ArchivaRepository();
+ repo.setId( "discoveryRepo" );
+ repo.setUrl( "file://" + basedir );
+ repo.setLayout( repoLayout );
+
+ return repo;
+ }
+
+ public List getLegacyLayoutArtifactPaths()
+ {
+ List files = new ArrayList();
+
+ files.add( "invalid/jars/1.0/invalid-1.0.jar" );
+ files.add( "invalid/jars/invalid-1.0.rar" );
+ files.add( "invalid/jars/invalid.jar" );
+ files.add( "invalid/invalid-1.0.jar" );
+ files.add( "javax.sql/jars/jdbc-2.0.jar" );
+ files.add( "org.apache.maven/jars/some-ejb-1.0-client.jar" );
+ files.add( "org.apache.maven/jars/testing-1.0.jar" );
+ files.add( "org.apache.maven/jars/testing-1.0-sources.jar" );
+ files.add( "org.apache.maven/jars/testing-UNKNOWN.jar" );
+ files.add( "org.apache.maven/jars/testing-1.0.zip" );
+ files.add( "org.apache.maven/jars/testing-1.0-20050611.112233-1.jar" );
+ files.add( "org.apache.maven/jars/testing-1.0.tar.gz" );
+ files.add( "org.apache.maven.update/jars/test-not-updated-1.0.jar" );
+ files.add( "org.apache.maven.update/jars/test-updated-1.0.jar" );
+
+ return files;
+ }
+
+ public List getDefaultLayoutArtifactPaths()
+ {
+ List files = new ArrayList();
+
+ files.add( "invalid/invalid/1.0-20050611.123456-1/invalid-1.0-20050611.123456-1.jar" );
+ files.add( "invalid/invalid/1.0-SNAPSHOT/invalid-1.0.jar" );
+ files.add( "invalid/invalid/1.0/invalid-1.0b.jar" );
+ files.add( "invalid/invalid/1.0/invalid-2.0.jar" );
+ files.add( "invalid/invalid-1.0.jar" );
+ files.add( "org/apache/maven/test/1.0-SNAPSHOT/wrong-artifactId-1.0-20050611.112233-1.jar" );
+ files.add( "org/apache/maven/test/1.0-SNAPSHOT/test-1.0-20050611.112233-1-javadoc.jar" );
+ files.add( "org/apache/maven/test/1.0-SNAPSHOT/test-1.0-20050611.112233-1.jar" );
+ files.add( "org/apache/maven/A/1.0/A-1.0.war" );
+ files.add( "org/apache/maven/A/1.0/A-1.0.pom" );
+ files.add( "org/apache/maven/B/2.0/B-2.0.pom" );
+ files.add( "org/apache/maven/B/1.0/B-1.0.pom" );
+ files.add( "org/apache/maven/some-ejb/1.0/some-ejb-1.0-client.jar" );
+ files.add( "org/apache/maven/C/1.0/C-1.0.war" );
+ files.add( "org/apache/maven/C/1.0/C-1.0.pom" );
+ files.add( "org/apache/maven/update/test-not-updated/1.0/test-not-updated-1.0.pom" );
+ files.add( "org/apache/maven/update/test-not-updated/1.0/test-not-updated-1.0.jar" );
+ files.add( "org/apache/maven/update/test-updated/1.0/test-updated-1.0.pom" );
+ files.add( "org/apache/maven/update/test-updated/1.0/test-updated-1.0.jar" );
+ files.add( "org/apache/maven/discovery/1.0/discovery-1.0.pom" );
+ files.add( "org/apache/maven/testing/1.0/testing-1.0-test-sources.jar" );
+ files.add( "org/apache/maven/testing/1.0/testing-1.0.jar" );
+ files.add( "org/apache/maven/testing/1.0/testing-1.0-sources.jar" );
+ files.add( "org/apache/maven/testing/1.0/testing-1.0.zip" );
+ files.add( "org/apache/maven/testing/1.0/testing-1.0.tar.gz" );
+ files.add( "org/apache/maven/samplejar/2.0/samplejar-2.0.pom" );
+ files.add( "org/apache/maven/samplejar/2.0/samplejar-2.0.jar" );
+ files.add( "org/apache/maven/samplejar/1.0/samplejar-1.0.pom" );
+ files.add( "org/apache/maven/samplejar/1.0/samplejar-1.0.jar" );
+ files.add( "org/apache/testgroup/discovery/1.0/discovery-1.0.pom" );
+ files.add( "javax/sql/jdbc/2.0/jdbc-2.0.jar" );
+
+ return files;
+ }
+}
diff --git a/archiva-common/src/test/java/org/apache/maven/archiva/common/consumers/AbstractGenericConsumerTestCase.java b/archiva-consumer-api/src/test/java/org/apache/maven/archiva/consumers/AbstractGenericConsumerTestCase.java
index 08abd6432..db51092e3 100644
--- a/archiva-common/src/test/java/org/apache/maven/archiva/common/consumers/AbstractGenericConsumerTestCase.java
+++ b/archiva-consumer-api/src/test/java/org/apache/maven/archiva/consumers/AbstractGenericConsumerTestCase.java
@@ -1,4 +1,4 @@
-package org.apache.maven.archiva.common.consumers;
+package org.apache.maven.archiva.consumers;
/*
* Licensed to the Apache Software Foundation (ASF) under one
@@ -19,7 +19,6 @@ package org.apache.maven.archiva.common.consumers;
* under the License.
*/
-import org.apache.maven.archiva.common.AbstractArchivaCommonTestCase;
/**
* AbstractGenericConsumerTestCase
@@ -28,7 +27,7 @@ import org.apache.maven.archiva.common.AbstractArchivaCommonTestCase;
* @version $Id$
*/
public abstract class AbstractGenericConsumerTestCase
- extends AbstractArchivaCommonTestCase
+ extends AbstractConsumerTestCase
{
protected ConsumerFactory consumerFactory;
diff --git a/archiva-common/src/test/java/org/apache/maven/archiva/common/consumers/AllTests.java b/archiva-consumer-api/src/test/java/org/apache/maven/archiva/consumers/AllTests.java
index b04c4c37c..783fb8547 100644
--- a/archiva-common/src/test/java/org/apache/maven/archiva/common/consumers/AllTests.java
+++ b/archiva-consumer-api/src/test/java/org/apache/maven/archiva/consumers/AllTests.java
@@ -1,4 +1,4 @@
-package org.apache.maven.archiva.common.consumers;
+package org.apache.maven.archiva.consumers;
/*
* Licensed to the Apache Software Foundation (ASF) under one
diff --git a/archiva-common/src/test/java/org/apache/maven/archiva/common/consumers/FileProblemsTracker.java b/archiva-consumer-api/src/test/java/org/apache/maven/archiva/consumers/FileProblemsTracker.java
index 82a32f525..35457c4b1 100644
--- a/archiva-common/src/test/java/org/apache/maven/archiva/common/consumers/FileProblemsTracker.java
+++ b/archiva-consumer-api/src/test/java/org/apache/maven/archiva/consumers/FileProblemsTracker.java
@@ -1,4 +1,4 @@
-package org.apache.maven.archiva.common.consumers;
+package org.apache.maven.archiva.consumers;
/*
* Licensed to the Apache Software Foundation (ASF) under one
@@ -20,6 +20,7 @@ package org.apache.maven.archiva.common.consumers;
*/
import org.apache.maven.archiva.common.utils.BaseFile;
+import org.apache.maven.archiva.consumers.ConsumerException;
import org.codehaus.plexus.util.StringUtils;
import java.util.ArrayList;
diff --git a/archiva-common/src/test/java/org/apache/maven/archiva/common/consumers/GenericArtifactConsumerTest.java b/archiva-consumer-api/src/test/java/org/apache/maven/archiva/consumers/GenericArtifactConsumerTest.java
index 1ff2d1ebb..27111ac1e 100644
--- a/archiva-common/src/test/java/org/apache/maven/archiva/common/consumers/GenericArtifactConsumerTest.java
+++ b/archiva-consumer-api/src/test/java/org/apache/maven/archiva/consumers/GenericArtifactConsumerTest.java
@@ -1,4 +1,4 @@
-package org.apache.maven.archiva.common.consumers;
+package org.apache.maven.archiva.consumers;
/*
* Licensed to the Apache Software Foundation (ASF) under one
@@ -21,8 +21,8 @@ package org.apache.maven.archiva.common.consumers;
import org.apache.commons.lang.StringUtils;
import org.apache.maven.archiva.common.utils.BaseFile;
+import org.apache.maven.archiva.model.ArchivaRepository;
import org.apache.maven.artifact.Artifact;
-import org.apache.maven.artifact.repository.ArtifactRepository;
import java.util.ArrayList;
import java.util.Collection;
@@ -47,7 +47,7 @@ public class GenericArtifactConsumerTest
public void testScanLegacy()
throws Exception
{
- ArtifactRepository repository = getLegacyRepository();
+ ArchivaRepository repository = getLegacyRepository();
List consumers = new ArrayList();
MockArtifactConsumer mockConsumer = getMockArtifactConsumer();
@@ -61,7 +61,7 @@ public class GenericArtifactConsumerTest
String path = (String) it.next();
try
{
- mockConsumer.processFile( new BaseFile( repository.getBasedir(), path ) );
+ mockConsumer.processFile( new BaseFile( repository.getRepositoryURL().getPath(), path ) );
}
catch ( ConsumerException e )
{
@@ -87,7 +87,7 @@ public class GenericArtifactConsumerTest
public void testScanDefault()
throws Exception
{
- ArtifactRepository repository = getDefaultRepository();
+ ArchivaRepository repository = getDefaultRepository();
List consumers = new ArrayList();
MockArtifactConsumer mockConsumer = getMockArtifactConsumer();
@@ -101,7 +101,7 @@ public class GenericArtifactConsumerTest
String path = (String) it.next();
try
{
- mockConsumer.processFile( new BaseFile( repository.getBasedir(), path ) );
+ mockConsumer.processFile( new BaseFile( repository.getRepositoryURL().getPath(), path ) );
}
catch ( ConsumerException e )
{
diff --git a/archiva-common/src/test/java/org/apache/maven/archiva/common/consumers/MockArtifactConsumer.java b/archiva-consumer-api/src/test/java/org/apache/maven/archiva/consumers/MockArtifactConsumer.java
index 94fb5ca3e..2d1ccfe3c 100644
--- a/archiva-common/src/test/java/org/apache/maven/archiva/common/consumers/MockArtifactConsumer.java
+++ b/archiva-consumer-api/src/test/java/org/apache/maven/archiva/consumers/MockArtifactConsumer.java
@@ -1,4 +1,4 @@
-package org.apache.maven.archiva.common.consumers;
+package org.apache.maven.archiva.consumers;
/*
* Licensed to the Apache Software Foundation (ASF) under one
@@ -45,7 +45,7 @@ public class MockArtifactConsumer
public void processArtifact( Artifact artifact, BaseFile file )
{
- String relpath = PathUtil.getRelative( repository.getBasedir(), file );
+ String relpath = PathUtil.getRelative( repository.getRepositoryURL().getPath(), file );
artifactMap.put( relpath, artifact );
}
diff --git a/archiva-common/src/test/java/org/apache/maven/archiva/common/consumers/MockModelConsumer.java b/archiva-consumer-api/src/test/java/org/apache/maven/archiva/consumers/MockModelConsumer.java
index 969f10b52..b52ec372c 100644
--- a/archiva-common/src/test/java/org/apache/maven/archiva/common/consumers/MockModelConsumer.java
+++ b/archiva-consumer-api/src/test/java/org/apache/maven/archiva/consumers/MockModelConsumer.java
@@ -1,4 +1,4 @@
-package org.apache.maven.archiva.common.consumers;
+package org.apache.maven.archiva.consumers;
/*
* Licensed to the Apache Software Foundation (ASF) under one
@@ -20,6 +20,7 @@ package org.apache.maven.archiva.common.consumers;
*/
import org.apache.maven.archiva.common.utils.BaseFile;
+import org.apache.maven.archiva.consumers.GenericModelConsumer;
import org.apache.maven.model.Model;
import java.util.HashMap;
diff --git a/archiva-common/src/test/java/org/apache/maven/archiva/common/consumers/MockRepositoryMetadataConsumer.java b/archiva-consumer-api/src/test/java/org/apache/maven/archiva/consumers/MockRepositoryMetadataConsumer.java
index d10331adf..a9a63eab5 100644
--- a/archiva-common/src/test/java/org/apache/maven/archiva/common/consumers/MockRepositoryMetadataConsumer.java
+++ b/archiva-consumer-api/src/test/java/org/apache/maven/archiva/consumers/MockRepositoryMetadataConsumer.java
@@ -1,4 +1,4 @@
-package org.apache.maven.archiva.common.consumers;
+package org.apache.maven.archiva.consumers;
/*
* Licensed to the Apache Software Foundation (ASF) under one
@@ -20,6 +20,7 @@ package org.apache.maven.archiva.common.consumers;
*/
import org.apache.maven.archiva.common.utils.BaseFile;
+import org.apache.maven.archiva.consumers.GenericRepositoryMetadataConsumer;
import org.apache.maven.artifact.repository.metadata.RepositoryMetadata;
import java.util.HashMap;
diff --git a/archiva-converter/pom.xml b/archiva-converter/pom.xml
index 49bde7bd2..a8fefa798 100644
--- a/archiva-converter/pom.xml
+++ b/archiva-converter/pom.xml
@@ -31,6 +31,10 @@
<dependencies>
<dependency>
<groupId>org.apache.maven.archiva</groupId>
+ <artifactId>archiva-consumer-api</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-discoverer</artifactId>
</dependency>
<dependency>
diff --git a/archiva-converter/src/main/java/org/apache/maven/archiva/converter/legacy/LegacyConverterArtifactConsumer.java b/archiva-converter/src/main/java/org/apache/maven/archiva/converter/legacy/LegacyConverterArtifactConsumer.java
index a5b758c4b..03e9d47d0 100644
--- a/archiva-converter/src/main/java/org/apache/maven/archiva/converter/legacy/LegacyConverterArtifactConsumer.java
+++ b/archiva-converter/src/main/java/org/apache/maven/archiva/converter/legacy/LegacyConverterArtifactConsumer.java
@@ -19,8 +19,8 @@ package org.apache.maven.archiva.converter.legacy;
* under the License.
*/
-import org.apache.maven.archiva.common.consumers.GenericArtifactConsumer;
import org.apache.maven.archiva.common.utils.BaseFile;
+import org.apache.maven.archiva.consumers.GenericArtifactConsumer;
import org.apache.maven.archiva.converter.ConversionListener;
import org.apache.maven.archiva.converter.RepositoryConversionException;
import org.apache.maven.archiva.converter.RepositoryConverter;
diff --git a/archiva-core/pom.xml b/archiva-core/pom.xml
index 09daa2d48..a1cec5ad3 100644
--- a/archiva-core/pom.xml
+++ b/archiva-core/pom.xml
@@ -31,6 +31,10 @@
<dependencies>
<dependency>
<groupId>org.apache.maven.archiva</groupId>
+ <artifactId>archiva-consumer-api</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-configuration</artifactId>
</dependency>
<dependency>
diff --git a/archiva-core/src/main/java/org/apache/maven/archiva/consumers/ArtifactHealthConsumer.java b/archiva-core/src/main/java/org/apache/maven/archiva/consumers/ArtifactHealthConsumer.java
index d20594f08..f0eb8843f 100644
--- a/archiva-core/src/main/java/org/apache/maven/archiva/consumers/ArtifactHealthConsumer.java
+++ b/archiva-core/src/main/java/org/apache/maven/archiva/consumers/ArtifactHealthConsumer.java
@@ -19,7 +19,6 @@ package org.apache.maven.archiva.consumers;
* under the License.
*/
-import org.apache.maven.archiva.common.consumers.GenericArtifactConsumer;
import org.apache.maven.archiva.common.utils.BaseFile;
import org.apache.maven.archiva.reporting.database.ArtifactResultsDatabase;
import org.apache.maven.archiva.reporting.group.ReportGroup;
diff --git a/archiva-core/src/main/java/org/apache/maven/archiva/consumers/IndexArtifactConsumer.java b/archiva-core/src/main/java/org/apache/maven/archiva/consumers/IndexArtifactConsumer.java
index 2d7026bb1..f89bd5109 100644
--- a/archiva-core/src/main/java/org/apache/maven/archiva/consumers/IndexArtifactConsumer.java
+++ b/archiva-core/src/main/java/org/apache/maven/archiva/consumers/IndexArtifactConsumer.java
@@ -19,7 +19,6 @@ package org.apache.maven.archiva.consumers;
* under the License.
*/
-import org.apache.maven.archiva.common.consumers.GenericArtifactConsumer;
import org.apache.maven.archiva.common.utils.BaseFile;
import org.apache.maven.archiva.configuration.ArchivaConfiguration;
import org.apache.maven.archiva.configuration.Configuration;
diff --git a/archiva-core/src/main/java/org/apache/maven/archiva/consumers/RepositoryMetadataHealthConsumer.java b/archiva-core/src/main/java/org/apache/maven/archiva/consumers/RepositoryMetadataHealthConsumer.java
index d858d32cd..0c56768b1 100644
--- a/archiva-core/src/main/java/org/apache/maven/archiva/consumers/RepositoryMetadataHealthConsumer.java
+++ b/archiva-core/src/main/java/org/apache/maven/archiva/consumers/RepositoryMetadataHealthConsumer.java
@@ -19,7 +19,6 @@ package org.apache.maven.archiva.consumers;
* under the License.
*/
-import org.apache.maven.archiva.common.consumers.GenericRepositoryMetadataConsumer;
import org.apache.maven.archiva.common.utils.BaseFile;
import org.apache.maven.archiva.reporting.database.MetadataResultsDatabase;
import org.apache.maven.archiva.reporting.group.ReportGroup;
diff --git a/archiva-core/src/main/java/org/apache/maven/archiva/scheduler/executors/DataRefreshExecutor.java b/archiva-core/src/main/java/org/apache/maven/archiva/scheduler/executors/DataRefreshExecutor.java
index e95014360..0d92adf71 100644
--- a/archiva-core/src/main/java/org/apache/maven/archiva/scheduler/executors/DataRefreshExecutor.java
+++ b/archiva-core/src/main/java/org/apache/maven/archiva/scheduler/executors/DataRefreshExecutor.java
@@ -19,13 +19,13 @@ package org.apache.maven.archiva.scheduler.executors;
* under the License.
*/
-import org.apache.maven.archiva.common.consumers.Consumer;
-import org.apache.maven.archiva.common.consumers.ConsumerException;
-import org.apache.maven.archiva.common.consumers.ConsumerFactory;
import org.apache.maven.archiva.configuration.ArchivaConfiguration;
import org.apache.maven.archiva.configuration.Configuration;
import org.apache.maven.archiva.configuration.ConfiguredRepositoryFactory;
import org.apache.maven.archiva.configuration.RepositoryConfiguration;
+import org.apache.maven.archiva.consumers.Consumer;
+import org.apache.maven.archiva.consumers.ConsumerException;
+import org.apache.maven.archiva.consumers.ConsumerFactory;
import org.apache.maven.archiva.discoverer.Discoverer;
import org.apache.maven.archiva.discoverer.DiscovererException;
import org.apache.maven.archiva.discoverer.DiscovererStatistics;
diff --git a/archiva-database/pom.xml b/archiva-database/pom.xml
index f978fdd2f..32ede8488 100755
--- a/archiva-database/pom.xml
+++ b/archiva-database/pom.xml
@@ -30,30 +30,37 @@
<name>Archiva Database</name>
<dependencies>
<dependency>
- <groupId>org.apache.ibatis</groupId>
- <artifactId>ibatis-sqlmap</artifactId>
- <version>2.3.0</version>
- </dependency>
- <dependency>
- <groupId>org.apache.maven</groupId>
- <artifactId>maven-artifact-manager</artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.maven</groupId>
- <artifactId>maven-project</artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.maven</groupId>
- <artifactId>maven-repository-metadata</artifactId>
+ <groupId>org.apache.maven.archiva</groupId>
+ <artifactId>archiva-model</artifactId>
+ <version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.codehaus.plexus</groupId>
- <artifactId>plexus-ibatis</artifactId>
- <version>1.0-SNAPSHOT</version>
+ <artifactId>plexus-jdo2</artifactId>
+ <version>1.0-alpha-8</version>
+ <exclusions>
+ <exclusion>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>xerces</groupId>
+ <artifactId>xmlParserAPIs</artifactId>
+ </exclusion>
+ </exclusions>
</dependency>
<dependency>
- <groupId>org.codehaus.plexus</groupId>
- <artifactId>plexus-utils</artifactId>
+ <groupId>jpox</groupId>
+ <artifactId>jpox</artifactId>
+ <version>1.1.7</version>
+ <scope>compile</scope>
+ <exclusions>
+ <!-- targeting JDK 1.4 we don't need this -->
+ <exclusion>
+ <groupId>javax.sql</groupId>
+ <artifactId>jdbc-stdext</artifactId>
+ </exclusion>
+ </exclusions>
</dependency>
<dependency>
<groupId>org.codehaus.plexus</groupId>
diff --git a/archiva-database/src/main/java/org/apache/maven/archiva/database/AbstractIbatisStore.java b/archiva-database/src/main/java/org/apache/maven/archiva/database/AbstractIbatisStore.java
deleted file mode 100644
index 0e25a028c..000000000
--- a/archiva-database/src/main/java/org/apache/maven/archiva/database/AbstractIbatisStore.java
+++ /dev/null
@@ -1,180 +0,0 @@
-package org.apache.maven.archiva.database;
-
-/*
- * 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 com.ibatis.sqlmap.client.SqlMapClient;
-
-import org.codehaus.plexus.ibatis.PlexusIbatisHelper;
-import org.codehaus.plexus.logging.AbstractLogEnabled;
-import org.codehaus.plexus.personality.plexus.lifecycle.phase.Initializable;
-import org.codehaus.plexus.personality.plexus.lifecycle.phase.InitializationException;
-
-import java.sql.Connection;
-import java.sql.DatabaseMetaData;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-
-/**
- * AbstractIbatisStore
- *
- * @author <a href="mailto:joakim@erdfelt.com">Joakim Erdfelt</a>
- * @version $Id$
- */
-public abstract class AbstractIbatisStore
- extends AbstractLogEnabled
- implements Initializable
-{
- /**
- * @plexus.requirement
- */
- protected PlexusIbatisHelper ibatisHelper;
-
- /**
- * @plexus.configuration default-value="create"
- */
- private String createPrefix;
-
- /**
- * @plexus.configuration default-value="drop"
- */
- private String dropPrefix;
-
- protected abstract String[] getTableNames();
-
- public void initialize()
- throws InitializationException
- {
- try
- {
- String tableNames[] = getTableNames();
- for ( int i = 0; i < tableNames.length; i++ )
- {
- String tableName = tableNames[i];
- initializeTable( tableName );
- }
- }
- catch ( ArchivaDatabaseException e )
- {
- throw new InitializationException( "Unable to initialize the database: " + e.getMessage(), e );
- }
- }
-
- protected void initializeTable( String tableName )
- throws ArchivaDatabaseException
- {
- SqlMapClient sqlMap = ibatisHelper.getSqlMapClient();
-
- try
- {
- sqlMap.startTransaction();
-
- Connection con = sqlMap.getCurrentConnection();
-
- DatabaseMetaData databaseMetaData = con.getMetaData();
-
- ResultSet rs = databaseMetaData.getTables( con.getCatalog(), null, null, null );
-
- // check if the index database exists in the database
- while ( rs.next() )
- {
- String dbTableName = rs.getString( "TABLE_NAME" );
-
- // if it does then we are already initialized
- if ( dbTableName.toLowerCase().equals( tableName.toLowerCase() ) )
- {
- return;
- }
- }
-
- // Create the tables
-
- getLogger().info( "Creating table: " + tableName );
- sqlMap.update( createPrefix + tableName, null );
-
- sqlMap.commitTransaction();
- }
- catch ( SQLException e )
- {
- getLogger().error( "Error while initializing database, showing all linked exceptions in SQLException." );
-
- while ( e != null )
- {
- getLogger().error( e.getMessage(), e );
-
- e = e.getNextException();
- }
-
- throw new ArchivaDatabaseException( "Error while setting up database.", e );
- }
- finally
- {
- try
- {
- sqlMap.endTransaction();
- }
- catch ( SQLException e )
- {
- e.printStackTrace();
- }
- }
- }
-
- protected void dropTable( String tableName )
- throws ArchivaDatabaseException
- {
- SqlMapClient sqlMap = ibatisHelper.getSqlMapClient();
-
- try
- {
- sqlMap.startTransaction();
-
- getLogger().info( "Dropping table: " + tableName );
- sqlMap.update( dropPrefix + tableName, null );
-
- sqlMap.commitTransaction();
- }
- catch ( SQLException e )
- {
- getLogger().error( "Error while dropping database, showing all linked exceptions in SQLException." );
-
- while ( e != null )
- {
- getLogger().error( e.getMessage(), e );
-
- e = e.getNextException();
- }
-
- throw new ArchivaDatabaseException( "Error while dropping database.", e );
- }
- finally
- {
- try
- {
- sqlMap.endTransaction();
- }
- catch ( SQLException e )
- {
- e.printStackTrace();
- }
- }
- }
-
-
-}
diff --git a/archiva-database/src/main/java/org/apache/maven/archiva/database/AbstractMetadataKeyDatabase.java b/archiva-database/src/main/java/org/apache/maven/archiva/database/AbstractMetadataKeyDatabase.java
deleted file mode 100644
index dda52114a..000000000
--- a/archiva-database/src/main/java/org/apache/maven/archiva/database/AbstractMetadataKeyDatabase.java
+++ /dev/null
@@ -1,288 +0,0 @@
-package org.apache.maven.archiva.database;
-
-
-/*
- * 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 com.ibatis.sqlmap.client.SqlMapClient;
-
-import org.apache.maven.archiva.database.key.MetadataKey;
-import org.apache.maven.artifact.repository.metadata.Metadata;
-import org.codehaus.plexus.ibatis.PlexusIbatisHelper;
-import org.codehaus.plexus.logging.AbstractLogEnabled;
-import org.codehaus.plexus.personality.plexus.lifecycle.phase.Initializable;
-import org.codehaus.plexus.personality.plexus.lifecycle.phase.InitializationException;
-
-import java.sql.Connection;
-import java.sql.DatabaseMetaData;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-
-
-/**
- *
- * IbatisMetadataStore
- *
- * @author <a href="mailto:jmcconnell@apache.com">Jesse McConnell</a>
- * @version $Id$
- *
- */
-public class AbstractMetadataKeyDatabase
- extends AbstractLogEnabled
- implements Initializable
-{
- /**
- * @plexus.requirement
- */
- protected PlexusIbatisHelper ibatisHelper;
-
- /**
- * @plexus.configuration default-value="create"
- */
- private String createPrefix;
-
- /**
- * @plexus.configuration default-value="drop"
- */
- private String dropPrefix;
-
- public MetadataKey getMetadataKey( Metadata metadata )
- throws ArchivaDatabaseException
- {
- SqlMapClient sqlMap = ibatisHelper.getSqlMapClient();
-
- try
- {
- sqlMap.startTransaction();
-
- getLogger().info( "Getting metadata key" );
- MetadataKey newMetadataKey = (MetadataKey) sqlMap.queryForObject( "getMetadataKey", metadata );
-
- if ( newMetadataKey == null )
- {
- getLogger().info( "added new metadata" );
- sqlMap.update( "addMetadataKey", metadata );
-
- newMetadataKey = (MetadataKey) sqlMap.queryForObject( "getMetadataKey", metadata );
-
- if ( newMetadataKey == null )
- {
- throw new ArchivaDatabaseException( "unable to create new MetadataKeys" );
- }
- }
-
- return newMetadataKey;
-
- }
- catch ( SQLException e )
- {
- getLogger().error( "Error while adding metadata, showing all linked exceptions in SQLException." );
-
- while ( e != null )
- {
- getLogger().error( e.getMessage(), e );
-
- e = e.getNextException();
- }
-
- throw new ArchivaDatabaseException ( "Error while interacting with the database.", e );
- }
- finally
- {
- try
- {
- sqlMap.endTransaction();
- }
- catch ( SQLException e )
- {
- e.printStackTrace();
- }
- }
- }
-
-
- protected void initializeTable( String tableName )
- throws ArchivaDatabaseException
- {
- SqlMapClient sqlMap = ibatisHelper.getSqlMapClient();
-
- try
- {
- sqlMap.startTransaction();
-
- Connection con = sqlMap.getCurrentConnection();
-
- DatabaseMetaData databaseMetaData = con.getMetaData();
-
- ResultSet rs = databaseMetaData.getTables( con.getCatalog(), null, null, null );
-
- // check if the index database exists in the database
- while ( rs.next() )
- {
- String dbTableName = rs.getString( "TABLE_NAME" );
-
- // if it does then we are already initialized
- if ( dbTableName.toLowerCase().equals( tableName.toLowerCase() ) )
- {
- return;
- }
- }
-
- // Create the tables
-
- getLogger().info( "Creating table: " + tableName );
- sqlMap.update( createPrefix + tableName, null );
-
- sqlMap.commitTransaction();
- }
- catch ( SQLException e )
- {
- getLogger().error( "Error while initializing database, showing all linked exceptions in SQLException." );
-
- while ( e != null )
- {
- getLogger().error( e.getMessage(), e );
-
- e = e.getNextException();
- }
-
- throw new ArchivaDatabaseException( "Error while setting up database.", e );
- }
- finally
- {
- try
- {
- sqlMap.endTransaction();
- }
- catch ( SQLException e )
- {
- e.printStackTrace();
- }
- }
- }
-
- protected void dropTable( String tableName )
- throws ArchivaDatabaseException
- {
- SqlMapClient sqlMap = ibatisHelper.getSqlMapClient();
-
- try
- {
- sqlMap.startTransaction();
-
- getLogger().info( "Dropping table: " + tableName );
- sqlMap.update( dropPrefix + tableName, null );
-
- sqlMap.commitTransaction();
- }
- catch ( SQLException e )
- {
- getLogger().error( "Error while dropping database, showing all linked exceptions in SQLException." );
-
- while ( e != null )
- {
- getLogger().error( e.getMessage(), e );
-
- e = e.getNextException();
- }
-
- throw new ArchivaDatabaseException( "Error while dropping database.", e );
- }
- finally
- {
- try
- {
- sqlMap.endTransaction();
- }
- catch ( SQLException e )
- {
- e.printStackTrace();
- }
- }
-}
-
- public void initialize()
- throws InitializationException
- {
- try
- {
- initializeTable( "MetadataKeys" );
- }
- catch ( ArchivaDatabaseException ade )
- {
- throw new InitializationException( "unable to initialize metadata keys database" );
- }
- }
-
-
- protected boolean tableExists( String tableName )
- throws ArchivaDatabaseException
-{
- SqlMapClient sqlMap = ibatisHelper.getSqlMapClient();
-
- try
- {
- sqlMap.startTransaction();
-
- Connection con = sqlMap.getCurrentConnection();
-
- DatabaseMetaData databaseMetaData = con.getMetaData();
-
- ResultSet rs = databaseMetaData.getTables( con.getCatalog(), null, null, null );
-
- // check if the index database exists in the database
- while ( rs.next() )
- {
- String dbTableName = rs.getString( "TABLE_NAME" );
-
- // if it does then we are already initialized
- if ( dbTableName.toLowerCase().equals( tableName.toLowerCase() ) )
- {
- return true;
- }
- }
- return false;
- }
- catch ( SQLException e )
- {
- getLogger().error( "Error while check database, showing all linked exceptions in SQLException." );
-
- while ( e != null )
- {
- getLogger().error( e.getMessage(), e );
-
- e = e.getNextException();
- }
-
- throw new ArchivaDatabaseException( "Error while checking database.", e );
- }
- finally
- {
- try
- {
- sqlMap.endTransaction();
- }
- catch ( SQLException e )
- {
- e.printStackTrace();
- }
- }
-}
-
-}
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
new file mode 100644
index 000000000..ef56ad1b1
--- /dev/null
+++ b/archiva-database/src/main/java/org/apache/maven/archiva/database/ArchivaDAO.java
@@ -0,0 +1,110 @@
+package org.apache.maven.archiva.database;
+
+/*
+ * 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.ArchivaRepository;
+import org.apache.maven.archiva.model.RepositoryContent;
+
+import java.util.List;
+
+/**
+ * ArchivaDAO - The interface for all content within the database.
+ *
+ * @author <a href="mailto:joakim@erdfelt.com">Joakim Erdfelt</a>
+ * @version $Id$
+ */
+public interface ArchivaDAO
+{
+ /* NOTE TO ARCHIVA DEVELOPERS.
+ *
+ * Please keep this interface clean and lean.
+ * We don't want a repeat of the Continuum Store.
+ * You should have the following methods per object type ...
+ *
+ * (Required Methods)
+ *
+ * DatabaseObject .createDatabaseObject( Required Params ) ;
+ * List .queryDatabaseObject( Constraint ) throws ObjectNotFoundException, DatabaseException;
+ * DatabaseObject .saveDatabaseObject( DatabaseObject ) throws DatabaseException;
+ *
+ * (Optional Methods)
+ *
+ * DatabaseObject .getDatabaseObject( Id ) throws ObjectNotFoundException, DatabaseException;
+ * List .getDatabaseObjects() throws ObjectNotFoundException, DatabaseException;
+ * void .deleteDatabaseObject( DatabaseObject ) throws DatabaseException;
+ *
+ * This is the only list of options created in this DAO.
+ */
+
+ /* .\ Archiva Repository \.____________________________________________________________ */
+
+ public ArchivaRepository createRepository( String id, String url );
+
+ public List /*<ArchivaRepository>*/getRepositories()
+ throws ObjectNotFoundException, ArchivaDatabaseException;
+
+ public ArchivaRepository getRepository( String id )
+ throws ObjectNotFoundException, ArchivaDatabaseException;
+
+ public List queryRepository( Constraint constraint )
+ throws ObjectNotFoundException, ArchivaDatabaseException;
+
+ public ArchivaRepository saveRepository( ArchivaRepository repository )
+ throws ArchivaDatabaseException;
+
+ public void deleteRepository( ArchivaRepository repository )
+ throws ArchivaDatabaseException;
+
+ /* .\ Repository Content \.____________________________________________________________ */
+
+ public RepositoryContent createRepositoryContent( String groupId, String artifactId, String version,
+ String repositoryId );
+
+ public RepositoryContent getRepositoryContent( String groupId, String artifactId, String version,
+ String repositoryId )
+ throws ObjectNotFoundException, ArchivaDatabaseException;
+
+ public List /*<RepositoryContent>*/queryRepositoryContents( Constraint constraint )
+ throws ObjectNotFoundException, ArchivaDatabaseException;
+
+ public RepositoryContent saveRepositoryContent( RepositoryContent repoContent )
+ throws ArchivaDatabaseException;
+
+ public void deleteRepositoryContent( RepositoryContent repoContent )
+ throws ArchivaDatabaseException;
+
+ /* .\ Archiva Artifact \. _____________________________________________________________ */
+
+ public ArchivaArtifact createArtifact( RepositoryContent repoContent, String classifier, String type );
+
+ public ArchivaArtifact getArtifact( RepositoryContent repoContent, String classifier, String type )
+ throws ObjectNotFoundException, ArchivaDatabaseException;
+
+ public List /*<ArchivaArtifact>*/queryArtifacts( Constraint constraint )
+ throws ObjectNotFoundException, ArchivaDatabaseException;
+
+ public ArchivaArtifact saveArtifact( ArchivaArtifact artifact )
+ throws ArchivaDatabaseException;
+
+ public void deleteArtifact( ArchivaArtifact artifact )
+ throws ArchivaDatabaseException;
+
+}
diff --git a/archiva-database/src/main/java/org/apache/maven/archiva/database/Constraint.java b/archiva-database/src/main/java/org/apache/maven/archiva/database/Constraint.java
new file mode 100644
index 000000000..eac67f913
--- /dev/null
+++ b/archiva-database/src/main/java/org/apache/maven/archiva/database/Constraint.java
@@ -0,0 +1,42 @@
+package org.apache.maven.archiva.database;
+
+/**
+ * Constraint
+ *
+ * @author <a href="mailto:joakim@erdfelt.com">Joakim Erdfelt</a>
+ * @version $Id$
+ */
+public interface Constraint
+{
+ public static final String ASCENDING = "ascending";
+
+ public static final String DESCENDING = "descending";
+
+ /**
+ * Get the fetch limits on the object.
+ *
+ * @return the fetch limits on the object. (can be null) (O/RM specific)
+ */
+ public String getFetchLimits();
+
+ /**
+ * Get the SELECT WHERE (condition) value for the constraint.
+ *
+ * @return the equivalent of the SELECT WHERE (condition) value for this constraint. (can be null)
+ */
+ public String getWhereCondition();
+
+ /**
+ * Get the sort column name.
+ *
+ * @return the sort column name. (can be null)
+ */
+ public String getSortColumn();
+
+ /**
+ * Get the sort direction name.
+ *
+ * @return the sort direction name. ("ASC" or "DESC") (only valid if {@link #getSortColumn()} is specified.)
+ */
+ public String getSortDirection();
+}
diff --git a/archiva-model/src/main/java/org/apache/maven/archiva/model/health/ArtifactHealth.java b/archiva-database/src/main/java/org/apache/maven/archiva/database/ObjectNotFoundException.java
index e26435c41..e9dfc01d0 100644
--- a/archiva-model/src/main/java/org/apache/maven/archiva/model/health/ArtifactHealth.java
+++ b/archiva-database/src/main/java/org/apache/maven/archiva/database/ObjectNotFoundException.java
@@ -1,4 +1,4 @@
-package org.apache.maven.archiva.model.health;
+package org.apache.maven.archiva.database;
/*
* Licensed to the Apache Software Foundation (ASF) under one
@@ -19,45 +19,35 @@ package org.apache.maven.archiva.model.health;
* under the License.
*/
-import org.apache.maven.archiva.model.ArchivaArtifact;
-
-import java.util.ArrayList;
-import java.util.List;
-
/**
- * ArtifactHealth
+ * ObjectNotFoundException
*
* @author <a href="mailto:joakim@erdfelt.com">Joakim Erdfelt</a>
* @version $Id$
*/
-public class ArtifactHealth
+public class ObjectNotFoundException
+ extends ArchivaDatabaseException
{
- private ArchivaArtifact artifact;
-
- private List problems = new ArrayList();
-
- public void addProblem( HealthProblem problem )
- {
- this.problems.add( problem );
- }
+ private Object id;
- public ArchivaArtifact getArtifact()
+ public ObjectNotFoundException( String message, Throwable cause, Object id )
{
- return artifact;
+ super( message, cause );
+ this.id = id;
}
- public List getProblems()
+ public ObjectNotFoundException( String message, Throwable cause )
{
- return problems;
+ super( message, cause );
}
- public void setArtifact( ArchivaArtifact artifact )
+ public ObjectNotFoundException( String message )
{
- this.artifact = artifact;
+ super( message );
}
- public void setProblems( List problems )
+ public Object getId()
{
- this.problems = problems;
+ return id;
}
}
diff --git a/archiva-database/src/main/java/org/apache/maven/archiva/database/RepositoryMetadataDatabase.java b/archiva-database/src/main/java/org/apache/maven/archiva/database/RepositoryMetadataDatabase.java
deleted file mode 100644
index 5434e6071..000000000
--- a/archiva-database/src/main/java/org/apache/maven/archiva/database/RepositoryMetadataDatabase.java
+++ /dev/null
@@ -1,232 +0,0 @@
-package org.apache.maven.archiva.database;
-
-/*
- * 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 com.ibatis.sqlmap.client.SqlMapClient;
-
-import org.apache.maven.archiva.database.key.MetadataKey;
-import org.apache.maven.artifact.repository.metadata.RepositoryMetadata;
-import org.codehaus.plexus.personality.plexus.lifecycle.phase.InitializationException;
-
-import java.sql.SQLException;
-
-/**
- * RepositoryMetadataDatabase
- *
- * @author <a href="mailto:joakim@erdfelt.com">Joakim Erdfelt</a>
- * @version $Id$
- *
- * @plexus.component role="org.apache.maven.archiva.database.RepositoryMetadataDatabase" role-hint="default"
- */
-public class RepositoryMetadataDatabase extends AbstractMetadataKeyDatabase
-{
- public void create( RepositoryMetadata metadata )
- throws ArchivaDatabaseException
- {
-
- SqlMapClient sqlMap = ibatisHelper.getSqlMapClient();
-
- try
- {
- sqlMap.startTransaction();
-
- getLogger().info( "Adding repository metadata" );
- sqlMap.update( "addRepositoryMetadata", metadata );
-
- sqlMap.commitTransaction();
- }
- catch ( SQLException e )
- {
- getLogger().error( "Error while executing statement, showing all linked exceptions in SQLException." );
-
- while ( e != null )
- {
- getLogger().error( e.getMessage(), e );
-
- e = e.getNextException();
- }
-
- throw new ArchivaDatabaseException( "Error while executing statement.", e );
- }
- finally
- {
- try
- {
- sqlMap.endTransaction();
- }
- catch ( SQLException e )
- {
- e.printStackTrace();
- }
- }
- }
-
-
- public RepositoryMetadata read( String groupId, String artifactId, String version )
- throws ArchivaDatabaseException
- {
-
- SqlMapClient sqlMap = ibatisHelper.getSqlMapClient();
-
- try
- {
- sqlMap.startTransaction();
-
- getLogger().info( "Reading repository metadata" );
- RepositoryMetadata repositoryMetadata = (RepositoryMetadata) sqlMap.queryForObject( "getRepositoryMetadata", new MetadataKey( groupId, artifactId, version ) );
-
- return repositoryMetadata;
- }
- catch ( SQLException e )
- {
- getLogger().error( "Error while executing statement, showing all linked exceptions in SQLException." );
-
- while ( e != null )
- {
- getLogger().error( e.getMessage(), e );
-
- e = e.getNextException();
- }
-
- throw new ArchivaDatabaseException( "Error while executing statement.", e );
- }
- finally
- {
- try
- {
- sqlMap.endTransaction();
- }
- catch ( SQLException e )
- {
- e.printStackTrace();
- }
- }
- }
-
- /**
- * not implemented yet
- *
- * @param metadata
- * @throws ArchivaDatabaseException
- */
- public void update( RepositoryMetadata metadata )
- throws ArchivaDatabaseException
- {
-
- SqlMapClient sqlMap = ibatisHelper.getSqlMapClient();
-
- try
- {
- sqlMap.startTransaction();
-
- getLogger().info( "Updating repository metadata" );
- sqlMap.update( "updateRepositoryMetadata", metadata );
-
- sqlMap.commitTransaction();
- }
- catch ( SQLException e )
- {
- getLogger().error( "Error while executing statement, showing all linked exceptions in SQLException." );
-
- while ( e != null )
- {
- getLogger().error( e.getMessage(), e );
-
- e = e.getNextException();
- }
-
- throw new ArchivaDatabaseException( "Error while executing statement.", e );
- }
- finally
- {
- try
- {
- sqlMap.endTransaction();
- }
- catch ( SQLException e )
- {
- e.printStackTrace();
- }
- }
- }
-
- public void delete( RepositoryMetadata metadata )
- throws ArchivaDatabaseException
- {
- // FIXME is this right? baseVersion seems wrong but I don't know enough about the metadata to say
- delete( metadata.getGroupId(), metadata.getArtifactId(), metadata.getBaseVersion() );
- }
-
- public void delete( String groupId, String artifactId, String version )
- throws ArchivaDatabaseException
- {
- SqlMapClient sqlMap = ibatisHelper.getSqlMapClient();
-
- try
- {
- sqlMap.startTransaction();
-
- getLogger().info( "Removing repository metadata" );
- sqlMap.update( "removeRepositoryMetadata", new MetadataKey( groupId, artifactId, version ) );
-
- sqlMap.commitTransaction();
- }
- catch ( SQLException e )
- {
- getLogger().error( "Error while executing statement, showing all linked exceptions in SQLException." );
-
- while ( e != null )
- {
- getLogger().error( e.getMessage(), e );
-
- e = e.getNextException();
- }
-
- throw new ArchivaDatabaseException( "Error while executing statement.", e );
- }
- finally
- {
- try
- {
- sqlMap.endTransaction();
- }
- catch ( SQLException e )
- {
- e.printStackTrace();
- }
- }
- }
-
- public void initialize()
- throws InitializationException
- {
- super.initialize();
- try
- {
- initializeTable( "RepositoryMetadata" );
- }
- catch ( ArchivaDatabaseException ade )
- {
- throw new InitializationException( "unable to initialize repository metadata table", ade );
- }
- }
-
-
-}
diff --git a/archiva-database/src/main/java/org/apache/maven/archiva/database/artifact/ArtifactKey.java b/archiva-database/src/main/java/org/apache/maven/archiva/database/artifact/ArtifactKey.java
deleted file mode 100644
index e1f00ab98..000000000
--- a/archiva-database/src/main/java/org/apache/maven/archiva/database/artifact/ArtifactKey.java
+++ /dev/null
@@ -1,101 +0,0 @@
-package org.apache.maven.archiva.database.artifact;
-
-/*
- * 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.
- */
-
-/**
- * ArtifactKey
- *
- * @author <a href="mailto:joakim@erdfelt.com">Joakim Erdfelt</a>
- * @version $Id$
- */
-public class ArtifactKey
-{
- private String groupId;
-
- private String artifactId;
-
- private String version;
-
- private String classifier;
-
- private String type;
-
- private long id;
-
- public String getArtifactId()
- {
- return artifactId;
- }
-
- public void setArtifactId( String artifactId )
- {
- this.artifactId = artifactId;
- }
-
- public String getClassifier()
- {
- return classifier;
- }
-
- public void setClassifier( String classifier )
- {
- this.classifier = classifier;
- }
-
- public String getGroupId()
- {
- return groupId;
- }
-
- public void setGroupId( String groupId )
- {
- this.groupId = groupId;
- }
-
- public long getId()
- {
- return id;
- }
-
- public void setId( long id )
- {
- this.id = id;
- }
-
- public String getType()
- {
- return type;
- }
-
- public void setType( String type )
- {
- this.type = type;
- }
-
- public String getVersion()
- {
- return version;
- }
-
- public void setVersion( String version )
- {
- this.version = version;
- }
-}
diff --git a/archiva-database/src/main/java/org/apache/maven/archiva/database/artifact/ArtifactPersistence.java b/archiva-database/src/main/java/org/apache/maven/archiva/database/artifact/ArtifactPersistence.java
deleted file mode 100644
index d59cbf9cc..000000000
--- a/archiva-database/src/main/java/org/apache/maven/archiva/database/artifact/ArtifactPersistence.java
+++ /dev/null
@@ -1,137 +0,0 @@
-package org.apache.maven.archiva.database.artifact;
-
-/*
- * 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 com.ibatis.sqlmap.client.SqlMapClient;
-
-import org.apache.maven.archiva.database.AbstractIbatisStore;
-import org.apache.maven.archiva.database.ArchivaDatabaseException;
-import org.apache.maven.artifact.Artifact;
-
-import java.sql.SQLException;
-
-/**
- * ArtifactPersistence
- *
- * @author <a href="mailto:joakim@erdfelt.com">Joakim Erdfelt</a>
- * @version $Id$
- *
- * @plexus.component role="org.apache.maven.archiva.database.artifact.ArtifactPersistence"
- */
-public class ArtifactPersistence
- extends AbstractIbatisStore
-{
- protected String[] getTableNames()
- {
- return new String[] { "ArtifactKeys" };
- }
-
- private ArtifactKey toKey( Artifact artifact )
- {
- ArtifactKey key = new ArtifactKey();
- key.setGroupId( artifact.getGroupId() );
- key.setArtifactId( artifact.getArtifactId() );
- key.setVersion( artifact.getVersion() );
- key.setClassifier( artifact.getClassifier() );
- key.setType( artifact.getType() );
- return key;
- }
-
- public void create( Artifact artifact )
- throws ArchivaDatabaseException
- {
- SqlMapClient sqlMap = ibatisHelper.getSqlMapClient();
-
- try
- {
- sqlMap.startTransaction();
-
- getLogger().info( "Adding artifact." );
- sqlMap.update( "addArtifact", artifact );
-
- sqlMap.commitTransaction();
- }
- catch ( SQLException e )
- {
- getLogger().error( "Error while executing statement, showing all linked exceptions in SQLException." );
-
- while ( e != null )
- {
- getLogger().error( e.getMessage(), e );
-
- e = e.getNextException();
- }
-
- throw new ArchivaDatabaseException( "Error while executing statement.", e );
- }
- finally
- {
- try
- {
- sqlMap.endTransaction();
- }
- catch ( SQLException e )
- {
- e.printStackTrace();
- }
- }
- }
-
- public Artifact read( String groupId, String artifactId, String version )
- {
- return null;
- }
-
- public Artifact read( String groupId, String artifactId, String version, String type )
- {
- return null;
- }
-
- public Artifact read( String groupId, String artifactId, String version, String classifier, String type )
- {
- return null;
- }
-
- public void update( Artifact artifact )
- {
-
- }
-
- public void delete( Artifact artifact )
- {
-
- }
-
- public void delete( String groupId, String artifactId, String version )
- {
-
- }
-
- public void delete( String groupId, String artifactId, String version, String type )
- {
-
- }
-
- public void delete( String groupId, String artifactId, String version, String classifier, String type )
- {
-
- }
-
-}
diff --git a/archiva-database/src/main/java/org/apache/maven/archiva/database/constraints/ArchivaRepositoryByUrlConstraint.java b/archiva-database/src/main/java/org/apache/maven/archiva/database/constraints/ArchivaRepositoryByUrlConstraint.java
new file mode 100644
index 000000000..8abc14bec
--- /dev/null
+++ b/archiva-database/src/main/java/org/apache/maven/archiva/database/constraints/ArchivaRepositoryByUrlConstraint.java
@@ -0,0 +1,40 @@
+package org.apache.maven.archiva.database.constraints;
+
+import org.apache.maven.archiva.database.Constraint;
+
+/**
+ * ArchivaRepositoryByUrlConstraint
+ *
+ * @author <a href="mailto:joakim@erdfelt.com">Joakim Erdfelt</a>
+ * @version $Id$
+ */
+public class ArchivaRepositoryByUrlConstraint
+ implements Constraint
+{
+ private String whereCondition;
+
+ public ArchivaRepositoryByUrlConstraint( String url )
+ {
+ whereCondition = "this.url == '" + url + "'";
+ }
+
+ public String getWhereCondition()
+ {
+ return whereCondition;
+ }
+
+ public String getFetchLimits()
+ {
+ return null;
+ }
+
+ public String getSortColumn()
+ {
+ return "url";
+ }
+
+ public String getSortDirection()
+ {
+ return Constraint.ASCENDING;
+ }
+}
diff --git a/archiva-database/src/main/java/org/apache/maven/archiva/database/jdo/JdoAccess.java b/archiva-database/src/main/java/org/apache/maven/archiva/database/jdo/JdoAccess.java
new file mode 100644
index 000000000..7ab55087e
--- /dev/null
+++ b/archiva-database/src/main/java/org/apache/maven/archiva/database/jdo/JdoAccess.java
@@ -0,0 +1,459 @@
+package org.apache.maven.archiva.database.jdo;
+
+/*
+ * 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.database.ArchivaDatabaseException;
+import org.apache.maven.archiva.database.Constraint;
+import org.apache.maven.archiva.database.ObjectNotFoundException;
+import org.codehaus.plexus.jdo.JdoFactory;
+import org.codehaus.plexus.personality.plexus.lifecycle.phase.Initializable;
+import org.codehaus.plexus.personality.plexus.lifecycle.phase.InitializationException;
+
+import java.io.PrintStream;
+import java.util.List;
+
+import javax.jdo.Extent;
+import javax.jdo.JDOException;
+import javax.jdo.JDOHelper;
+import javax.jdo.JDOObjectNotFoundException;
+import javax.jdo.JDOUserException;
+import javax.jdo.PersistenceManager;
+import javax.jdo.PersistenceManagerFactory;
+import javax.jdo.Query;
+import javax.jdo.Transaction;
+import javax.jdo.datastore.DataStoreCache;
+import javax.jdo.listener.InstanceLifecycleEvent;
+import javax.jdo.listener.InstanceLifecycleListener;
+import javax.jdo.listener.StoreLifecycleListener;
+import javax.jdo.spi.Detachable;
+import javax.jdo.spi.PersistenceCapable;
+
+/**
+ * JdoAccess
+ *
+ * @author <a href="mailto:joakim@erdfelt.com">Joakim Erdfelt</a>
+ * @version $Id$
+ */
+public class JdoAccess
+ implements Initializable, InstanceLifecycleListener, StoreLifecycleListener
+{
+ /**
+ * @plexus.requirement role-hint="users"
+ */
+ private JdoFactory jdoFactory;
+
+ private PersistenceManagerFactory pmf;
+
+ public void initialize()
+ throws InitializationException
+ {
+ pmf = jdoFactory.getPersistenceManagerFactory();
+
+ pmf.addInstanceLifecycleListener( this, null );
+ }
+
+ public static void dumpObjectState( PrintStream out, Object o )
+ {
+ final String STATE = "[STATE] ";
+ final String INDENT = " ";
+
+ if ( o == null )
+ {
+ out.println( STATE + "Object is null." );
+ return;
+ }
+
+ out.println( STATE + "Object " + o.getClass().getName() );
+
+ if ( !( o instanceof PersistenceCapable ) )
+ {
+ out.println( INDENT + "is NOT PersistenceCapable (not a jdo object?)" );
+ return;
+ }
+
+ out.println( INDENT + "is PersistenceCapable." );
+ if ( o instanceof Detachable )
+ {
+ out.println( INDENT + "is Detachable" );
+ }
+
+ out.println( INDENT + "is new : " + Boolean.toString( JDOHelper.isNew( o ) ) );
+ out.println( INDENT + "is transactional : " + Boolean.toString( JDOHelper.isTransactional( o ) ) );
+ out.println( INDENT + "is deleted : " + Boolean.toString( JDOHelper.isDeleted( o ) ) );
+ out.println( INDENT + "is detached : " + Boolean.toString( JDOHelper.isDetached( o ) ) );
+ out.println( INDENT + "is dirty : " + Boolean.toString( JDOHelper.isDirty( o ) ) );
+ out.println( INDENT + "is persistent : " + Boolean.toString( JDOHelper.isPersistent( o ) ) );
+
+ out.println( INDENT + "object id : " + JDOHelper.getObjectId( o ) );
+ }
+
+ public PersistenceManager getPersistenceManager()
+ {
+ PersistenceManager pm = pmf.getPersistenceManager();
+
+ pm.getFetchPlan().setMaxFetchDepth( -1 );
+
+ return pm;
+ }
+
+ public void enableCache( Class clazz )
+ {
+ DataStoreCache cache = pmf.getDataStoreCache();
+ cache.pinAll( clazz, false ); // Pin all objects of type clazz from now on
+ }
+
+ public Object saveObject( Object object )
+ {
+ return saveObject( object, null );
+ }
+
+ public Object saveObject( Object object, String[] fetchGroups )
+ {
+ PersistenceManager pm = getPersistenceManager();
+ Transaction tx = pm.currentTransaction();
+
+ try
+ {
+ tx.begin();
+
+ if ( ( JDOHelper.getObjectId( object ) != null ) && !JDOHelper.isDetached( object ) )
+ {
+ // This is a fatal error that means we need to fix our code.
+ // Leave it as a JDOUserException, it's intentional.
+ throw new JDOUserException( "Existing object is not detached: " + object, object );
+ }
+
+ if ( fetchGroups != null )
+ {
+ for ( int i = 0; i >= fetchGroups.length; i++ )
+ {
+ pm.getFetchPlan().addGroup( fetchGroups[i] );
+ }
+ }
+
+ pm.makePersistent( object );
+
+ object = pm.detachCopy( object );
+
+ tx.commit();
+
+ return object;
+ }
+ finally
+ {
+ rollbackIfActive( tx );
+ }
+ }
+
+ public List getAllObjects( Class clazz )
+ {
+ return getAllObjects( clazz, null );
+ }
+
+ public List getAllObjects( Class clazz, Constraint constraint )
+ {
+ PersistenceManager pm = getPersistenceManager();
+ Transaction tx = pm.currentTransaction();
+
+ try
+ {
+ tx.begin();
+
+ Extent extent = pm.getExtent( clazz, true );
+
+ Query query = pm.newQuery( extent );
+
+ if ( constraint != null )
+ {
+ if ( constraint.getSortColumn() != null )
+ {
+ String ordering = constraint.getSortColumn();
+
+ if ( constraint.getSortDirection() != null )
+ {
+ ordering += " " + constraint.getSortDirection();
+ }
+
+ query.setOrdering( ordering );
+ }
+
+ if ( constraint.getFetchLimits() != null )
+ {
+ pm.getFetchPlan().addGroup( constraint.getFetchLimits() );
+ }
+
+ if ( constraint.getWhereCondition() != null )
+ {
+ query.setFilter( constraint.getWhereCondition() );
+ }
+ }
+
+ List result = (List) query.execute();
+
+ result = (List) pm.detachCopyAll( result );
+
+ tx.commit();
+
+ return result;
+ }
+ finally
+ {
+ rollbackIfActive( tx );
+ }
+ }
+
+ // public List getUserAssignmentsForRoles( Class clazz, String ordering, Collection roleNames )
+ // {
+ // PersistenceManager pm = getPersistenceManager();
+ // Transaction tx = pm.currentTransaction();
+ //
+ // try
+ // {
+ // tx.begin();
+ //
+ // Extent extent = pm.getExtent( clazz, true );
+ //
+ // Query query = pm.newQuery( extent );
+ //
+ // if ( ordering != null )
+ // {
+ // query.setOrdering( ordering );
+ // }
+ //
+ // query.declareImports( "import java.lang.String" );
+ //
+ // StringBuffer filter = new StringBuffer();
+ //
+ // Iterator i = roleNames.iterator();
+ //
+ // if ( roleNames.size() > 0 )
+ // {
+ // filter.append( "this.roleNames.contains(\"" ).append( i.next() ).append( "\")" );
+ //
+ // while ( i.hasNext() )
+ // {
+ // filter.append( " || this.roleNames.contains(\"" ).append( i.next() ).append( "\")" );
+ // }
+ //
+ // query.setFilter( filter.toString() );
+ // }
+ //
+ // List result = (List) query.execute();
+ //
+ // result = (List) pm.detachCopyAll( result );
+ //
+ // tx.commit();
+ //
+ // return result;
+ // }
+ // finally
+ // {
+ // rollbackIfActive( tx );
+ // }
+ // }
+
+ public Object getObjectById( Class clazz, Object id, String fetchGroup )
+ throws ObjectNotFoundException, ArchivaDatabaseException
+ {
+ if ( id == null )
+ {
+ throw new ObjectNotFoundException( "Unable to get object '" + clazz.getName()
+ + "' from jdo using null id." );
+ }
+
+ PersistenceManager pm = getPersistenceManager();
+ Transaction tx = pm.currentTransaction();
+
+ try
+ {
+ tx.begin();
+
+ if ( fetchGroup != null )
+ {
+ pm.getFetchPlan().addGroup( fetchGroup );
+ }
+
+ Object objectId = pm.newObjectIdInstance( clazz, id );
+
+ Object object = pm.getObjectById( objectId );
+
+ object = pm.detachCopy( object );
+
+ tx.commit();
+
+ return object;
+ }
+ catch ( JDOObjectNotFoundException e )
+ {
+ throw new ObjectNotFoundException( "Unable to find Database Object '" + id + "' of type " + clazz.getName()
+ + " using fetch-group '" + fetchGroup + "'", e, id );
+ }
+ catch ( JDOException e )
+ {
+ throw new ArchivaDatabaseException( "Error in JDO during get of Database object id '" + id + "' of type "
+ + clazz.getName() + " using fetch-group '" + fetchGroup + "'", e );
+ }
+ finally
+ {
+ rollbackIfActive( tx );
+ }
+ }
+
+ public Object getObjectById( Class clazz, String id, String fetchGroup )
+ throws ObjectNotFoundException, ArchivaDatabaseException
+ {
+ if ( StringUtils.isEmpty( id ) )
+ {
+ throw new ObjectNotFoundException( "Unable to get object '" + clazz.getName()
+ + "' from jdo using null/empty id." );
+ }
+
+ return getObjectById( clazz, (Object) id, fetchGroup );
+ }
+
+ public boolean objectExists( Object object )
+ {
+ return ( JDOHelper.getObjectId( object ) != null );
+ }
+
+ public boolean objectExistsById( Class clazz, String id )
+ throws ArchivaDatabaseException
+ {
+ try
+ {
+ Object o = getObjectById( clazz, id, null );
+ return ( o != null );
+ }
+ catch ( ObjectNotFoundException e )
+ {
+ return false;
+ }
+ }
+
+ public void removeObject( Object o )
+ throws ArchivaDatabaseException
+ {
+ if ( o == null )
+ {
+ throw new ArchivaDatabaseException( "Unable to remove null object '" + o.getClass().getName() + "'" );
+ }
+
+ PersistenceManager pm = getPersistenceManager();
+ Transaction tx = pm.currentTransaction();
+
+ try
+ {
+ tx.begin();
+
+ o = pm.getObjectById( pm.getObjectId( o ) );
+
+ pm.deletePersistent( o );
+
+ tx.commit();
+ }
+ finally
+ {
+ rollbackIfActive( tx );
+ }
+ }
+
+ public void rollbackIfActive( Transaction tx )
+ {
+ PersistenceManager pm = tx.getPersistenceManager();
+
+ try
+ {
+ if ( tx.isActive() )
+ {
+ tx.rollback();
+ }
+ }
+ finally
+ {
+ closePersistenceManager( pm );
+ }
+ }
+
+ public void closePersistenceManager( PersistenceManager pm )
+ {
+ try
+ {
+ pm.close();
+ }
+ catch ( JDOUserException e )
+ {
+ // ignore
+ }
+ }
+
+ public void postDelete( InstanceLifecycleEvent evt )
+ {
+ PersistenceCapable obj = ( (PersistenceCapable) evt.getSource() );
+
+ if ( obj == null )
+ {
+ // Do not track null objects.
+ // These events are typically a product of an internal lifecycle event.
+ return;
+ }
+ }
+
+ public void preDelete( InstanceLifecycleEvent evt )
+ {
+ // ignore
+ }
+
+ public void postStore( InstanceLifecycleEvent evt )
+ {
+ // PersistenceCapable obj = ( (PersistenceCapable) evt.getSource() );
+ }
+
+ public void preStore( InstanceLifecycleEvent evt )
+ {
+ // ignore
+ }
+
+ public void removeAll( Class aClass )
+ {
+ PersistenceManager pm = getPersistenceManager();
+ Transaction tx = pm.currentTransaction();
+
+ try
+ {
+ tx.begin();
+
+ Query query = pm.newQuery( aClass );
+ query.deletePersistentAll();
+
+ tx.commit();
+ }
+ finally
+ {
+ rollbackIfActive( tx );
+ }
+ }
+
+ public JdoFactory getJdoFactory()
+ {
+ return jdoFactory;
+ }
+
+}
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
new file mode 100644
index 000000000..00af94585
--- /dev/null
+++ b/archiva-database/src/main/java/org/apache/maven/archiva/database/jdo/JdoArchivaDAO.java
@@ -0,0 +1,182 @@
+package org.apache.maven.archiva.database.jdo;
+
+import org.apache.maven.archiva.database.ArchivaDAO;
+import org.apache.maven.archiva.database.ArchivaDatabaseException;
+import org.apache.maven.archiva.database.Constraint;
+import org.apache.maven.archiva.database.ObjectNotFoundException;
+import org.apache.maven.archiva.database.constraints.ArchivaRepositoryByUrlConstraint;
+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.model.RepositoryContentKey;
+import org.codehaus.plexus.logging.AbstractLogEnabled;
+
+import java.util.List;
+
+/**
+ * JdoArchivaDAO
+ *
+ * @author <a href="mailto:joakim@erdfelt.com">Joakim Erdfelt</a>
+ * @version $Id$
+ *
+ * @plexus.component role="org.apache.maven.archiva.database.ArchivaDAO"
+ * role-hint="jdo"
+ */
+public class JdoArchivaDAO
+ extends AbstractLogEnabled
+ implements ArchivaDAO
+{
+ /**
+ * @plexus.requirement
+ */
+ private JdoAccess jdo;
+
+ /* .\ Archiva Repository \.____________________________________________________________ */
+
+ public ArchivaRepository createRepository( String id, String url )
+ {
+ ArchivaRepository repo;
+
+ try
+ {
+ repo = getRepository( id );
+ }
+ catch ( ArchivaDatabaseException e )
+ {
+ repo = new ArchivaRepository();
+ repo.setId( id );
+ repo.setUrl( url );
+ }
+
+ return repo;
+ }
+
+ public List getRepositories()
+ throws ObjectNotFoundException, ArchivaDatabaseException
+ {
+ return jdo.getAllObjects( ArchivaRepository.class );
+ }
+
+ public ArchivaRepository getRepository( String id )
+ throws ObjectNotFoundException, ArchivaDatabaseException
+ {
+ return (ArchivaRepository) jdo.getObjectById( ArchivaRepository.class, id, null );
+ }
+
+ public List queryRepository( Constraint constraint )
+ throws ObjectNotFoundException, ArchivaDatabaseException
+ {
+ return jdo.getAllObjects( ArchivaRepository.class, constraint );
+ }
+
+ public ArchivaRepository saveRepository( ArchivaRepository repository )
+ {
+ return (ArchivaRepository) jdo.saveObject( repository );
+ }
+
+ public void deleteRepository( ArchivaRepository repository )
+ throws ArchivaDatabaseException
+ {
+ 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 ArchivaArtifact createArtifact( RepositoryContent repoContent, String classifier, String type )
+ {
+ ArchivaArtifact artifact;
+
+ try
+ {
+ artifact = getArtifact( repoContent, classifier, type );
+ }
+ catch ( ArchivaDatabaseException e )
+ {
+ artifact = new ArchivaArtifact();
+ artifact.setContentKey( repoContent );
+ artifact.setClassifier( classifier );
+ artifact.setType( type );
+ }
+
+ return artifact;
+ }
+
+ public ArchivaArtifact getArtifact( RepositoryContent repoContent, String classifier, String type )
+ throws ObjectNotFoundException, ArchivaDatabaseException
+ {
+
+ return null;
+ }
+
+ public List queryArtifacts( Constraint constraint )
+ throws ObjectNotFoundException, ArchivaDatabaseException
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public ArchivaArtifact saveArtifact( ArchivaArtifact artifact )
+ throws ArchivaDatabaseException
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public void deleteArtifact( ArchivaArtifact artifact )
+ throws ArchivaDatabaseException
+ {
+ // TODO Auto-generated method stub
+
+ }
+
+}
diff --git a/archiva-database/src/main/java/org/apache/maven/archiva/database/key/MetadataKey.java b/archiva-database/src/main/java/org/apache/maven/archiva/database/key/MetadataKey.java
deleted file mode 100644
index b06e03b17..000000000
--- a/archiva-database/src/main/java/org/apache/maven/archiva/database/key/MetadataKey.java
+++ /dev/null
@@ -1,46 +0,0 @@
-package org.apache.maven.archiva.database.key;
-
-public class MetadataKey {
-
- private String groupId;
- private String artifactId;
- private String version;
- private int metadataKey;
-
- public MetadataKey( String groupId, String artifactId, String version )
- {
- this.groupId = groupId;
- this.artifactId = artifactId;
- this.version = version;
- }
-
- public MetadataKey() {}
-
- public String getArtifactId() {
- return artifactId;
- }
- public void setArtifactId(String artifactId) {
- this.artifactId = artifactId;
- }
- public String getGroupId() {
- return groupId;
- }
- public void setGroupId(String groupId) {
- this.groupId = groupId;
- }
- public int getMetadataKey() {
- return metadataKey;
- }
- public void setMetadataKey(int id) {
- this.metadataKey = id;
- }
- public String getVersion() {
- return version;
- }
- public void setVersion(String version) {
- this.version = version;
- }
-
-
-
-}
diff --git a/archiva-database/src/test/java/org/apache/maven/archiva/database/RepositoryMetadataDatabaseTest.java b/archiva-database/src/test/java/org/apache/maven/archiva/database/RepositoryMetadataDatabaseTest.java
deleted file mode 100644
index 070e54958..000000000
--- a/archiva-database/src/test/java/org/apache/maven/archiva/database/RepositoryMetadataDatabaseTest.java
+++ /dev/null
@@ -1,87 +0,0 @@
-package org.apache.maven.archiva.database;
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-import org.apache.maven.archiva.database.key.MetadataKey;
-import org.apache.maven.artifact.repository.metadata.Metadata;
-import org.codehaus.plexus.PlexusTestCase;
-import org.codehaus.plexus.ibatis.PlexusIbatisHelper;
-
-/**
- * RepositoryMetadataDatabaseTest
- *
- * @author <a href="mailto:joakim@erdfelt.com">Joakim Erdfelt</a>
- * @version $Id$
- */
-public class RepositoryMetadataDatabaseTest
- extends PlexusTestCase
-{
- /**
- * @plexus.requirement
- */
- protected PlexusIbatisHelper ibatisHelper;
-
- protected void setUp()
- throws Exception
- {
- super.setUp();
- }
-
- public void testRepositoryMetadataCreationAndDeletion() throws Exception
- {
- RepositoryMetadataDatabase db = (RepositoryMetadataDatabase) lookup( "org.apache.maven.archiva.database.RepositoryMetadataDatabase", "default" );
-
- assertNotNull( db );
- assertTrue( db.tableExists( "RepositoryMetadata" ) );
- assertTrue( db.tableExists( "MetadataKeys" ) );
-
- db.dropTable( "RepositoryMetadata" );
- db.dropTable( "MetadataKeys" );
-
- assertFalse( db.tableExists( "RepositoryMetadata" ) );
- assertFalse( db.tableExists( "MetadataKeys" ) );
- }
-
- public void testMetadataKeyRetrieval() throws Exception
- {
- RepositoryMetadataDatabase db = (RepositoryMetadataDatabase) lookup( "org.apache.maven.archiva.database.RepositoryMetadataDatabase", "default" );
-
- Metadata metadata = new Metadata();
- metadata.setArtifactId( "testArtifactId" );
- metadata.setGroupId( "testGroupId" );
- metadata.setVersion( "testVersion" );
-
- MetadataKey metadataKey = db.getMetadataKey( metadata );
-
- assertTrue( metadataKey.getMetadataKey() > 0 );
- assertEquals( metadataKey.getArtifactId(), metadata.getArtifactId() );
- assertEquals( metadataKey.getGroupId(), metadata.getGroupId() );
- assertEquals( metadataKey.getVersion(), metadata.getVersion() );
-
- db.dropTable( "RepositoryMetadata" );
- db.dropTable( "MetadataKeys" );
-
- assertFalse( db.tableExists( "RepositoryMetadata" ) );
- assertFalse( db.tableExists( "MetadataKeys" ) );
-
- }
-
-
-}
diff --git a/archiva-database/src/test/java/org/apache/maven/archiva/database/artifact/ArtifactPersistenceTest.java b/archiva-database/src/test/java/org/apache/maven/archiva/database/artifact/ArtifactPersistenceTest.java
deleted file mode 100644
index 007e027b2..000000000
--- a/archiva-database/src/test/java/org/apache/maven/archiva/database/artifact/ArtifactPersistenceTest.java
+++ /dev/null
@@ -1,70 +0,0 @@
-package org.apache.maven.archiva.database.artifact;
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-import org.apache.maven.archiva.database.AbstractArchivaDatabaseTestCase;
-import org.apache.maven.archiva.database.ArchivaDatabaseException;
-import org.apache.maven.artifact.Artifact;
-import org.apache.maven.artifact.factory.ArtifactFactory;
-
-/**
- * ArtifactPersistenceTest
- *
- * @author <a href="mailto:joakim@erdfelt.com">Joakim Erdfelt</a>
- * @version $Id$
- */
-public class ArtifactPersistenceTest
- extends AbstractArchivaDatabaseTestCase
-{
- private ArtifactFactory artifactFactory;
-
- private ArtifactPersistence db;
-
- protected void setUp()
- throws Exception
- {
- super.setUp();
-
- artifactFactory = (ArtifactFactory) lookup( ArtifactFactory.ROLE );
- db = (ArtifactPersistence) lookup( ArtifactPersistence.class.getName() );
- }
-
- public void testLookup()
- {
- assertNotNull( db );
- }
-
- public void testAddArtifact() throws ArchivaDatabaseException
- {
- String groupId = "org.apache.maven.archiva";
- String artifactId = "archiva-test-artifact";
- String version = "1.0";
-
- Artifact artifact = artifactFactory
- .createArtifact( groupId, artifactId, version, Artifact.SCOPE_COMPILE, "jar" );
-
- db.create( artifact );
-
- Artifact fetched = db.read( groupId, artifactId, version );
-
- assertNotNull( "Should have fetched an Artifact.", fetched );
- assertEquals( "Should have fetched the expected Artifact.", artifact, fetched );
- }
-}
diff --git a/archiva-discoverer/pom.xml b/archiva-discoverer/pom.xml
index 8a96e39c5..e32a38447 100755
--- a/archiva-discoverer/pom.xml
+++ b/archiva-discoverer/pom.xml
@@ -31,6 +31,10 @@
<dependencies>
<dependency>
<groupId>org.apache.maven.archiva</groupId>
+ <artifactId>archiva-consumer-api</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-common</artifactId>
</dependency>
<dependency>
diff --git a/archiva-discoverer/src/main/java/org/apache/maven/archiva/discoverer/DefaultDiscoverer.java b/archiva-discoverer/src/main/java/org/apache/maven/archiva/discoverer/DefaultDiscoverer.java
index bd5e4fd44..8a6a61855 100644
--- a/archiva-discoverer/src/main/java/org/apache/maven/archiva/discoverer/DefaultDiscoverer.java
+++ b/archiva-discoverer/src/main/java/org/apache/maven/archiva/discoverer/DefaultDiscoverer.java
@@ -19,7 +19,7 @@ package org.apache.maven.archiva.discoverer;
* under the License.
*/
-import org.apache.maven.archiva.common.consumers.Consumer;
+import org.apache.maven.archiva.consumers.Consumer;
import org.apache.maven.artifact.repository.ArtifactRepository;
import org.codehaus.plexus.logging.AbstractLogEnabled;
import org.codehaus.plexus.util.DirectoryWalker;
diff --git a/archiva-discoverer/src/main/java/org/apache/maven/archiva/discoverer/RepositoryScanner.java b/archiva-discoverer/src/main/java/org/apache/maven/archiva/discoverer/RepositoryScanner.java
index 8eef2b766..9a37ac4a8 100644
--- a/archiva-discoverer/src/main/java/org/apache/maven/archiva/discoverer/RepositoryScanner.java
+++ b/archiva-discoverer/src/main/java/org/apache/maven/archiva/discoverer/RepositoryScanner.java
@@ -20,8 +20,8 @@ package org.apache.maven.archiva.discoverer;
*/
import org.apache.commons.lang.SystemUtils;
-import org.apache.maven.archiva.common.consumers.Consumer;
import org.apache.maven.archiva.common.utils.BaseFile;
+import org.apache.maven.archiva.consumers.Consumer;
import org.apache.maven.artifact.repository.ArtifactRepository;
import org.codehaus.plexus.logging.Logger;
import org.codehaus.plexus.util.DirectoryWalkListener;
diff --git a/archiva-discoverer/src/test/java/org/apache/maven/archiva/discoverer/MockConsumer.java b/archiva-discoverer/src/test/java/org/apache/maven/archiva/discoverer/MockConsumer.java
index 7f081c955..e6b7b14fe 100644
--- a/archiva-discoverer/src/test/java/org/apache/maven/archiva/discoverer/MockConsumer.java
+++ b/archiva-discoverer/src/test/java/org/apache/maven/archiva/discoverer/MockConsumer.java
@@ -3,9 +3,9 @@
*/
package org.apache.maven.archiva.discoverer;
-import org.apache.maven.archiva.common.consumers.Consumer;
-import org.apache.maven.archiva.common.consumers.ConsumerException;
import org.apache.maven.archiva.common.utils.BaseFile;
+import org.apache.maven.archiva.consumers.Consumer;
+import org.apache.maven.archiva.consumers.ConsumerException;
import org.apache.maven.artifact.repository.ArtifactRepository;
import java.util.ArrayList;
diff --git a/archiva-model/pom.xml b/archiva-model/pom.xml
index 5325f20e4..007df7295 100755
--- a/archiva-model/pom.xml
+++ b/archiva-model/pom.xml
@@ -30,16 +30,8 @@
<name>Archiva Model</name>
<dependencies>
<dependency>
- <groupId>org.apache.maven</groupId>
- <artifactId>maven-artifact-manager</artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.maven</groupId>
- <artifactId>maven-project</artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.maven</groupId>
- <artifactId>maven-repository-metadata</artifactId>
+ <groupId>org.apache.maven.archiva</groupId>
+ <artifactId>archiva-common</artifactId>
</dependency>
<dependency>
<groupId>org.codehaus.plexus</groupId>
@@ -64,6 +56,62 @@
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-maven-plugin</artifactId>
</plugin>
+ <plugin>
+ <groupId>org.codehaus.modello</groupId>
+ <artifactId>modello-maven-plugin</artifactId>
+ <version>1.0-alpha-15-SNAPSHOT</version>
+ <configuration>
+ <version>1.0.0</version>
+ <packageWithVersion>false</packageWithVersion>
+ <model>src/main/mdo/archiva.xml</model>
+ </configuration>
+ <executions>
+ <execution>
+ <id>modello-java</id>
+ <goals>
+ <goal>java</goal>
+ <goal>jpox-metadata-class</goal>
+ <!--
+ <goal>xpp3-writer</goal>
+ <goal>xpp3-reader</goal>
+ -->
+ </goals>
+ </execution>
+ <execution>
+ <id>jpox-jdo-mapping</id>
+ <goals>
+ <goal>jpox-jdo-mapping</goal>
+ </goals>
+ <configuration>
+ <outputDirectory>${basedir}/target/classes/org/apache/maven/archiva/model/</outputDirectory>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>jpox-maven-plugin</artifactId>
+ <version>1.1.6</version>
+ <executions>
+ <execution>
+ <goals>
+ <goal>enhance</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>cobertura-maven-plugin</artifactId>
+ <configuration>
+ <instrumentation>
+ <!-- exclude generated -->
+ <excludes>
+ <exclude>org/apache/maven/archiva/reporting/model/**</exclude>
+ </excludes>
+ </instrumentation>
+ </configuration>
+ </plugin>
</plugins>
</build>
</project>
diff --git a/archiva-model/src/main/java/org/apache/maven/archiva/model/ArchivaArtifact.java b/archiva-model/src/main/java/org/apache/maven/archiva/model/AbstractArchivaArtifact.java
index 0e1bceb02..df9d773f2 100644
--- a/archiva-model/src/main/java/org/apache/maven/archiva/model/ArchivaArtifact.java
+++ b/archiva-model/src/main/java/org/apache/maven/archiva/model/AbstractArchivaArtifact.java
@@ -30,23 +30,18 @@ import java.util.Map;
*
* @author <a href="mailto:joakim@erdfelt.com">Joakim Erdfelt</a>
* @version $Id$
- *
- * @plexus.component role="org.apache.maven.archiva.model.ArchivaArtifact"
*/
-public class ArchivaArtifact
- implements RepositoryContent
+public abstract class AbstractArchivaArtifact
{
- private Map attached;
-
private String classifier;
- private RepositoryContentKey key;
+ private RepositoryContent key;
private String type;
- public ArchivaArtifact( ArtifactRepository repository, String groupId, String artifactId, String version, String classifier, String type )
+ public AbstractArchivaArtifact( ArchivaRepository repository, String groupId, String artifactId, String version, String classifier, String type )
{
- this.key = new RepositoryContentKey( repository, groupId, artifactId, version );
+ this.key = new RepositoryContent( repository, groupId, artifactId, version );
this.classifier = classifier;
@@ -55,29 +50,12 @@ public class ArchivaArtifact
validateIdentity();
}
- public void addAttached( ArchivaArtifact attachedArtifact )
- {
- attached.put( attachedArtifact.getClassifier(), attachedArtifact );
- // Naughty, Attached shouldn't have it's own attached artifacts!
- attachedArtifact.clearAttached();
- }
-
- public void clearAttached()
- {
- attached.clear();
- }
-
- public Map getAttached()
- {
- return attached;
- }
-
public String getClassifier()
{
return classifier;
}
- public RepositoryContentKey getRepositoryContentKey()
+ public RepositoryContent getRepositoryContent()
{
return key;
}
@@ -92,12 +70,7 @@ public class ArchivaArtifact
return StringUtils.isNotEmpty( classifier );
}
- public void setAttached( Map attached )
- {
- this.attached = attached;
- }
-
- public void setRepositoryContentKey( RepositoryContentKey key )
+ public void setRepositoryContent( RepositoryContent key )
{
this.key = key;
}
@@ -132,12 +105,12 @@ public class ArchivaArtifact
}
}
- private boolean empty( String value )
+ protected boolean empty( String value )
{
return value == null || value.trim().length() < 1;
}
- private void validateIdentity()
+ protected void validateIdentity()
{
if ( empty( key.getGroupId() ) )
{
diff --git a/archiva-model/src/main/java/org/apache/maven/archiva/model/AbstractArchivaRepository.java b/archiva-model/src/main/java/org/apache/maven/archiva/model/AbstractArchivaRepository.java
new file mode 100644
index 000000000..347f68d47
--- /dev/null
+++ b/archiva-model/src/main/java/org/apache/maven/archiva/model/AbstractArchivaRepository.java
@@ -0,0 +1,125 @@
+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.apache.maven.archiva.common.utils.RepositoryURL;
+import org.apache.maven.artifact.repository.ArtifactRepositoryPolicy;
+import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout;
+
+/**
+ * AbstractArchivaRepository
+ *
+ * @author <a href="mailto:joakim@erdfelt.com">Joakim Erdfelt</a>
+ * @version $Id$
+ */
+public abstract class AbstractArchivaRepository
+{
+ protected ArtifactRepositoryLayout layout;
+
+ protected ArtifactRepositoryPolicy releases;
+
+ protected ArtifactRepositoryPolicy snapshots;
+
+ protected boolean blacklisted;
+
+ public AbstractArchivaRepository()
+ {
+
+ }
+
+ /**
+ * Construct a Repository.
+ *
+ * @param id the unique identifier for this repository.
+ * @param name the name for this repository.
+ * @param url the base URL for this repository (this should point to the top level URL for the entire repository)
+ * @param layout the layout technique for this repository.
+ */
+ public AbstractArchivaRepository( String id, String name, String url, ArtifactRepositoryLayout layout )
+ {
+ setId( id );
+ setName( name );
+ setUrl( url );
+ setLayout( layout );
+ }
+
+ public abstract void setUrl( String url );
+
+ public abstract String getUrl();
+
+ public abstract void setName( String name );
+
+ public abstract void setId( String id );
+
+ public boolean isBlacklisted()
+ {
+ return blacklisted;
+ }
+
+ public void setBlacklisted( boolean blacklisted )
+ {
+ this.blacklisted = blacklisted;
+ }
+
+ public ArtifactRepositoryLayout getLayout()
+ {
+ return layout;
+ }
+
+ public void setLayout( ArtifactRepositoryLayout layout )
+ {
+ this.layout = layout;
+ }
+
+ public ArtifactRepositoryPolicy getReleases()
+ {
+ return releases;
+ }
+
+ public void setReleases( ArtifactRepositoryPolicy releases )
+ {
+ this.releases = releases;
+ }
+
+ public ArtifactRepositoryPolicy getSnapshots()
+ {
+ return snapshots;
+ }
+
+ public void setSnapshots( ArtifactRepositoryPolicy snapshots )
+ {
+ this.snapshots = snapshots;
+ }
+
+ public boolean isRemote()
+ {
+ return !getRepositoryURL().getProtocol().equals( "file" );
+ }
+
+ public boolean isManaged()
+ {
+ return getRepositoryURL().getProtocol().equals( "file" );
+ }
+
+ public RepositoryURL getRepositoryURL()
+ {
+ return new RepositoryURL( getUrl() );
+ }
+}
diff --git a/archiva-model/src/main/java/org/apache/maven/archiva/model/ArchivaRepositoryMetadata.java b/archiva-model/src/main/java/org/apache/maven/archiva/model/ArchivaRepositoryMetadata.java
deleted file mode 100644
index cfed04f40..000000000
--- a/archiva-model/src/main/java/org/apache/maven/archiva/model/ArchivaRepositoryMetadata.java
+++ /dev/null
@@ -1,77 +0,0 @@
-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.apache.maven.artifact.repository.ArtifactRepository;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * ArchivaRepositoryMetadata
- *
- * @author <a href="mailto:joakim@erdfelt.com">Joakim Erdfelt</a>
- * @version $Id$
- */
-public class ArchivaRepositoryMetadata
- implements RepositoryContent
-{
- private List availableVersions = new ArrayList();
-
- private RepositoryContentKey key;
-
- private String releasedVersion;
-
- public ArchivaRepositoryMetadata( ArtifactRepository repository, String groupId, String artifactId, String version )
- {
- this.key = new RepositoryContentKey( repository, groupId, artifactId, version );
- }
-
- public List getAvailableVersions()
- {
- return availableVersions;
- }
-
- public String getReleasedVersion()
- {
- return releasedVersion;
- }
-
- public RepositoryContentKey getRepositoryContentKey()
- {
- return this.key;
- }
-
- public void setAvailableVersions( List availableVersions )
- {
- this.availableVersions = availableVersions;
- }
-
- public void setReleasedVersion( String releasedVersion )
- {
- this.releasedVersion = releasedVersion;
- }
-
- public void setRepositoryContentKey( RepositoryContentKey key )
- {
- this.key = key;
- }
-
-}
diff --git a/archiva-model/src/main/java/org/apache/maven/archiva/model/RepositoryContentKey.java b/archiva-model/src/main/java/org/apache/maven/archiva/model/RepositoryContentKey.java
index 4880c0505..a198eaec2 100644
--- a/archiva-model/src/main/java/org/apache/maven/archiva/model/RepositoryContentKey.java
+++ b/archiva-model/src/main/java/org/apache/maven/archiva/model/RepositoryContentKey.java
@@ -19,69 +19,152 @@ package org.apache.maven.archiva.model;
* under the License.
*/
-import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.commons.lang.StringUtils;
+
+import java.io.Serializable;
/**
- * RepositoryContentKey - the golden key for all content within the repository.
+ * RepositoryContentKey - the jpox application key support class for all content within the repository.
*
* @author <a href="mailto:joakim@erdfelt.com">Joakim Erdfelt</a>
* @version $Id$
*/
-public class RepositoryContentKey
+public class RepositoryContentKey implements Serializable
{
- private String artifactId;
-
- private String groupId;
+ /**
+ * The Repository ID. (JPOX Requires this remain public)
+ */
+ public String repositoryId = "";
- private ArtifactRepository repository;
+ /**
+ * The Group ID. (JPOX Requires this remain public)
+ */
+ public String groupId = "";
- private String version;
+ /**
+ * The Artifact ID. (JPOX Requires this remain public)
+ */
+ public String artifactId = "";
- public RepositoryContentKey( ArtifactRepository repository, String groupId, String artifactId, String version )
- {
- this.repository = repository;
- this.groupId = groupId;
- this.artifactId = artifactId;
- this.version = version;
- }
+ /**
+ * The Version. (JPOX Requires this remain public)
+ */
+ public String version = "";
- public String getArtifactId()
+ /**
+ * Default Constructor. Required by JPOX.
+ */
+ public RepositoryContentKey()
{
- return artifactId;
- }
- public String getGroupId()
- {
- return groupId;
}
- public ArtifactRepository getRepository()
+ /**
+ * Key Based Constructor. Required by JPOX.
+ *
+ * @param key the String representing this object's values.
+ */
+ public RepositoryContentKey( String key )
{
- return repository;
+ String parts[] = StringUtils.splitPreserveAllTokens( key, ':' );
+ repositoryId = parts[0];
+ groupId = parts[1];
+ artifactId = parts[2];
+ version = parts[3];
}
- public String getVersion()
+ /**
+ * Get the String representation of this object. - Required by JPOX.
+ */
+ public String toString()
{
- return version;
+ return StringUtils.join( new String[] { repositoryId, groupId, artifactId, version } );
}
- public void setArtifactId( String artifactId )
+ /**
+ * Get the hashcode for this object's values - Required by JPOX.
+ */
+ public int hashCode()
{
- this.artifactId = artifactId;
+ final int PRIME = 31;
+ int result = 1;
+ result = PRIME * result + ( ( repositoryId == null ) ? 0 : repositoryId.hashCode() );
+ result = PRIME * result + ( ( groupId == null ) ? 0 : groupId.hashCode() );
+ result = PRIME * result + ( ( artifactId == null ) ? 0 : artifactId.hashCode() );
+ result = PRIME * result + ( ( version == null ) ? 0 : version.hashCode() );
+ return result;
}
- public void setGroupId( String groupId )
+ /**
+ * Get the equals for this object's values - Required by JPOX.
+ */
+ public boolean equals( Object obj )
{
- this.groupId = groupId;
- }
+ if ( this == obj )
+ {
+ return true;
+ }
- public void setRepository( ArtifactRepository repository )
- {
- this.repository = repository;
- }
+ if ( obj == null )
+ {
+ return false;
+ }
- public void setVersion( String version )
- {
- this.version = version;
+ if ( getClass() != obj.getClass() )
+ {
+ return false;
+ }
+
+ final RepositoryContentKey other = (RepositoryContentKey) obj;
+
+ if ( repositoryId == null )
+ {
+ if ( other.repositoryId != null )
+ {
+ return false;
+ }
+ }
+ else if ( !repositoryId.equals( other.repositoryId ) )
+ {
+ return false;
+ }
+
+ if ( groupId == null )
+ {
+ if ( other.groupId != null )
+ {
+ return false;
+ }
+ }
+ else if ( !groupId.equals( other.groupId ) )
+ {
+ return false;
+ }
+
+ if ( artifactId == null )
+ {
+ if ( other.artifactId != null )
+ {
+ return false;
+ }
+ }
+ else if ( !artifactId.equals( other.artifactId ) )
+ {
+ return false;
+ }
+
+ if ( version == null )
+ {
+ if ( other.version != null )
+ {
+ return false;
+ }
+ }
+ else if ( !version.equals( other.version ) )
+ {
+ return false;
+ }
+
+ return true;
}
}
diff --git a/archiva-model/src/main/java/org/apache/maven/archiva/model/health/HealthProblem.java b/archiva-model/src/main/java/org/apache/maven/archiva/model/health/HealthProblem.java
deleted file mode 100644
index f437be21a..000000000
--- a/archiva-model/src/main/java/org/apache/maven/archiva/model/health/HealthProblem.java
+++ /dev/null
@@ -1,77 +0,0 @@
-package org.apache.maven.archiva.model.health;
-
-/*
- * 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.
- */
-
-/**
- * HealthProblem
- *
- * @author <a href="mailto:joakim@erdfelt.com">Joakim Erdfelt</a>
- * @version $Id$
- */
-public class HealthProblem
-{
- private String type;
-
- private String origin;
-
- private String message;
-
- public HealthProblem()
- {
-
- }
-
- public HealthProblem( String type, String origin, String message )
- {
- this.type = type;
- this.origin = origin;
- this.message = message;
- }
-
- public String getMessage()
- {
- return message;
- }
-
- public void setMessage( String message )
- {
- this.message = message;
- }
-
- public String getOrigin()
- {
- return origin;
- }
-
- public void setOrigin( String origin )
- {
- this.origin = origin;
- }
-
- public String getType()
- {
- return type;
- }
-
- public void setType( String type )
- {
- this.type = type;
- }
-}
diff --git a/archiva-model/src/main/java/org/apache/maven/archiva/model/health/RepositoryMetadataHealth.java b/archiva-model/src/main/java/org/apache/maven/archiva/model/health/RepositoryMetadataHealth.java
deleted file mode 100644
index 32e0257e1..000000000
--- a/archiva-model/src/main/java/org/apache/maven/archiva/model/health/RepositoryMetadataHealth.java
+++ /dev/null
@@ -1,63 +0,0 @@
-package org.apache.maven.archiva.model.health;
-
-/*
- * 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.ArchivaRepositoryMetadata;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * RepositoryMetadataHealth
- *
- * @author <a href="mailto:joakim@erdfelt.com">Joakim Erdfelt</a>
- * @version $Id$
- */
-public class RepositoryMetadataHealth
-{
- private ArchivaRepositoryMetadata repositoryMetadata;
-
- private List problems = new ArrayList();
-
- public void addProblem( HealthProblem problem )
- {
- this.problems.add( problem );
- }
-
- public List getProblems()
- {
- return problems;
- }
-
- public void setProblems( List problems )
- {
- this.problems = problems;
- }
-
- public ArchivaRepositoryMetadata getRepositoryMetadata()
- {
- return repositoryMetadata;
- }
-
- public void setRepositoryMetadata( ArchivaRepositoryMetadata repositoryMetadata )
- {
- this.repositoryMetadata = repositoryMetadata;
- }
-}
diff --git a/archiva-model/src/main/mdo/archiva.xml b/archiva-model/src/main/mdo/archiva.xml
new file mode 100644
index 000000000..1caa7850d
--- /dev/null
+++ b/archiva-model/src/main/mdo/archiva.xml
@@ -0,0 +1,454 @@
+<?xml version="1.0" ?>
+<model jpox.table-prefix="ARCHIVA_">
+ <id>archiva-model</id>
+ <name>ArchivaModel</name>
+ <version>1.0.0</version>
+ <description>Archiva Model</description>
+ <defaults>
+ <default>
+ <key>package</key>
+ <value>org.apache.maven.archiva.model</value>
+ </default>
+ </defaults>
+
+ <classes>
+ <class stash.storable="false" rootElement="true">
+ <name>ArchivaDatabase</name>
+ <version>1.0.0+</version>
+ <fields>
+ <field>
+ <name>Repositories</name>
+ <version>1.0.0+</version>
+ <association>
+ <type>ArchivaRepository</type>
+ <multiplicity>*</multiplicity>
+ </association>
+ </field>
+ </fields>
+ </class>
+ <class stash.storable="true">
+ <superClass>AbstractArchivaRepository</superClass>
+ <name>ArchivaRepository</name>
+ <version>1.0.0+</version>
+ <fields>
+ <field>
+ <name>id</name>
+ <identity>true</identity>
+ <version>1.0.0+</version>
+ <type>String</type>
+ <required>true</required>
+ <description>
+ The unique ID for the repository.
+ </description>
+ </field>
+ <field>
+ <name>name</name>
+ <identity>false</identity>
+ <version>1.0.0+</version>
+ <type>String</type>
+ <required>true</required>
+ <description>
+ The Name of the repository.
+ </description>
+ </field>
+ <field>
+ <name>url</name>
+ <identity>false</identity>
+ <version>1.0.0+</version>
+ <type>String</type>
+ <required>true</required>
+ <description>
+ The URL of the repository.
+ </description>
+ </field>
+ <field>
+ <name>creationSource</name>
+ <identity>false</identity>
+ <version>1.0.0+</version>
+ <type>String</type>
+ <required>true</required>
+ <description>
+ The Source of this repository.
+ (Example: Configuration, POM)
+ </description>
+ </field>
+ <field>
+ <name>layoutName</name>
+ <identity>false</identity>
+ <version>1.0.0+</version>
+ <type>String</type>
+ <required>true</required>
+ <description>
+ The layout of the repository.
+ (Either 'default', or 'legacy')
+ </description>
+ </field>
+ <field>
+ <name>releasePolicy</name>
+ <identity>false</identity>
+ <version>1.0.0+</version>
+ <type>String</type>
+ <required>true</required>
+ <description>
+ The releases policy of the repository.
+ </description>
+ </field>
+ <field>
+ <name>snapshotPolicy</name>
+ <identity>false</identity>
+ <version>1.0.0+</version>
+ <type>String</type>
+ <required>true</required>
+ <description>
+ The snapshot policy of the repository.
+ </description>
+ </field>
+ </fields>
+ </class>
+ <class stash.storable="true"
+ jpox.use-identifiers-as-primary-key="true"
+ jpox.identity-type="application"
+ jpox.identity-class="RepositoryContentKey">
+ <name>RepositoryContent</name>
+ <version>1.0.0+</version>
+ <description>
+ Repository Content Identifier.
+ </description>
+ <fields>
+ <field jpox.primary-key="true"
+ jpox.value-strategy="off"
+ jpox.persistence-modifier="persistent">
+ <name>groupId</name>
+ <identity>true</identity>
+ <version>1.0.0+</version>
+ <type>String</type>
+ <required>true</required>
+ <description>
+ The Group ID of the repository content.
+ </description>
+ </field>
+ <field jpox.primary-key="true"
+ jpox.value-strategy="off"
+ jpox.persistence-modifier="persistent">
+ <name>artifactId</name>
+ <identity>true</identity>
+ <version>1.0.0+</version>
+ <type>String</type>
+ <required>true</required>
+ <description>
+ The Artifact ID of the repository content.
+ </description>
+ </field>
+ <field jpox.primary-key="true"
+ jpox.value-strategy="off"
+ jpox.persistence-modifier="persistent">
+ <name>version</name>
+ <identity>true</identity>
+ <version>1.0.0+</version>
+ <type>String</type>
+ <required>false</required>
+ <description>
+ The version of the repository content.
+ </description>
+ </field>
+ <field jpox.primary-key="true"
+ jpox.value-strategy="off"
+ jpox.persistence-modifier="persistent">
+ <name>repositoryId</name>
+ <identity>true</identity>
+ <version>1.0.0+</version>
+ <required>true</required>
+ <type>String</type>
+ <description>
+ The repository associated with this content.
+ </description>
+ </field>
+ </fields>
+ <codeSegments>
+ <codeSegment>
+ <version>1.0.0+</version>
+ <code>
+ public RepositoryContent( String repositoryId, String groupId, String artifactId, String version )
+ {
+ this.setRepositoryId( repositoryId );
+ this.setGroupId( groupId );
+ this.setArtifactId( artifactId );
+ this.setVersion( version );
+ }
+
+ public RepositoryContent( ArchivaRepository repository, String groupId, String artifactId, String version )
+ {
+ this.setRepositoryId( repository.getId() );
+ this.setGroupId( groupId );
+ this.setArtifactId( artifactId );
+ this.setVersion( version );
+ }
+ </code>
+ </codeSegment>
+ </codeSegments>
+ </class>
+ <class>
+ <name>ArchivaArtifact</name>
+ <version>1.0.0+</version>
+ <fields>
+ <field>
+ <name>contentKey</name>
+ <identity>true</identity>
+ <version>1.0.0+</version>
+ <required>true</required>
+ <association>
+ <type>RepositoryContent</type>
+ <multiplicity>1</multiplicity>
+ </association>
+ <description>
+ The content key for this artifact.
+ </description>
+ </field>
+ <field>
+ <name>classifier</name>
+ <identity>false</identity>
+ <version>1.0.0+</version>
+ <type>String</type>
+ <required>false</required>
+ <description>
+ The classifier for this artifact.
+ </description>
+ </field>
+ <field jpox.column="FILE_TYPE">
+ <name>type</name>
+ <identity>true</identity>
+ <version>1.0.0+</version>
+ <type>String</type>
+ <required>true</required>
+ <description>
+ The type of artifact.
+ </description>
+ </field>
+ </fields>
+ </class>
+ <class>
+ <name>ArchivaRepositoryMetadata</name>
+ <version>1.0.0+</version>
+ <fields>
+ <field>
+ <name>contentKey</name>
+ <identity>true</identity>
+ <version>1.0.0+</version>
+ <required>true</required>
+ <association>
+ <type>RepositoryContent</type>
+ <multiplicity>1</multiplicity>
+ </association>
+ <description>
+ The content key for this repository metadata.
+ </description>
+ </field>
+ <field>
+ <name>releasedVersion</name>
+ <identity>false</identity>
+ <version>1.0.0+</version>
+ <required>false</required>
+ <type>String</type>
+ <description>
+ The released version id.
+ </description>
+ </field>
+ <field>
+ <name>availableVersions</name>
+ <identity>false</identity>
+ <version>1.0.0+</version>
+ <required>false</required>
+ <association>
+ <type>String</type>
+ <multiplicity>*</multiplicity>
+ </association>
+ <description>
+ The list of available version ids.
+ </description>
+ </field>
+ </fields>
+ </class>
+ <class>
+ <name>HealthProblem</name>
+ <version>1.0.0+</version>
+ <fields>
+ <field jpox.column="PROBLEM_TYPE">
+ <name>type</name>
+ <identity>false</identity>
+ <version>1.0.0+</version>
+ <required>true</required>
+ <type>String</type>
+ <description>
+ The type of health problem.
+ </description>
+ </field>
+ <field jpox.column="PROBLEM_ORIGIN">
+ <name>origin</name>
+ <identity>false</identity>
+ <version>1.0.0+</version>
+ <required>true</required>
+ <type>String</type>
+ <description>
+ The origin of the health problem.
+ </description>
+ </field>
+ <field>
+ <name>message</name>
+ <identity>false</identity>
+ <version>1.0.0+</version>
+ <required>true</required>
+ <type>String</type>
+ <description>
+ The origin of the health problem.
+ </description>
+ </field>
+ </fields>
+ </class>
+ <class>
+ <name>ArchivaArtifactHealth</name>
+ <version>1.0.0+</version>
+ <fields>
+ <field>
+ <name>artifact</name>
+ <identity>true</identity>
+ <version>1.0.0+</version>
+ <required>true</required>
+ <association>
+ <type>ArchivaArtifact</type>
+ <multiplicity>1</multiplicity>
+ </association>
+ <description>
+ The Artifact to report on.
+ </description>
+ </field>
+ <field>
+ <name>problems</name>
+ <identity>false</identity>
+ <version>1.0.0+</version>
+ <required>false</required>
+ <association>
+ <type>HealthProblem</type>
+ <multiplicity>*</multiplicity>
+ </association>
+ <description>
+ The list of problems associated with this artifact.
+ </description>
+ </field>
+ </fields>
+ </class>
+ <class>
+ <name>ArchivaRepositoryMetadataHealth</name>
+ <version>1.0.0+</version>
+ <fields>
+ <field>
+ <name>repositoryMetadata</name>
+ <identity>true</identity>
+ <version>1.0.0+</version>
+ <required>true</required>
+ <association>
+ <type>ArchivaRepositoryMetadata</type>
+ <multiplicity>1</multiplicity>
+ </association>
+ <description>
+ The ArchivaRepositoryMetadata to report on.
+ </description>
+ </field>
+ <field>
+ <name>problems</name>
+ <identity>false</identity>
+ <version>1.0.0+</version>
+ <required>false</required>
+ <association>
+ <type>HealthProblem</type>
+ <multiplicity>*</multiplicity>
+ </association>
+ <description>
+ The list of problems associated with this repository metadata.
+ </description>
+ </field>
+ </fields>
+ </class>
+ <class>
+ <name>RepositoryContentStatistics</name>
+ <version>1.0.0+</version>
+ <fields>
+ <field>
+ <name>repositoryId</name>
+ <version>1.0.0+</version>
+ <identity>false</identity>
+ <required>true</required>
+ <type>String</type>
+ <description>
+ The repository id the statistics belong to.
+ </description>
+ </field>
+ <field>
+ <name>whenGathered</name>
+ <version>1.0.0+</version>
+ <identity>false</identity>
+ <required>true</required>
+ <type>Date</type>
+ <description>
+ The timestamp on when this set of statistics was gathered.
+ </description>
+ </field>
+ <field>
+ <name>duration</name>
+ <version>1.0.0+</version>
+ <identity>false</identity>
+ <required>true</required>
+ <type>long</type>
+ <description>
+ The duration (in milliseconds) for the gathering of the statistics.
+ </description>
+ </field>
+ <field>
+ <name>totalFileCount</name>
+ <version>1.0.0+</version>
+ <identity>false</identity>
+ <required>true</required>
+ <type>long</type>
+ <description>
+ The total number of files in the repository.
+ </description>
+ </field>
+ <field>
+ <name>newFileCount</name>
+ <version>1.0.0+</version>
+ <identity>false</identity>
+ <required>true</required>
+ <type>long</type>
+ <description>
+ The number of new files discovered.
+ </description>
+ </field>
+ </fields>
+ <codeSegments>
+ <codeSegment>
+ <version>1.0.0+</version>
+ <code>
+ private transient long startTimestamp;
+
+ public void triggerStart() {
+ startTimestamp = System.currentTimeMillis();
+ }
+
+ public void triggerFinished() {
+ long finished = System.currentTimeMillis();
+ setDuration( finished - startTimestamp );
+ setWhenGathered( new java.util.Date( finished ) );
+ }
+
+ public void increaseFileCount() {
+ this.totalFileCount++;
+ }
+
+ public void increaseNewFileCount() {
+ this.newFileCount++;
+ }
+ </code>
+ </codeSegment>
+ </codeSegments>
+ </class>
+ </classes>
+</model>
diff --git a/archiva-repository-layer/pom.xml b/archiva-repository-layer/pom.xml
index b8488712a..b0a50cae9 100644
--- a/archiva-repository-layer/pom.xml
+++ b/archiva-repository-layer/pom.xml
@@ -32,9 +32,18 @@
<dependencies>
<dependency>
<groupId>org.apache.maven.archiva</groupId>
+ <artifactId>archiva-consumer-api</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-common</artifactId>
</dependency>
<dependency>
+ <groupId>org.apache.maven.archiva</groupId>
+ <artifactId>archiva-model</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ </dependency>
+ <dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-utils</artifactId>
</dependency>
diff --git a/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/DefinedRepositories.java b/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/DefinedRepositories.java
deleted file mode 100644
index d86427d26..000000000
--- a/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/DefinedRepositories.java
+++ /dev/null
@@ -1,74 +0,0 @@
-package org.apache.maven.archiva.repository;
-
-/*
- * 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 java.util.List;
-
-/**
- * DefinedRepositories - maintains the list of defined repositories.
- *
- * @author <a href="mailto:joakim@erdfelt.com">Joakim Erdfelt</a>
- * @version $Id$
- */
-public interface DefinedRepositories
-{
- /**
- * Get the entire list of repositories.
- *
- * @return the list of repositories.
- */
- public List getAllRepositories();
-
- /**
- * Get the list of managed (local) repositories.
- *
- * @return the list of managed (local) repositories.
- */
- public List getManagedRepositories();
-
- /**
- * Get the list of remote repositories.
- *
- * @return the list of remote repositories.
- */
- public List getRemoteRepositories();
-
- /**
- * Add a repository.
- *
- * @param repository the repository to add.
- */
- public void addRepository( Repository repository );
-
- /**
- * Remove a repository.
- *
- * @param repository the repository to add.
- */
- public void removeRepository( Repository repository );
-
- /**
- * Get a repository using the provided repository key.
- *
- * @param repositoryKey the repository key to find the repository via.
- * @return the repository associated with the provided Repository Key, or null if not found.
- */
- public Repository getRepository( String repositoryKey );
-}
diff --git a/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/Repository.java b/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/Repository.java
deleted file mode 100644
index 920b68dc4..000000000
--- a/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/Repository.java
+++ /dev/null
@@ -1,211 +0,0 @@
-package org.apache.maven.archiva.repository;
-
-/*
- * 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.artifact.Artifact;
-import org.apache.maven.artifact.metadata.ArtifactMetadata;
-import org.apache.maven.artifact.repository.ArtifactRepository;
-import org.apache.maven.artifact.repository.ArtifactRepositoryPolicy;
-import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout;
-
-/**
- * Repository
- *
- * @author <a href="mailto:joakim@erdfelt.com">Joakim Erdfelt</a>
- * @version $Id$
- */
-public class Repository
- implements ArtifactRepository
-{
- protected String id;
-
- protected String name;
-
- protected String source;
-
- protected RepositoryURL url;
-
- protected ArtifactRepositoryLayout layout;
-
- protected ArtifactRepositoryPolicy releases;
-
- protected ArtifactRepositoryPolicy snapshots;
-
- protected boolean blacklisted;
-
- /* .\ Constructor \.__________________________________________________ */
-
- /**
- * Construct a Repository.
- *
- * @param id the unique identifier for this repository.
- * @param name the name for this repository.
- * @param url the base URL for this repository (this should point to the top level URL for the entire repository)
- * @param layout the layout technique for this repository.
- */
- public Repository( String id, String name, String url, ArtifactRepositoryLayout layout )
- {
- this.id = id;
- this.name = name;
- this.url = new RepositoryURL( url );
- this.layout = layout;
- }
-
- /* .\ Information \.__________________________________________________ */
-
- /**
- * Get the unique ID for this repository.
- *
- * @return the unique ID for this repository.
- */
- public String getId()
- {
- return id;
- }
-
- /**
- * Get the Name of this repository.
- * This is usually the human readable name for the repository.
- *
- * @return the name of this repository.
- */
- public String getName()
- {
- return name;
- }
-
- public String getUrl()
- {
- return url.toString();
- }
-
- public void setLayout( ArtifactRepositoryLayout layout )
- {
- this.layout = layout;
- }
-
- public ArtifactRepositoryLayout getLayout()
- {
- return layout;
- }
-
- public void setSource( String source )
- {
- this.source = source;
- }
-
- public String getSource()
- {
- return source;
- }
-
- /* .\ Tasks \.________________________________________________________ */
-
- public String pathOf( Artifact artifact )
- {
- return getLayout().pathOf( artifact );
- }
-
- /* .\ State \.________________________________________________________ */
-
- public void setBlacklisted( boolean blacklisted )
- {
- this.blacklisted = blacklisted;
- }
-
- public boolean isBlacklisted()
- {
- return blacklisted;
- }
-
- public boolean isManaged()
- {
- return this.url.getProtocol().equals( "file" );
- }
-
- public boolean isRemote()
- {
- return !this.url.getProtocol().equals( "file" );
- }
-
- public void setSnapshots( ArtifactRepositoryPolicy snapshots )
- {
- this.snapshots = snapshots;
- }
-
- public ArtifactRepositoryPolicy getSnapshots()
- {
- return snapshots;
- }
-
- public void setReleases( ArtifactRepositoryPolicy releases )
- {
- this.releases = releases;
- }
-
- public ArtifactRepositoryPolicy getReleases()
- {
- return releases;
- }
-
- public boolean equals( Object other )
- {
- return ( other == this || ( ( other instanceof Repository ) && ( (Repository) other ).getId().equals( getId() ) ) );
- }
-
- public int hashCode()
- {
- return getId().hashCode();
- }
-
- /* .\ ArtifactRepository Requirements \.______________________________ */
-
- public String getBasedir()
- {
- return url.getPath();
- }
-
- public String getKey()
- {
- return getId();
- }
-
- public String getProtocol()
- {
- return url.getProtocol();
- }
-
- public boolean isUniqueVersion()
- {
- // TODO: Determine Importance
- return false;
- }
-
- public String pathOfRemoteRepositoryMetadata( ArtifactMetadata artifactMetadata )
- {
- return layout.pathOfRemoteRepositoryMetadata( artifactMetadata );
- }
-
- public String pathOfLocalRepositoryMetadata( ArtifactMetadata metadata, ArtifactRepository repository )
- {
- return layout.pathOfLocalRepositoryMetadata( metadata, repository );
- }
-
-}
diff --git a/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/connector/RepositoryConnector.java b/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/connector/RepositoryConnector.java
index 345f33c25..3d70058fd 100644
--- a/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/connector/RepositoryConnector.java
+++ b/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/connector/RepositoryConnector.java
@@ -19,7 +19,7 @@ package org.apache.maven.archiva.repository.connector;
* under the License.
*/
-import org.apache.maven.archiva.repository.Repository;
+import org.apache.maven.archiva.model.ArchivaRepository;
import java.util.List;
@@ -31,9 +31,9 @@ import java.util.List;
*/
public interface RepositoryConnector
{
- public Repository getSourceRepository();
+ public ArchivaRepository getSourceRepository();
- public Repository getTargetRepository();
+ public ArchivaRepository getTargetRepository();
public List getBlacklist();
diff --git a/archiva-model/src/main/java/org/apache/maven/archiva/model/RepositoryContent.java b/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/content/BidirectionalRepositoryLayout.java
index 3a195dfcc..9f10e3f3f 100644
--- a/archiva-model/src/main/java/org/apache/maven/archiva/model/RepositoryContent.java
+++ b/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/content/BidirectionalRepositoryLayout.java
@@ -1,4 +1,4 @@
-package org.apache.maven.archiva.model;
+package org.apache.maven.archiva.repository.content;
/*
* Licensed to the Apache Software Foundation (ASF) under one
@@ -19,15 +19,24 @@ package org.apache.maven.archiva.model;
* under the License.
*/
+import org.apache.maven.archiva.model.ArchivaArtifact;
+
/**
- * RepositoryContent
+ * BidirectionalRepositoryLayout - Similar in scope to ArtifactRepositoryLayout, but does
+ * the both the Path to Artifact and Artifact to Path conversions.
*
* @author <a href="mailto:joakim@erdfelt.com">Joakim Erdfelt</a>
* @version $Id$
*/
-public interface RepositoryContent
+public interface BidirectionalRepositoryLayout
{
- public RepositoryContentKey getRepositoryContentKey();
+ /**
+ * Given an ArchivaArtifact
+ *
+ * @param artifact
+ * @return
+ */
+ public String pathOf( ArchivaArtifact artifact );
- public void setRepositoryContentKey( RepositoryContentKey key );
+ ArchivaArtifact toArtifact( String path );
}
diff --git a/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/scanner/RepositoryScanner.java b/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/scanner/RepositoryScanner.java
index bc8a62aec..fab8d1a33 100644
--- a/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/scanner/RepositoryScanner.java
+++ b/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/scanner/RepositoryScanner.java
@@ -19,9 +19,10 @@ package org.apache.maven.archiva.repository.scanner;
* under the License.
*/
-import org.apache.maven.archiva.common.consumers.Consumer;
+import org.apache.maven.archiva.consumers.Consumer;
+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.artifact.repository.ArtifactRepository;
import org.codehaus.plexus.util.DirectoryWalker;
import org.codehaus.plexus.util.FileUtils;
@@ -72,7 +73,7 @@ public class RepositoryScanner
* @return the statistics for this scan.
* @throws RepositoryException if there was a fundamental problem with getting the discoverer started.
*/
- public ScanStatistics scan( ArtifactRepository repository, List consumers, boolean includeSnapshots )
+ public RepositoryContentStatistics scan( ArchivaRepository repository, List consumers, boolean includeSnapshots )
throws RepositoryException
{
return scan( repository, consumers, includeSnapshots, 0, null, null );
@@ -93,7 +94,7 @@ public class RepositoryScanner
* @return the statistics for this scan.
* @throws RepositoryException if there was a fundamental problem with getting the discoverer started.
*/
- public ScanStatistics scan( ArtifactRepository repository, List consumers, boolean includeSnapshots,
+ public RepositoryContentStatistics scan( ArchivaRepository repository, List consumers, boolean includeSnapshots,
long onlyModifiedAfterTimestamp, List extraFileExclusions, List extraFileInclusions )
throws RepositoryException
{
@@ -102,12 +103,12 @@ public class RepositoryScanner
throw new IllegalArgumentException( "Unable to operate on a null repository." );
}
- if ( !"file".equals( repository.getProtocol() ) )
+ if ( !"file".equals( repository.getRepositoryURL().getProtocol() ) )
{
throw new UnsupportedOperationException( "Only filesystem repositories are supported." );
}
- File repositoryBase = new File( repository.getBasedir() );
+ File repositoryBase = new File( repository.getRepositoryURL().getPath() );
if ( !repositoryBase.exists() )
{
diff --git a/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/scanner/RepositoryScannerInstance.java b/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/scanner/RepositoryScannerInstance.java
index f4bd38bf2..70554f73d 100644
--- a/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/scanner/RepositoryScannerInstance.java
+++ b/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/scanner/RepositoryScannerInstance.java
@@ -20,8 +20,10 @@ package org.apache.maven.archiva.repository.scanner;
*/
import org.apache.commons.lang.SystemUtils;
-import org.apache.maven.archiva.common.consumers.Consumer;
import org.apache.maven.archiva.common.utils.BaseFile;
+import org.apache.maven.archiva.consumers.Consumer;
+import org.apache.maven.archiva.model.ArchivaRepository;
+import org.apache.maven.archiva.model.RepositoryContentStatistics;
import org.apache.maven.artifact.repository.ArtifactRepository;
import org.codehaus.plexus.util.DirectoryWalkListener;
import org.codehaus.plexus.util.SelectorUtils;
@@ -45,19 +47,21 @@ public class RepositoryScannerInstance implements DirectoryWalkListener
private List consumers;
- private ArtifactRepository repository;
+ private ArchivaRepository repository;
private boolean isCaseSensitive = true;
- private ScanStatistics stats;
+ private RepositoryContentStatistics stats;
private long onlyModifiedAfterTimestamp = 0;
- public RepositoryScannerInstance( ArtifactRepository repository, List consumerList )
+ public RepositoryScannerInstance( ArchivaRepository repository, List consumerList )
{
this.repository = repository;
this.consumers = consumerList;
- stats = new ScanStatistics( repository );
+ stats = new RepositoryContentStatistics();
+ stats.setRepositoryId( repository.getId() );
+
Iterator it = this.consumers.iterator();
while ( it.hasNext() )
@@ -77,36 +81,36 @@ public class RepositoryScannerInstance implements DirectoryWalkListener
}
}
- public ScanStatistics getStatistics()
+ public RepositoryContentStatistics getStatistics()
{
return stats;
}
public void directoryWalkStarting( File basedir )
{
- log.info( "Walk Started: [" + this.repository.getId() + "] " + this.repository.getBasedir() );
- stats.reset();
- stats.timestampStarted = System.currentTimeMillis();
+ log.info( "Walk Started: [" + this.repository.getId() + "] " + this.repository.getRepositoryURL() );
+ stats.triggerStart();
}
public void directoryWalkStep( int percentage, File file )
{
log.debug( "Walk Step: " + percentage + ", " + file );
+
+ stats.increaseFileCount();
// Timestamp finished points to the last successful scan, not this current one.
if ( file.lastModified() < onlyModifiedAfterTimestamp )
{
// Skip file as no change has occured.
log.debug( "Skipping, No Change: " + file.getAbsolutePath() );
- stats.filesSkipped++;
return;
}
synchronized ( consumers )
{
- stats.filesIncluded++;
+ stats.increaseNewFileCount();
- BaseFile basefile = new BaseFile( repository.getBasedir(), file );
+ BaseFile basefile = new BaseFile( repository.getRepositoryURL().getPath(), file );
Iterator itConsumers = this.consumers.iterator();
while ( itConsumers.hasNext() )
@@ -118,7 +122,6 @@ public class RepositoryScannerInstance implements DirectoryWalkListener
try
{
log.debug( "Sending to consumer: " + consumer.getName() );
- stats.filesConsumed++;
consumer.processFile( basefile );
}
catch ( Exception e )
@@ -141,8 +144,8 @@ public class RepositoryScannerInstance implements DirectoryWalkListener
public void directoryWalkFinished()
{
- log.info( "Walk Finished: [" + this.repository.getId() + "] " + this.repository.getBasedir() );
- stats.timestampFinished = System.currentTimeMillis();
+ log.info( "Walk Finished: [" + this.repository.getId() + "] " + this.repository.getRepositoryURL() );
+ stats.triggerFinished();
}
private boolean wantsFile( Consumer consumer, String relativePath )
diff --git a/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/scanner/ScanStatistics.java b/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/scanner/ScanStatistics.java
deleted file mode 100644
index 780b95367..000000000
--- a/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/scanner/ScanStatistics.java
+++ /dev/null
@@ -1,198 +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.commons.lang.math.NumberUtils;
-import org.apache.maven.artifact.repository.ArtifactRepository;
-import org.codehaus.plexus.logging.Logger;
-import org.codehaus.plexus.util.IOUtil;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.Properties;
-
-/**
- * ScanStatistics
- *
- * @author <a href="mailto:joakim@erdfelt.com">Joakim Erdfelt</a>
- * @version $Id$
- */
-public class ScanStatistics
-{
- private static final String PROP_FILES_CONSUMED = "scan.consumed.files";
-
- private static final String PROP_FILES_INCLUDED = "scan.included.files";
-
- private static final String PROP_FILES_SKIPPED = "scan.skipped.files";
-
- private static final String PROP_TIMESTAMP_STARTED = "scan.started.timestamp";
-
- private static final String PROP_TIMESTAMP_FINISHED = "scan.finished.timestamp";
-
- protected long timestampStarted = 0;
-
- protected long timestampFinished = 0;
-
- protected long filesIncluded = 0;
-
- protected long filesConsumed = 0;
-
- protected long filesSkipped = 0;
-
- private ArtifactRepository repository;
-
- public ScanStatistics( ArtifactRepository repository )
- {
- this.repository = repository;
- }
-
- public void load( String filename )
- throws IOException
- {
- File repositoryBase = new File( this.repository.getBasedir() );
-
- File scanProperties = new File( repositoryBase, filename );
- FileInputStream fis = null;
- try
- {
- Properties props = new Properties();
- fis = new FileInputStream( scanProperties );
- props.load( fis );
-
- timestampFinished = NumberUtils.toLong( props.getProperty( PROP_TIMESTAMP_FINISHED ), 0 );
- timestampStarted = NumberUtils.toLong( props.getProperty( PROP_TIMESTAMP_STARTED ), 0 );
- filesIncluded = NumberUtils.toLong( props.getProperty( PROP_FILES_INCLUDED ), 0 );
- filesConsumed = NumberUtils.toLong( props.getProperty( PROP_FILES_CONSUMED ), 0 );
- filesSkipped = NumberUtils.toLong( props.getProperty( PROP_FILES_SKIPPED ), 0 );
- }
- catch ( IOException e )
- {
- reset();
- throw e;
- }
- finally
- {
- IOUtil.close( fis );
- }
- }
-
- public void save( String filename )
- throws IOException
- {
- Properties props = new Properties();
- props.setProperty( PROP_TIMESTAMP_FINISHED, String.valueOf( timestampFinished ) );
- props.setProperty( PROP_TIMESTAMP_STARTED, String.valueOf( timestampStarted ) );
- props.setProperty( PROP_FILES_INCLUDED, String.valueOf( filesIncluded ) );
- props.setProperty( PROP_FILES_CONSUMED, String.valueOf( filesConsumed ) );
- props.setProperty( PROP_FILES_SKIPPED, String.valueOf( filesSkipped ) );
-
- File repositoryBase = new File( this.repository.getBasedir() );
- File statsFile = new File( repositoryBase, filename );
-
- FileOutputStream fos = null;
- try
- {
- fos = new FileOutputStream( statsFile );
- props.store( fos, "Last Scan Information, managed by Archiva. DO NOT EDIT" );
- fos.flush();
- }
- finally
- {
- IOUtil.close( fos );
- }
- }
-
- public void reset()
- {
- timestampStarted = 0;
- timestampFinished = 0;
- filesIncluded = 0;
- filesConsumed = 0;
- filesSkipped = 0;
- }
-
- public long getElapsedMilliseconds()
- {
- return timestampFinished - timestampStarted;
- }
-
- public long getFilesConsumed()
- {
- return filesConsumed;
- }
-
- public long getFilesIncluded()
- {
- return filesIncluded;
- }
-
- public ArtifactRepository getRepository()
- {
- return repository;
- }
-
- public long getTimestampFinished()
- {
- return timestampFinished;
- }
-
- public long getTimestampStarted()
- {
- return timestampStarted;
- }
-
- public long getFilesSkipped()
- {
- return filesSkipped;
- }
-
- public void setTimestampFinished( long timestampFinished )
- {
- this.timestampFinished = timestampFinished;
- }
-
- public void setTimestampStarted( long timestampStarted )
- {
- this.timestampStarted = timestampStarted;
- }
-
- public void dump( Logger logger )
- {
- logger.info( "----------------------------------------------------" );
- logger.info( "Scan of Repository: " + repository.getId() );
- logger.info( " Started : " + toHumanTimestamp( this.getTimestampStarted() ) );
- logger.info( " Finished: " + toHumanTimestamp( this.getTimestampFinished() ) );
- // TODO: pretty print ellapsed time.
- logger.info( " Duration: " + this.getElapsedMilliseconds() + "ms" );
- logger.info( " Files : " + this.getFilesIncluded() );
- logger.info( " Consumed: " + this.getFilesConsumed() );
- logger.info( " Skipped : " + this.getFilesSkipped() );
- }
-
- private String toHumanTimestamp( long timestamp )
- {
- SimpleDateFormat dateFormat = new SimpleDateFormat();
- return dateFormat.format( new Date( timestamp ) );
- }
-}
diff --git a/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/RepositoryURLTest.java b/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/RepositoryURLTest.java
index af2efe5fc..a7aac9513 100644
--- a/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/RepositoryURLTest.java
+++ b/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/RepositoryURLTest.java
@@ -19,6 +19,8 @@ package org.apache.maven.archiva.repository;
* under the License.
*/
+import org.apache.maven.archiva.common.utils.RepositoryURL;
+
import java.net.MalformedURLException;
import junit.framework.TestCase;
diff --git a/pom.xml b/pom.xml
index 174fea814..a500c2f61 100644
--- a/pom.xml
+++ b/pom.xml
@@ -228,13 +228,13 @@
<dependency>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-common</artifactId>
- <version>${pom.version}</version>
+ <version>${archiva.version}</version>
</dependency>
<!--
<dependency>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-common</artifactId>
- <version>${pom.version}</version>
+ <version>${archiva.version}</version>
<classifier>tests</classifier>
<scope>test</scope>
</dependency>
@@ -242,62 +242,77 @@
<dependency>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-core</artifactId>
- <version>${pom.version}</version>
+ <version>${archiva.version}</version>
</dependency>
<dependency>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-reports-standard</artifactId>
- <version>${pom.version}</version>
+ <version>${archiva.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven.archiva</groupId>
+ <artifactId>archiva-model</artifactId>
+ <version>${archiva.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven.archiva</groupId>
+ <artifactId>archiva-database</artifactId>
+ <version>${archiva.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven.archiva</groupId>
+ <artifactId>archiva-consumer-api</artifactId>
+ <version>${archiva.version}</version>
</dependency>
<dependency>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-discoverer</artifactId>
- <version>${pom.version}</version>
+ <version>${archiva.version}</version>
</dependency>
<dependency>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-repository-layer</artifactId>
- <version>${pom.version}</version>
+ <version>${archiva.version}</version>
</dependency>
<dependency>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-indexer</artifactId>
- <version>${pom.version}</version>
+ <version>${archiva.version}</version>
</dependency>
<dependency>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-proxy</artifactId>
- <version>${pom.version}</version>
+ <version>${archiva.version}</version>
</dependency>
<dependency>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-applet</artifactId>
- <version>${pom.version}</version>
+ <version>${archiva.version}</version>
</dependency>
<dependency>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-security</artifactId>
- <version>${pom.version}</version>
+ <version>${archiva.version}</version>
</dependency>
<dependency>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-configuration</artifactId>
- <version>${pom.version}</version>
+ <version>${archiva.version}</version>
</dependency>
<dependency>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-converter</artifactId>
- <version>${pom.version}</version>
+ <version>${archiva.version}</version>
</dependency>
<dependency>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-utils</artifactId>
- <version>${pom.version}</version>
+ <version>${archiva.version}</version>
</dependency>
<dependency>
<groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-webapp</artifactId>
- <version>${pom.version}</version>
+ <version>${archiva.version}</version>
<type>war</type>
</dependency>
<dependency>
@@ -552,6 +567,7 @@
</pluginRepository>
</pluginRepositories>
<properties>
+ <archiva.version>1.0-SNAPSHOT</archiva.version>
<maven.version>2.0.5</maven.version>
<wagon.version>1.0-beta-2</wagon.version>
<plexus-security.version>1.0-alpha-11-SNAPSHOT</plexus-security.version>