[MRM-166] add multiple report groups

git-svn-id: https://svn.apache.org/repos/asf/maven/archiva/trunk@442028 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Brett Porter 2006-09-10 23:21:19 +00:00
parent 9dd5b3e988
commit b57273dff3
23 changed files with 681 additions and 351 deletions

View File

@ -16,6 +16,7 @@ package org.apache.maven.archiva.converter;
* limitations under the License.
*/
import org.apache.maven.archiva.reporting.ReportGroup;
import org.apache.maven.archiva.reporting.ReportingDatabase;
import org.apache.maven.archiva.reporting.model.ArtifactResults;
import org.apache.maven.archiva.reporting.model.Result;
@ -60,7 +61,7 @@ public class RepositoryConverterTest
private ArtifactFactory artifactFactory;
private ReportingDatabase reporter;
private ReportingDatabase reportingDatabase;
private static final int SLEEP_MILLIS = 100;
@ -93,7 +94,8 @@ public class RepositoryConverterTest
i18n = (I18N) lookup( I18N.ROLE );
reporter = new ReportingDatabase();
ReportGroup reportGroup = (ReportGroup) lookup( ReportGroup.ROLE, "health" );
reportingDatabase = new ReportingDatabase( reportGroup );
}
private void copyDirectoryStructure( File sourceDirectory, File destinationDirectory )
@ -162,7 +164,7 @@ public class RepositoryConverterTest
File artifactFile = new File( targetRepository.getBasedir(), targetRepository.pathOf( artifact ) );
artifactFile.delete();
repositoryConverter.convert( artifact, targetRepository, reporter );
repositoryConverter.convert( artifact, targetRepository, reportingDatabase );
checkSuccess();
assertTrue( "Check artifact created", artifactFile.exists() );
@ -204,7 +206,7 @@ public class RepositoryConverterTest
targetRepository.pathOfRemoteRepositoryMetadata( versionMetadata ) );
versionMetadataFile.delete();
repositoryConverter.convert( artifact, targetRepository, reporter );
repositoryConverter.convert( artifact, targetRepository, reportingDatabase );
checkSuccess();
File artifactFile = new File( targetRepository.getBasedir(), targetRepository.pathOf( artifact ) );
@ -245,7 +247,7 @@ public class RepositoryConverterTest
targetRepository.pathOfRemoteRepositoryMetadata( versionMetadata ) );
versionMetadataFile.delete();
repositoryConverter.convert( artifact, targetRepository, reporter );
repositoryConverter.convert( artifact, targetRepository, reportingDatabase );
//checkSuccess(); --> commented until MNG-2100 is fixed
File artifactFile = new File( targetRepository.getBasedir(), targetRepository.pathOf( artifact ) );
@ -280,9 +282,9 @@ public class RepositoryConverterTest
targetRepository.pathOfRemoteRepositoryMetadata( versionMetadata ) );
versionMetadataFile.delete();
repositoryConverter.convert( artifact, targetRepository, reporter );
assertEquals( "check no errors", 0, reporter.getNumFailures() );
assertEquals( "check number of warnings", 2, reporter.getNumWarnings() );
repositoryConverter.convert( artifact, targetRepository, reportingDatabase );
assertEquals( "check no errors", 0, reportingDatabase.getNumFailures() );
assertEquals( "check number of warnings", 2, reportingDatabase.getNumWarnings() );
File artifactFile = new File( targetRepository.getBasedir(), targetRepository.pathOf( artifact ) );
assertTrue( "Check artifact created", artifactFile.exists() );
@ -314,7 +316,7 @@ public class RepositoryConverterTest
targetRepository.pathOfRemoteRepositoryMetadata( snapshotMetadata ) );
snapshotMetadataFile.delete();
repositoryConverter.convert( artifact, targetRepository, reporter );
repositoryConverter.convert( artifact, targetRepository, reportingDatabase );
checkSuccess();
File artifactFile = new File( targetRepository.getBasedir(), targetRepository.pathOf( artifact ) );
@ -357,7 +359,7 @@ public class RepositoryConverterTest
targetRepository.pathOfRemoteRepositoryMetadata( snapshotMetadata ) );
snapshotMetadataFile.delete();
repositoryConverter.convert( artifact, targetRepository, reporter );
repositoryConverter.convert( artifact, targetRepository, reportingDatabase );
checkSuccess();
File artifactFile = new File( targetRepository.getBasedir(), targetRepository.pathOf( artifact ) );
@ -417,7 +419,7 @@ public class RepositoryConverterTest
targetRepository.pathOfRemoteRepositoryMetadata( snapshotMetadata ) );
snapshotMetadataFile.delete();
repositoryConverter.convert( artifact, targetRepository, reporter );
repositoryConverter.convert( artifact, targetRepository, reportingDatabase );
checkSuccess();
File artifactFile = new File( targetRepository.getBasedir(), targetRepository.pathOf( artifact ) );
@ -450,9 +452,9 @@ public class RepositoryConverterTest
// test that a POM is not created when there was none at the source
Artifact artifact = createArtifact( "test", "noPomArtifact", "1.0.0" );
repositoryConverter.convert( artifact, targetRepository, reporter );
assertEquals( "check no errors", 0, reporter.getNumFailures() );
assertEquals( "check no warnings", 1, reporter.getNumWarnings() );
repositoryConverter.convert( artifact, targetRepository, reportingDatabase );
assertEquals( "check no errors", 0, reportingDatabase.getNumFailures() );
assertEquals( "check no warnings", 1, reportingDatabase.getNumWarnings() );
assertEquals( "check warning message", getI18nString( "warning.missing.pom" ), getWarning().getReason() );
File artifactFile = new File( targetRepository.getBasedir(), targetRepository.pathOf( artifact ) );
@ -476,7 +478,7 @@ public class RepositoryConverterTest
File file = new File( targetRepository.getBasedir(), targetRepository.pathOf( artifact ) );
file.delete();
repositoryConverter.convert( artifact, targetRepository, reporter );
repositoryConverter.convert( artifact, targetRepository, reportingDatabase );
checkFailure();
assertEquals( "check failure message", getI18nString( "failure.incorrect.md5" ), getFailure().getReason() );
@ -497,7 +499,7 @@ public class RepositoryConverterTest
File file = new File( targetRepository.getBasedir(), targetRepository.pathOf( artifact ) );
file.delete();
repositoryConverter.convert( artifact, targetRepository, reporter );
repositoryConverter.convert( artifact, targetRepository, reportingDatabase );
checkFailure();
assertEquals( "check failure message", getI18nString( "failure.incorrect.sha1" ), getFailure().getReason() );
@ -534,7 +536,7 @@ public class RepositoryConverterTest
// Need to guarantee last modified is not equal
Thread.sleep( SLEEP_MILLIS );
repositoryConverter.convert( artifact, targetRepository, reporter );
repositoryConverter.convert( artifact, targetRepository, reportingDatabase );
checkSuccess();
compareFiles( sourceFile, targetFile );
@ -570,7 +572,7 @@ public class RepositoryConverterTest
// Need to guarantee last modified is not equal
Thread.sleep( SLEEP_MILLIS );
repositoryConverter.convert( artifact, targetRepository, reporter );
repositoryConverter.convert( artifact, targetRepository, reportingDatabase );
checkFailure();
assertEquals( "Check failure message", getI18nString( "failure.target.already.exists" ),
getFailure().getReason() );
@ -607,7 +609,7 @@ public class RepositoryConverterTest
sourceFile.setLastModified( dateFormat.parse( "2006-01-01" ).getTime() );
sourcePomFile.setLastModified( dateFormat.parse( "2006-02-02" ).getTime() );
repositoryConverter.convert( artifact, targetRepository, reporter );
repositoryConverter.convert( artifact, targetRepository, reportingDatabase );
checkSuccess();
compareFiles( sourceFile, targetFile );
@ -637,7 +639,7 @@ public class RepositoryConverterTest
File targetFile = new File( targetRepository.getBasedir(), targetRepository.pathOf( artifact ) );
File targetPomFile = new File( targetRepository.getBasedir(), targetRepository.pathOf( pomArtifact ) );
repositoryConverter.convert( artifact, targetRepository, reporter );
repositoryConverter.convert( artifact, targetRepository, reportingDatabase );
checkSuccess();
assertTrue( "Check source file exists", sourceFile.exists() );
@ -679,7 +681,7 @@ public class RepositoryConverterTest
// Need to guarantee last modified is not equal
Thread.sleep( SLEEP_MILLIS );
repositoryConverter.convert( artifact, targetRepository, reporter );
repositoryConverter.convert( artifact, targetRepository, reportingDatabase );
checkFailure();
assertEquals( "Check failure message", getI18nString( "failure.target.already.exists" ),
getFailure().getReason() );
@ -710,7 +712,7 @@ public class RepositoryConverterTest
File artifactFile = new File( targetRepository.getBasedir(), targetRepository.pathOf( artifact ) );
repositoryConverter.convert( artifact, targetRepository, reporter );
repositoryConverter.convert( artifact, targetRepository, reportingDatabase );
checkFailure();
String pattern = "^" + getI18nString( "failure.invalid.source.pom" ).replaceFirst( "\\{0\\}", ".*" ) + "$";
assertTrue( "Check failure message", getFailure().getReason().matches( pattern ) );
@ -729,9 +731,9 @@ public class RepositoryConverterTest
artifacts.add( createArtifact( "test", "artifact-one", "1.0.0" ) );
artifacts.add( createArtifact( "test", "artifact-two", "1.0.0" ) );
artifacts.add( createArtifact( "test", "artifact-three", "1.0.0" ) );
repositoryConverter.convert( artifacts, targetRepository, reporter );
assertEquals( "check no errors", 0, reporter.getNumFailures() );
assertEquals( "check no warnings", 0, reporter.getNumWarnings() );
repositoryConverter.convert( artifacts, targetRepository, reportingDatabase );
assertEquals( "check no errors", 0, reportingDatabase.getNumFailures() );
assertEquals( "check no warnings", 0, reportingDatabase.getNumWarnings() );
for ( Iterator i = artifacts.iterator(); i.hasNext(); )
{
@ -762,7 +764,7 @@ public class RepositoryConverterTest
File file = new File( targetRepository.getBasedir(), targetRepository.pathOf( artifact ) );
file.delete();
repositoryConverter.convert( artifact, targetRepository, reporter );
repositoryConverter.convert( artifact, targetRepository, reportingDatabase );
checkFailure();
assertEquals( "check failure message", getI18nString( "failure.incorrect.artifactMetadata.versions" ),
getFailure().getReason() );
@ -786,7 +788,7 @@ public class RepositoryConverterTest
File file = new File( targetRepository.getBasedir(), targetRepository.pathOf( artifact ) );
file.delete();
repositoryConverter.convert( artifact, targetRepository, reporter );
repositoryConverter.convert( artifact, targetRepository, reportingDatabase );
checkFailure();
assertEquals( "check failure message", getI18nString( "failure.incorrect.snapshotMetadata.snapshot" ),
getFailure().getReason() );
@ -806,7 +808,7 @@ public class RepositoryConverterTest
Artifact artifact = createArtifact( "test", "newversion-artifact", "1.0.1" );
repositoryConverter.convert( artifact, targetRepository, reporter );
repositoryConverter.convert( artifact, targetRepository, reportingDatabase );
checkSuccess();
File artifactFile = new File( targetRepository.getBasedir(), targetRepository.pathOf( artifact ) );
@ -844,7 +846,7 @@ public class RepositoryConverterTest
try
{
repositoryConverter.convert( artifact, targetRepository, reporter );
repositoryConverter.convert( artifact, targetRepository, reportingDatabase );
fail( "Should have failed trying to convert within the same repository" );
}
catch ( RepositoryConversionException e )
@ -902,14 +904,14 @@ public class RepositoryConverterTest
private void checkSuccess()
{
assertEquals( "check no errors", 0, reporter.getNumFailures() );
assertEquals( "check no warnings", 0, reporter.getNumWarnings() );
assertEquals( "check no errors", 0, reportingDatabase.getNumFailures() );
assertEquals( "check no warnings", 0, reportingDatabase.getNumWarnings() );
}
private void checkFailure()
{
assertEquals( "check num errors", 1, reporter.getNumFailures() );
assertEquals( "check no warnings", 0, reporter.getNumWarnings() );
assertEquals( "check num errors", 1, reportingDatabase.getNumFailures() );
assertEquals( "check no warnings", 0, reportingDatabase.getNumWarnings() );
}
private String getI18nString( String key )
@ -919,13 +921,13 @@ public class RepositoryConverterTest
private Result getFailure()
{
ArtifactResults artifact = (ArtifactResults) reporter.getArtifactIterator().next();
ArtifactResults artifact = (ArtifactResults) reportingDatabase.getArtifactIterator().next();
return (Result) artifact.getFailures().get( 0 );
}
private Result getWarning()
{
ArtifactResults artifact = (ArtifactResults) reporter.getArtifactIterator().next();
ArtifactResults artifact = (ArtifactResults) reportingDatabase.getArtifactIterator().next();
return (Result) artifact.getWarnings().get( 0 );
}

View File

@ -6,6 +6,7 @@ import org.apache.maven.archiva.discoverer.ArtifactDiscoverer;
import org.apache.maven.archiva.discoverer.DiscovererException;
import org.apache.maven.archiva.discoverer.filter.AcceptAllArtifactFilter;
import org.apache.maven.archiva.discoverer.filter.SnapshotArtifactFilter;
import org.apache.maven.archiva.reporting.ReportGroup;
import org.apache.maven.archiva.reporting.ReportingDatabase;
import org.apache.maven.archiva.reporting.ReportingStore;
import org.apache.maven.archiva.reporting.ReportingStoreException;
@ -55,6 +56,11 @@ public class DefaultRepositoryManager
*/
private ReportingStore reportingStore;
/**
* @plexus.requirement role-hint="health"
*/
private ReportGroup reportGroup;
public void convertLegacyRepository( File legacyRepositoryDirectory, File repositoryDirectory,
boolean includeSnapshots )
throws RepositoryConversionException, DiscovererException
@ -85,7 +91,7 @@ public class DefaultRepositoryManager
ReportingDatabase reporter;
try
{
reporter = reportingStore.getReportsFromStore( repository );
reporter = reportingStore.getReportsFromStore( repository, reportGroup );
repositoryConverter.convert( legacyArtifacts, repository, reporter );

View File

@ -32,6 +32,7 @@ import org.apache.maven.archiva.indexer.RepositoryIndexException;
import org.apache.maven.archiva.indexer.record.IndexRecordExistsArtifactFilter;
import org.apache.maven.archiva.indexer.record.RepositoryIndexRecordFactory;
import org.apache.maven.archiva.reporting.ReportExecutor;
import org.apache.maven.archiva.reporting.ReportGroup;
import org.apache.maven.archiva.reporting.ReportingDatabase;
import org.apache.maven.archiva.reporting.ReportingMetadataFilter;
import org.apache.maven.archiva.reporting.ReportingStoreException;
@ -96,6 +97,11 @@ public class IndexerTask
*/
private ReportExecutor reportExecutor;
/**
* @plexus.requirement role-hint="health"
*/
private ReportGroup reportGroup;
private static final int ARTIFACT_BUFFER_SIZE = 1000;
public void execute()
@ -154,7 +160,7 @@ public class IndexerTask
boolean includeSnapshots = repositoryConfiguration.isIncludeSnapshots();
ArtifactRepository repository = repoFactory.createRepository( repositoryConfiguration );
ReportingDatabase reporter = reportExecutor.getReportDatabase( repository );
ReportingDatabase reporter = reportExecutor.getReportDatabase( repository, reportGroup );
// keep original value in case there is another process under way
long origStartTime = reporter.getStartTime();
@ -192,7 +198,7 @@ public class IndexerTask
// run the reports. Done intermittently to avoid losing track of what is indexed since
// that is what the filter is based on.
reportExecutor.runArtifactReports( currentArtifacts, repository );
reportExecutor.runArtifactReports( reportGroup, currentArtifacts, repository );
index.indexArtifacts( currentArtifacts, recordFactory );
@ -214,7 +220,7 @@ public class IndexerTask
getLogger().info( "Discovered " + metadata.size() + " unprocessed metadata files" );
// run the reports
reportExecutor.runMetadataReports( metadata, repository );
reportExecutor.runMetadataReports( reportGroup, metadata, repository );
}
reporter.setStartTime( origStartTime );

View File

@ -0,0 +1,78 @@
package org.apache.maven.archiva.reporting;
/*
* Copyright 2005-2006 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import org.apache.maven.artifact.Artifact;
import org.apache.maven.artifact.repository.ArtifactRepository;
import org.apache.maven.artifact.repository.metadata.RepositoryMetadata;
import org.apache.maven.model.Model;
import java.util.Iterator;
import java.util.Map;
/**
* Basic functionality for all report groups.
*/
public abstract class AbstractReportGroup
implements ReportGroup
{
/**
* @plexus.requirement role="org.apache.maven.archiva.reporting.ArtifactReportProcessor"
*/
private Map artifactReports;
/**
* @plexus.requirement role="org.apache.maven.archiva.reporting.MetadataReportProcessor"
*/
private Map metadataReports;
public void processArtifact( Artifact artifact, Model model, ReportingDatabase reportingDatabase )
{
for ( Iterator i = artifactReports.entrySet().iterator(); i.hasNext(); )
{
Map.Entry entry = (Map.Entry) i.next();
if ( includeReport( (String) entry.getKey() ) )
{
ArtifactReportProcessor report = (ArtifactReportProcessor) entry.getValue();
report.processArtifact( artifact, model, reportingDatabase );
}
}
}
public void processMetadata( RepositoryMetadata repositoryMetadata, ArtifactRepository repository,
ReportingDatabase reportingDatabase )
{
for ( Iterator i = metadataReports.entrySet().iterator(); i.hasNext(); )
{
Map.Entry entry = (Map.Entry) i.next();
if ( includeReport( (String) entry.getKey() ) )
{
MetadataReportProcessor report = (MetadataReportProcessor) entry.getValue();
report.processMetadata( repositoryMetadata, repository, reportingDatabase );
}
}
}
public String toString()
{
return getName();
}
}

View File

@ -43,6 +43,7 @@ import java.util.Map;
/**
* Report executor implementation.
*
* @todo should the report set be limitable by configuration?
* @plexus.component
*/
public class DefaultReportExecutor
@ -64,17 +65,6 @@ public class DefaultReportExecutor
*/
private ArtifactFactory artifactFactory;
/**
* @todo replace with a ReportGroup that is identified as "health" and has requirements on the specific health reports
* @plexus.requirement role="org.apache.maven.archiva.reporting.ArtifactReportProcessor"
*/
private List artifactReports;
/**
* @plexus.requirement role="org.apache.maven.archiva.reporting.MetadataReportProcessor"
*/
private List metadataReports;
/**
* @plexus.requirement role="org.apache.maven.archiva.discoverer.ArtifactDiscoverer"
*/
@ -87,10 +77,10 @@ public class DefaultReportExecutor
private static final int ARTIFACT_BUFFER_SIZE = 1000;
public void runMetadataReports( List metadata, ArtifactRepository repository )
public void runMetadataReports( ReportGroup reportGroup, List metadata, ArtifactRepository repository )
throws ReportingStoreException
{
ReportingDatabase reporter = getReportDatabase( repository );
ReportingDatabase reporter = getReportDatabase( repository, reportGroup );
for ( Iterator i = metadata.iterator(); i.hasNext(); )
{
@ -100,28 +90,16 @@ public class DefaultReportExecutor
new File( repository.getBasedir(), repository.pathOfRemoteRepositoryMetadata( repositoryMetadata ) );
reporter.cleanMetadata( repositoryMetadata, file.lastModified() );
// TODO: should the report set be limitable by configuration?
runMetadataReports( repositoryMetadata, repository, reporter );
reportGroup.processMetadata( repositoryMetadata, repository, reporter );
}
reportingStore.storeReports( reporter, repository );
}
private void runMetadataReports( RepositoryMetadata repositoryMetadata, ArtifactRepository repository,
ReportingDatabase reporter )
{
for ( Iterator i = metadataReports.iterator(); i.hasNext(); )
{
MetadataReportProcessor report = (MetadataReportProcessor) i.next();
report.processMetadata( repositoryMetadata, repository, reporter );
}
}
public void runArtifactReports( List artifacts, ArtifactRepository repository )
public void runArtifactReports( ReportGroup reportGroup, List artifacts, ArtifactRepository repository )
throws ReportingStoreException
{
ReportingDatabase reporter = getReportDatabase( repository );
ReportingDatabase reporter = getReportDatabase( repository, reportGroup );
for ( Iterator i = artifacts.iterator(); i.hasNext(); )
{
@ -145,24 +123,26 @@ public class DefaultReportExecutor
reporter.removeArtifact( artifact );
runArtifactReports( artifact, model, reporter );
reportGroup.processArtifact( artifact, model, reporter );
}
reportingStore.storeReports( reporter, repository );
}
public ReportingDatabase getReportDatabase( ArtifactRepository repository )
public ReportingDatabase getReportDatabase( ArtifactRepository repository, ReportGroup reportGroup )
throws ReportingStoreException
{
getLogger().debug( "Reading previous report database from repository " + repository.getId() );
return reportingStore.getReportsFromStore( repository );
getLogger().debug(
"Reading previous report database " + reportGroup.getName() + " from repository " + repository.getId() );
return reportingStore.getReportsFromStore( repository, reportGroup );
}
public void runReports( ArtifactRepository repository, List blacklistedPatterns, ArtifactFilter filter )
public void runReports( ReportGroup reportGroup, ArtifactRepository repository, List blacklistedPatterns,
ArtifactFilter filter )
throws DiscovererException, ReportingStoreException
{
// Flush (as in toilet, not store) the report database
ReportingDatabase database = getReportDatabase( repository );
ReportingDatabase database = getReportDatabase( repository, reportGroup );
database.clear();
// Discovery process
@ -188,7 +168,7 @@ public class DefaultReportExecutor
// TODO: proper queueing of this in case it was triggered externally (not harmful to do so at present, but not optimal)
// run the reports.
runArtifactReports( currentArtifacts, repository );
runArtifactReports( reportGroup, currentArtifacts, repository );
// MNG-142 - the project builder retains a lot of objects in its inflexible cache. This is a hack
// around that. TODO: remove when it is configurable
@ -205,7 +185,7 @@ public class DefaultReportExecutor
getLogger().info( "Discovered " + metadata.size() + " metadata files" );
// run the reports
runMetadataReports( metadata, repository );
runMetadataReports( reportGroup, metadata, repository );
}
}
@ -226,17 +206,6 @@ public class DefaultReportExecutor
}
}
private void runArtifactReports( Artifact artifact, Model model, ReportingDatabase reporter )
{
// TODO: should the report set be limitable by configuration?
for ( Iterator i = artifactReports.iterator(); i.hasNext(); )
{
ArtifactReportProcessor report = (ArtifactReportProcessor) i.next();
report.processArtifact( artifact, model, reporter );
}
}
private void flushProjectBuilderCacheHack()
{
try

View File

@ -0,0 +1,60 @@
package org.apache.maven.archiva.reporting;
/*
* Copyright 2005-2006 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import java.util.Arrays;
import java.util.Collection;
import java.util.LinkedHashSet;
import java.util.Set;
/**
* The default report set, for repository health.
*
* @plexus.component role="org.apache.maven.archiva.reporting.ReportGroup" role-hint="health"
* @todo could these report groups be assembled dynamically by configuration rather than as explicit components? eg, reportGroup.addReport( ARP ), reportGroup.addReport( MRP )
*/
public class DefaultReportGroup
extends AbstractReportGroup
{
/**
* Role hints of the reports to include in this set.
*
* @todo re-enable duplicate, once a way to populate the index is determined!
*/
private static final Set reports = new LinkedHashSet( Arrays.asList( new String[]{"checksum", "dependency"
/*, "duplicate"*/, "invalid-pom", "artifact-location", "bad-metadata", "checksum-metadata"} ) );
public boolean includeReport( String key )
{
return reports.contains( key );
}
public Collection getReportIds()
{
return reports;
}
public String getName()
{
return "Repository Health";
}
public String getFilename()
{
return "health-report.xml";
}
}

View File

@ -16,6 +16,7 @@ package org.apache.maven.archiva.reporting;
* limitations under the License.
*/
import org.apache.maven.archiva.reporting.model.Reporting;
import org.apache.maven.archiva.reporting.model.io.xpp3.ReportingXpp3Reader;
import org.apache.maven.archiva.reporting.model.io.xpp3.ReportingXpp3Writer;
import org.apache.maven.artifact.repository.ArtifactRepository;
@ -47,18 +48,19 @@ public class DefaultReportingStore
/**
* The cached reports for given repositories.
*/
private Map/*<ArtifactRepository,ReportingDatabase>*/ reports = new HashMap();
private Map/*<String,ReportingDatabase>*/ reports = new HashMap();
public ReportingDatabase getReportsFromStore( ArtifactRepository repository )
public ReportingDatabase getReportsFromStore( ArtifactRepository repository, ReportGroup reportGroup )
throws ReportingStoreException
{
ReportingDatabase database = (ReportingDatabase) reports.get( repository );
String key = getKey( repository, reportGroup );
ReportingDatabase database = (ReportingDatabase) reports.get( key );
if ( database == null )
{
ReportingXpp3Reader reader = new ReportingXpp3Reader();
File file = getReportFilename( repository, "health" );
File file = getReportFilename( repository, reportGroup );
FileReader fileReader = null;
try
@ -67,7 +69,7 @@ public class DefaultReportingStore
}
catch ( FileNotFoundException e )
{
database = new ReportingDatabase( repository );
database = new ReportingDatabase( reportGroup, repository );
}
if ( database == null )
@ -75,7 +77,8 @@ public class DefaultReportingStore
getLogger().info( "Reading report database from " + file );
try
{
database = new ReportingDatabase( reader.read( fileReader, false ), repository );
Reporting reporting = reader.read( fileReader, false );
database = new ReportingDatabase( reportGroup, reporting, repository );
}
catch ( IOException e )
{
@ -91,15 +94,19 @@ public class DefaultReportingStore
}
}
reports.put( repository, database );
reports.put( key, database );
}
return database;
}
private static File getReportFilename( ArtifactRepository repository, String s )
private static String getKey( ArtifactRepository repository, ReportGroup reportGroup )
{
File file = new File( repository.getBasedir(), ".reports/" + s + ".xml" );
return file;
return repository.getId() + "/" + reportGroup.getFilename();
}
private static File getReportFilename( ArtifactRepository repository, ReportGroup reportGroup )
{
return new File( repository.getBasedir(), ".reports/" + reportGroup.getFilename() );
}
public void storeReports( ReportingDatabase database, ArtifactRepository repository )
@ -109,7 +116,7 @@ public class DefaultReportingStore
ReportingXpp3Writer writer = new ReportingXpp3Writer();
File file = getReportFilename( repository, "health" );
File file = getReportFilename( repository, database.getReportGroup() );
getLogger().info( "Writing reports to " + file );
FileWriter fileWriter = null;
try

