Browse Source

[MRM-528] run consumers as artifacts arrive via proxy

git-svn-id: https://svn.apache.org/repos/asf/maven/archiva/trunk@580187 13f79535-47bb-0310-9956-ffa450edef68
tags/archiva-1.0-beta-3
Brett Porter 16 years ago
parent
commit
bc5df1bd8a
22 changed files with 151 additions and 55 deletions
  1. 0
    6
      archiva-base/archiva-configuration/pom.xml
  2. 2
    0
      archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/repository/AbstractRepositoryPurge.java
  3. 0
    5
      archiva-base/archiva-dependency-graph/pom.xml
  4. 0
    5
      archiva-base/archiva-indexer/pom.xml
  5. 0
    5
      archiva-base/archiva-policies/pom.xml
  6. 0
    5
      archiva-base/archiva-proxy/pom.xml
  7. 9
    0
      archiva-base/archiva-proxy/src/main/java/org/apache/maven/archiva/proxy/DefaultRepositoryProxyConnectors.java
  8. 4
    0
      archiva-base/archiva-proxy/src/test/resources/org/apache/maven/archiva/proxy/CacheFailuresTransferTest.xml
  9. 4
    0
      archiva-base/archiva-proxy/src/test/resources/org/apache/maven/archiva/proxy/ChecksumTransferTest.xml
  10. 4
    0
      archiva-base/archiva-proxy/src/test/resources/org/apache/maven/archiva/proxy/ManagedDefaultTransferTest.xml
  11. 4
    0
      archiva-base/archiva-proxy/src/test/resources/org/apache/maven/archiva/proxy/ManagedLegacyTransferTest.xml
  12. 4
    0
      archiva-base/archiva-proxy/src/test/resources/org/apache/maven/archiva/proxy/MetadataTransferTest.xml
  13. 4
    0
      archiva-base/archiva-proxy/src/test/resources/org/apache/maven/archiva/proxy/RelocateTransferTest.xml
  14. 4
    0
      archiva-base/archiva-proxy/src/test/resources/org/apache/maven/archiva/proxy/SnapshotTransferTest.xml
  15. 0
    5
      archiva-base/archiva-repository-layer/pom.xml
  16. 50
    4
      archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/scanner/RepositoryContentConsumers.java
  17. 41
    4
      archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/scanner/RepositoryContentConsumerUtilTest.java
  18. 0
    5
      archiva-reporting/archiva-artifact-reports/pom.xml
  19. 0
    6
      archiva-web/archiva-webapp/pom.xml
  20. 8
    0
      archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/repository/StubRepositoryContentConsumers.java
  21. 7
    0
      archiva-web/archiva-webapp/src/test/resources/org/apache/maven/archiva/web/repository/RepositoryServletTest.xml
  22. 6
    5
      pom.xml

+ 0
- 6
archiva-base/archiva-configuration/pom.xml View File

@@ -72,12 +72,6 @@
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-container-default</artifactId>
</dependency>
<!-- Test Deps -->
<dependency>
<groupId>easymock</groupId>
<artifactId>easymock</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>

+ 2
- 0
archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/repository/AbstractRepositoryPurge.java View File

@@ -113,6 +113,8 @@ public abstract class AbstractRepositoryPurge
artifact.getType() );

artifactDao.deleteArtifact( queriedArtifact );

// TODO [MRM-37]: re-run the database consumers to clean up
}

/**

+ 0
- 5
archiva-base/archiva-dependency-graph/pom.xml View File

@@ -80,11 +80,6 @@
<artifactId>plexus-registry-commons</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>easymock</groupId>
<artifactId>easymock</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>

+ 0
- 5
archiva-base/archiva-indexer/pom.xml View File

@@ -60,11 +60,6 @@
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
</dependency>
<dependency>
<groupId>easymock</groupId>
<artifactId>easymock</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>

+ 0
- 5
archiva-base/archiva-policies/pom.xml View File

@@ -44,11 +44,6 @@
<groupId>org.codehaus.plexus.cache</groupId>
<artifactId>plexus-cache-ehcache</artifactId>
</dependency>
<dependency>
<groupId>easymock</groupId>
<artifactId>easymock</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-slf4j-logging</artifactId>

+ 0
- 5
archiva-base/archiva-proxy/pom.xml View File

@@ -76,11 +76,6 @@
<artifactId>xmlunit</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>easymock</groupId>
<artifactId>easymock</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-slf4j-logging</artifactId>

+ 9
- 0
archiva-base/archiva-proxy/src/main/java/org/apache/maven/archiva/proxy/DefaultRepositoryProxyConnectors.java View File

@@ -39,6 +39,7 @@ import org.apache.maven.archiva.repository.layout.BidirectionalRepositoryLayoutF
import org.apache.maven.archiva.repository.layout.LayoutException;
import org.apache.maven.archiva.repository.metadata.MetadataTools;
import org.apache.maven.archiva.repository.metadata.RepositoryMetadataException;
import org.apache.maven.archiva.repository.scanner.RepositoryContentConsumers;
import org.apache.maven.wagon.ConnectionException;
import org.apache.maven.wagon.ResourceDoesNotExistException;
import org.apache.maven.wagon.Wagon;
@@ -115,6 +116,11 @@ public class DefaultRepositoryProxyConnectors

private Map networkProxyMap = new HashMap();

/**
* @plexus.requirement
*/
private RepositoryContentConsumers consumers;

