git-svn-id: https://svn.apache.org/repos/asf/maven/archiva/trunk@442028 13f79535-47bb-0310-9956-ffa450edef68tags/archiva-0.9-alpha-1
@@ -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 ); | |||
} | |||
@@ -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 ); | |||
@@ -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 ); |
@@ -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(); | |||
} | |||
} |
@@ -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 |
@@ -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"; | |||
} | |||
} |
@@ -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 |
@@ -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 ) ); | |||
String checksum = null; | |||
try | |||
{ | |||
checksum = digester.calc( artifact.getFile() ); | |||
} | |||
catch ( DigesterException e ) | |||
{ | |||
RepositoryArtifactIndex index = indexFactory.createStandardIndex( new File( indexDirectory ) ); | |||
reporter.addWarning( artifact, "Unable to generate checksum for " + artifact.getFile() + ": " + e ); | |||
} | |||
String checksum = null; | |||
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" ); | |||
} | |||
} | |||
} |
@@ -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"; | |||
} | |||
} |
@@ -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; | |||
} |
@@ -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(); | |||
} |
@@ -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; | |||
} | |||
} |
@@ -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; | |||
/** |
@@ -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(); |
@@ -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(); |
@@ -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(); |
@@ -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 ); | |||
} | |||
} |
@@ -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(); |
@@ -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() |
@@ -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() ); | |||
} | |||
} |
@@ -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() ); | |||
} | |||
} |
@@ -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; | |||
} | |||
} |
@@ -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"/> |