View File

@ -61,59 +61,55 @@ public class DuplicateArtifactFileReportProcessor
public void processArtifact( Artifact artifact, Model model, ReportingDatabase reporter )
{
ArtifactRepository repository = artifact.getRepository();
// TODO! always null currently, need to configure this properly
if ( indexDirectory != null )
if ( artifact.getFile() != null )
{
if ( artifact.getFile() != null )
{
RepositoryArtifactIndex index = indexFactory.createStandardIndex( new File( indexDirectory ) );
RepositoryArtifactIndex index = indexFactory.createStandardIndex( new File( indexDirectory ) );
String checksum = null;
String checksum = null;
try
{
checksum = digester.calc( artifact.getFile() );
}
catch ( DigesterException e )
{
reporter.addWarning( artifact, "Unable to generate checksum for " + artifact.getFile() + ": " + e );
}
if ( checksum != null )
{
try
{
checksum = digester.calc( artifact.getFile() );
}
catch ( DigesterException e )
{
reporter.addWarning( artifact, "Unable to generate checksum for " + artifact.getFile() + ": " + e );
}
List results = index.search( new LuceneQuery(
new TermQuery( new Term( StandardIndexRecordFields.MD5, checksum.toLowerCase() ) ) ) );
if ( checksum != null )
{
try
if ( !results.isEmpty() )
{
List results = index.search( new LuceneQuery(
new TermQuery( new Term( StandardIndexRecordFields.MD5, checksum.toLowerCase() ) ) ) );
if ( !results.isEmpty() )
for ( Iterator i = results.iterator(); i.hasNext(); )
{
for ( Iterator i = results.iterator(); i.hasNext(); )
{
StandardArtifactIndexRecord result = (StandardArtifactIndexRecord) i.next();
StandardArtifactIndexRecord result = (StandardArtifactIndexRecord) i.next();
//make sure it is not the same artifact
if ( !result.getFilename().equals( repository.pathOf( artifact ) ) )
//make sure it is not the same artifact
if ( !result.getFilename().equals( repository.pathOf( artifact ) ) )
{
//report only duplicates from the same groupId
String groupId = artifact.getGroupId();
if ( groupId.equals( result.getGroupId() ) )
{
//report only duplicates from the same groupId
String groupId = artifact.getGroupId();
if ( groupId.equals( result.getGroupId() ) )
{
reporter.addFailure( artifact, "Found duplicate for " + artifact.getId() );
}
reporter.addFailure( artifact, "Found duplicate for " + artifact.getId() );
}
}
}
}
catch ( RepositoryIndexSearchException e )
{
reporter.addWarning( artifact, "Failed to search in index" + e );
}
}
catch ( RepositoryIndexSearchException e )
{
reporter.addWarning( artifact, "Failed to search in index" + e );
}
}
else
{
reporter.addWarning( artifact, "Artifact file is null" );
}
}
else
{
reporter.addWarning( artifact, "Artifact file is null" );
}
}
}

View File

@ -0,0 +1,59 @@
package org.apache.maven.archiva.reporting;
/*
* Copyright 2005-2006 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import java.util.Arrays;
import java.util.Collection;
import java.util.LinkedHashSet;
import java.util.Set;
/**
* The report set for finding old artifacts (both snapshot and release)
*
* @plexus.component role="org.apache.maven.archiva.reporting.ReportGroup" role-hint="old-artifact"
*/
public class OldArtifactReportGroup
extends AbstractReportGroup
{
/**
* Role hints of the reports to include in this set.
*
* @todo implement these report processors!
*/
private static final Set reports =
new LinkedHashSet( Arrays.asList( new String[]{"old-artifact", "old-snapshot-artifact"} ) );
public boolean includeReport( String key )
{
return reports.contains( key );
}
public Collection getReportIds()
{
return reports;
}
public String getFilename()
{
return "old-artifacts-report.xml";
}
public String getName()
{
return "Old Artifacts";
}
}

View File

@ -35,31 +35,34 @@ public interface ReportExecutor
/**
* Run reports on a set of metadata.
*
* @param metadata the RepositoryMetadata objects to report on
* @param repository the repository that they come from
* @param reportGroup the report set to run
* @param metadata the RepositoryMetadata objects to report on
* @param repository the repository that they come from
* @throws ReportingStoreException if there is a problem reading/writing the report database
*/
public void runMetadataReports( List metadata, ArtifactRepository repository )
public void runMetadataReports( ReportGroup reportGroup, List metadata, ArtifactRepository repository )
throws ReportingStoreException;
/**
* Run reports on a set of artifacts.
*
* @param artifacts the Artifact objects to report on
* @param repository the repository that they come from
* @param reportGroup the report set to run
* @param artifacts the Artifact objects to report on
* @param repository the repository that they come from
* @throws ReportingStoreException if there is a problem reading/writing the report database
*/
public void runArtifactReports( List artifacts, ArtifactRepository repository )
public void runArtifactReports( ReportGroup reportGroup, List artifacts, ArtifactRepository repository )
throws ReportingStoreException;
/**
* Get the report database in use for a given repository.
*
* @param repository the repository
* @param repository the repository
* @param reportGroup the report set to run
* @return the report database
* @throws ReportingStoreException if there is a problem reading the report database
*/
ReportingDatabase getReportDatabase( ArtifactRepository repository )
ReportingDatabase getReportDatabase( ArtifactRepository repository, ReportGroup reportGroup )
throws ReportingStoreException;
/**
@ -68,10 +71,12 @@ public interface ReportExecutor
* @param repository the repository to run from
* @param blacklistedPatterns the patterns to exclude during discovery
* @param filter the filter to use during discovery to get a consistent list of artifacts
* @param reportGroup the report set to run
* @throws ReportingStoreException if there is a problem reading/writing the report database
* @throws org.apache.maven.archiva.discoverer.DiscovererException
* if there is a problem finding the artifacts and metadata to report on
*/
public void runReports( ArtifactRepository repository, List blacklistedPatterns, ArtifactFilter filter )
public void runReports( ReportGroup reportGroup, ArtifactRepository repository, List blacklistedPatterns,
ArtifactFilter filter )
throws DiscovererException, ReportingStoreException;
}

