You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@archiva.apache.org by br...@apache.org on 2006/09/08 07:16:54 UTC
svn commit: r441377 [1/3] - in /maven/archiva/trunk:
archiva-converter/src/main/java/org/apache/maven/archiva/converter/
archiva-converter/src/test/java/org/apache/maven/archiva/converter/
archiva-core/src/main/java/org/apache/maven/archiva/ archiva-co...
Author: brett
Date: Thu Sep 7 22:16:51 2006
New Revision: 441377
URL: http://svn.apache.org/viewvc?view=rev&rev=441377
Log:
[MRM-161] introduce a model for storing reports in the repository, and wire them up on the back of the indexer.
Added:
maven/archiva/trunk/archiva-reports-standard/src/main/java/org/apache/maven/archiva/reporting/DefaultReportingStore.java (with props)
maven/archiva/trunk/archiva-reports-standard/src/main/java/org/apache/maven/archiva/reporting/ReportingDatabase.java (contents, props changed)
- copied, changed from r441308, maven/archiva/trunk/archiva-reports-standard/src/main/java/org/apache/maven/archiva/reporting/ArtifactReporter.java
maven/archiva/trunk/archiva-reports-standard/src/main/java/org/apache/maven/archiva/reporting/ReportingStore.java (with props)
maven/archiva/trunk/archiva-reports-standard/src/main/java/org/apache/maven/archiva/reporting/ReportingStoreException.java (with props)
maven/archiva/trunk/archiva-reports-standard/src/main/mdo/
maven/archiva/trunk/archiva-reports-standard/src/main/mdo/reporting.mdo
Removed:
maven/archiva/trunk/archiva-reports-standard/src/main/java/org/apache/maven/archiva/reporting/ArtifactReporter.java
maven/archiva/trunk/archiva-reports-standard/src/main/java/org/apache/maven/archiva/reporting/ArtifactResult.java
maven/archiva/trunk/archiva-reports-standard/src/main/java/org/apache/maven/archiva/reporting/ChecksumMetadataReporter.java
maven/archiva/trunk/archiva-reports-standard/src/main/java/org/apache/maven/archiva/reporting/DefaultArtifactReporter.java
maven/archiva/trunk/archiva-reports-standard/src/main/java/org/apache/maven/archiva/reporting/ReportProcessorException.java
maven/archiva/trunk/archiva-reports-standard/src/main/java/org/apache/maven/archiva/reporting/RepositoryMetadataResult.java
maven/archiva/trunk/archiva-reports-standard/src/main/java/org/apache/maven/archiva/reporting/Result.java
Modified:
maven/archiva/trunk/archiva-converter/src/main/java/org/apache/maven/archiva/converter/DefaultRepositoryConverter.java
maven/archiva/trunk/archiva-converter/src/main/java/org/apache/maven/archiva/converter/RepositoryConverter.java
maven/archiva/trunk/archiva-converter/src/test/java/org/apache/maven/archiva/converter/RepositoryConverterTest.java
maven/archiva/trunk/archiva-core/src/main/java/org/apache/maven/archiva/DefaultRepositoryManager.java
maven/archiva/trunk/archiva-core/src/main/java/org/apache/maven/archiva/scheduler/task/IndexerTask.java
maven/archiva/trunk/archiva-discoverer/src/main/java/org/apache/maven/archiva/discoverer/AbstractArtifactDiscoverer.java
maven/archiva/trunk/archiva-discoverer/src/main/java/org/apache/maven/archiva/discoverer/AbstractDiscoverer.java
maven/archiva/trunk/archiva-discoverer/src/main/java/org/apache/maven/archiva/discoverer/DefaultMetadataDiscoverer.java
maven/archiva/trunk/archiva-discoverer/src/main/java/org/apache/maven/archiva/discoverer/MetadataDiscoverer.java
maven/archiva/trunk/archiva-discoverer/src/test/java/org/apache/maven/archiva/discoverer/DefaultMetadataDiscovererTest.java
maven/archiva/trunk/archiva-indexer/src/main/java/org/apache/maven/archiva/indexer/lucene/LuceneRepositoryArtifactIndex.java
maven/archiva/trunk/archiva-indexer/src/main/java/org/apache/maven/archiva/indexer/lucene/LuceneRepositoryArtifactIndexFactory.java
maven/archiva/trunk/archiva-reports-standard/pom.xml
maven/archiva/trunk/archiva-reports-standard/src/main/java/org/apache/maven/archiva/reporting/ArtifactReportProcessor.java
maven/archiva/trunk/archiva-reports-standard/src/main/java/org/apache/maven/archiva/reporting/BadMetadataReportProcessor.java
maven/archiva/trunk/archiva-reports-standard/src/main/java/org/apache/maven/archiva/reporting/ChecksumArtifactReportProcessor.java
maven/archiva/trunk/archiva-reports-standard/src/main/java/org/apache/maven/archiva/reporting/ChecksumMetadataReportProcessor.java
maven/archiva/trunk/archiva-reports-standard/src/main/java/org/apache/maven/archiva/reporting/DependencyArtifactReportProcessor.java
maven/archiva/trunk/archiva-reports-standard/src/main/java/org/apache/maven/archiva/reporting/DuplicateArtifactFileReportProcessor.java
maven/archiva/trunk/archiva-reports-standard/src/main/java/org/apache/maven/archiva/reporting/InvalidPomArtifactReportProcessor.java
maven/archiva/trunk/archiva-reports-standard/src/main/java/org/apache/maven/archiva/reporting/LocationArtifactReportProcessor.java
maven/archiva/trunk/archiva-reports-standard/src/main/java/org/apache/maven/archiva/reporting/MetadataReportProcessor.java
maven/archiva/trunk/archiva-reports-standard/src/test/java/org/apache/maven/archiva/reporting/AbstractRepositoryReportsTestCase.java
maven/archiva/trunk/archiva-reports-standard/src/test/java/org/apache/maven/archiva/reporting/ArtifactReporterTest.java
maven/archiva/trunk/archiva-reports-standard/src/test/java/org/apache/maven/archiva/reporting/BadMetadataReportProcessorTest.java
maven/archiva/trunk/archiva-reports-standard/src/test/java/org/apache/maven/archiva/reporting/ChecksumArtifactReporterTest.java
maven/archiva/trunk/archiva-reports-standard/src/test/java/org/apache/maven/archiva/reporting/DefaultArtifactReporterTest.java
maven/archiva/trunk/archiva-reports-standard/src/test/java/org/apache/maven/archiva/reporting/DependencyArtifactReportProcessorTest.java
maven/archiva/trunk/archiva-reports-standard/src/test/java/org/apache/maven/archiva/reporting/DuplicateArtifactFileReportProcessorTest.java
maven/archiva/trunk/archiva-reports-standard/src/test/java/org/apache/maven/archiva/reporting/InvalidPomArtifactReportProcessorTest.java
maven/archiva/trunk/archiva-reports-standard/src/test/java/org/apache/maven/archiva/reporting/LocationArtifactReportProcessorTest.java
maven/archiva/trunk/archiva-reports-standard/src/test/repository/org/apache/maven/maven-archiver/2.0/maven-archiver-2.0.pom
maven/archiva/trunk/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/configure.jsp
maven/archiva/trunk/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/index.jsp
Modified: maven/archiva/trunk/archiva-converter/src/main/java/org/apache/maven/archiva/converter/DefaultRepositoryConverter.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-converter/src/main/java/org/apache/maven/archiva/converter/DefaultRepositoryConverter.java?view=diff&rev=441377&r1=441376&r2=441377
==============================================================================
--- maven/archiva/trunk/archiva-converter/src/main/java/org/apache/maven/archiva/converter/DefaultRepositoryConverter.java (original)
+++ maven/archiva/trunk/archiva-converter/src/main/java/org/apache/maven/archiva/converter/DefaultRepositoryConverter.java Thu Sep 7 22:16:51 2006
@@ -19,7 +19,7 @@
import org.apache.maven.archiva.converter.transaction.FileTransaction;
import org.apache.maven.archiva.digest.Digester;
import org.apache.maven.archiva.digest.DigesterException;
-import org.apache.maven.archiva.reporting.ArtifactReporter;
+import org.apache.maven.archiva.reporting.ReportingDatabase;
import org.apache.maven.artifact.Artifact;
import org.apache.maven.artifact.factory.ArtifactFactory;
import org.apache.maven.artifact.repository.ArtifactRepository;
@@ -105,7 +105,7 @@
*/
private I18N i18n;
- public void convert( Artifact artifact, ArtifactRepository targetRepository, ArtifactReporter reporter )
+ public void convert( Artifact artifact, ArtifactRepository targetRepository, ReportingDatabase reporter )
throws RepositoryConversionException
{
if ( artifact.getRepository().getUrl().equals( targetRepository.getUrl() ) )
@@ -150,7 +150,6 @@
{
transaction.commit();
}
- reporter.addSuccess( artifact );
}
}
}
@@ -239,7 +238,7 @@
return metadata;
}
- private boolean validateMetadata( Artifact artifact, ArtifactReporter reporter )
+ private boolean validateMetadata( Artifact artifact, ReportingDatabase reporter )
throws RepositoryConversionException
{
ArtifactRepository repository = artifact.getRepository();
@@ -267,7 +266,7 @@
}
private boolean validateMetadata( Metadata metadata, RepositoryMetadata repositoryMetadata, Artifact artifact,
- ArtifactReporter reporter )
+ ReportingDatabase reporter )
{
String groupIdKey;
String artifactIdKey = null;
@@ -368,7 +367,7 @@
return result;
}
- private boolean copyPom( Artifact artifact, ArtifactRepository targetRepository, ArtifactReporter reporter,
+ private boolean copyPom( Artifact artifact, ArtifactRepository targetRepository, ReportingDatabase reporter,
FileTransaction transaction )
throws RepositoryConversionException
{
@@ -572,7 +571,7 @@
return i18n.getString( getClass().getName(), Locale.getDefault(), key );
}
- private boolean testChecksums( Artifact artifact, File file, ArtifactReporter reporter )
+ private boolean testChecksums( Artifact artifact, File file, ReportingDatabase reporter )
throws IOException
{
@@ -583,7 +582,7 @@
return result;
}
- private boolean verifyChecksum( File file, String fileName, Digester digester, ArtifactReporter reporter,
+ private boolean verifyChecksum( File file, String fileName, Digester digester, ReportingDatabase reporter,
Artifact artifact, String key )
throws IOException
{
@@ -606,7 +605,7 @@
return result;
}
- private boolean copyArtifact( Artifact artifact, ArtifactRepository targetRepository, ArtifactReporter reporter,
+ private boolean copyArtifact( Artifact artifact, ArtifactRepository targetRepository, ReportingDatabase reporter,
FileTransaction transaction )
throws RepositoryConversionException
{
@@ -649,7 +648,7 @@
return result;
}
- public void convert( List artifacts, ArtifactRepository targetRepository, ArtifactReporter reporter )
+ public void convert( List artifacts, ArtifactRepository targetRepository, ReportingDatabase reporter )
throws RepositoryConversionException
{
for ( Iterator i = artifacts.iterator(); i.hasNext(); )
Modified: maven/archiva/trunk/archiva-converter/src/main/java/org/apache/maven/archiva/converter/RepositoryConverter.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-converter/src/main/java/org/apache/maven/archiva/converter/RepositoryConverter.java?view=diff&rev=441377&r1=441376&r2=441377
==============================================================================
--- maven/archiva/trunk/archiva-converter/src/main/java/org/apache/maven/archiva/converter/RepositoryConverter.java (original)
+++ maven/archiva/trunk/archiva-converter/src/main/java/org/apache/maven/archiva/converter/RepositoryConverter.java Thu Sep 7 22:16:51 2006
@@ -16,7 +16,7 @@
* limitations under the License.
*/
-import org.apache.maven.archiva.reporting.ArtifactReporter;
+import org.apache.maven.archiva.reporting.ReportingDatabase;
import org.apache.maven.artifact.Artifact;
import org.apache.maven.artifact.repository.ArtifactRepository;
@@ -38,7 +38,7 @@
* @param targetRepository the target repository
* @param reporter reporter to track the results of the conversion
*/
- void convert( Artifact artifact, ArtifactRepository targetRepository, ArtifactReporter reporter )
+ void convert( Artifact artifact, ArtifactRepository targetRepository, ReportingDatabase reporter )
throws RepositoryConversionException;
/**
@@ -48,6 +48,6 @@
* @param targetRepository the target repository
* @param reporter reporter to track the results of the conversions
*/
- void convert( List artifacts, ArtifactRepository targetRepository, ArtifactReporter reporter )
+ void convert( List artifacts, ArtifactRepository targetRepository, ReportingDatabase reporter )
throws RepositoryConversionException;
}
Modified: maven/archiva/trunk/archiva-converter/src/test/java/org/apache/maven/archiva/converter/RepositoryConverterTest.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-converter/src/test/java/org/apache/maven/archiva/converter/RepositoryConverterTest.java?view=diff&rev=441377&r1=441376&r2=441377
==============================================================================
--- maven/archiva/trunk/archiva-converter/src/test/java/org/apache/maven/archiva/converter/RepositoryConverterTest.java (original)
+++ maven/archiva/trunk/archiva-converter/src/test/java/org/apache/maven/archiva/converter/RepositoryConverterTest.java Thu Sep 7 22:16:51 2006
@@ -16,9 +16,9 @@
* limitations under the License.
*/
-import org.apache.maven.archiva.reporting.ArtifactReporter;
-import org.apache.maven.archiva.reporting.ArtifactResult;
-import org.apache.maven.archiva.reporting.DefaultArtifactReporter;
+import org.apache.maven.archiva.reporting.ReportingDatabase;
+import org.apache.maven.archiva.reporting.model.ArtifactResults;
+import org.apache.maven.archiva.reporting.model.Result;
import org.apache.maven.artifact.Artifact;
import org.apache.maven.artifact.factory.ArtifactFactory;
import org.apache.maven.artifact.metadata.ArtifactMetadata;
@@ -61,7 +61,7 @@
private ArtifactFactory artifactFactory;
- private ArtifactReporter reporter;
+ private ReportingDatabase reporter;
private static final int SLEEP_MILLIS = 100;
@@ -94,7 +94,7 @@
i18n = (I18N) lookup( I18N.ROLE );
- reporter = new DefaultArtifactReporter();
+ reporter = new ReportingDatabase();
}
private void copyDirectoryStructure( File sourceDirectory, File destinationDirectory )
@@ -284,7 +284,6 @@
repositoryConverter.convert( artifact, targetRepository, reporter );
assertEquals( "check no errors", 0, reporter.getNumFailures() );
assertEquals( "check number of warnings", 2, reporter.getNumWarnings() );
- assertEquals( "check success", 1, reporter.getNumSuccesses() );
File artifactFile = new File( targetRepository.getBasedir(), targetRepository.pathOf( artifact ) );
assertTrue( "Check artifact created", artifactFile.exists() );
@@ -455,7 +454,6 @@
repositoryConverter.convert( artifact, targetRepository, reporter );
assertEquals( "check no errors", 0, reporter.getNumFailures() );
assertEquals( "check no warnings", 1, reporter.getNumWarnings() );
- assertEquals( "check success", 1, reporter.getNumSuccesses() );
assertEquals( "check warning message", getI18nString( "warning.missing.pom" ), getWarning().getReason() );
File artifactFile = new File( targetRepository.getBasedir(), targetRepository.pathOf( artifact ) );
@@ -735,7 +733,6 @@
repositoryConverter.convert( artifacts, targetRepository, reporter );
assertEquals( "check no errors", 0, reporter.getNumFailures() );
assertEquals( "check no warnings", 0, reporter.getNumWarnings() );
- assertEquals( "check successes", 3, reporter.getNumSuccesses() );
for ( Iterator i = artifacts.iterator(); i.hasNext(); )
{
@@ -908,14 +905,12 @@
{
assertEquals( "check no errors", 0, reporter.getNumFailures() );
assertEquals( "check no warnings", 0, reporter.getNumWarnings() );
- assertEquals( "check success", 1, reporter.getNumSuccesses() );
}
private void checkFailure()
{
assertEquals( "check num errors", 1, reporter.getNumFailures() );
assertEquals( "check no warnings", 0, reporter.getNumWarnings() );
- assertEquals( "check no success", 0, reporter.getNumSuccesses() );
}
private String getI18nString( String key )
@@ -923,14 +918,16 @@
return i18n.getString( repositoryConverter.getClass().getName(), Locale.getDefault(), key );
}
- private ArtifactResult getFailure()
+ private Result getFailure()
{
- return (ArtifactResult) reporter.getArtifactFailureIterator().next();
+ ArtifactResults artifact = (ArtifactResults) reporter.getArtifactIterator().next();
+ return (Result) artifact.getFailures().get( 0 );
}
- private ArtifactResult getWarning()
+ private Result getWarning()
{
- return (ArtifactResult) reporter.getArtifactWarningIterator().next();
+ ArtifactResults artifact = (ArtifactResults) reporter.getArtifactIterator().next();
+ return (Result) artifact.getWarnings().get( 0 );
}
private void createModernSourceRepository()
Modified: maven/archiva/trunk/archiva-core/src/main/java/org/apache/maven/archiva/DefaultRepositoryManager.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-core/src/main/java/org/apache/maven/archiva/DefaultRepositoryManager.java?view=diff&rev=441377&r1=441376&r2=441377
==============================================================================
--- maven/archiva/trunk/archiva-core/src/main/java/org/apache/maven/archiva/DefaultRepositoryManager.java (original)
+++ maven/archiva/trunk/archiva-core/src/main/java/org/apache/maven/archiva/DefaultRepositoryManager.java Thu Sep 7 22:16:51 2006
@@ -6,7 +6,9 @@
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.ArtifactReporter;
+import org.apache.maven.archiva.reporting.ReportingDatabase;
+import org.apache.maven.archiva.reporting.ReportingStore;
+import org.apache.maven.archiva.reporting.ReportingStoreException;
import org.apache.maven.artifact.repository.ArtifactRepository;
import org.apache.maven.artifact.repository.ArtifactRepositoryFactory;
import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout;
@@ -51,7 +53,7 @@
/**
* @plexus.requirement
*/
- private ArtifactReporter reporter;
+ private ReportingStore reportingStore;
public void convertLegacyRepository( File legacyRepositoryDirectory, File repositoryDirectory,
boolean includeSnapshots )
@@ -80,6 +82,18 @@
includeSnapshots ? new AcceptAllArtifactFilter() : (ArtifactFilter) new SnapshotArtifactFilter();
List legacyArtifacts = artifactDiscoverer.discoverArtifacts( legacyRepository, null, filter );
- repositoryConverter.convert( legacyArtifacts, repository, reporter );
+ ReportingDatabase reporter;
+ try
+ {
+ reporter = reportingStore.getReportsFromStore( repository );
+
+ repositoryConverter.convert( legacyArtifacts, repository, reporter );
+
+ reportingStore.storeReports( reporter, repository );
+ }
+ catch ( ReportingStoreException e )
+ {
+ throw new RepositoryConversionException( "Error convering legacy repository.", e );
+ }
}
}
Modified: maven/archiva/trunk/archiva-core/src/main/java/org/apache/maven/archiva/scheduler/task/IndexerTask.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-core/src/main/java/org/apache/maven/archiva/scheduler/task/IndexerTask.java?view=diff&rev=441377&r1=441376&r2=441377
==============================================================================
--- maven/archiva/trunk/archiva-core/src/main/java/org/apache/maven/archiva/scheduler/task/IndexerTask.java (original)
+++ maven/archiva/trunk/archiva-core/src/main/java/org/apache/maven/archiva/scheduler/task/IndexerTask.java Thu Sep 7 22:16:51 2006
@@ -23,15 +23,26 @@
import org.apache.maven.archiva.configuration.RepositoryConfiguration;
import org.apache.maven.archiva.discoverer.ArtifactDiscoverer;
import org.apache.maven.archiva.discoverer.DiscovererException;
+import org.apache.maven.archiva.discoverer.MetadataDiscoverer;
import org.apache.maven.archiva.discoverer.filter.SnapshotArtifactFilter;
import org.apache.maven.archiva.indexer.RepositoryArtifactIndex;
import org.apache.maven.archiva.indexer.RepositoryArtifactIndexFactory;
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.ArtifactReportProcessor;
+import org.apache.maven.archiva.reporting.ReportingDatabase;
+import org.apache.maven.archiva.reporting.ReportingStore;
+import org.apache.maven.archiva.reporting.ReportingStoreException;
import org.apache.maven.archiva.scheduler.TaskExecutionException;
+import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.factory.ArtifactFactory;
import org.apache.maven.artifact.repository.ArtifactRepository;
import org.apache.maven.artifact.resolver.filter.AndArtifactFilter;
+import org.apache.maven.model.Model;
+import org.apache.maven.project.MavenProject;
+import org.apache.maven.project.MavenProjectBuilder;
+import org.apache.maven.project.ProjectBuildingException;
import org.codehaus.plexus.logging.AbstractLogEnabled;
import java.io.File;
@@ -75,10 +86,37 @@
private Map artifactDiscoverers;
/**
+ * @plexus.requirement role="org.apache.maven.archiva.reporting.ArtifactReportProcessor"
+ */
+ private List artifactReports;
+
+ /**
+ * @plexus.requirement role="org.apache.maven.archiva.discoverer.MetadataDiscoverer"
+ */
+ private Map metadataDiscoverers;
+
+ /**
+ * @plexus.requirement role="org.apache.maven.archiva.reporting.MetadataReportProcessor"
+ */
+ private List metadataReports;
+
+ /**
* @plexus.requirement role-hint="standard"
*/
private RepositoryIndexRecordFactory recordFactory;
+ /**
+ * @plexus.requirement
+ */
+ private ArtifactFactory artifactFactory;
+
+ private static final int ARTIFACT_BUFFER_SIZE = 1000;
+
+ /**
+ * @plexus.requirement
+ */
+ private ReportingStore reportingStore;
+
public void execute()
throws TaskExecutionException
{
@@ -136,6 +174,11 @@
ArtifactRepository repository = repoFactory.createRepository( repositoryConfiguration );
+ getLogger().debug(
+ "Reading previous report database from repository " + repositoryConfiguration.getName() );
+ ReportingDatabase reporter = reportingStore.getReportsFromStore( repository );
+
+ // Discovery process
String layoutProperty = repositoryConfiguration.getLayout();
ArtifactDiscoverer discoverer = (ArtifactDiscoverer) artifactDiscoverers.get( layoutProperty );
AndArtifactFilter filter = new AndArtifactFilter();
@@ -151,13 +194,37 @@
getLogger().info( "Searching repository " + repositoryConfiguration.getName() );
List artifacts = discoverer.discoverArtifacts( repository, blacklistedPatterns, filter );
+
if ( !artifacts.isEmpty() )
{
- // TODO! reporting
+ getLogger().info( "Discovered " + artifacts.size() + " unindexed artifacts" );
- getLogger().info( "Indexing " + artifacts.size() + " new artifacts" );
- index.indexArtifacts( artifacts, recordFactory );
+ // Work through these in batches, then flush the project cache.
+ for ( int j = 0; j < artifacts.size(); j += ARTIFACT_BUFFER_SIZE )
+ {
+ int end = j + ARTIFACT_BUFFER_SIZE;
+ List currentArtifacts =
+ artifacts.subList( j, end > artifacts.size() ? artifacts.size() : end );
+
+ // run the reports
+ runArtifactReports( currentArtifacts, reporter );
+
+ index.indexArtifacts( currentArtifacts, recordFactory );
+ }
+
+ // 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
+ flushProjectBuilderCacheHack();
}
+
+ // TODO! use reporting manager as a filter
+ MetadataDiscoverer metadataDiscoverer =
+ (MetadataDiscoverer) metadataDiscoverers.get( layoutProperty );
+ metadataDiscoverer.discoverMetadata( repository, blacklistedPatterns );
+
+ //TODO! metadata reporting
+
+ reportingStore.storeReports( reporter, repository );
}
}
}
@@ -169,11 +236,53 @@
{
throw new TaskExecutionException( e.getMessage(), e );
}
+ catch ( ReportingStoreException e )
+ {
+ throw new TaskExecutionException( e.getMessage(), e );
+ }
time = System.currentTimeMillis() - time;
getLogger().info( "Finished repository indexing process in " + time + "ms" );
}
+ private void runArtifactReports( List artifacts, ReportingDatabase reporter )
+ {
+ for ( Iterator i = artifacts.iterator(); i.hasNext(); )
+ {
+ Artifact artifact = (Artifact) i.next();
+
+ ArtifactRepository repository = artifact.getRepository();
+
+ Model model = null;
+ try
+ {
+ Artifact pomArtifact = artifactFactory.createProjectArtifact( artifact.getGroupId(),
+ artifact.getArtifactId(),
+ artifact.getVersion() );
+ MavenProject project =
+ projectBuilder.buildFromRepository( pomArtifact, Collections.EMPTY_LIST, repository );
+
+ model = project.getModel();
+ }
+ catch ( ProjectBuildingException e )
+ {
+ reporter.addWarning( artifact, "Error reading project model: " + e );
+ }
+ runArtifactReports( artifact, model, reporter );
+ }
+ }
+
+ 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 );
+ }
+ }
+
public void executeNowIfNeeded()
throws TaskExecutionException
{
@@ -202,4 +311,38 @@
throw new TaskExecutionException( e.getMessage(), e );
}
}
+
+ /**
+ * @todo remove when no longer needed (MNG-142)
+ * @plexus.requirement
+ */
+ private MavenProjectBuilder projectBuilder;
+
+ private void flushProjectBuilderCacheHack()
+ {
+ try
+ {
+ if ( projectBuilder != null )
+ {
+ java.lang.reflect.Field f = projectBuilder.getClass().getDeclaredField( "rawProjectCache" );
+ f.setAccessible( true );
+ Map cache = (Map) f.get( projectBuilder );
+ cache.clear();
+
+ f = projectBuilder.getClass().getDeclaredField( "processedProjectCache" );
+ f.setAccessible( true );
+ cache = (Map) f.get( projectBuilder );
+ cache.clear();
+ }
+ }
+ catch ( NoSuchFieldException e )
+ {
+ throw new RuntimeException( e );
+ }
+ catch ( IllegalAccessException e )
+ {
+ throw new RuntimeException( e );
+ }
+ }
+
}
Modified: maven/archiva/trunk/archiva-discoverer/src/main/java/org/apache/maven/archiva/discoverer/AbstractArtifactDiscoverer.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-discoverer/src/main/java/org/apache/maven/archiva/discoverer/AbstractArtifactDiscoverer.java?view=diff&rev=441377&r1=441376&r2=441377
==============================================================================
--- maven/archiva/trunk/archiva-discoverer/src/main/java/org/apache/maven/archiva/discoverer/AbstractArtifactDiscoverer.java (original)
+++ maven/archiva/trunk/archiva-discoverer/src/main/java/org/apache/maven/archiva/discoverer/AbstractArtifactDiscoverer.java Thu Sep 7 22:16:51 2006
@@ -73,7 +73,10 @@
{
artifacts.add( artifact );
}
- // TODO: else add to excluded? [!]
+ else
+ {
+ addExcludedPath( path, "Omitted by filter" );
+ }
}
catch ( DiscovererException e )
{
Modified: maven/archiva/trunk/archiva-discoverer/src/main/java/org/apache/maven/archiva/discoverer/AbstractDiscoverer.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-discoverer/src/main/java/org/apache/maven/archiva/discoverer/AbstractDiscoverer.java?view=diff&rev=441377&r1=441376&r2=441377
==============================================================================
--- maven/archiva/trunk/archiva-discoverer/src/main/java/org/apache/maven/archiva/discoverer/AbstractDiscoverer.java (original)
+++ maven/archiva/trunk/archiva-discoverer/src/main/java/org/apache/maven/archiva/discoverer/AbstractDiscoverer.java Thu Sep 7 22:16:51 2006
@@ -67,6 +67,17 @@
}
/**
+ * Add a path to the list of files that were excluded.
+ *
+ * @param path the path to add
+ * @param reason the reason why the path is excluded
+ */
+ protected void addExcludedPath( String path, String reason )
+ {
+ excludedPaths.add( new DiscovererPath( path, reason ) );
+ }
+
+ /**
* Returns an iterator for the list if DiscovererPaths that were found to not represent a searched object
*
* @return Iterator for the DiscovererPath List
Modified: maven/archiva/trunk/archiva-discoverer/src/main/java/org/apache/maven/archiva/discoverer/DefaultMetadataDiscoverer.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-discoverer/src/main/java/org/apache/maven/archiva/discoverer/DefaultMetadataDiscoverer.java?view=diff&rev=441377&r1=441376&r2=441377
==============================================================================
--- maven/archiva/trunk/archiva-discoverer/src/main/java/org/apache/maven/archiva/discoverer/DefaultMetadataDiscoverer.java (original)
+++ maven/archiva/trunk/archiva-discoverer/src/main/java/org/apache/maven/archiva/discoverer/DefaultMetadataDiscoverer.java Thu Sep 7 22:16:51 2006
@@ -58,7 +58,7 @@
*/
private static final String[] STANDARD_DISCOVERY_INCLUDES = {"**/maven-metadata.xml"};
- public List discoverMetadata( ArtifactRepository repository, String operation, List blacklistedPatterns )
+ public List discoverMetadata( ArtifactRepository repository, List blacklistedPatterns )
throws DiscovererException
{
if ( !"file".equals( repository.getProtocol() ) )
Modified: maven/archiva/trunk/archiva-discoverer/src/main/java/org/apache/maven/archiva/discoverer/MetadataDiscoverer.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-discoverer/src/main/java/org/apache/maven/archiva/discoverer/MetadataDiscoverer.java?view=diff&rev=441377&r1=441376&r2=441377
==============================================================================
--- maven/archiva/trunk/archiva-discoverer/src/main/java/org/apache/maven/archiva/discoverer/MetadataDiscoverer.java (original)
+++ maven/archiva/trunk/archiva-discoverer/src/main/java/org/apache/maven/archiva/discoverer/MetadataDiscoverer.java Thu Sep 7 22:16:51 2006
@@ -32,11 +32,10 @@
* Search for metadata files in the repository.
*
* @param repository The repository.
- * @param operation the operation being performed (used for timestamp comparison)
* @param blacklistedPatterns Patterns that are to be excluded from the discovery process.
* @return the list of artifacts found
* @throws DiscovererException if there is a problem during the discovery process
*/
- List discoverMetadata( ArtifactRepository repository, String operation, List blacklistedPatterns )
+ List discoverMetadata( ArtifactRepository repository, List blacklistedPatterns )
throws DiscovererException;
}
Modified: maven/archiva/trunk/archiva-discoverer/src/test/java/org/apache/maven/archiva/discoverer/DefaultMetadataDiscovererTest.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-discoverer/src/test/java/org/apache/maven/archiva/discoverer/DefaultMetadataDiscovererTest.java?view=diff&rev=441377&r1=441376&r2=441377
==============================================================================
--- maven/archiva/trunk/archiva-discoverer/src/test/java/org/apache/maven/archiva/discoverer/DefaultMetadataDiscovererTest.java (original)
+++ maven/archiva/trunk/archiva-discoverer/src/test/java/org/apache/maven/archiva/discoverer/DefaultMetadataDiscovererTest.java Thu Sep 7 22:16:51 2006
@@ -91,7 +91,7 @@
public void testKickoutWrongDirectory()
throws DiscovererException
{
- discoverer.discoverMetadata( repository, TEST_OPERATION, null );
+ discoverer.discoverMetadata( repository, null );
Iterator iter = discoverer.getKickedOutPathsIterator();
boolean found = false;
while ( iter.hasNext() && !found )
@@ -116,7 +116,7 @@
public void testKickoutBlankMetadata()
throws DiscovererException
{
- discoverer.discoverMetadata( repository, TEST_OPERATION, null );
+ discoverer.discoverMetadata( repository, null );
Iterator iter = discoverer.getKickedOutPathsIterator();
boolean found = false;
while ( iter.hasNext() && !found )
@@ -148,7 +148,7 @@
public void testDiscoverMetadata()
throws DiscovererException
{
- List metadataPaths = discoverer.discoverMetadata( repository, TEST_OPERATION, null );
+ List metadataPaths = discoverer.discoverMetadata( repository, null );
assertNotNull( "Check metadata not null", metadataPaths );
RepositoryMetadata metadata =
Modified: maven/archiva/trunk/archiva-indexer/src/main/java/org/apache/maven/archiva/indexer/lucene/LuceneRepositoryArtifactIndex.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-indexer/src/main/java/org/apache/maven/archiva/indexer/lucene/LuceneRepositoryArtifactIndex.java?view=diff&rev=441377&r1=441376&r2=441377
==============================================================================
--- maven/archiva/trunk/archiva-indexer/src/main/java/org/apache/maven/archiva/indexer/lucene/LuceneRepositoryArtifactIndex.java (original)
+++ maven/archiva/trunk/archiva-indexer/src/main/java/org/apache/maven/archiva/indexer/lucene/LuceneRepositoryArtifactIndex.java Thu Sep 7 22:16:51 2006
@@ -42,7 +42,6 @@
import org.apache.maven.archiva.indexer.record.RepositoryIndexRecordFactory;
import org.apache.maven.archiva.indexer.record.StandardIndexRecordFields;
import org.apache.maven.artifact.Artifact;
-import org.apache.maven.project.MavenProjectBuilder;
import java.io.File;
import java.io.IOException;
@@ -53,7 +52,6 @@
import java.util.Iterator;
import java.util.LinkedHashSet;
import java.util.List;
-import java.util.Map;
import java.util.Set;
/**
@@ -78,8 +76,6 @@
private static Analyzer luceneAnalyzer = new LuceneAnalyzer();
- private MavenProjectBuilder projectBuilder;
-
private static long lastUpdatedTime = 0;
public LuceneRepositoryArtifactIndex( File indexPath, LuceneIndexRecordConverter converter )
@@ -88,14 +84,6 @@
this.converter = converter;
}
- public LuceneRepositoryArtifactIndex( File indexLocation, LuceneIndexRecordConverter converter,
- MavenProjectBuilder projectBuilder )
- {
- this.indexLocation = indexLocation;
- this.converter = converter;
- this.projectBuilder = projectBuilder;
- }
-
public void indexRecords( Collection records )
throws RepositoryIndexException
{
@@ -330,8 +318,7 @@
{
indexModifier = new IndexModifier( indexLocation, getAnalyzer(), !exists() );
- int count = 0;
- for ( Iterator i = artifacts.iterator(); i.hasNext(); count++ )
+ for ( Iterator i = artifacts.iterator(); i.hasNext(); )
{
Artifact artifact = (Artifact) i.next();
RepositoryIndexRecord record = factory.createRecord( artifact );
@@ -348,13 +335,6 @@
indexModifier.addDocument( document );
}
-
- if ( count % 100 == 0 )
- {
- // 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
- flushProjectBuilderCacheHack();
- }
}
indexModifier.optimize();
}
@@ -433,33 +413,6 @@
closeQuietly( searcher );
}
return new ArrayList( results );
- }
-
- private void flushProjectBuilderCacheHack()
- {
- try
- {
- if ( projectBuilder != null )
- {
- java.lang.reflect.Field f = projectBuilder.getClass().getDeclaredField( "rawProjectCache" );
- f.setAccessible( true );
- Map cache = (Map) f.get( projectBuilder );
- cache.clear();
-
- f = projectBuilder.getClass().getDeclaredField( "processedProjectCache" );
- f.setAccessible( true );
- cache = (Map) f.get( projectBuilder );
- cache.clear();
- }
- }
- catch ( NoSuchFieldException e )
- {
- throw new RuntimeException( e );
- }
- catch ( IllegalAccessException e )
- {
- throw new RuntimeException( e );
- }
}
public boolean exists()
Modified: maven/archiva/trunk/archiva-indexer/src/main/java/org/apache/maven/archiva/indexer/lucene/LuceneRepositoryArtifactIndexFactory.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-indexer/src/main/java/org/apache/maven/archiva/indexer/lucene/LuceneRepositoryArtifactIndexFactory.java?view=diff&rev=441377&r1=441376&r2=441377
==============================================================================
--- maven/archiva/trunk/archiva-indexer/src/main/java/org/apache/maven/archiva/indexer/lucene/LuceneRepositoryArtifactIndexFactory.java (original)
+++ maven/archiva/trunk/archiva-indexer/src/main/java/org/apache/maven/archiva/indexer/lucene/LuceneRepositoryArtifactIndexFactory.java Thu Sep 7 22:16:51 2006
@@ -18,7 +18,6 @@
import org.apache.maven.archiva.indexer.RepositoryArtifactIndex;
import org.apache.maven.archiva.indexer.RepositoryArtifactIndexFactory;
-import org.apache.maven.project.MavenProjectBuilder;
import java.io.File;
@@ -31,19 +30,13 @@
public class LuceneRepositoryArtifactIndexFactory
implements RepositoryArtifactIndexFactory
{
- /**
- * @plexus.requirement
- * @todo remove when MNG-142 is fixed
- */
- private MavenProjectBuilder projectBuilder;
-
public RepositoryArtifactIndex createStandardIndex( File indexPath )
{
- return new LuceneRepositoryArtifactIndex( indexPath, new LuceneStandardIndexRecordConverter(), projectBuilder );
+ return new LuceneRepositoryArtifactIndex( indexPath, new LuceneStandardIndexRecordConverter() );
}
public RepositoryArtifactIndex createMinimalIndex( File indexPath )
{
- return new LuceneRepositoryArtifactIndex( indexPath, new LuceneMinimalIndexRecordConverter(), projectBuilder );
+ return new LuceneRepositoryArtifactIndex( indexPath, new LuceneMinimalIndexRecordConverter() );
}
}
Modified: maven/archiva/trunk/archiva-reports-standard/pom.xml
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-reports-standard/pom.xml?view=diff&rev=441377&r1=441376&r2=441377
==============================================================================
--- maven/archiva/trunk/archiva-reports-standard/pom.xml (original)
+++ maven/archiva/trunk/archiva-reports-standard/pom.xml Thu Sep 7 22:16:51 2006
@@ -66,4 +66,38 @@
<artifactId>archiva-indexer</artifactId>
</dependency>
</dependencies>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.codehaus.modello</groupId>
+ <artifactId>modello-maven-plugin</artifactId>
+ <version>1.0-alpha-10</version>
+ <executions>
+ <execution>
+ <goals>
+ <goal>xpp3-writer</goal>
+ <goal>java</goal>
+ <goal>xpp3-reader</goal>
+ </goals>
+ </execution>
+ </executions>
+ <configuration>
+ <version>1.0.0</version>
+ <model>src/main/mdo/reporting.mdo</model>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>cobertura-maven-plugin</artifactId>
+ <configuration>
+ <instrumentation>
+ <!-- exclude generated -->
+ <excludes>
+ <exclude>org/apache/maven/archiva/reporting/model/**</exclude>
+ </excludes>
+ </instrumentation>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
</project>
Modified: maven/archiva/trunk/archiva-reports-standard/src/main/java/org/apache/maven/archiva/reporting/ArtifactReportProcessor.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-reports-standard/src/main/java/org/apache/maven/archiva/reporting/ArtifactReportProcessor.java?view=diff&rev=441377&r1=441376&r2=441377
==============================================================================
--- maven/archiva/trunk/archiva-reports-standard/src/main/java/org/apache/maven/archiva/reporting/ArtifactReportProcessor.java (original)
+++ maven/archiva/trunk/archiva-reports-standard/src/main/java/org/apache/maven/archiva/reporting/ArtifactReportProcessor.java Thu Sep 7 22:16:51 2006
@@ -17,7 +17,6 @@
*/
import org.apache.maven.artifact.Artifact;
-import org.apache.maven.artifact.repository.ArtifactRepository;
import org.apache.maven.model.Model;
/**
@@ -28,7 +27,5 @@
{
String ROLE = ArtifactReportProcessor.class.getName();
- void processArtifact( Model model, Artifact artifact, ArtifactReporter reporter, ArtifactRepository repository )
- throws ReportProcessorException;
-
+ void processArtifact( Artifact artifact, Model model, ReportingDatabase reporter );
}
Modified: maven/archiva/trunk/archiva-reports-standard/src/main/java/org/apache/maven/archiva/reporting/BadMetadataReportProcessor.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-reports-standard/src/main/java/org/apache/maven/archiva/reporting/BadMetadataReportProcessor.java?view=diff&rev=441377&r1=441376&r2=441377
==============================================================================
--- maven/archiva/trunk/archiva-reports-standard/src/main/java/org/apache/maven/archiva/reporting/BadMetadataReportProcessor.java (original)
+++ maven/archiva/trunk/archiva-reports-standard/src/main/java/org/apache/maven/archiva/reporting/BadMetadataReportProcessor.java Thu Sep 7 22:16:51 2006
@@ -61,23 +61,20 @@
*
* @param metadata the metadata to be processed.
* @param repository the repository where the metadata was encountered
- * @param reporter the ArtifactReporter to receive processing results
- * @throws ReportProcessorException if an error was occurred while processing the metadata
+ * @param reporter the ReportingDatabase to receive processing results
*/
- public void processMetadata( RepositoryMetadata metadata, ArtifactRepository repository, ArtifactReporter reporter )
- throws ReportProcessorException
+ public void processMetadata( RepositoryMetadata metadata, ArtifactRepository repository,
+ ReportingDatabase reporter )
{
- boolean hasFailures = false;
-
if ( metadata.storedInGroupDirectory() )
{
try
{
- hasFailures = checkPluginMetadata( metadata, repository, reporter );
+ checkPluginMetadata( metadata, repository, reporter );
}
catch ( IOException e )
{
- throw new ReportProcessorException( "Error getting plugin artifact directories versions", e );
+ reporter.addWarning( metadata, "Error getting plugin artifact directories versions: " + e );
}
}
else
@@ -86,38 +83,26 @@
if ( lastUpdated == null || lastUpdated.length() == 0 )
{
reporter.addFailure( metadata, "Missing lastUpdated element inside the metadata." );
- hasFailures = true;
}
if ( metadata.storedInArtifactVersionDirectory() )
{
- hasFailures |= checkSnapshotMetadata( metadata, repository, reporter );
+ checkSnapshotMetadata( metadata, repository, reporter );
}
else
{
- if ( !checkMetadataVersions( metadata, repository, reporter ) )
- {
- hasFailures = true;
- }
+ checkMetadataVersions( metadata, repository, reporter );
try
{
- if ( checkRepositoryVersions( metadata, repository, reporter ) )
- {
- hasFailures = true;
- }
+ checkRepositoryVersions( metadata, repository, reporter );
}
catch ( IOException e )
{
- throw new ReportProcessorException( "Error getting versions", e );
+ reporter.addWarning( metadata, "Error getting plugin artifact directories versions: " + e );
}
}
}
-
- if ( !hasFailures )
- {
- reporter.addSuccess( metadata );
- }
}
/**
@@ -125,14 +110,12 @@
*
* @param metadata the metadata to be processed.
* @param repository the repository where the metadata was encountered
- * @param reporter the ArtifactReporter to receive processing results
+ * @param reporter the ReportingDatabase to receive processing results
*/
- private boolean checkPluginMetadata( RepositoryMetadata metadata, ArtifactRepository repository,
- ArtifactReporter reporter )
+ private void checkPluginMetadata( RepositoryMetadata metadata, ArtifactRepository repository,
+ ReportingDatabase reporter )
throws IOException
{
- boolean hasFailures = false;
-
File metadataDir =
new File( repository.getBasedir(), repository.pathOfRemoteRepositoryMetadata( metadata ) ).getParentFile();
List pluginDirs = getArtifactIdFiles( metadataDir );
@@ -145,22 +128,20 @@
String artifactId = plugin.getArtifactId();
if ( artifactId == null || artifactId.length() == 0 )
{
- reporter.addFailure( metadata, "Missing or empty artifactId in group metadata." );
- hasFailures = true;
+ reporter.addFailure( metadata,
+ "Missing or empty artifactId in group metadata for plugin " + plugin.getPrefix() );
}
String prefix = plugin.getPrefix();
if ( prefix == null || prefix.length() == 0 )
{
reporter.addFailure( metadata, "Missing or empty plugin prefix for artifactId " + artifactId + "." );
- hasFailures = true;
}
else
{
if ( prefixes.containsKey( prefix ) )
{
reporter.addFailure( metadata, "Duplicate plugin prefix found: " + prefix + "." );
- hasFailures = true;
}
else
{
@@ -174,7 +155,6 @@
if ( !pluginDirs.contains( pluginDir ) )
{
reporter.addFailure( metadata, "Metadata plugin " + artifactId + " not found in the repository" );
- hasFailures = true;
}
else
{
@@ -191,10 +171,7 @@
reporter.addFailure( metadata, "Plugin " + plugin.getName() + " is present in the repository but " +
"missing in the metadata." );
}
- hasFailures = true;
}
-
- return hasFailures;
}
/**
@@ -202,16 +179,14 @@
*
* @param metadata the metadata to be processed.
* @param repository the repository where the metadata was encountered
- * @param reporter the ArtifactReporter to receive processing results
+ * @param reporter the ReportingDatabase to receive processing results
*/
- private boolean checkSnapshotMetadata( RepositoryMetadata metadata, ArtifactRepository repository,
- ArtifactReporter reporter )
+ private void checkSnapshotMetadata( RepositoryMetadata metadata, ArtifactRepository repository,
+ ReportingDatabase reporter )
{
RepositoryQueryLayer repositoryQueryLayer =
repositoryQueryLayerFactory.createRepositoryQueryLayer( repository );
- boolean hasFailures = false;
-
Snapshot snapshot = metadata.getMetadata().getVersioning().getSnapshot();
String version = StringUtils.replace( metadata.getBaseVersion(), Artifact.SNAPSHOT_VERSION,
@@ -223,10 +198,7 @@
if ( !repositoryQueryLayer.containsArtifact( artifact ) )
{
reporter.addFailure( metadata, "Snapshot artifact " + version + " does not exist." );
- hasFailures = true;
}
-
- return hasFailures;
}
/**
@@ -234,15 +206,14 @@
*
* @param metadata the metadata to be processed.
* @param repository the repository where the metadata was encountered
- * @param reporter the ArtifactReporter to receive processing results
+ * @param reporter the ReportingDatabase to receive processing results
*/
- private boolean checkMetadataVersions( RepositoryMetadata metadata, ArtifactRepository repository,
- ArtifactReporter reporter )
+ private void checkMetadataVersions( RepositoryMetadata metadata, ArtifactRepository repository,
+ ReportingDatabase reporter )
{
RepositoryQueryLayer repositoryQueryLayer =
repositoryQueryLayerFactory.createRepositoryQueryLayer( repository );
- boolean hasFailures = false;
Versioning versioning = metadata.getMetadata().getVersioning();
for ( Iterator versions = versioning.getVersions().iterator(); versions.hasNext(); )
{
@@ -255,10 +226,8 @@
{
reporter.addFailure( metadata, "Artifact version " + version + " is present in metadata but " +
"missing in the repository." );
- hasFailures = true;
}
}
- return hasFailures;
}
/**
@@ -267,13 +236,12 @@
*
* @param metadata the metadata to be processed.
* @param repository the repository where the metadata was encountered
- * @param reporter the ArtifactReporter to receive processing results
+ * @param reporter the ReportingDatabase to receive processing results
*/
- private boolean checkRepositoryVersions( RepositoryMetadata metadata, ArtifactRepository repository,
- ArtifactReporter reporter )
+ private void checkRepositoryVersions( RepositoryMetadata metadata, ArtifactRepository repository,
+ ReportingDatabase reporter )
throws IOException
{
- boolean hasFailures = false;
Versioning versioning = metadata.getMetadata().getVersioning();
File versionsDir =
new File( repository.getBasedir(), repository.pathOfRemoteRepositoryMetadata( metadata ) ).getParentFile();
@@ -286,10 +254,8 @@
{
reporter.addFailure( metadata, "Artifact version " + version + " found in the repository but " +
"missing in the metadata." );
- hasFailures = true;
}
}
- return hasFailures;
}
/**
@@ -304,17 +270,20 @@
{
List artifactIdFiles = new ArrayList();
- List fileArray = new ArrayList( Arrays.asList( groupIdDir.listFiles() ) );
- for ( Iterator files = fileArray.iterator(); files.hasNext(); )
+ File[] files = groupIdDir.listFiles();
+ if ( files != null )
{
- File artifactDir = (File) files.next();
-
- if ( artifactDir.isDirectory() )
+ for ( Iterator i = Arrays.asList( files ).iterator(); i.hasNext(); )
{
- List versions = FileUtils.getFileNames( artifactDir, "*/*.pom", null, false );
- if ( versions.size() > 0 )
+ File artifactDir = (File) i.next();
+
+ if ( artifactDir.isDirectory() )
{
- artifactIdFiles.add( artifactDir );
+ List versions = FileUtils.getFileNames( artifactDir, "*/*.pom", null, false );
+ if ( versions.size() > 0 )
+ {
+ artifactIdFiles.add( artifactDir );
+ }
}
}
}
Modified: maven/archiva/trunk/archiva-reports-standard/src/main/java/org/apache/maven/archiva/reporting/ChecksumArtifactReportProcessor.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-reports-standard/src/main/java/org/apache/maven/archiva/reporting/ChecksumArtifactReportProcessor.java?view=diff&rev=441377&r1=441376&r2=441377
==============================================================================
--- maven/archiva/trunk/archiva-reports-standard/src/main/java/org/apache/maven/archiva/reporting/ChecksumArtifactReportProcessor.java (original)
+++ maven/archiva/trunk/archiva-reports-standard/src/main/java/org/apache/maven/archiva/reporting/ChecksumArtifactReportProcessor.java Thu Sep 7 22:16:51 2006
@@ -45,9 +45,10 @@
*/
private Digester md5Digester;
- public void processArtifact( Model model, Artifact artifact, ArtifactReporter reporter,
- ArtifactRepository repository )
+ public void processArtifact( Artifact artifact, Model model, ReportingDatabase reporter )
{
+ ArtifactRepository repository = artifact.getRepository();
+
if ( !"file".equals( repository.getProtocol() ) )
{
// We can't check other types of URLs yet. Need to use Wagon, with an exists() method.
@@ -59,12 +60,13 @@
String path = repository.pathOf( artifact );
File file = new File( repository.getBasedir(), path );
- verifyChecksum( repository, path + ".md5", file, md5Digester, reporter, artifact );
+ // TODO: make md5 configurable
+// verifyChecksum( repository, path + ".md5", file, md5Digester, reporter, artifact );
verifyChecksum( repository, path + ".sha1", file, sha1Digester, reporter, artifact );
}
private void verifyChecksum( ArtifactRepository repository, String path, File file, Digester digester,
- ArtifactReporter reporter, Artifact artifact )
+ ReportingDatabase reporter, Artifact artifact )
{
File checksumFile = new File( repository.getBasedir(), path );
if ( checksumFile.exists() )
@@ -72,8 +74,6 @@
try
{
digester.verify( file, FileUtils.fileRead( checksumFile ) );
-
- reporter.addSuccess( artifact );
}
catch ( DigesterException e )
{
Modified: maven/archiva/trunk/archiva-reports-standard/src/main/java/org/apache/maven/archiva/reporting/ChecksumMetadataReportProcessor.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-reports-standard/src/main/java/org/apache/maven/archiva/reporting/ChecksumMetadataReportProcessor.java?view=diff&rev=441377&r1=441376&r2=441377
==============================================================================
--- maven/archiva/trunk/archiva-reports-standard/src/main/java/org/apache/maven/archiva/reporting/ChecksumMetadataReportProcessor.java (original)
+++ maven/archiva/trunk/archiva-reports-standard/src/main/java/org/apache/maven/archiva/reporting/ChecksumMetadataReportProcessor.java Thu Sep 7 22:16:51 2006
@@ -48,7 +48,8 @@
* Validate the checksums of the metadata. Get the metadata file from the
* repository then validate the checksum.
*/
- public void processMetadata( RepositoryMetadata metadata, ArtifactRepository repository, ArtifactReporter reporter )
+ public void processMetadata( RepositoryMetadata metadata, ArtifactRepository repository,
+ ReportingDatabase reporter )
{
if ( !"file".equals( repository.getProtocol() ) )
{
@@ -66,7 +67,7 @@
}
private void verifyChecksum( ArtifactRepository repository, String path, File file, Digester digester,
- ArtifactReporter reporter, RepositoryMetadata metadata )
+ ReportingDatabase reporter, RepositoryMetadata metadata )
{
File checksumFile = new File( repository.getBasedir(), path );
if ( checksumFile.exists() )
@@ -74,8 +75,6 @@
try
{
digester.verify( file, FileUtils.fileRead( checksumFile ) );
-
- reporter.addSuccess( metadata );
}
catch ( DigesterException e )
{
Added: maven/archiva/trunk/archiva-reports-standard/src/main/java/org/apache/maven/archiva/reporting/DefaultReportingStore.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-reports-standard/src/main/java/org/apache/maven/archiva/reporting/DefaultReportingStore.java?view=auto&rev=441377
==============================================================================
--- maven/archiva/trunk/archiva-reports-standard/src/main/java/org/apache/maven/archiva/reporting/DefaultReportingStore.java (added)
+++ maven/archiva/trunk/archiva-reports-standard/src/main/java/org/apache/maven/archiva/reporting/DefaultReportingStore.java Thu Sep 7 22:16:51 2006
@@ -0,0 +1,123 @@
+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.archiva.reporting.model.io.xpp3.ReportingXpp3Reader;
+import org.apache.maven.archiva.reporting.model.io.xpp3.ReportingXpp3Writer;
+import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.codehaus.plexus.logging.AbstractLogEnabled;
+import org.codehaus.plexus.util.IOUtil;
+import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileReader;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * Load and store the reports. No synchronization is used, but it is unnecessary as the old object
+ * can continue to be used.
+ *
+ * @author <a href="mailto:brett@apache.org">Brett Porter</a>
+ * @todo would be great for plexus to do this for us - so the configuration would be a component itself rather than this store
+ * @todo support other implementations than XML file
+ * @plexus.component
+ */
+public class DefaultReportingStore
+ extends AbstractLogEnabled
+ implements ReportingStore
+{
+ /**
+ * The cached reports for given repositories.
+ */
+ private Map/*<ArtifactRepository,ReportingDatabase>*/ reports = new HashMap();
+
+ public ReportingDatabase getReportsFromStore( ArtifactRepository repository )
+ throws ReportingStoreException
+ {
+ ReportingDatabase database = (ReportingDatabase) reports.get( repository );
+
+ if ( database == null )
+ {
+ ReportingXpp3Reader reader = new ReportingXpp3Reader();
+
+ File file = new File( repository.getBasedir(), "report-database.xml" );
+
+ FileReader fileReader = null;
+ try
+ {
+ fileReader = new FileReader( file );
+ }
+ catch ( FileNotFoundException e )
+ {
+ database = new ReportingDatabase();
+ }
+
+ if ( database == null )
+ {
+ getLogger().info( "Reading report database from " + file );
+ try
+ {
+ database = new ReportingDatabase( reader.read( fileReader, false ) );
+ }
+ catch ( IOException e )
+ {
+ throw new ReportingStoreException( e.getMessage(), e );
+ }
+ catch ( XmlPullParserException e )
+ {
+ throw new ReportingStoreException( e.getMessage(), e );
+ }
+ finally
+ {
+ IOUtil.close( fileReader );
+ }
+ }
+
+ reports.put( repository, database );
+ }
+ return database;
+ }
+
+ public void storeReports( ReportingDatabase database, ArtifactRepository repository )
+ throws ReportingStoreException
+ {
+ ReportingXpp3Writer writer = new ReportingXpp3Writer();
+
+ File file = new File( repository.getBasedir(), "report-database.xml" );
+ getLogger().info( "Writing reports to " + file );
+ FileWriter fileWriter = null;
+ try
+ {
+ file.getParentFile().mkdirs();
+
+ fileWriter = new FileWriter( file );
+ writer.write( fileWriter, database.getReporting() );
+ }
+ catch ( IOException e )
+ {
+ throw new ReportingStoreException( e.getMessage(), e );
+ }
+ finally
+ {
+ IOUtil.close( fileWriter );
+ }
+ }
+}
Propchange: maven/archiva/trunk/archiva-reports-standard/src/main/java/org/apache/maven/archiva/reporting/DefaultReportingStore.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: maven/archiva/trunk/archiva-reports-standard/src/main/java/org/apache/maven/archiva/reporting/DependencyArtifactReportProcessor.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-reports-standard/src/main/java/org/apache/maven/archiva/reporting/DependencyArtifactReportProcessor.java?view=diff&rev=441377&r1=441376&r2=441377
==============================================================================
--- maven/archiva/trunk/archiva-reports-standard/src/main/java/org/apache/maven/archiva/reporting/DependencyArtifactReportProcessor.java (original)
+++ maven/archiva/trunk/archiva-reports-standard/src/main/java/org/apache/maven/archiva/reporting/DependencyArtifactReportProcessor.java Thu Sep 7 22:16:51 2006
@@ -20,12 +20,12 @@
import org.apache.maven.archiva.layer.RepositoryQueryLayerFactory;
import org.apache.maven.artifact.Artifact;
import org.apache.maven.artifact.factory.ArtifactFactory;
-import org.apache.maven.artifact.repository.ArtifactRepository;
import org.apache.maven.artifact.versioning.InvalidVersionSpecificationException;
import org.apache.maven.artifact.versioning.VersionRange;
import org.apache.maven.model.Dependency;
import org.apache.maven.model.Model;
+import java.text.MessageFormat;
import java.util.Iterator;
import java.util.List;
@@ -45,31 +45,29 @@
*/
private RepositoryQueryLayerFactory layerFactory;
- public void processArtifact( Model model, Artifact artifact, ArtifactReporter reporter,
- ArtifactRepository repository )
+ public void processArtifact( Artifact artifact, Model model, ReportingDatabase reporter )
{
- RepositoryQueryLayer queryLayer = layerFactory.createRepositoryQueryLayer( repository );
+ RepositoryQueryLayer queryLayer = layerFactory.createRepositoryQueryLayer( artifact.getRepository() );
processArtifact( artifact, reporter, queryLayer );
- List dependencies = model.getDependencies();
- processDependencies( dependencies, reporter, queryLayer );
+ if ( model != null )
+ {
+ List dependencies = model.getDependencies();
+ processDependencies( dependencies, reporter, queryLayer, artifact );
+ }
}
- private void processArtifact( Artifact artifact, ArtifactReporter reporter,
+ private void processArtifact( Artifact artifact, ReportingDatabase reporter,
RepositoryQueryLayer repositoryQueryLayer )
{
- if ( repositoryQueryLayer.containsArtifact( artifact ) )
- {
- reporter.addSuccess( artifact );
- }
- else
+ if ( !repositoryQueryLayer.containsArtifact( artifact ) )
{
- reporter.addFailure( artifact, ArtifactReporter.ARTIFACT_NOT_FOUND );
+ reporter.addFailure( artifact, "Artifact does not exist in the repository" );
}
}
- private void processDependencies( List dependencies, ArtifactReporter reporter,
- RepositoryQueryLayer repositoryQueryLayer )
+ private void processDependencies( List dependencies, ReportingDatabase reporter,
+ RepositoryQueryLayer repositoryQueryLayer, Artifact sourceArtifact )
{
if ( dependencies.size() > 0 )
{
@@ -78,23 +76,24 @@
{
Dependency dependency = (Dependency) iterator.next();
- Artifact artifact = null;
try
{
- artifact = createArtifact( dependency );
+ Artifact artifact = createArtifact( dependency );
- if ( repositoryQueryLayer.containsArtifact( artifact ) )
- {
- reporter.addSuccess( artifact );
- }
- else
+ if ( !repositoryQueryLayer.containsArtifact( artifact ) )
{
- reporter.addFailure( artifact, ArtifactReporter.DEPENDENCY_NOT_FOUND );
+ String reason = MessageFormat.format(
+ "Artifact''s dependency {0} does not exist in the repository",
+ new String[]{dependency.toString()} );
+ reporter.addFailure( sourceArtifact, reason );
}
}
catch ( InvalidVersionSpecificationException e )
{
- reporter.addFailure( artifact, ArtifactReporter.DEPENDENCY_INVALID_VERSION );
+ String reason = MessageFormat.format( "Artifact''s dependency {0} contains an invalid version {1}",
+ new String[]{dependency.toString(),
+ dependency.getVersion()} );
+ reporter.addFailure( sourceArtifact, reason );
}
}
}
Modified: maven/archiva/trunk/archiva-reports-standard/src/main/java/org/apache/maven/archiva/reporting/DuplicateArtifactFileReportProcessor.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-reports-standard/src/main/java/org/apache/maven/archiva/reporting/DuplicateArtifactFileReportProcessor.java?view=diff&rev=441377&r1=441376&r2=441377
==============================================================================
--- maven/archiva/trunk/archiva-reports-standard/src/main/java/org/apache/maven/archiva/reporting/DuplicateArtifactFileReportProcessor.java (original)
+++ maven/archiva/trunk/archiva-reports-standard/src/main/java/org/apache/maven/archiva/reporting/DuplicateArtifactFileReportProcessor.java Thu Sep 7 22:16:51 2006
@@ -58,62 +58,54 @@
*/
private String indexDirectory;
- public void processArtifact( Model model, Artifact artifact, ArtifactReporter reporter,
- ArtifactRepository repository )
- throws ReportProcessorException
+ public void processArtifact( Artifact artifact, Model model, ReportingDatabase reporter )
{
- if ( artifact.getFile() != null )
+ ArtifactRepository repository = artifact.getRepository();
+ // TODO! always null currently, need to configure this properly
+ if ( artifact.getFile() != null && indexDirectory != null )
{
RepositoryArtifactIndex index = indexFactory.createStandardIndex( new File( indexDirectory ) );
- String checksum;
+ String checksum = null;
try
{
checksum = digester.calc( artifact.getFile() );
}
catch ( DigesterException e )
{
- throw new ReportProcessorException( "Failed to generate checksum", e );
+ reporter.addWarning( artifact, "Unable to generate checksum for " + artifact.getFile() + ": " + e );
}
- try
+ if ( checksum != null )
{
- List results = index.search( new LuceneQuery(
- new TermQuery( new Term( StandardIndexRecordFields.MD5, checksum.toLowerCase() ) ) ) );
-
- if ( results.isEmpty() )
- {
- reporter.addSuccess( artifact );
- }
- else
+ try
{
- boolean hasDuplicates = false;
- for ( Iterator i = results.iterator(); i.hasNext(); )
- {
- StandardArtifactIndexRecord result = (StandardArtifactIndexRecord) i.next();
+ List results = index.search( new LuceneQuery(
+ new TermQuery( new Term( StandardIndexRecordFields.MD5, checksum.toLowerCase() ) ) ) );
- //make sure it is not the same artifact
- if ( !result.getFilename().equals( repository.pathOf( artifact ) ) )
+ if ( !results.isEmpty() )
+ {
+ for ( Iterator i = results.iterator(); i.hasNext(); )
{
- //report only duplicates from the same groupId
- String groupId = artifact.getGroupId();
- if ( groupId.equals( result.getGroupId() ) )
+ StandardArtifactIndexRecord result = (StandardArtifactIndexRecord) i.next();
+
+ //make sure it is not the same artifact
+ if ( !result.getFilename().equals( repository.pathOf( artifact ) ) )
{
- hasDuplicates = true;
- reporter.addFailure( artifact, "Found duplicate for " + artifact.getId() );
+ //report only duplicates from the same groupId
+ String groupId = artifact.getGroupId();
+ if ( groupId.equals( result.getGroupId() ) )
+ {
+ reporter.addFailure( artifact, "Found duplicate for " + artifact.getId() );
+ }
}
}
}
-
- if ( !hasDuplicates )
- {
- reporter.addSuccess( artifact );
- }
}
- }
- catch ( RepositoryIndexSearchException e )
- {
- throw new ReportProcessorException( "Failed to search in index", e );
+ catch ( RepositoryIndexSearchException e )
+ {
+ reporter.addWarning( artifact, "Failed to search in index" + e );
+ }
}
}
else
Modified: maven/archiva/trunk/archiva-reports-standard/src/main/java/org/apache/maven/archiva/reporting/InvalidPomArtifactReportProcessor.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-reports-standard/src/main/java/org/apache/maven/archiva/reporting/InvalidPomArtifactReportProcessor.java?view=diff&rev=441377&r1=441376&r2=441377
==============================================================================
--- maven/archiva/trunk/archiva-reports-standard/src/main/java/org/apache/maven/archiva/reporting/InvalidPomArtifactReportProcessor.java (original)
+++ maven/archiva/trunk/archiva-reports-standard/src/main/java/org/apache/maven/archiva/reporting/InvalidPomArtifactReportProcessor.java Thu Sep 7 22:16:51 2006
@@ -38,14 +38,13 @@
implements ArtifactReportProcessor
{
/**
- * @param model
- * @param artifact The pom xml file to be validated, passed as an artifact object.
- * @param reporter The artifact reporter object.
- * @param repository the repository where the artifact is located.
+ * @param artifact The pom xml file to be validated, passed as an artifact object.
+ * @param reporter The artifact reporter object.
*/
- public void processArtifact( Model model, Artifact artifact, ArtifactReporter reporter,
- ArtifactRepository repository )
+ public void processArtifact( Artifact artifact, Model model, ReportingDatabase reporter )
{
+ ArtifactRepository repository = artifact.getRepository();
+
if ( !"file".equals( repository.getProtocol() ) )
{
// We can't check other types of URLs yet. Need to use Wagon, with an exists() method.
@@ -71,7 +70,6 @@
{
reader = new FileReader( f );
pomReader.read( reader );
- reporter.addSuccess( artifact );
}
catch ( XmlPullParserException e )
{
@@ -97,5 +95,4 @@
reporter.addWarning( artifact, "The artifact is not a pom xml file." );
}
}
-
}
Modified: maven/archiva/trunk/archiva-reports-standard/src/main/java/org/apache/maven/archiva/reporting/LocationArtifactReportProcessor.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-reports-standard/src/main/java/org/apache/maven/archiva/reporting/LocationArtifactReportProcessor.java?view=diff&rev=441377&r1=441376&r2=441377
==============================================================================
--- maven/archiva/trunk/archiva-reports-standard/src/main/java/org/apache/maven/archiva/reporting/LocationArtifactReportProcessor.java (original)
+++ maven/archiva/trunk/archiva-reports-standard/src/main/java/org/apache/maven/archiva/reporting/LocationArtifactReportProcessor.java Thu Sep 7 22:16:51 2006
@@ -21,6 +21,7 @@
import org.apache.maven.artifact.repository.ArtifactRepository;
import org.apache.maven.model.Model;
import org.apache.maven.model.io.xpp3.MavenXpp3Reader;
+import org.apache.maven.project.MavenProjectBuilder;
import org.codehaus.plexus.util.IOUtil;
import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
@@ -29,6 +30,9 @@
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Set;
import java.util.jar.JarEntry;
import java.util.jar.JarFile;
@@ -47,6 +51,15 @@
*/
private ArtifactFactory artifactFactory;
+ // TODO: share with other code with the same
+ private static final Set JAR_FILE_TYPES =
+ new HashSet( Arrays.asList( new String[]{"jar", "war", "par", "ejb", "ear", "rar", "sar"} ) );
+
+ /**
+ * @plexus.requirement
+ */
+ private MavenProjectBuilder projectBuilder;
+
/**
* Check whether the artifact is in its proper location. The location of the artifact
* is validated first against the groupId, artifactId and versionId in the specified model
@@ -54,16 +67,11 @@
* included in the package. If a model exists inside the package, then check if the artifact's
* location is valid based on the location specified in the pom. Check if the both the location
* specified in the file system pom and in the pom included in the package is the same.
- *
- * @param model Represents the pom in the file system.
- * @param artifact
- * @param reporter
- * @param repository
*/
- public void processArtifact( Model model, Artifact artifact, ArtifactReporter reporter,
- ArtifactRepository repository )
- throws ReportProcessorException
+ public void processArtifact( Artifact artifact, Model model, ReportingDatabase reporter )
{
+ ArtifactRepository repository = artifact.getRepository();
+
if ( !"file".equals( repository.getProtocol() ) )
{
// We can't check other types of URLs yet. Need to use Wagon, with an exists() method.
@@ -71,24 +79,33 @@
"Can't process repository '" + repository.getUrl() + "'. Only file based repositories are supported" );
}
- //check if the artifact is located in its proper location based on the info
- //specified in the model object/pom
- Artifact modelArtifact = artifactFactory.createBuildArtifact( model.getGroupId(), model.getArtifactId(),
- model.getVersion(), model.getPackaging() );
-
- boolean failed = false;
- String modelPath = repository.pathOf( modelArtifact );
String artifactPath = repository.pathOf( artifact );
- if ( modelPath.equals( artifactPath ) )
+
+ if ( model != null )
{
- //get the location of the artifact itself
- File file = new File( repository.getBasedir(), artifactPath );
+ //check if the artifact is located in its proper location based on the info
+ //specified in the model object/pom
+ Artifact modelArtifact = artifactFactory.createBuildArtifact( model.getGroupId(), model.getArtifactId(),
+ model.getVersion(), model.getPackaging() );
+
+ String modelPath = repository.pathOf( modelArtifact );
+ if ( !modelPath.equals( artifactPath ) )
+ {
+ reporter.addFailure( artifact,
+ "The artifact is out of place. It does not match the specified location in the repository pom." );
+ }
+ }
+
+ //get the location of the artifact itself
+ File file = new File( repository.getBasedir(), artifactPath );
- if ( file.exists() )
+ if ( file.exists() )
+ {
+ if ( JAR_FILE_TYPES.contains( artifact.getType() ) )
{
//unpack the artifact (using the groupId, artifactId & version specified in the artifact object itself
//check if the pom is included in the package
- Model extractedModel = readArtifactModel( file, artifact.getGroupId(), artifact.getArtifactId() );
+ Model extractedModel = readArtifactModel( file, artifact, reporter );
if ( extractedModel != null )
{
@@ -100,39 +117,18 @@
{
reporter.addFailure( artifact,
"The artifact is out of place. It does not match the specified location in the packaged pom." );
- failed = true;
}
}
}
- else
- {
- reporter.addFailure( artifact,
- "The artifact is out of place. It does not exist at the specified location in the repository pom." );
- failed = true;
- }
}
else
{
reporter.addFailure( artifact,
- "The artifact is out of place. It does not match the specified location in the repository pom." );
- failed = true;
- }
-
- if ( !failed )
- {
- reporter.addSuccess( artifact );
+ "The artifact is out of place. It does not exist at the specified location in the repository pom." );
}
}
- /**
- * Extract the contents of the artifact/jar file.
- *
- * @param file
- * @param groupId
- * @param artifactId
- */
- private Model readArtifactModel( File file, String groupId, String artifactId )
- throws ReportProcessorException
+ private Model readArtifactModel( File file, Artifact artifact, ReportingDatabase reporter )
{
Model model = null;
@@ -142,23 +138,31 @@
jar = new JarFile( file );
//Get the entry and its input stream.
- JarEntry entry = jar.getJarEntry( "META-INF/maven/" + groupId + "/" + artifactId + "/pom.xml" );
+ JarEntry entry = jar.getJarEntry(
+ "META-INF/maven/" + artifact.getGroupId() + "/" + artifact.getArtifactId() + "/pom.xml" );
// If the entry is not null, extract it.
if ( entry != null )
{
model = readModel( jar.getInputStream( entry ) );
+
+ if ( model.getGroupId() == null )
+ {
+ model.setGroupId( model.getParent().getGroupId() );
+ }
+ if ( model.getVersion() == null )
+ {
+ model.setVersion( model.getParent().getVersion() );
+ }
}
}
catch ( IOException e )
{
- // TODO: should just warn and continue!
- throw new ReportProcessorException( "Unable to read artifact to extract model", e );
+ reporter.addWarning( artifact, "Unable to read artifact to extract model: " + e );
}
catch ( XmlPullParserException e )
{
- // TODO: should just warn and continue!
- throw new ReportProcessorException( "Unable to read artifact to extract model", e );
+ reporter.addWarning( artifact, "Unable to parse extracted model: " + e );
}
finally
{
Modified: maven/archiva/trunk/archiva-reports-standard/src/main/java/org/apache/maven/archiva/reporting/MetadataReportProcessor.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-reports-standard/src/main/java/org/apache/maven/archiva/reporting/MetadataReportProcessor.java?view=diff&rev=441377&r1=441376&r2=441377
==============================================================================
--- maven/archiva/trunk/archiva-reports-standard/src/main/java/org/apache/maven/archiva/reporting/MetadataReportProcessor.java (original)
+++ maven/archiva/trunk/archiva-reports-standard/src/main/java/org/apache/maven/archiva/reporting/MetadataReportProcessor.java Thu Sep 7 22:16:51 2006
@@ -26,6 +26,5 @@
{
String ROLE = MetadataReportProcessor.class.getName();
- void processMetadata( RepositoryMetadata metadata, ArtifactRepository repository, ArtifactReporter reporter )
- throws ReportProcessorException;
+ void processMetadata( RepositoryMetadata metadata, ArtifactRepository repository, ReportingDatabase reporter );
}