mirror of https://github.com/apache/archiva.git
add some design notes, and take some other notes about design deficiencies that need to be corrected
git-svn-id: https://svn.apache.org/repos/asf/maven/repository-manager/trunk@424881 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
e1fcc485de
commit
e840139821
|
@ -111,6 +111,7 @@ public class IndexerTask
|
|||
indexArtifact( artifacts, indexPath, defaultRepository );
|
||||
}
|
||||
|
||||
// TODO: I believe this is incorrect, since it only discovers standalone POMs, not the individual artifacts!
|
||||
List models = discoverer.discoverStandalonePoms( defaultRepository, blacklistedPatterns, includeSnapshots );
|
||||
if ( !models.isEmpty() )
|
||||
{
|
||||
|
|
|
@ -26,6 +26,9 @@ import java.util.List;
|
|||
*
|
||||
* @author John Casey
|
||||
* @author Brett Porter
|
||||
* @todo do we want blacklisted patterns in another form? Part of the object construction?
|
||||
* @todo should includeSnapshots be configuration on the component? If not, should the methods be changed to include alternates for both possibilities (discoverReleaseArtifacts, discoverReleaseAndSnapshotArtifacts)?
|
||||
* @todo instead of a returned list, should a listener be passed in?
|
||||
*/
|
||||
public interface ArtifactDiscoverer
|
||||
extends Discoverer
|
||||
|
@ -39,9 +42,6 @@ public interface ArtifactDiscoverer
|
|||
* @param blacklistedPatterns pattern that lists any files to prevent from being included when scanning
|
||||
* @param includeSnapshots whether to discover snapshots
|
||||
* @return the list of artifacts discovered
|
||||
* @todo do we want blacklisted patterns in another form? Part of the object construction?
|
||||
* @todo should includeSnapshots be configuration on the component?
|
||||
* @todo instead of a returned list, should a listener be passed in?
|
||||
*/
|
||||
List discoverArtifacts( ArtifactRepository repository, String blacklistedPatterns, boolean includeSnapshots );
|
||||
|
||||
|
@ -52,9 +52,7 @@ public interface ArtifactDiscoverer
|
|||
* @param blacklistedPatterns pattern that lists any files to prevent from being included when scanning
|
||||
* @param includeSnapshots whether to discover snapshots
|
||||
* @return the list of artifacts discovered
|
||||
* @todo do we want blacklisted patterns in another form? Part of the object construction?
|
||||
* @todo should includeSnapshots be configuration on the component?
|
||||
* @todo instead of a returned list, should a listener be passed in?
|
||||
* @todo why do we need this? shouldn't the discovered artifacts above link to the related POM, and include standalone POMs? Why would we need just this list?
|
||||
*/
|
||||
List discoverStandalonePoms( ArtifactRepository repository, String blacklistedPatterns, boolean includeSnapshots );
|
||||
|
||||
|
@ -63,6 +61,7 @@ public interface ArtifactDiscoverer
|
|||
*
|
||||
* @param path the path
|
||||
* @return the artifact
|
||||
* @throws DiscovererException if the file is not a valid artifact
|
||||
* @todo this should be in maven-artifact
|
||||
*/
|
||||
Artifact buildArtifact( String path )
|
||||
|
|
|
@ -23,8 +23,8 @@ import org.apache.maven.artifact.repository.metadata.Metadata;
|
|||
import org.apache.maven.artifact.repository.metadata.RepositoryMetadata;
|
||||
import org.apache.maven.artifact.repository.metadata.SnapshotArtifactRepositoryMetadata;
|
||||
import org.apache.maven.artifact.repository.metadata.io.xpp3.MetadataXpp3Reader;
|
||||
import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
|
||||
import org.codehaus.plexus.util.StringUtils;
|
||||
import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
|
@ -50,17 +50,14 @@ public class DefaultMetadataDiscoverer
|
|||
{
|
||||
/**
|
||||
* Standard patterns to include in discovery of metadata files.
|
||||
*
|
||||
* @todo do we really need all these paths? Add tests for all 3 levels and confirm only 2 are needed.
|
||||
*/
|
||||
private static final String[] STANDARD_DISCOVERY_INCLUDES = {"**/*-metadata.xml",
|
||||
"**/*/*-metadata.xml",
|
||||
"**/*/*/*-metadata.xml",
|
||||
"**/*-metadata-*.xml",
|
||||
"**/*/*-metadata-*.xml",
|
||||
"**/*/*/*-metadata-*.xml"
|
||||
};
|
||||
private static final String[] STANDARD_DISCOVERY_INCLUDES = {"**/*-metadata.xml", "**/*/*-metadata.xml",
|
||||
"**/*/*/*-metadata.xml", "**/*-metadata-*.xml", "**/*/*-metadata-*.xml", "**/*/*/*-metadata-*.xml"};
|
||||
|
||||
/**
|
||||
* @see org.apache.maven.repository.discovery.MetadataDiscoverer#discoverMetadata(java.io.File, String)
|
||||
* @see org.apache.maven.repository.discovery.MetadataDiscoverer#discoverMetadata(java.io.File,String)
|
||||
*/
|
||||
public List discoverMetadata( File repositoryBase, String blacklistedPatterns )
|
||||
{
|
||||
|
@ -112,8 +109,8 @@ public class DefaultMetadataDiscoverer
|
|||
catch ( MalformedURLException e )
|
||||
{
|
||||
// shouldn't happen
|
||||
throw new DiscovererException( "Error constructing metadata file '" + repoPath + "': " +
|
||||
e.getMessage(), e );
|
||||
throw new DiscovererException( "Error constructing metadata file '" + repoPath + "': " + e.getMessage(),
|
||||
e );
|
||||
}
|
||||
catch ( IOException e )
|
||||
{
|
||||
|
@ -133,7 +130,7 @@ public class DefaultMetadataDiscoverer
|
|||
/**
|
||||
* Builds a RepositoryMetadata object from a Metadata object and its path
|
||||
*
|
||||
* @param m Metadata
|
||||
* @param m Metadata
|
||||
* @param metadataPath path
|
||||
* @return RepositoryMetadata if the parameters represent one; null if not
|
||||
*/
|
||||
|
|
|
@ -0,0 +1,37 @@
|
|||
-----
|
||||
Discoverer Design
|
||||
-----
|
||||
Brett Porter
|
||||
-----
|
||||
24 July 2006
|
||||
-----
|
||||
|
||||
Discoverer Design
|
||||
|
||||
The artifact discoverer is designed to traverse the paths in the repository and identify files that are part of
|
||||
a legitimate artifact.
|
||||
|
||||
There are two plexus components available:
|
||||
|
||||
* {{{../apidocs/org/apache/maven/repository/discovery/ArtifactDiscoverer.html} ArtifactDiscoverer}}
|
||||
|
||||
* {{{../apidocs/org/apache/maven/repository/discovery/MetadataDiscoverer.html} MetadataDiscoverer}}
|
||||
|
||||
Each of these components currently have an implementation for the both <<<legacy>>> and <<<default>>> repository
|
||||
layouts.
|
||||
|
||||
The artifact discoverer will find all artifacts in the repository, while metadata discovery finds any
|
||||
<<<maven-metadata.xml>>> files (both remote and local repository formats).
|
||||
|
||||
* Limitations
|
||||
|
||||
* In the artifact discoverer, POMs will be identified as separate artifacts to their related artifacts, as will each
|
||||
individual derivative artifact at present. Later, these will be linked - see
|
||||
{{{http://jira.codehaus.org/browse/MRM-40} MRM-40}}.
|
||||
|
||||
* Currently, deleted artifacts are not tracked. This requires a separate event - see
|
||||
{{{http://jira.codehaus.org/browse/MRM-37} MRM-37}}.
|
||||
|
||||
* Currently, all artifacts are discovered instead of just those changed since the last discovery for a particular
|
||||
operation - see {{{http://jira.codehaus.org/browse/MRM-125} MRM-125}}.
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
<!--
|
||||
~ 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.
|
||||
-->
|
||||
|
||||
<project>
|
||||
<body>
|
||||
<menu name="Design Documentation">
|
||||
<item name="Discoverer Design" href="/design.html"/>
|
||||
</menu>
|
||||
</body>
|
||||
</project>
|
|
@ -605,6 +605,42 @@ public class DefaultArtifactDiscovererTest
|
|||
assertEquals( createArtifact( "javax.sql", "jdbc", "2.0" ), artifact );
|
||||
}
|
||||
|
||||
public void testUpdatedInRepository()
|
||||
throws ComponentLookupException
|
||||
{
|
||||
String testPath = "javax/sql/jdbc/2.0/jdbc-2.0.jar";
|
||||
|
||||
Artifact artifact = getArtifactFromPath( testPath );
|
||||
|
||||
assertNotNull( "Normal artifact path error", artifact );
|
||||
|
||||
assertEquals( createArtifact( "javax.sql", "jdbc", "2.0" ), artifact );
|
||||
}
|
||||
|
||||
public void testNotUpdatedInRepository()
|
||||
throws ComponentLookupException
|
||||
{
|
||||
String testPath = "javax/sql/jdbc/2.0/jdbc-2.0.jar";
|
||||
|
||||
Artifact artifact = getArtifactFromPath( testPath );
|
||||
|
||||
assertNotNull( "Normal artifact path error", artifact );
|
||||
|
||||
assertEquals( createArtifact( "javax.sql", "jdbc", "2.0" ), artifact );
|
||||
}
|
||||
|
||||
public void testNotUpdatedInRepositoryForcedDiscovery()
|
||||
throws ComponentLookupException
|
||||
{
|
||||
String testPath = "javax/sql/jdbc/2.0/jdbc-2.0.jar";
|
||||
|
||||
Artifact artifact = getArtifactFromPath( testPath );
|
||||
|
||||
assertNotNull( "Normal artifact path error", artifact );
|
||||
|
||||
assertEquals( createArtifact( "javax.sql", "jdbc", "2.0" ), artifact );
|
||||
}
|
||||
|
||||
public void testSnapshotWithClassifier()
|
||||
throws ComponentLookupException
|
||||
{
|
||||
|
|
|
@ -21,7 +21,7 @@
|
|||
<item name="Maven" href="http://maven.apache.org/"/>
|
||||
</links>
|
||||
|
||||
<menu ref="reports"/>
|
||||
<menu ref="reports" inherit="bottom"/>
|
||||
|
||||
</body>
|
||||
<skin>
|
||||
|
|
Loading…
Reference in New Issue