View File

@ -0,0 +1,84 @@
package org.apache.maven.archiva.reporting;
import org.apache.maven.artifact.Artifact;
import org.apache.maven.artifact.repository.ArtifactRepository;
import org.apache.maven.artifact.repository.metadata.RepositoryMetadata;
import org.apache.maven.model.Model;
import java.util.Collection;
/*
* Copyright 2005-2006 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* A grouping or report processors for execution as a visible report from the web interface - eg, "health",
* "old artifacts", etc.
*/
public interface ReportGroup
{
/**
* Plexus component role.
*/
String ROLE = ReportGroup.class.getName();
/**
* Run any artifact related reports in the report set.
*
* @param artifact the artifact to process
* @param model the POM associated with the artifact to process
* @param reportingDatabase the report database to store results in
*/
void processArtifact( Artifact artifact, Model model, ReportingDatabase reportingDatabase );
/**
* Run any metadata related reports in the report set.
*
* @param repositoryMetadata the metadata to process
* @param repository the repository the metadata is located in
* @param reportingDatabase the report database to store results in
*/
void processMetadata( RepositoryMetadata repositoryMetadata, ArtifactRepository repository,
ReportingDatabase reportingDatabase );
/**
* Whether a report with the given role hint is included in this report set.
*
* @param key the report role hint.
* @return whether the report is included
*/
boolean includeReport( String key );
/**
* Get a list of the report processors in this set.
*
* @return the report IDs
*/
Collection getReportIds();
/**
* Get the user-friendly name of this report.
*
* @return the report name
*/
String getName();
/**
* Get the filename of the reports within the repository's reports directory.
*
* @return the filename
*/
String getFilename();
}