/**
* Fetch an artifact from a remote repository.
*
@@ -475,6 +481,9 @@ public class DefaultRepositoryProxyConnectors
return null;
}

// Just-in-time update of the index and database by executing the consumers for this artifact
consumers.executeConsumers( connector.getSourceRepository(), localFile );

// Everything passes.
return localFile;
}

+ 4
- 0
archiva-base/archiva-proxy/src/test/resources/org/apache/maven/archiva/proxy/CacheFailuresTransferTest.xml View File

@@ -61,6 +61,10 @@
<role-hint>default</role-hint>
<field-name>urlFailureCache</field-name>
</requirement>
<requirement>
<role>org.apache.maven.archiva.repository.scanner.RepositoryContentConsumers</role>
<field-name>consumers</field-name>
</requirement>
</requirements>
</component>

+ 4
- 0
archiva-base/archiva-proxy/src/test/resources/org/apache/maven/archiva/proxy/ChecksumTransferTest.xml View File

@@ -61,6 +61,10 @@
<role-hint>default</role-hint>
<field-name>urlFailureCache</field-name>
</requirement>
<requirement>
<role>org.apache.maven.archiva.repository.scanner.RepositoryContentConsumers</role>
<field-name>consumers</field-name>
</requirement>
</requirements>
</component>

+ 4
- 0
archiva-base/archiva-proxy/src/test/resources/org/apache/maven/archiva/proxy/ManagedDefaultTransferTest.xml View File

@@ -61,6 +61,10 @@
<role-hint>default</role-hint>
<field-name>urlFailureCache</field-name>
</requirement>
<requirement>
<role>org.apache.maven.archiva.repository.scanner.RepositoryContentConsumers</role>
<field-name>consumers</field-name>
</requirement>
</requirements>
</component>

+ 4
- 0
archiva-base/archiva-proxy/src/test/resources/org/apache/maven/archiva/proxy/ManagedLegacyTransferTest.xml View File

@@ -61,6 +61,10 @@
<role-hint>default</role-hint>
<field-name>urlFailureCache</field-name>
</requirement>
<requirement>
<role>org.apache.maven.archiva.repository.scanner.RepositoryContentConsumers</role>
<field-name>consumers</field-name>
</requirement>
</requirements>
</component>

+ 4
- 0
archiva-base/archiva-proxy/src/test/resources/org/apache/maven/archiva/proxy/MetadataTransferTest.xml View File

@@ -87,6 +87,10 @@
<role-hint>default</role-hint>
<field-name>urlFailureCache</field-name>
</requirement>
<requirement>
<role>org.apache.maven.archiva.repository.scanner.RepositoryContentConsumers</role>
<field-name>consumers</field-name>
</requirement>
</requirements>
</component>

+ 4
- 0
archiva-base/archiva-proxy/src/test/resources/org/apache/maven/archiva/proxy/RelocateTransferTest.xml View File

@@ -65,6 +65,10 @@
<role-hint>default</role-hint>
<field-name>urlFailureCache</field-name>
</requirement>
<requirement>
<role>org.apache.maven.archiva.repository.scanner.RepositoryContentConsumers</role>
<field-name>consumers</field-name>
</requirement>
</requirements>
</component>

+ 4
- 0
archiva-base/archiva-proxy/src/test/resources/org/apache/maven/archiva/proxy/SnapshotTransferTest.xml View File

@@ -61,6 +61,10 @@
<role-hint>default</role-hint>
<field-name>urlFailureCache</field-name>
</requirement>
<requirement>
<role>org.apache.maven.archiva.repository.scanner.RepositoryContentConsumers</role>
<field-name>consumers</field-name>
</requirement>
</requirements>
</component>

+ 0
- 5
archiva-base/archiva-repository-layer/pom.xml View File

@@ -88,11 +88,6 @@
<artifactId>plexus-registry-commons</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>easymock</groupId>
<artifactId>easymock</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-slf4j-logging</artifactId>

+ 50
- 4
archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/scanner/RepositoryContentConsumers.java View File

@@ -24,16 +24,20 @@ import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.collections.Predicate;
import org.apache.commons.collections.functors.IfClosure;
import org.apache.commons.collections.functors.OrPredicate;
import org.apache.maven.archiva.common.utils.PathUtil;
import org.apache.maven.archiva.configuration.ArchivaConfiguration;
import org.apache.maven.archiva.configuration.RepositoryScanningConfiguration;
import org.apache.maven.archiva.consumers.ConsumerException;
import org.apache.maven.archiva.consumers.InvalidRepositoryContentConsumer;
import org.apache.maven.archiva.consumers.KnownRepositoryContentConsumer;
import org.apache.maven.archiva.consumers.RepositoryContentConsumer;
import org.apache.maven.archiva.consumers.functors.PermanentConsumerPredicate;
import org.apache.maven.archiva.model.ArchivaRepository;
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.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@@ -59,12 +63,12 @@ public class RepositoryContentConsumers
/**
* @plexus.requirement role="org.apache.maven.archiva.consumers.KnownRepositoryContentConsumer"
*/
private List availableKnownConsumers;
private List<KnownRepositoryContentConsumer> availableKnownConsumers;

