Author: brett
Date: Wed Aug 31 01:11:47 2005
New Revision: 264967
URL: http://svn.apache.org/viewcvs?rev=264967&view=rev
Log:
refactoring towards similar pattern of artifact metadata
Removed:
maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/repository/metadata/InvalidRepositoryMetadataException.java
Modified:
maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/repository/metadata/DefaultRepositoryMetadataManager.java
maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/repository/metadata/PluginMappingMetadata.java
maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/repository/metadata/RepositoryMetadataManager.java
maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginMappingManager.java
maven/components/trunk/maven-plugins/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/metadata/PluginMappingInstallMojo.java
Modified:
maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/repository/metadata/DefaultRepositoryMetadataManager.java
URL:
http://svn.apache.org/viewcvs/maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/repository/metadata/DefaultRepositoryMetadataManager.java?rev=264967&r1=264966&r2=264967&view=diff
==============================================================================
---
maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/repository/metadata/DefaultRepositoryMetadataManager.java
(original)
+++
maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/repository/metadata/DefaultRepositoryMetadataManager.java
Wed Aug 31 01:11:47 2005
@@ -22,19 +22,14 @@
import org.apache.maven.wagon.TransferFailedException;
import org.codehaus.plexus.logging.AbstractLogEnabled;
import org.codehaus.plexus.util.FileUtils;
-import org.codehaus.plexus.util.IOUtil;
import java.io.File;
-import java.io.FileInputStream;
import java.io.IOException;
-import java.io.InputStream;
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * @todo try to crop all, particularly plugin stuff
- * @todo check caching?
- */
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
+
public class DefaultRepositoryMetadataManager
extends AbstractLogEnabled
implements RepositoryMetadataManager
@@ -42,94 +37,68 @@
// component requirement
private WagonManager wagonManager;
- // only resolve repository metadata once per session...
- private Map cachedMetadata = new HashMap();
-
- public void resolveLocally( RepositoryMetadata metadata,
ArtifactRepository local )
- throws RepositoryMetadataManagementException
- {
- resolve( metadata, null, local );
- }
+ /**
+ * @todo very primitve. Probably we can cache artifacts themselves in a
central location, as well as reset the flag over time in a long running process.
+ */
+ private Set cachedMetadata = new HashSet();
- public void resolve( RepositoryMetadata metadata, ArtifactRepository
remote, ArtifactRepository local )
+ public void resolve( RepositoryMetadata metadata, List repositories,
ArtifactRepository local )
throws RepositoryMetadataManagementException
{
- File metadataFile = (File) cachedMetadata.get(
metadata.getRepositoryPath() );
-
- if ( metadataFile == null )
+ boolean alreadyResolved = alreadyResolved( metadata );
+ if ( !alreadyResolved )
{
- metadataFile = constructLocalRepositoryFile( metadata, local );
-
- if ( !metadataFile.exists() && remote != null )
+ for ( Iterator i = repositories.iterator(); i.hasNext(); )
{
- try
+ ArtifactRepository repository = (ArtifactRepository) i.next();
+
+ // TODO: replace with a more general repository update
mechanism like artifact metadata uses
+ // (Actually, this should now supersede artifact metadata...)
+ File metadataFile = new File( local.getBasedir(),
local.pathOfRepositoryMetadata( metadata ) );
+
+ if ( !metadataFile.exists() )
{
try
{
- wagonManager.getRepositoryMetadata( metadata, remote,
metadataFile );
- }
- catch ( ResourceDoesNotExistException e )
- {
- if ( !metadataFile.exists() )
+ try
{
- throw new RepositoryMetadataManagementException(
metadata,
-
"Remote repository metadata not found.",
- e
);
+ wagonManager.getRepositoryMetadata( metadata,
repository, metadataFile );
}
- else
+ catch ( ResourceDoesNotExistException e )
{
- String message = "Cannot find " + metadata + " in
remote repository - Using local copy.";
+ if ( !metadataFile.exists() )
+ {
+ throw new
RepositoryMetadataManagementException( metadata,
+
"Remote repository metadata not found.",
+
e );
+ }
+ else
+ {
+ String message = "Cannot find " + metadata +
+ " in remote repository - Using local
copy.";
- getLogger().info( message );
+ getLogger().info( message );
- getLogger().debug( message, e );
+ getLogger().debug( message, e );
+ }
}
}
+ catch ( TransferFailedException e )
+ {
+ throw new RepositoryMetadataManagementException(
metadata,
+
"Failed to download repository metadata.", e );
+ }
}
- catch ( TransferFailedException e )
+ else
{
- throw new RepositoryMetadataManagementException( metadata,
- "Failed
to download repository metadata.", e );
+ getLogger().info( "Using local copy of " + metadata + "
from: " + metadataFile );
}
- }
- else
- {
- getLogger().info( "Using local copy of " + metadata + " from:
" + metadataFile );
- }
- if ( metadataFile.exists() )
- {
- if ( !verifyFileNotEmpty( metadataFile ) )
- {
- throw new InvalidRepositoryMetadataException( metadata,
"Metadata located in file: " +
- metadataFile + " appears to be corrupt (file is
empty). DOWNLOAD FAILED." );
- }
-
- cachedMetadata.put( metadata.getRepositoryPath(), metadataFile
);
+ cachedMetadata.add( metadata.getRepositoryPath() );
}
}
}
- private boolean verifyFileNotEmpty( File metadataFile )
- {
- InputStream verifyInputStream = null;
-
- try
- {
- verifyInputStream = new FileInputStream( metadataFile );
-
- return verifyInputStream.available() > 0;
- }
- catch ( IOException e )
- {
- return false;
- }
- finally
- {
- IOUtil.close( verifyInputStream );
- }
- }
-
public void deploy( File source, RepositoryMetadata metadata,
ArtifactRepository remote )
throws RepositoryMetadataManagementException
{
@@ -147,7 +116,7 @@
public void install( File source, RepositoryMetadata metadata,
ArtifactRepository local )
throws RepositoryMetadataManagementException
{
- File metadataFile = constructLocalRepositoryFile( metadata, local );
+ File metadataFile = new File( local.getBasedir(),
local.pathOfRepositoryMetadata( metadata ) );
try
{
@@ -167,24 +136,8 @@
}
- public void purgeLocalCopy( RepositoryMetadata metadata,
ArtifactRepository local )
- throws RepositoryMetadataManagementException
- {
- File metadataFile = constructLocalRepositoryFile( metadata, local );
-
- if ( metadataFile.exists() )
- {
- if ( !metadataFile.delete() )
- {
- throw new RepositoryMetadataManagementException( metadata,
- "Failed to
purge local copy from: " + metadataFile );
- }
- }
- }
-
- private static File constructLocalRepositoryFile( RepositoryMetadata
metadata, ArtifactRepository local )
+ private boolean alreadyResolved( RepositoryMetadata metadata )
{
- return new File( local.getBasedir(), local.pathOfRepositoryMetadata(
metadata ) );
+ return cachedMetadata.contains( metadata.getRepositoryPath() );
}
-
}
Modified:
maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/repository/metadata/PluginMappingMetadata.java
URL:
http://svn.apache.org/viewcvs/maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/repository/metadata/PluginMappingMetadata.java?rev=264967&r1=264966&r2=264967&view=diff
==============================================================================
---
maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/repository/metadata/PluginMappingMetadata.java
(original)
+++
maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/repository/metadata/PluginMappingMetadata.java
Wed Aug 31 01:11:47 2005
@@ -16,19 +16,12 @@
* limitations under the License.
*/
-import java.io.File;
-
public class PluginMappingMetadata
implements RepositoryMetadata
{
private static final String PLUGIN_MAPPING_FILE = "plugins.xml";
private final String groupId;
-
- /**
- * @todo REMOVE!
- */
- private File metadataFile;
public PluginMappingMetadata( String groupId )
{
Modified:
maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/repository/metadata/RepositoryMetadataManager.java
URL:
http://svn.apache.org/viewcvs/maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/repository/metadata/RepositoryMetadataManager.java?rev=264967&r1=264966&r2=264967&view=diff
==============================================================================
---
maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/repository/metadata/RepositoryMetadataManager.java
(original)
+++
maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/repository/metadata/RepositoryMetadataManager.java
Wed Aug 31 01:11:47 2005
@@ -19,13 +19,12 @@
import org.apache.maven.artifact.repository.ArtifactRepository;
import java.io.File;
+import java.util.List;
public interface RepositoryMetadataManager
{
- void resolveLocally( RepositoryMetadata repositoryMetadata,
ArtifactRepository local )
- throws RepositoryMetadataManagementException;
- void resolve( RepositoryMetadata repositoryMetadata, ArtifactRepository
remote, ArtifactRepository local )
+ void resolve( RepositoryMetadata repositoryMetadata, List repositories,
ArtifactRepository local )
throws RepositoryMetadataManagementException;
void deploy( File source, RepositoryMetadata repositoryMetadata,
ArtifactRepository remote )
@@ -34,6 +33,4 @@
void install( File source, RepositoryMetadata repositoryMetadata,
ArtifactRepository local )
throws RepositoryMetadataManagementException;
- void purgeLocalCopy( RepositoryMetadata repositoryMetadata,
ArtifactRepository local )
- throws RepositoryMetadataManagementException;
}
Modified:
maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginMappingManager.java
URL:
http://svn.apache.org/viewcvs/maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginMappingManager.java?rev=264967&r1=264966&r2=264967&view=diff
==============================================================================
---
maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginMappingManager.java
(original)
+++
maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginMappingManager.java
Wed Aug 31 01:11:47 2005
@@ -17,7 +17,6 @@
*/
import org.apache.maven.artifact.repository.ArtifactRepository;
-import
org.apache.maven.artifact.repository.metadata.InvalidRepositoryMetadataException;
import org.apache.maven.artifact.repository.metadata.Metadata;
import org.apache.maven.artifact.repository.metadata.Plugin;
import org.apache.maven.artifact.repository.metadata.PluginMappingMetadata;
@@ -51,96 +50,21 @@
{
protected RepositoryMetadataManager repositoryMetadataManager;
- private List mappings = new ArrayList();
-
- private boolean refreshed;
-
- private Map pluginDefinitionsByPrefix;
-
- public void clear()
- {
- this.mappings = null;
- clearCache();
- }
-
- private void clearCache()
- {
- this.pluginDefinitionsByPrefix = null;
- }
+ private Map pluginDefinitionsByPrefix = new HashMap();
public org.apache.maven.model.Plugin getByPrefix( String pluginPrefix,
List groupIds, List pluginRepositories,
ArtifactRepository
localRepository )
throws RepositoryMetadataManagementException
{
- if ( pluginDefinitionsByPrefix == null )
- {
- // firstly, search the local repository
- loadPluginMappings( groupIds, pluginRepositories, localRepository
);
-
- calculatePluginDefinitionsByPrefix();
-
- // if not found, try from the remote repository
- if ( !pluginDefinitionsByPrefix.containsKey( pluginPrefix ) &&
!refreshed )
- {
- getLogger().info(
- "Refreshing plugin mapping metadata; looking for plugin
with prefix: \'" + pluginPrefix + "\'." );
-
- refreshPluginMappingManager( pluginRepositories,
localRepository );
-
- refreshed = true;
- }
-
- calculatePluginDefinitionsByPrefix();
- }
- return (org.apache.maven.model.Plugin) pluginDefinitionsByPrefix.get(
pluginPrefix );
- }
-
- private void calculatePluginDefinitionsByPrefix()
- {
- pluginDefinitionsByPrefix = new HashMap();
-
- for ( Iterator it = mappings.iterator(); it.hasNext(); )
+ // if not found, try from the remote repository
+ if ( !pluginDefinitionsByPrefix.containsKey( pluginPrefix ) )
{
- Metadata pluginMap = (Metadata) it.next();
-
- String groupId = pluginMap.getGroupId();
+ getLogger().info( "Searching repository for plugin with prefix:
\'" + pluginPrefix + "\'." );
- for ( Iterator pluginIterator = pluginMap.getPlugins().iterator();
pluginIterator.hasNext(); )
- {
- Plugin mapping = (Plugin) pluginIterator.next();
-
- String prefix = mapping.getPrefix();
-
- String artifactId = mapping.getArtifactId();
-
- org.apache.maven.model.Plugin plugin = new
org.apache.maven.model.Plugin();
-
- plugin.setGroupId( groupId );
-
- plugin.setArtifactId( artifactId );
-
- pluginDefinitionsByPrefix.put( prefix, plugin );
- }
- }
- }
-
- private void refreshPluginMappingManager( List pluginRepositories,
ArtifactRepository localRepository )
- throws RepositoryMetadataManagementException
- {
- List groupIds = new ArrayList();
-
- for ( Iterator it = mappings.iterator(); it.hasNext(); )
- {
- Metadata map = (Metadata) it.next();
-
- String groupId = map.getGroupId();
-
- groupIds.add( groupId );
-
- repositoryMetadataManager.purgeLocalCopy( new
PluginMappingMetadata( groupId ), localRepository );
+ loadPluginMappings( groupIds, pluginRepositories, localRepository
);
}
- loadPluginMappings( groupIds, pluginRepositories, localRepository );
+ return (org.apache.maven.model.Plugin) pluginDefinitionsByPrefix.get(
pluginPrefix );
}
private void loadPluginMappings( List groupIds, List pluginRepositories,
ArtifactRepository localRepository )
@@ -159,15 +83,7 @@
try
{
- File mappingFile = resolveMappingMetadata(
repositoryMetadataManager, groupId, pluginRepositories,
- localRepository );
-
- Metadata pluginMap = readPluginMap( mappingFile );
-
- if ( pluginMap != null )
- {
- mappings.add( pluginMap );
- }
+ loadPluginMappings( groupId, pluginRepositories,
localRepository );
}
catch ( RepositoryMetadataManagementException e )
{
@@ -175,93 +91,76 @@
getLogger().debug( "Error resolving plugin-mapping metadata
for groupId: " + groupId + ".", e );
}
-
- clearCache();
}
}
- private static Metadata readPluginMap( File mappingFile )
+ private void loadPluginMappings( String groupId, List pluginRepositories,
ArtifactRepository localRepository )
throws RepositoryMetadataManagementException
{
- Metadata result = null;
+ PluginMappingMetadata metadata = new PluginMappingMetadata( groupId );
- if ( mappingFile.exists() )
+ // TOOD: aggregate the results of this instead
+ repositoryMetadataManager.resolve( metadata, pluginRepositories,
localRepository );
+
+ File metadataFile = new File( localRepository.getBasedir(),
+
localRepository.pathOfRepositoryMetadata( metadata ) );
+
+ if ( metadataFile.exists() )
{
- Reader fileReader = null;
- try
+ Metadata pluginMap = readMetadata( metadataFile );
+
+ if ( pluginMap != null )
{
- fileReader = new FileReader( mappingFile );
+ for ( Iterator pluginIterator =
pluginMap.getPlugins().iterator(); pluginIterator.hasNext(); )
+ {
+ Plugin mapping = (Plugin) pluginIterator.next();
- MetadataXpp3Reader mappingReader = new MetadataXpp3Reader();
+ String prefix = mapping.getPrefix();
- result = mappingReader.read( fileReader );
- }
- catch ( FileNotFoundException e )
- {
- throw new RepositoryMetadataManagementException( "Cannot read
plugin mappings from: " + mappingFile,
- e );
- }
- catch ( IOException e )
- {
- throw new RepositoryMetadataManagementException( "Cannot read
plugin mappings from: " + mappingFile,
- e );
- }
- catch ( XmlPullParserException e )
- {
- throw new RepositoryMetadataManagementException( "Cannot parse
plugin mappings from: " + mappingFile,
- e );
- }
- finally
- {
- IOUtil.close( fileReader );
+ String artifactId = mapping.getArtifactId();
+
+ org.apache.maven.model.Plugin plugin = new
org.apache.maven.model.Plugin();
+
+ plugin.setGroupId( groupId );
+
+ plugin.setArtifactId( artifactId );
+
+ pluginDefinitionsByPrefix.put( prefix, plugin );
+ }
}
}
-
- return result;
}
- private static File resolveMappingMetadata( RepositoryMetadataManager
repositoryMetadataManager, String groupId,
- List pluginRepositories,
ArtifactRepository localRepository )
+ private static Metadata readMetadata( File mappingFile )
throws RepositoryMetadataManagementException
{
- PluginMappingMetadata metadata = new PluginMappingMetadata( groupId );
-
- RepositoryMetadataManagementException repositoryException = null;
+ Metadata result;
- for ( Iterator repoIterator = pluginRepositories.iterator();
repoIterator.hasNext(); )
+ Reader fileReader = null;
+ try
{
- ArtifactRepository repository = (ArtifactRepository)
repoIterator.next();
-
- try
- {
- repositoryMetadataManager.resolve( metadata, repository,
localRepository );
-
- // reset this to keep it from getting in the way when we
succeed but not on first repo...
- repositoryException = null;
+ fileReader = new FileReader( mappingFile );
- File metadataFile = new File( localRepository.getBasedir(),
-
localRepository.pathOfRepositoryMetadata( metadata ) );
+ MetadataXpp3Reader mappingReader = new MetadataXpp3Reader();
- if ( metadataFile.exists() )
- {
- return metadataFile;
- }
- }
- catch ( InvalidRepositoryMetadataException e )
- {
- repositoryMetadataManager.purgeLocalCopy( metadata,
localRepository );
- }
- catch ( RepositoryMetadataManagementException e )
- {
- repositoryException = e;
- }
+ result = mappingReader.read( fileReader );
}
-
- if ( repositoryException != null )
+ catch ( FileNotFoundException e )
{
- throw repositoryException;
+ throw new RepositoryMetadataManagementException( "Cannot read
plugin mappings from: " + mappingFile, e );
}
-
- throw new RepositoryMetadataManagementException( "No repository
metadata found" );
+ catch ( IOException e )
+ {
+ throw new RepositoryMetadataManagementException( "Cannot read
plugin mappings from: " + mappingFile, e );
+ }
+ catch ( XmlPullParserException e )
+ {
+ throw new RepositoryMetadataManagementException( "Cannot parse
plugin mappings from: " + mappingFile, e );
+ }
+ finally
+ {
+ IOUtil.close( fileReader );
+ }
+ return result;
}
}
Modified:
maven/components/trunk/maven-plugins/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/metadata/PluginMappingInstallMojo.java
URL:
http://svn.apache.org/viewcvs/maven/components/trunk/maven-plugins/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/metadata/PluginMappingInstallMojo.java?rev=264967&r1=264966&r2=264967&view=diff
==============================================================================
---
maven/components/trunk/maven-plugins/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/metadata/PluginMappingInstallMojo.java
(original)
+++
maven/components/trunk/maven-plugins/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/metadata/PluginMappingInstallMojo.java
Wed Aug 31 01:11:47 2005
@@ -16,7 +16,6 @@
* limitations under the License.
*/
-import
org.apache.maven.artifact.repository.metadata.InvalidRepositoryMetadataException;
import org.apache.maven.artifact.repository.metadata.PluginMappingMetadata;
import org.apache.maven.artifact.repository.metadata.RepositoryMetadata;
import
org.apache.maven.artifact.repository.metadata.RepositoryMetadataManagementException;
@@ -39,15 +38,6 @@
try
{
- try
- {
- getRepositoryMetadataManager().resolveLocally( metadata,
getLocalRepository() );
- }
- catch ( InvalidRepositoryMetadataException e )
- {
- getRepositoryMetadataManager().purgeLocalCopy( metadata,
getLocalRepository() );
- }
-
File metadataFile = updatePluginMap( metadata );
if ( metadataFile != null )
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]