View File

@ -50,23 +50,27 @@ public class ReportingDatabase
private long startTime;
public ReportingDatabase()
private final ReportGroup reportGroup;
public ReportingDatabase( ReportGroup reportGroup )
{
this( new Reporting(), null );
this( reportGroup, new Reporting() );
}
public ReportingDatabase( Reporting reporting )
public ReportingDatabase( ReportGroup reportGroup, Reporting reporting )
{
this( reporting, null );
this( reportGroup, reporting, null );
}
public ReportingDatabase( ArtifactRepository repository )
public ReportingDatabase( ReportGroup reportGroup, ArtifactRepository repository )
{
this( new Reporting(), repository );
this( reportGroup, new Reporting(), repository );
}
public ReportingDatabase( Reporting reporting, ArtifactRepository repository )
public ReportingDatabase( ReportGroup reportGroup, Reporting reporting, ArtifactRepository repository )
{
this.reportGroup = reportGroup;
this.reporting = reporting;
this.repository = repository;
@ -338,4 +342,9 @@ public class ReportingDatabase
}
getReporting().setLastModified( endTime );
}
public ReportGroup getReportGroup()
{
return reportGroup;
}
}

View File

@ -34,11 +34,12 @@ public interface ReportingStore
/**
* Get the reports from the store. A cached version may be used.
*
* @param repository the repository to load the reports for
* @param repository the repository to load the reports for
* @param reportGroup the report group to get the report for
* @return the reporting database
* @throws ReportingStoreException if there was a problem reading the store
*/
ReportingDatabase getReportsFromStore( ArtifactRepository repository )
ReportingDatabase getReportsFromStore( ArtifactRepository repository, ReportGroup reportGroup )
throws ReportingStoreException;
/**

View File

@ -30,7 +30,7 @@ import java.util.Iterator;
public class ArtifactReporterTest
extends AbstractRepositoryReportsTestCase
{
private ReportingDatabase reporter;
private ReportingDatabase reportingDatabase;
private Artifact artifact;
@ -38,19 +38,21 @@ public class ArtifactReporterTest
throws Exception
{
super.setUp();
reporter = new ReportingDatabase();
ArtifactFactory artifactFactory = (ArtifactFactory) lookup( ArtifactFactory.ROLE );
artifact = artifactFactory.createBuildArtifact( "groupId", "artifactId", "1.0-alpha-1", "type" );
Versioning versioning = new Versioning();
versioning.addVersion( "1.0-alpha-1" );
versioning.setLastUpdated( "20050611.202020" );
ReportGroup reportGroup = (ReportGroup) lookup( ReportGroup.ROLE, "health" );
reportingDatabase = new ReportingDatabase( reportGroup );
}
public void testArtifactReporterSingleFailure()
{
reporter.addFailure( artifact, "failed once" );
reportingDatabase.addFailure( artifact, "failed once" );
Iterator artifactIterator = reporter.getArtifactIterator();
Iterator artifactIterator = reportingDatabase.getArtifactIterator();
ArtifactResults results = (ArtifactResults) artifactIterator.next();
assertFalse( artifactIterator.hasNext() );
@ -60,17 +62,17 @@ public class ArtifactReporterTest
i.next();
}
assertEquals( 1, count );
assertEquals( 1, reporter.getNumFailures() );
assertEquals( 0, reporter.getNumWarnings() );
assertEquals( 1, reportingDatabase.getNumFailures() );
assertEquals( 0, reportingDatabase.getNumWarnings() );
}
public void testArtifactReporterMultipleFailure()
{
reporter.addFailure( artifact, "failed once" );
reporter.addFailure( artifact, "failed twice" );
reporter.addFailure( artifact, "failed thrice" );
reportingDatabase.addFailure( artifact, "failed once" );
reportingDatabase.addFailure( artifact, "failed twice" );
reportingDatabase.addFailure( artifact, "failed thrice" );
Iterator artifactIterator = reporter.getArtifactIterator();
Iterator artifactIterator = reportingDatabase.getArtifactIterator();
ArtifactResults results = (ArtifactResults) artifactIterator.next();
assertFalse( artifactIterator.hasNext() );
@ -80,16 +82,16 @@ public class ArtifactReporterTest
i.next();
}
assertEquals( 3, count );
assertEquals( 3, reporter.getNumFailures() );
assertEquals( 0, reporter.getNumWarnings() );
assertEquals( 3, reportingDatabase.getNumFailures() );
assertEquals( 0, reportingDatabase.getNumWarnings() );
}
public void testFailureMessages()
{
reporter.addFailure( artifact, "failed once" );
reporter.addFailure( artifact, "failed twice" );
reporter.addFailure( artifact, "failed thrice" );
Iterator artifactIterator = reporter.getArtifactIterator();
reportingDatabase.addFailure( artifact, "failed once" );
reportingDatabase.addFailure( artifact, "failed twice" );
reportingDatabase.addFailure( artifact, "failed thrice" );
Iterator artifactIterator = reportingDatabase.getArtifactIterator();
ArtifactResults results = (ArtifactResults) artifactIterator.next();
assertFalse( artifactIterator.hasNext() );
Iterator failure = results.getFailures().iterator();
@ -100,8 +102,8 @@ public class ArtifactReporterTest
public void testArtifactReporterSingleWarning()
{
reporter.addWarning( artifact, "you've been warned" );
Iterator artifactIterator = reporter.getArtifactIterator();
reportingDatabase.addWarning( artifact, "you've been warned" );
Iterator artifactIterator = reportingDatabase.getArtifactIterator();
ArtifactResults results = (ArtifactResults) artifactIterator.next();
assertFalse( artifactIterator.hasNext() );
@ -111,17 +113,17 @@ public class ArtifactReporterTest
i.next();
}
assertEquals( 1, count );
assertEquals( 0, reporter.getNumFailures() );
assertEquals( 1, reporter.getNumWarnings() );
assertEquals( 0, reportingDatabase.getNumFailures() );
assertEquals( 1, reportingDatabase.getNumWarnings() );
}
public void testArtifactReporterMultipleWarning()
{
reporter.addWarning( artifact, "i'm warning you" );
reporter.addWarning( artifact, "you have to stop now" );
reporter.addWarning( artifact, "all right... that does it!" );
reportingDatabase.addWarning( artifact, "i'm warning you" );
reportingDatabase.addWarning( artifact, "you have to stop now" );
reportingDatabase.addWarning( artifact, "all right... that does it!" );
Iterator artifactIterator = reporter.getArtifactIterator();
Iterator artifactIterator = reportingDatabase.getArtifactIterator();
ArtifactResults results = (ArtifactResults) artifactIterator.next();
assertFalse( artifactIterator.hasNext() );
@ -131,17 +133,17 @@ public class ArtifactReporterTest
i.next();
}
assertEquals( 3, count );
assertEquals( 0, reporter.getNumFailures() );
assertEquals( 3, reporter.getNumWarnings() );
assertEquals( 0, reportingDatabase.getNumFailures() );
assertEquals( 3, reportingDatabase.getNumWarnings() );
}
public void testWarningMessages()
{
reporter.addWarning( artifact, "i'm warning you" );
reporter.addWarning( artifact, "you have to stop now" );
reporter.addWarning( artifact, "all right... that does it!" );
reportingDatabase.addWarning( artifact, "i'm warning you" );
reportingDatabase.addWarning( artifact, "you have to stop now" );
reportingDatabase.addWarning( artifact, "all right... that does it!" );
Iterator artifactIterator = reporter.getArtifactIterator();
Iterator artifactIterator = reportingDatabase.getArtifactIterator();
ArtifactResults results = (ArtifactResults) artifactIterator.next();
assertFalse( artifactIterator.hasNext() );
Iterator warning = results.getWarnings().iterator();

View File

@ -37,7 +37,7 @@ public class BadMetadataReportProcessorTest
private MetadataReportProcessor badMetadataReportProcessor;
private ReportingDatabase reporter = new ReportingDatabase();
private ReportingDatabase reportingDatabase;
protected void setUp()
throws Exception
@ -47,6 +47,9 @@ public class BadMetadataReportProcessorTest
artifactFactory = (ArtifactFactory) lookup( ArtifactFactory.ROLE );
badMetadataReportProcessor = (MetadataReportProcessor) lookup( MetadataReportProcessor.ROLE );
ReportGroup reportGroup = (ReportGroup) lookup( ReportGroup.ROLE, "health" );
reportingDatabase = new ReportingDatabase( reportGroup );
}
public void testMetadataMissingLastUpdated()
@ -59,9 +62,9 @@ public class BadMetadataReportProcessorTest
RepositoryMetadata metadata = new ArtifactRepositoryMetadata( artifact, versioning );
badMetadataReportProcessor.processMetadata( metadata, repository, reporter );
badMetadataReportProcessor.processMetadata( metadata, repository, reportingDatabase );
Iterator failures = reporter.getMetadataIterator();
Iterator failures = reportingDatabase.getMetadataIterator();
assertTrue( "check there is a failure", failures.hasNext() );
MetadataResults results = (MetadataResults) failures.next();
failures = results.getFailures().iterator();
@ -78,9 +81,9 @@ public class BadMetadataReportProcessorTest
RepositoryMetadata metadata = new ArtifactRepositoryMetadata( artifact, null );
badMetadataReportProcessor.processMetadata( metadata, repository, reporter );
badMetadataReportProcessor.processMetadata( metadata, repository, reportingDatabase );
Iterator failures = reporter.getMetadataIterator();
Iterator failures = reportingDatabase.getMetadataIterator();
assertTrue( "check there is a failure", failures.hasNext() );
MetadataResults results = (MetadataResults) failures.next();
failures = results.getFailures().iterator();
@ -106,9 +109,9 @@ public class BadMetadataReportProcessorTest
RepositoryMetadata metadata = new SnapshotArtifactRepositoryMetadata( artifact );
badMetadataReportProcessor.processMetadata( metadata, repository, reporter );
badMetadataReportProcessor.processMetadata( metadata, repository, reportingDatabase );
Iterator failures = reporter.getMetadataIterator();
Iterator failures = reportingDatabase.getMetadataIterator();
assertTrue( "check there is a failure", failures.hasNext() );
MetadataResults results = (MetadataResults) failures.next();
failures = results.getFailures().iterator();
@ -130,9 +133,9 @@ public class BadMetadataReportProcessorTest
RepositoryMetadata metadata = new ArtifactRepositoryMetadata( artifact, versioning );
badMetadataReportProcessor.processMetadata( metadata, repository, reporter );
badMetadataReportProcessor.processMetadata( metadata, repository, reportingDatabase );
Iterator failures = reporter.getMetadataIterator();
Iterator failures = reportingDatabase.getMetadataIterator();
assertFalse( "check there are no failures", failures.hasNext() );
}
@ -146,9 +149,9 @@ public class BadMetadataReportProcessorTest
RepositoryMetadata metadata = new ArtifactRepositoryMetadata( artifact, versioning );
badMetadataReportProcessor.processMetadata( metadata, repository, reporter );
badMetadataReportProcessor.processMetadata( metadata, repository, reportingDatabase );
Iterator failures = reporter.getMetadataIterator();
Iterator failures = reportingDatabase.getMetadataIterator();
assertTrue( "check there is a failure", failures.hasNext() );
MetadataResults results = (MetadataResults) failures.next();
failures = results.getFailures().iterator();
@ -174,9 +177,9 @@ public class BadMetadataReportProcessorTest
RepositoryMetadata metadata = new ArtifactRepositoryMetadata( artifact, versioning );
badMetadataReportProcessor.processMetadata( metadata, repository, reporter );
badMetadataReportProcessor.processMetadata( metadata, repository, reportingDatabase );
Iterator failures = reporter.getMetadataIterator();
Iterator failures = reportingDatabase.getMetadataIterator();
assertTrue( "check there is a failure", failures.hasNext() );
MetadataResults results = (MetadataResults) failures.next();
failures = results.getFailures().iterator();
@ -201,9 +204,9 @@ public class BadMetadataReportProcessorTest
RepositoryMetadata metadata = new ArtifactRepositoryMetadata( artifact, versioning );
badMetadataReportProcessor.processMetadata( metadata, repository, reporter );
badMetadataReportProcessor.processMetadata( metadata, repository, reportingDatabase );
Iterator failures = reporter.getMetadataIterator();
Iterator failures = reportingDatabase.getMetadataIterator();
assertTrue( "check there is a failure", failures.hasNext() );
MetadataResults results = (MetadataResults) failures.next();
failures = results.getFailures().iterator();
@ -229,9 +232,9 @@ public class BadMetadataReportProcessorTest
metadata.getMetadata().addPlugin( createMetadataPlugin( "artifactId", "default" ) );
metadata.getMetadata().addPlugin( createMetadataPlugin( "snapshot-artifact", "default2" ) );
badMetadataReportProcessor.processMetadata( metadata, repository, reporter );
badMetadataReportProcessor.processMetadata( metadata, repository, reportingDatabase );
Iterator failures = reporter.getMetadataIterator();
Iterator failures = reportingDatabase.getMetadataIterator();
assertFalse( "check there are no failures", failures.hasNext() );
}
@ -242,9 +245,9 @@ public class BadMetadataReportProcessorTest
metadata.getMetadata().addPlugin( createMetadataPlugin( "snapshot-artifact", "default2" ) );
metadata.getMetadata().addPlugin( createMetadataPlugin( "missing-plugin", "default3" ) );
badMetadataReportProcessor.processMetadata( metadata, repository, reporter );
badMetadataReportProcessor.processMetadata( metadata, repository, reportingDatabase );
Iterator failures = reporter.getMetadataIterator();
Iterator failures = reportingDatabase.getMetadataIterator();
assertTrue( "check there is a failure", failures.hasNext() );
MetadataResults results = (MetadataResults) failures.next();
failures = results.getFailures().iterator();
@ -261,9 +264,9 @@ public class BadMetadataReportProcessorTest
RepositoryMetadata metadata = new GroupRepositoryMetadata( "groupId" );
metadata.getMetadata().addPlugin( createMetadataPlugin( "artifactId", "default" ) );
badMetadataReportProcessor.processMetadata( metadata, repository, reporter );
badMetadataReportProcessor.processMetadata( metadata, repository, reportingDatabase );
Iterator failures = reporter.getMetadataIterator();
Iterator failures = reportingDatabase.getMetadataIterator();
assertTrue( "check there is a failure", failures.hasNext() );
MetadataResults results = (MetadataResults) failures.next();
failures = results.getFailures().iterator();
@ -284,9 +287,9 @@ public class BadMetadataReportProcessorTest
metadata.getMetadata().addPlugin( createMetadataPlugin( null, "default3" ) );
metadata.getMetadata().addPlugin( createMetadataPlugin( "", "default4" ) );
badMetadataReportProcessor.processMetadata( metadata, repository, reporter );
badMetadataReportProcessor.processMetadata( metadata, repository, reportingDatabase );
Iterator failures = reporter.getMetadataIterator();
Iterator failures = reportingDatabase.getMetadataIterator();
assertTrue( "check there is a failure", failures.hasNext() );
MetadataResults results = (MetadataResults) failures.next();
failures = results.getFailures().iterator();
@ -309,9 +312,9 @@ public class BadMetadataReportProcessorTest
metadata.getMetadata().addPlugin( createMetadataPlugin( "artifactId", null ) );
metadata.getMetadata().addPlugin( createMetadataPlugin( "snapshot-artifact", "" ) );
badMetadataReportProcessor.processMetadata( metadata, repository, reporter );
badMetadataReportProcessor.processMetadata( metadata, repository, reportingDatabase );
Iterator failures = reporter.getMetadataIterator();
Iterator failures = reportingDatabase.getMetadataIterator();
assertTrue( "check there is a failure", failures.hasNext() );
MetadataResults results = (MetadataResults) failures.next();
failures = results.getFailures().iterator();
@ -333,9 +336,9 @@ public class BadMetadataReportProcessorTest
metadata.getMetadata().addPlugin( createMetadataPlugin( "artifactId", "default" ) );
metadata.getMetadata().addPlugin( createMetadataPlugin( "snapshot-artifact", "default" ) );
badMetadataReportProcessor.processMetadata( metadata, repository, reporter );
badMetadataReportProcessor.processMetadata( metadata, repository, reportingDatabase );
Iterator failures = reporter.getMetadataIterator();
Iterator failures = reportingDatabase.getMetadataIterator();
assertTrue( "check there is a failure", failures.hasNext() );
MetadataResults results = (MetadataResults) failures.next();
failures = results.getFailures().iterator();
@ -357,9 +360,9 @@ public class BadMetadataReportProcessorTest
RepositoryMetadata metadata = new SnapshotArtifactRepositoryMetadata( artifact, snapshot );
badMetadataReportProcessor.processMetadata( metadata, repository, reporter );
badMetadataReportProcessor.processMetadata( metadata, repository, reportingDatabase );
Iterator failures = reporter.getMetadataIterator();
Iterator failures = reportingDatabase.getMetadataIterator();
assertFalse( "check there are no failures", failures.hasNext() );
}
@ -374,9 +377,9 @@ public class BadMetadataReportProcessorTest
RepositoryMetadata metadata = new SnapshotArtifactRepositoryMetadata( artifact, snapshot );
badMetadataReportProcessor.processMetadata( metadata, repository, reporter );
badMetadataReportProcessor.processMetadata( metadata, repository, reportingDatabase );
Iterator failures = reporter.getMetadataIterator();
Iterator failures = reportingDatabase.getMetadataIterator();
assertTrue( "check there is a failure", failures.hasNext() );
MetadataResults results = (MetadataResults) failures.next();
failures = results.getFailures().iterator();

View File

@ -37,7 +37,7 @@ public class ChecksumArtifactReporterTest
{
private ArtifactReportProcessor artifactReportProcessor;
private ReportingDatabase reporter = new ReportingDatabase();
private ReportingDatabase reportingDatabase;
private MetadataReportProcessor metadataReportProcessor;
@ -47,6 +47,9 @@ public class ChecksumArtifactReporterTest
super.setUp();
artifactReportProcessor = (ArtifactReportProcessor) lookup( ArtifactReportProcessor.ROLE, "checksum" );
metadataReportProcessor = (MetadataReportProcessor) lookup( MetadataReportProcessor.ROLE, "checksum-metadata" );
ReportGroup reportGroup = (ReportGroup) lookup( ReportGroup.ROLE, "health" );
reportingDatabase = new ReportingDatabase( reportGroup );
}
/**
@ -60,9 +63,9 @@ public class ChecksumArtifactReporterTest
Artifact artifact = createArtifact( "checksumTest", "validArtifact", "1.0" );
artifactReportProcessor.processArtifact( artifact, null, reporter );
assertEquals( 0, reporter.getNumFailures() );
assertEquals( 0, reporter.getNumWarnings() );
artifactReportProcessor.processArtifact( artifact, null, reportingDatabase );
assertEquals( 0, reportingDatabase.getNumFailures() );
assertEquals( 0, reportingDatabase.getNumWarnings() );
}
/**
@ -74,14 +77,14 @@ public class ChecksumArtifactReporterTest
String s1 = "1.0";
Artifact artifact = createArtifact( "checksumTest", s, s1 );
artifactReportProcessor.processArtifact( artifact, null, reporter );
assertEquals( 1, reporter.getNumFailures() );
assertEquals( 0, reporter.getNumWarnings() );
artifactReportProcessor.processArtifact( artifact, null, reportingDatabase );
assertEquals( 1, reportingDatabase.getNumFailures() );
assertEquals( 0, reportingDatabase.getNumWarnings() );
}
/**
* Test the valid checksum of a metadata file.
* The reporter should report 2 success validation.
* The reportingDatabase should report 2 success validation.
*/
public void testChecksumMetadataReporterSuccess()
throws DigesterException, IOException
@ -93,29 +96,29 @@ public class ChecksumArtifactReporterTest
//Version level metadata
RepositoryMetadata metadata = new SnapshotArtifactRepositoryMetadata( artifact );
metadataReportProcessor.processMetadata( metadata, repository, reporter );
metadataReportProcessor.processMetadata( metadata, repository, reportingDatabase );
//Artifact level metadata
metadata = new ArtifactRepositoryMetadata( artifact );
metadataReportProcessor.processMetadata( metadata, repository, reporter );
metadataReportProcessor.processMetadata( metadata, repository, reportingDatabase );
//Group level metadata
metadata = new GroupRepositoryMetadata( "checksumTest" );
metadataReportProcessor.processMetadata( metadata, repository, reporter );
metadataReportProcessor.processMetadata( metadata, repository, reportingDatabase );
}
/**
* Test the corrupted checksum of a metadata file.
* The reporter must report 2 failures.
* The reportingDatabase must report 2 failures.
*/
public void testChecksumMetadataReporterFailure()
{
Artifact artifact = createArtifact( "checksumTest", "invalidArtifact", "1.0" );
RepositoryMetadata metadata = new SnapshotArtifactRepositoryMetadata( artifact );
metadataReportProcessor.processMetadata( metadata, repository, reporter );
metadataReportProcessor.processMetadata( metadata, repository, reportingDatabase );
Iterator failures = reporter.getMetadataIterator();
Iterator failures = reportingDatabase.getMetadataIterator();
assertTrue( "check there is a failure", failures.hasNext() );
MetadataResults results = (MetadataResults) failures.next();
failures = results.getFailures().iterator();
@ -134,13 +137,13 @@ public class ChecksumArtifactReporterTest
Artifact artifact = createArtifact( "checksumTest", "validArtifact", "1.0" );
artifactReportProcessor.processArtifact( artifact, null, reporter );
assertEquals( 1, reporter.getNumFailures() );
artifactReportProcessor.processArtifact( artifact, null, reportingDatabase );
assertEquals( 1, reportingDatabase.getNumFailures() );
RepositoryMetadata metadata = new SnapshotArtifactRepositoryMetadata( artifact );
metadataReportProcessor.processMetadata( metadata, repository, reporter );
metadataReportProcessor.processMetadata( metadata, repository, reportingDatabase );
Iterator failures = reporter.getMetadataIterator();
Iterator failures = reportingDatabase.getMetadataIterator();
assertTrue( "check there is a failure", failures.hasNext() );
MetadataResults results = (MetadataResults) failures.next();
failures = results.getFailures().iterator();

View File

@ -32,25 +32,25 @@ import java.util.Iterator;
public class DefaultArtifactReporterTest
extends AbstractRepositoryReportsTestCase
{
private ReportingDatabase reporter;
private ReportingDatabase reportingDatabase;
private RepositoryMetadata metadata;
public void testEmptyArtifactReporter()
{
assertEquals( "No failures", 0, reporter.getNumFailures() );
assertEquals( "No warnings", 0, reporter.getNumWarnings() );
assertFalse( "No artifact failures", reporter.getArtifactIterator().hasNext() );
assertFalse( "No metadata failures", reporter.getMetadataIterator().hasNext() );
assertEquals( "No failures", 0, reportingDatabase.getNumFailures() );
assertEquals( "No warnings", 0, reportingDatabase.getNumWarnings() );
assertFalse( "No artifact failures", reportingDatabase.getArtifactIterator().hasNext() );
assertFalse( "No metadata failures", reportingDatabase.getMetadataIterator().hasNext() );
}
public void testMetadataSingleFailure()
{
reporter.addFailure( metadata, "Single Failure Reason" );
assertEquals( "failures count", 1, reporter.getNumFailures() );
assertEquals( "warnings count", 0, reporter.getNumWarnings() );
reportingDatabase.addFailure( metadata, "Single Failure Reason" );
assertEquals( "failures count", 1, reportingDatabase.getNumFailures() );
assertEquals( "warnings count", 0, reportingDatabase.getNumWarnings() );
Iterator failures = reporter.getMetadataIterator();
Iterator failures = reportingDatabase.getMetadataIterator();
assertTrue( "check there is a failure", failures.hasNext() );
MetadataResults results = (MetadataResults) failures.next();
failures = results.getFailures().iterator();
@ -70,12 +70,12 @@ public class DefaultArtifactReporterTest
public void testMetadataMultipleFailures()
{
reporter.addFailure( metadata, "First Failure Reason" );
reporter.addFailure( metadata, "Second Failure Reason" );
assertEquals( "failures count", 2, reporter.getNumFailures() );
assertEquals( "warnings count", 0, reporter.getNumWarnings() );
reportingDatabase.addFailure( metadata, "First Failure Reason" );
reportingDatabase.addFailure( metadata, "Second Failure Reason" );
assertEquals( "failures count", 2, reportingDatabase.getNumFailures() );
assertEquals( "warnings count", 0, reportingDatabase.getNumWarnings() );
Iterator failures = reporter.getMetadataIterator();
Iterator failures = reportingDatabase.getMetadataIterator();
assertTrue( "check there is a failure", failures.hasNext() );
MetadataResults results = (MetadataResults) failures.next();
failures = results.getFailures().iterator();
@ -91,11 +91,11 @@ public class DefaultArtifactReporterTest
public void testMetadataSingleWarning()
{
reporter.addWarning( metadata, "Single Warning Message" );
assertEquals( "warnings count", 0, reporter.getNumFailures() );
assertEquals( "warnings count", 1, reporter.getNumWarnings() );
reportingDatabase.addWarning( metadata, "Single Warning Message" );
assertEquals( "warnings count", 0, reportingDatabase.getNumFailures() );
assertEquals( "warnings count", 1, reportingDatabase.getNumWarnings() );
Iterator warnings = reporter.getMetadataIterator();
Iterator warnings = reportingDatabase.getMetadataIterator();
assertTrue( "check there is a failure", warnings.hasNext() );
MetadataResults results = (MetadataResults) warnings.next();
warnings = results.getWarnings().iterator();
@ -108,12 +108,12 @@ public class DefaultArtifactReporterTest
public void testMetadataMultipleWarnings()
{
reporter.addWarning( metadata, "First Warning" );
reporter.addWarning( metadata, "Second Warning" );
assertEquals( "warnings count", 0, reporter.getNumFailures() );
assertEquals( "warnings count", 2, reporter.getNumWarnings() );
reportingDatabase.addWarning( metadata, "First Warning" );
reportingDatabase.addWarning( metadata, "Second Warning" );
assertEquals( "warnings count", 0, reportingDatabase.getNumFailures() );
assertEquals( "warnings count", 2, reportingDatabase.getNumWarnings() );
Iterator warnings = reporter.getMetadataIterator();
Iterator warnings = reportingDatabase.getMetadataIterator();
assertTrue( "check there is a failure", warnings.hasNext() );
MetadataResults results = (MetadataResults) warnings.next();
warnings = results.getWarnings().iterator();
@ -132,7 +132,6 @@ public class DefaultArtifactReporterTest
{
super.setUp();
reporter = new ReportingDatabase();
ArtifactFactory artifactFactory = (ArtifactFactory) lookup( ArtifactFactory.ROLE );
Artifact artifact = artifactFactory.createBuildArtifact( "groupId", "artifactId", "1.0-alpha-1", "type" );
@ -141,5 +140,8 @@ public class DefaultArtifactReporterTest
versioning.addVersion( "1.0-alpha-2" );
metadata = new ArtifactRepositoryMetadata( artifact, versioning );
ReportGroup reportGroup = (ReportGroup) lookup( ReportGroup.ROLE, "health" );
reportingDatabase = new ReportingDatabase( reportGroup );
}
}

View File

@ -37,7 +37,7 @@ public class DependencyArtifactReportProcessorTest
private static final String VALID_VERSION = "1.0-alpha-1";
private ReportingDatabase reporter;
private ReportingDatabase reportingDatabase;
private Model model;
@ -51,19 +51,21 @@ public class DependencyArtifactReportProcessorTest
throws Exception
{
super.setUp();
reporter = new ReportingDatabase();
model = new Model();
processor = (ArtifactReportProcessor) lookup( ArtifactReportProcessor.ROLE, "dependency" );
artifactFactory = (ArtifactFactory) lookup( ArtifactFactory.ROLE );
ReportGroup reportGroup = (ReportGroup) lookup( ReportGroup.ROLE, "health" );
reportingDatabase = new ReportingDatabase( reportGroup );
}
public void testArtifactFoundButNoDirectDependencies()
{
Artifact artifact = createValidArtifact();
processor.processArtifact( artifact, model, reporter );
assertEquals( 0, reporter.getNumFailures() );
assertEquals( 0, reporter.getNumWarnings() );
processor.processArtifact( artifact, model, reportingDatabase );
assertEquals( 0, reportingDatabase.getNumFailures() );
assertEquals( 0, reportingDatabase.getNumWarnings() );
}
private Artifact createValidArtifact()
@ -78,10 +80,10 @@ public class DependencyArtifactReportProcessorTest
{
Artifact artifact = artifactFactory.createProjectArtifact( INVALID, INVALID, INVALID );
artifact.setRepository( repository );
processor.processArtifact( artifact, model, reporter );
assertEquals( 1, reporter.getNumFailures() );
assertEquals( 0, reporter.getNumWarnings() );
Iterator failures = reporter.getArtifactIterator();
processor.processArtifact( artifact, model, reportingDatabase );
assertEquals( 1, reportingDatabase.getNumFailures() );
assertEquals( 0, reportingDatabase.getNumWarnings() );
Iterator failures = reportingDatabase.getArtifactIterator();
ArtifactResults results = (ArtifactResults) failures.next();
assertFalse( failures.hasNext() );
failures = results.getFailures().iterator();
@ -96,9 +98,9 @@ public class DependencyArtifactReportProcessorTest
Dependency dependency = createValidDependency();
model.addDependency( dependency );
processor.processArtifact( artifact, model, reporter );
assertEquals( 0, reporter.getNumFailures() );
assertEquals( 0, reporter.getNumWarnings() );
processor.processArtifact( artifact, model, reportingDatabase );
assertEquals( 0, reportingDatabase.getNumFailures() );
assertEquals( 0, reportingDatabase.getNumWarnings() );
}
private Dependency createValidDependency()
@ -113,9 +115,9 @@ public class DependencyArtifactReportProcessorTest
Dependency dependency = createValidDependency();
model.addDependency( dependency );
processor.processArtifact( artifact, model, reporter );
assertEquals( 0, reporter.getNumFailures() );
assertEquals( 0, reporter.getNumWarnings() );
processor.processArtifact( artifact, model, reportingDatabase );
assertEquals( 0, reportingDatabase.getNumFailures() );
assertEquals( 0, reportingDatabase.getNumWarnings() );
}
public void testValidArtifactWithValidMultipleDependencies()
@ -128,9 +130,9 @@ public class DependencyArtifactReportProcessorTest
model.addDependency( dependency );
Artifact artifact = createValidArtifact();
processor.processArtifact( artifact, model, reporter );
assertEquals( 0, reporter.getNumFailures() );
assertEquals( 0, reporter.getNumWarnings() );
processor.processArtifact( artifact, model, reportingDatabase );
assertEquals( 0, reportingDatabase.getNumFailures() );
assertEquals( 0, reportingDatabase.getNumWarnings() );
}
public void testValidArtifactWithAnInvalidDependency()
@ -143,11 +145,11 @@ public class DependencyArtifactReportProcessorTest
model.addDependency( createDependency( INVALID, INVALID, INVALID ) );
Artifact artifact = createValidArtifact();
processor.processArtifact( artifact, model, reporter );
assertEquals( 1, reporter.getNumFailures() );
assertEquals( 0, reporter.getNumWarnings() );
processor.processArtifact( artifact, model, reportingDatabase );
assertEquals( 1, reportingDatabase.getNumFailures() );
assertEquals( 0, reportingDatabase.getNumWarnings() );
Iterator failures = reporter.getArtifactIterator();
Iterator failures = reportingDatabase.getArtifactIterator();
ArtifactResults results = (ArtifactResults) failures.next();
assertFalse( failures.hasNext() );
failures = results.getFailures().iterator();
@ -163,11 +165,11 @@ public class DependencyArtifactReportProcessorTest
Dependency dependency = createDependency( INVALID, VALID_ARTIFACT_ID, VALID_VERSION );
model.addDependency( dependency );
processor.processArtifact( artifact, model, reporter );
assertEquals( 1, reporter.getNumFailures() );
assertEquals( 0, reporter.getNumWarnings() );
processor.processArtifact( artifact, model, reportingDatabase );
assertEquals( 1, reportingDatabase.getNumFailures() );
assertEquals( 0, reportingDatabase.getNumWarnings() );
Iterator failures = reporter.getArtifactIterator();
Iterator failures = reportingDatabase.getArtifactIterator();
ArtifactResults results = (ArtifactResults) failures.next();
assertFalse( failures.hasNext() );
failures = results.getFailures().iterator();
@ -191,11 +193,11 @@ public class DependencyArtifactReportProcessorTest
Dependency dependency = createDependency( VALID_GROUP_ID, INVALID, VALID_VERSION );
model.addDependency( dependency );
processor.processArtifact( artifact, model, reporter );
assertEquals( 1, reporter.getNumFailures() );
assertEquals( 0, reporter.getNumWarnings() );
processor.processArtifact( artifact, model, reportingDatabase );
assertEquals( 1, reportingDatabase.getNumFailures() );
assertEquals( 0, reportingDatabase.getNumWarnings() );
Iterator failures = reporter.getArtifactIterator();
Iterator failures = reportingDatabase.getArtifactIterator();
ArtifactResults results = (ArtifactResults) failures.next();
assertFalse( failures.hasNext() );
failures = results.getFailures().iterator();
@ -210,11 +212,11 @@ public class DependencyArtifactReportProcessorTest
Dependency dependency = createDependency( VALID_GROUP_ID, VALID_ARTIFACT_ID, INVALID );
model.addDependency( dependency );
processor.processArtifact( artifact, model, reporter );
assertEquals( 1, reporter.getNumFailures() );
assertEquals( 0, reporter.getNumWarnings() );
processor.processArtifact( artifact, model, reportingDatabase );
assertEquals( 1, reportingDatabase.getNumFailures() );
assertEquals( 0, reportingDatabase.getNumWarnings() );
Iterator failures = reporter.getArtifactIterator();
Iterator failures = reportingDatabase.getArtifactIterator();
ArtifactResults results = (ArtifactResults) failures.next();
assertFalse( failures.hasNext() );
failures = results.getFailures().iterator();
@ -229,11 +231,11 @@ public class DependencyArtifactReportProcessorTest
Dependency dependency = createDependency( VALID_GROUP_ID, VALID_ARTIFACT_ID, "[" );
model.addDependency( dependency );
processor.processArtifact( artifact, model, reporter );
assertEquals( 1, reporter.getNumFailures() );
assertEquals( 0, reporter.getNumWarnings() );
processor.processArtifact( artifact, model, reportingDatabase );
assertEquals( 1, reportingDatabase.getNumFailures() );
assertEquals( 0, reportingDatabase.getNumWarnings() );
Iterator failures = reporter.getArtifactIterator();
Iterator failures = reportingDatabase.getArtifactIterator();
ArtifactResults results = (ArtifactResults) failures.next();
assertFalse( failures.hasNext() );
failures = results.getFailures().iterator();
@ -248,9 +250,9 @@ public class DependencyArtifactReportProcessorTest
Dependency dependency = createDependency( VALID_GROUP_ID, VALID_ARTIFACT_ID, "[1.0,)" );
model.addDependency( dependency );
processor.processArtifact( artifact, model, reporter );
assertEquals( 0, reporter.getNumFailures() );
assertEquals( 0, reporter.getNumWarnings() );
processor.processArtifact( artifact, model, reportingDatabase );
assertEquals( 0, reportingDatabase.getNumFailures() );
assertEquals( 0, reportingDatabase.getNumWarnings() );
}
public void testValidArtifactWithMissingDependencyVersion()
@ -260,11 +262,11 @@ public class DependencyArtifactReportProcessorTest
Dependency dependency = createDependency( VALID_GROUP_ID, VALID_ARTIFACT_ID, null );
model.addDependency( dependency );
processor.processArtifact( artifact, model, reporter );
assertEquals( 1, reporter.getNumFailures() );
assertEquals( 0, reporter.getNumWarnings() );
processor.processArtifact( artifact, model, reportingDatabase );
assertEquals( 1, reportingDatabase.getNumFailures() );
assertEquals( 0, reportingDatabase.getNumWarnings() );
Iterator failures = reporter.getArtifactIterator();
Iterator failures = reportingDatabase.getArtifactIterator();
ArtifactResults results = (ArtifactResults) failures.next();
assertFalse( failures.hasNext() );
failures = results.getFailures().iterator();

View File

@ -43,7 +43,7 @@ public class DuplicateArtifactFileReportProcessorTest
File indexDirectory;
private ReportingDatabase reportDatabase = new ReportingDatabase();
private ReportingDatabase reportDatabase;
protected void setUp()
throws Exception
@ -68,6 +68,9 @@ public class DuplicateArtifactFileReportProcessorTest
index.indexRecords( Collections.singletonList( recordFactory.createRecord( artifact ) ) );
processor = (ArtifactReportProcessor) lookup( ArtifactReportProcessor.ROLE, "duplicate" );
ReportGroup reportGroup = (ReportGroup) lookup( ReportGroup.ROLE, "health" );
reportDatabase = new ReportingDatabase( reportGroup );
}
public void testNullArtifactFile()

View File

@ -26,13 +26,16 @@ public class InvalidPomArtifactReportProcessorTest
{
private ArtifactReportProcessor artifactReportProcessor;
private ReportingDatabase reporter = new ReportingDatabase();
private ReportingDatabase reportDatabase;
public void setUp()
throws Exception
{
super.setUp();
artifactReportProcessor = (ArtifactReportProcessor) lookup( ArtifactReportProcessor.ROLE, "invalid-pom" );
ReportGroup reportGroup = (ReportGroup) lookup( ReportGroup.ROLE, "health" );
reportDatabase = new ReportingDatabase( reportGroup );
}
/**
@ -42,8 +45,8 @@ public class InvalidPomArtifactReportProcessorTest
{
Artifact artifact = createArtifact( "org.apache.maven", "artifactId", "1.0-alpha-3", "pom" );
artifactReportProcessor.processArtifact( artifact, null, reporter );
assertEquals( 1, reporter.getNumFailures() );
artifactReportProcessor.processArtifact( artifact, null, reportDatabase );
assertEquals( 1, reportDatabase.getNumFailures() );
}
@ -54,9 +57,9 @@ public class InvalidPomArtifactReportProcessorTest
{
Artifact artifact = createArtifact( "groupId", "artifactId", "1.0-alpha-2", "pom" );
artifactReportProcessor.processArtifact( artifact, null, reporter );
assertEquals( 0, reporter.getNumFailures() );
assertEquals( 0, reporter.getNumWarnings() );
artifactReportProcessor.processArtifact( artifact, null, reportDatabase );
assertEquals( 0, reportDatabase.getNumFailures() );
assertEquals( 0, reportDatabase.getNumWarnings() );
}
@ -67,8 +70,8 @@ public class InvalidPomArtifactReportProcessorTest
{
Artifact artifact = createArtifact( "groupId", "artifactId", "1.0-alpha-1", "jar" );
artifactReportProcessor.processArtifact( artifact, null, reporter );
assertEquals( 0, reporter.getNumFailures() );
assertEquals( 0, reporter.getNumWarnings() );
artifactReportProcessor.processArtifact( artifact, null, reportDatabase );
assertEquals( 0, reportDatabase.getNumFailures() );
assertEquals( 0, reportDatabase.getNumWarnings() );
}
}

View File

@ -34,16 +34,16 @@ public class LocationArtifactReportProcessorTest
{
private ArtifactReportProcessor artifactReportProcessor;
private ReportingDatabase reporter = new ReportingDatabase();
private MavenXpp3Reader pomReader;
private ReportingDatabase reportDatabase;
public void setUp()
throws Exception
{
super.setUp();
artifactReportProcessor = (ArtifactReportProcessor) lookup( ArtifactReportProcessor.ROLE, "artifact-location" );
pomReader = new MavenXpp3Reader();
ReportGroup reportGroup = (ReportGroup) lookup( ReportGroup.ROLE, "health" );
reportDatabase = new ReportingDatabase( reportGroup );
}
/**
@ -55,9 +55,9 @@ public class LocationArtifactReportProcessorTest
{
Artifact artifact = createArtifact( "org.apache.maven", "maven-model", "2.0" );
artifactReportProcessor.processArtifact( artifact, null, reporter );
assertEquals( 0, reporter.getNumFailures() );
assertEquals( 0, reporter.getNumWarnings() );
artifactReportProcessor.processArtifact( artifact, null, reportDatabase );
assertEquals( 0, reportDatabase.getNumFailures() );
assertEquals( 0, reportDatabase.getNumWarnings() );
}
/**
@ -71,9 +71,9 @@ public class LocationArtifactReportProcessorTest
Artifact pomArtifact = createArtifact( "groupId", "artifactId", "1.0-alpha-1", "pom" );
Model model = readPom( repository.pathOf( pomArtifact ) );
artifactReportProcessor.processArtifact( artifact, model, reporter );
assertEquals( 0, reporter.getNumFailures() );
assertEquals( 0, reporter.getNumWarnings() );
artifactReportProcessor.processArtifact( artifact, model, reportDatabase );
assertEquals( 0, reportDatabase.getNumFailures() );
assertEquals( 0, reportDatabase.getNumWarnings() );
}
/**
@ -86,9 +86,9 @@ public class LocationArtifactReportProcessorTest
Artifact pomArtifact = createArtifact( "groupId", "artifactId", "1.0-alpha-1", "pom" );
Model model = readPom( repository.pathOf( pomArtifact ) );
artifactReportProcessor.processArtifact( pomArtifact, model, reporter );
assertEquals( 0, reporter.getNumFailures() );
assertEquals( 0, reporter.getNumWarnings() );
artifactReportProcessor.processArtifact( pomArtifact, model, reportDatabase );
assertEquals( 0, reportDatabase.getNumFailures() );
assertEquals( 0, reportDatabase.getNumWarnings() );
}
/**
@ -102,9 +102,9 @@ public class LocationArtifactReportProcessorTest
Artifact pomArtifact = createArtifact( "groupId", "artifactId", "1.0-alpha-1", "pom" );
Model model = readPom( repository.pathOf( pomArtifact ) );
artifactReportProcessor.processArtifact( artifact, model, reporter );
assertEquals( 0, reporter.getNumFailures() );
assertEquals( 0, reporter.getNumWarnings() );
artifactReportProcessor.processArtifact( artifact, model, reportDatabase );
assertEquals( 0, reportDatabase.getNumFailures() );
assertEquals( 0, reportDatabase.getNumWarnings() );
}
/**
@ -119,9 +119,9 @@ public class LocationArtifactReportProcessorTest
Artifact pomArtifact = createArtifact( "groupId", "artifactId", "1.0-alpha-1", "pom" );
Model model = readPom( repository.pathOf( pomArtifact ) );
artifactReportProcessor.processArtifact( artifact, model, reporter );
assertEquals( 0, reporter.getNumFailures() );
assertEquals( 0, reporter.getNumWarnings() );
artifactReportProcessor.processArtifact( artifact, model, reportDatabase );
assertEquals( 0, reportDatabase.getNumFailures() );
assertEquals( 0, reportDatabase.getNumWarnings() );
}
/**
@ -136,9 +136,9 @@ public class LocationArtifactReportProcessorTest
Artifact pomArtifact = createArtifact( "groupId", "artifactId", "1.0-alpha-1", "pom" );
Model model = readPom( repository.pathOf( pomArtifact ) );
artifactReportProcessor.processArtifact( artifact, model, reporter );
assertEquals( 0, reporter.getNumFailures() );
assertEquals( 0, reporter.getNumWarnings() );
artifactReportProcessor.processArtifact( artifact, model, reportDatabase );
assertEquals( 0, reportDatabase.getNumFailures() );
assertEquals( 0, reportDatabase.getNumWarnings() );
}
/**
@ -154,7 +154,7 @@ public class LocationArtifactReportProcessorTest
try
{
Model model = readPom( repository.pathOf( pomArtifact ) );
artifactReportProcessor.processArtifact( artifact, model, reporter );
artifactReportProcessor.processArtifact( artifact, model, reportDatabase );
fail( "Should not have passed the artifact" );
}
catch ( IllegalStateException e )
@ -174,15 +174,15 @@ public class LocationArtifactReportProcessorTest
Artifact pomArtifact = createArtifact( "org.apache.maven", "maven-archiver", "2.0", "pom" );
Model model = readPom( repository.pathOf( pomArtifact ) );
artifactReportProcessor.processArtifact( artifact, model, reporter );
assertEquals( 1, reporter.getNumFailures() );
artifactReportProcessor.processArtifact( artifact, model, reportDatabase );
assertEquals( 1, reportDatabase.getNumFailures() );
}
private Model readPom( String path )
throws IOException, XmlPullParserException
{
Reader reader = new FileReader( new File( repository.getBasedir(), path ) );
Model model = pomReader.read( reader );
Model model = new MavenXpp3Reader().read( reader );
// hokey inheritence to avoid some errors right now
if ( model.getGroupId() == null )
{
@ -204,8 +204,8 @@ public class LocationArtifactReportProcessorTest
{
Artifact artifact = createArtifact( "org.apache.maven", "maven-monitor", "2.1" );
artifactReportProcessor.processArtifact( artifact, null, reporter );
assertEquals( 1, reporter.getNumFailures() );
artifactReportProcessor.processArtifact( artifact, null, reportDatabase );
assertEquals( 1, reportDatabase.getNumFailures() );
}
/**
@ -217,8 +217,8 @@ public class LocationArtifactReportProcessorTest
{
Artifact artifact = createArtifact( "org.apache.maven", "maven-project", "2.1" );
artifactReportProcessor.processArtifact( artifact, null, reporter );
assertEquals( 1, reporter.getNumFailures() );
artifactReportProcessor.processArtifact( artifact, null, reportDatabase );
assertEquals( 1, reportDatabase.getNumFailures() );
}
}

View File

@ -25,6 +25,7 @@ import org.apache.maven.archiva.configuration.RepositoryConfiguration;
import org.apache.maven.archiva.discoverer.filter.AcceptAllArtifactFilter;
import org.apache.maven.archiva.discoverer.filter.SnapshotArtifactFilter;
import org.apache.maven.archiva.reporting.ReportExecutor;
import org.apache.maven.archiva.reporting.ReportGroup;
import org.apache.maven.archiva.reporting.ReportingDatabase;
import org.apache.maven.archiva.reporting.ReportingStore;
import org.apache.maven.archiva.reporting.ReportingStoreException;
@ -34,6 +35,7 @@ import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
/**
* Repository reporting.
@ -70,15 +72,26 @@ public class ReportsAction
private Configuration configuration;
/**
* @plexus.requirement role="org.apache.maven.archiva.reporting.ReportGroup"
*/
private Map reports;
private String reportGroup = DEFAULT_REPORT_GROUP;
private static final String DEFAULT_REPORT_GROUP = "health";
public String execute()
throws Exception
{
ReportGroup reportGroup = (ReportGroup) reports.get( this.reportGroup );
databases = new ArrayList();
if ( repositoryId != null && !repositoryId.equals( "-" ) )
{
RepositoryConfiguration repositoryConfiguration = configuration.getRepositoryById( repositoryId );
getReport( repositoryConfiguration );
getReport( repositoryConfiguration, reportGroup );
}
else
{
@ -86,18 +99,18 @@ public class ReportsAction
{
RepositoryConfiguration repositoryConfiguration = (RepositoryConfiguration) i.next();
getReport( repositoryConfiguration );
getReport( repositoryConfiguration, reportGroup );
}
}
return SUCCESS;
}
private void getReport( RepositoryConfiguration repositoryConfiguration )
private void getReport( RepositoryConfiguration repositoryConfiguration, ReportGroup reportGroup )
throws ReportingStoreException
{
ArtifactRepository repository = factory.createRepository( repositoryConfiguration );
ReportingDatabase database = reportingStore.getReportsFromStore( repository );
ReportingDatabase database = reportingStore.getReportsFromStore( repository, reportGroup );
databases.add( database );
}
@ -105,12 +118,12 @@ public class ReportsAction
public String runReport()
throws Exception
{
// TODO: this should be one that runs in the background - see the showcase
ReportGroup reportGroup = (ReportGroup) reports.get( this.reportGroup );
RepositoryConfiguration repositoryConfiguration = configuration.getRepositoryById( repositoryId );
ArtifactRepository repository = factory.createRepository( repositoryConfiguration );
ReportingDatabase database = executor.getReportDatabase( repository );
ReportingDatabase database = executor.getReportDatabase( repository, reportGroup );
if ( database.isInProgress() )
{
return SUCCESS;
@ -140,7 +153,7 @@ public class ReportsAction
try
{
executor.runReports( repository, blacklistedPatterns, filter );
executor.runReports( reportGroup, repository, blacklistedPatterns, filter );
}
finally
{
@ -150,6 +163,16 @@ public class ReportsAction
return SUCCESS;
}
public void setReportGroup( String reportGroup )
{
this.reportGroup = reportGroup;
}
public String getReportGroup()
{
return reportGroup;
}
public String getRepositoryId()
{
return repositoryId;
@ -175,4 +198,9 @@ public class ReportsAction
{
return configuration;
}
public Map getReports()
{
return reports;
}
}

View File

@ -21,8 +21,9 @@
<html>
<head>
<%-- TODO! change the name --%>
<title>Report: Repository Health</title>
<ww:set name="reports" value="reports"/>
<ww:set name="reportGroup" value="reportGroup"/>
<title>Report: ${reports[reportGroup].name}</title>
<ww:head/>
</head>
@ -32,8 +33,9 @@
<div id="contentArea">
<%-- TODO!: select report, filter --%>
<%-- TODO!: select filter --%>
<ww:form action="reports" namespace="/admin">
<ww:select list="reports" label="Report" name="reportGroup"/>
<ww:select list="configuration.repositories" listKey="id" listValue="name" label="Repository" headerKey="-"
headerValue="(All repositories)" name="repositoryId"/>
<ww:submit value="Get Report"/>