/**
* @plexus.requirement role="org.apache.maven.archiva.consumers.InvalidRepositoryContentConsumer"
*/
private List availableInvalidConsumers;
private List<InvalidRepositoryContentConsumer> availableInvalidConsumers;

private Predicate selectedKnownPredicate;

@@ -186,13 +190,55 @@ public class RepositoryContentConsumers
return ret;
}

public List getAvailableKnownConsumers()
public List<KnownRepositoryContentConsumer> getAvailableKnownConsumers()
{
return availableKnownConsumers;
}

public List getAvailableInvalidConsumers()
public List<InvalidRepositoryContentConsumer> getAvailableInvalidConsumers()
{
return availableInvalidConsumers;
}

public void setAvailableKnownConsumers( List<KnownRepositoryContentConsumer> availableKnownConsumers )
{
this.availableKnownConsumers = availableKnownConsumers;
}

public void setAvailableInvalidConsumers( List<InvalidRepositoryContentConsumer> availableInvalidConsumers )
{
this.availableInvalidConsumers = availableInvalidConsumers;
}

public void executeConsumers( ArchivaRepository repository, File localFile )
{
// Run the repository consumers
for ( RepositoryContentConsumer consumer : availableKnownConsumers )
{
consumeFile( consumer, repository, localFile );
}

for ( RepositoryContentConsumer consumer : availableInvalidConsumers )
{
consumeFile( consumer, repository, localFile );
}
}

private void consumeFile( RepositoryContentConsumer consumer, ArchivaRepository repository, File localFile )
{
try
{
consumer.beginScan( repository );
consumer.processFile( PathUtil.getRelative( repository.getUrl().getPath(), localFile ) );
}
catch ( ConsumerException e )
{
getLogger().error( "Error processing file: " + localFile, e );
// ignore, let next repo scan handle it
}
finally
{
consumer.completeScan();
}
}
}

+ 41
- 4
archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/scanner/RepositoryContentConsumerUtilTest.java View File

@@ -19,15 +19,20 @@ package org.apache.maven.archiva.repository.scanner;
* under the License.
*/

import org.apache.maven.archiva.consumers.InvalidRepositoryContentConsumer;
import org.apache.maven.archiva.consumers.KnownRepositoryContentConsumer;
import org.apache.maven.archiva.consumers.RepositoryContentConsumer;
import org.apache.maven.archiva.model.ArchivaRepository;
import org.codehaus.plexus.PlexusTestCase;
import org.easymock.MockControl;

import java.io.File;
import java.util.Collections;
import java.util.List;
import java.util.Map;

/**
* RepositoryContentConsumerUtilTest
* RepositoryContentConsumerUtilTest
*
* @author <a href="mailto:joakime@apache.org">Joakim Erdfelt</a>
* @version $Id$
@@ -71,7 +76,7 @@ public class RepositoryContentConsumerUtilTest
assertNotNull( "Known[sample-known] should not be null.", o );
assertInstanceof( "Known[sample-known]", RepositoryContentConsumer.class, o );
assertInstanceof( "Known[sample-known]", KnownRepositoryContentConsumer.class, o );
Map invalidConsumerMap = consumerutil.getSelectedInvalidConsumersMap();
assertNotNull( "Invalid Consumer Map should not be null", invalidConsumerMap );
assertEquals( "Invalid Consumer Map.size", 0, invalidConsumerMap.size() );
@@ -81,8 +86,8 @@ public class RepositoryContentConsumerUtilTest
{
if ( clazz.isInstance( o ) == false )
{
fail( msg + ": Object [" + o.getClass().getName() + "] should have been an instanceof [" + clazz.getName()
+ "]" );
fail( msg + ": Object [" + o.getClass().getName() + "] should have been an instanceof [" + clazz.getName() +
"]" );
}
}

@@ -100,4 +105,36 @@ public class RepositoryContentConsumerUtilTest
assertNotNull( "invalid consumers should not be null.", invalidConsumers );
assertEquals( "invalid consumers", 0, invalidConsumers.size() );
}

public void testExecution()
throws Exception
{
MockControl knownControl = MockControl.createControl( KnownRepositoryContentConsumer.class );
RepositoryContentConsumers consumers = lookupRepositoryConsumerUtil();
KnownRepositoryContentConsumer knownConsumer = (KnownRepositoryContentConsumer) knownControl.getMock();
consumers.setAvailableKnownConsumers( Collections.singletonList( knownConsumer ) );

MockControl invalidControl = MockControl.createControl( InvalidRepositoryContentConsumer.class );
InvalidRepositoryContentConsumer invalidConsumer = (InvalidRepositoryContentConsumer) invalidControl.getMock();
consumers.setAvailableInvalidConsumers( Collections.singletonList( invalidConsumer ) );

ArchivaRepository repo =
new ArchivaRepository( "id", "name", getTestFile( "target/test-repo" ).toURL().toExternalForm() );
File testFile = getTestFile( "target/test-repo/path/to/test-file.txt" );

knownConsumer.beginScan( repo );
knownConsumer.processFile( "path/to/test-file.txt" );
knownConsumer.completeScan();
knownControl.replay();

invalidConsumer.beginScan( repo );
invalidConsumer.processFile( "path/to/test-file.txt" );
invalidConsumer.completeScan();
invalidControl.replay();

consumers.executeConsumers( repo, testFile );

knownControl.verify();
invalidControl.verify();
}
}

+ 0
- 5
archiva-reporting/archiva-artifact-reports/pom.xml View File

@@ -58,11 +58,6 @@
<artifactId>hsqldb</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>easymock</groupId>
<artifactId>easymock</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-slf4j-logging</artifactId>

+ 0
- 6
archiva-web/archiva-webapp/pom.xml View File

@@ -235,12 +235,6 @@
<version>${redback.version}</version>
<scope>test</scope>
</dependency>
<!-- Test Deps -->
<dependency>
<groupId>easymock</groupId>
<artifactId>easymock</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>

+ 8
- 0
archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/repository/StubRepositoryContentConsumers.java View File

@@ -0,0 +1,8 @@
package org.apache.maven.archiva.web.repository;

import org.apache.maven.archiva.repository.scanner.RepositoryContentConsumers;

public class StubRepositoryContentConsumers
extends RepositoryContentConsumers
{
}

+ 7
- 0
archiva-web/archiva-webapp/src/test/resources/org/apache/maven/archiva/web/repository/RepositoryServletTest.xml View File

@@ -38,6 +38,13 @@
</configuration>
</component>

<!-- Don't drag in the world just to test this -->
<component>
<role>org.apache.maven.archiva.repository.scanner.RepositoryContentConsumers</role>
<role-hint>default</role-hint>
<implementation>org.apache.maven.archiva.web.repository.StubRepositoryContentConsumers</implementation>
</component>

<!-- TODO: shouldn't need so many components just to use in-memory - is flaky since these are auto-generated -->
<component>
<role>org.codehaus.plexus.redback.system.SecuritySystem</role>

+ 6
- 5
pom.xml View File

@@ -190,6 +190,12 @@
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>easymock</groupId>
<artifactId>easymock</artifactId>
<version>1.2_Java1.3</version>
<scope>test</scope>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
@@ -370,11 +376,6 @@
<artifactId>dom4j</artifactId>
<version>1.6.1</version>
</dependency>
<dependency>
<groupId>easymock</groupId>
<artifactId>easymock</artifactId>
<version>1.2_Java1.3</version>
</dependency>
<dependency>
<groupId>hsqldb</groupId>
<artifactId>hsqldb</artifactId>

Loading…
Cancel
Save