You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by og...@apache.org on 2008/12/24 05:38:03 UTC

svn commit: r729223 - in /maven/mercury/trunk/mercury-repo/mercury-repo-local-map: ./ src/main/ src/main/java/org/apache/maven/mercury/repository/local/map/ src/test/java/org/apache/maven/mercury/repository/local/map/ src/test/resources/ src/test/resou...

Author: ogusakov
Date: Tue Dec 23 20:38:02 2008
New Revision: 729223

URL: http://svn.apache.org/viewvc?rev=729223&view=rev
Log:
[MERCURY-65] adding mapped repo implementation

Added:
    maven/mercury/trunk/mercury-repo/mercury-repo-local-map/   (props changed)
      - copied from r729085, maven/mercury/trunk/mercury-repo/mercury-repo-map/
    maven/mercury/trunk/mercury-repo/mercury-repo-local-map/pom.xml
      - copied unchanged from r729211, maven/mercury/trunk/mercury-repo/mercury-repo-map/pom.xml
    maven/mercury/trunk/mercury-repo/mercury-repo-local-map/src/main/
      - copied from r729178, maven/mercury/trunk/mercury-repo/mercury-repo-map/src/main/
    maven/mercury/trunk/mercury-repo/mercury-repo-local-map/src/main/java/org/apache/maven/mercury/repository/local/map/DefaultStorage.java   (with props)
    maven/mercury/trunk/mercury-repo/mercury-repo-local-map/src/main/java/org/apache/maven/mercury/repository/local/map/Messages.properties   (with props)
    maven/mercury/trunk/mercury-repo/mercury-repo-local-map/src/main/java/org/apache/maven/mercury/repository/local/map/Storage.java   (with props)
    maven/mercury/trunk/mercury-repo/mercury-repo-local-map/src/main/java/org/apache/maven/mercury/repository/local/map/StorageException.java   (with props)
    maven/mercury/trunk/mercury-repo/mercury-repo-local-map/src/test/java/org/apache/maven/mercury/repository/local/map/LocalRepositoryMapTest.java
      - copied, changed from r729211, maven/mercury/trunk/mercury-repo/mercury-repo-map/src/test/java/org/apache/maven/mercury/repository/local/map/LocalRepositoryMapTest.java
    maven/mercury/trunk/mercury-repo/mercury-repo-local-map/src/test/resources/t-1.0.pom
      - copied unchanged from r729211, maven/mercury/trunk/mercury-repo/mercury-repo-map/src/test/resources/t-1.0.pom
Removed:
    maven/mercury/trunk/mercury-repo/mercury-repo-local-map/src/main/java/org/apache/maven/mercury/repository/local/map/ArtifactLocation.java
    maven/mercury/trunk/mercury-repo/mercury-repo-local-map/src/test/java/org/apache/maven/mercury/repository/local/map/LocalRepositoryFlatTest.java
    maven/mercury/trunk/mercury-repo/mercury-repo-local-map/src/test/resources/ant-1.6.5.jar
    maven/mercury/trunk/mercury-repo/mercury-repo-local-map/src/test/resources/antlr-2.7.7.jar
    maven/mercury/trunk/mercury-repo/mercury-repo-local-map/src/test/resources/pgp/
    maven/mercury/trunk/mercury-repo/mercury-repo-local-map/src/test/resources/repo/
Modified:
    maven/mercury/trunk/mercury-repo/mercury-repo-local-map/src/main/java/org/apache/maven/mercury/repository/local/map/LocalRepositoryMap.java
    maven/mercury/trunk/mercury-repo/mercury-repo-local-map/src/main/java/org/apache/maven/mercury/repository/local/map/LocalRepositoryReaderMap.java

Propchange: maven/mercury/trunk/mercury-repo/mercury-repo-local-map/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Tue Dec 23 20:38:02 2008
@@ -0,0 +1,4 @@
+.settings
+target
+.classpath
+.project

Propchange: maven/mercury/trunk/mercury-repo/mercury-repo-local-map/
------------------------------------------------------------------------------
    svn:mergeinfo = 

Added: maven/mercury/trunk/mercury-repo/mercury-repo-local-map/src/main/java/org/apache/maven/mercury/repository/local/map/DefaultStorage.java
URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-repo/mercury-repo-local-map/src/main/java/org/apache/maven/mercury/repository/local/map/DefaultStorage.java?rev=729223&view=auto
==============================================================================
--- maven/mercury/trunk/mercury-repo/mercury-repo-local-map/src/main/java/org/apache/maven/mercury/repository/local/map/DefaultStorage.java (added)
+++ maven/mercury/trunk/mercury-repo/mercury-repo-local-map/src/main/java/org/apache/maven/mercury/repository/local/map/DefaultStorage.java Tue Dec 23 20:38:02 2008
@@ -0,0 +1,127 @@
+package org.apache.maven.mercury.repository.local.map;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.maven.mercury.artifact.Artifact;
+import org.apache.maven.mercury.artifact.ArtifactBasicMetadata;
+import org.apache.maven.mercury.util.FileUtil;
+import org.apache.maven.mercury.util.Util;
+import org.codehaus.plexus.lang.DefaultLanguage;
+import org.codehaus.plexus.lang.Language;
+
+/**
+ *
+ *
+ * @author Oleg Gusakov
+ * @version $Id$
+ *
+ */
+public class DefaultStorage
+implements Storage
+{
+    private static final Language _lang = new DefaultLanguage( DefaultStorage.class );
+    
+    Map< String, Artifact > _artifacts;
+
+    Map< String, File > _files;
+    
+    File _dir;
+        
+    public DefaultStorage( File dir )
+    throws StorageException
+    {
+        if( dir == null )
+        {
+            try
+            {
+                _dir = File.createTempFile( "temp-", "-mercury-default-storage" );
+            }
+            catch ( IOException e )
+            {
+                throw new StorageException(e);
+            }
+            
+            _dir.delete();
+            
+            _dir.mkdirs();
+        }
+        else
+        {
+            if( !dir.exists() )
+                dir.mkdirs();
+            else
+                if( dir.isDirectory() )
+                    throw new StorageException( _lang.getMessage( "default.storage.bad.dir", dir.getAbsolutePath() ) );
+            
+            _dir = dir;
+        }
+    }
+
+    public DefaultStorage()
+    throws StorageException
+    {
+        this( null );
+    }
+
+    public void add( ArtifactBasicMetadata bmd, Artifact artifact )
+    {
+        if( _artifacts == null )
+            _artifacts = new HashMap<String, Artifact>(32);
+        
+        _artifacts.put( bmd.toString(), artifact );
+    }
+
+    public Artifact findArtifact( ArtifactBasicMetadata bmd )
+    {
+        if( _artifacts == null )
+            return null;
+        
+        return _artifacts.get( bmd.getGAV() );
+    }
+
+    public byte[] findRaw( String key )
+    throws StorageException
+    {
+        if( Util.isEmpty( _files ) )
+            return null;
+        
+        File f = _files.get( key );
+        
+        if( f == null )
+            return null;
+        
+        try
+        {
+            return FileUtil.readRawData( f );
+        }
+        catch ( IOException e )
+        {
+            throw new StorageException(e);
+        }
+    }
+
+    public void add( String key, byte[] bytes )
+    throws StorageException
+    {
+        try
+        {
+            add( key, FileUtil.writeTempData( bytes ) );
+        }
+        catch ( IOException e )
+        {
+            throw new StorageException(e);
+        }
+    }
+
+    public void add( String key, File file )
+    {
+        if( _files == null )
+            _files = new HashMap<String, File>(32);
+        
+        _files.put( key, file );
+    }
+    
+}

Propchange: maven/mercury/trunk/mercury-repo/mercury-repo-local-map/src/main/java/org/apache/maven/mercury/repository/local/map/DefaultStorage.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/mercury/trunk/mercury-repo/mercury-repo-local-map/src/main/java/org/apache/maven/mercury/repository/local/map/DefaultStorage.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Modified: maven/mercury/trunk/mercury-repo/mercury-repo-local-map/src/main/java/org/apache/maven/mercury/repository/local/map/LocalRepositoryMap.java
URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-repo/mercury-repo-local-map/src/main/java/org/apache/maven/mercury/repository/local/map/LocalRepositoryMap.java?rev=729223&r1=729178&r2=729223&view=diff
==============================================================================
--- maven/mercury/trunk/mercury-repo/mercury-repo-local-map/src/main/java/org/apache/maven/mercury/repository/local/map/LocalRepositoryMap.java (original)
+++ maven/mercury/trunk/mercury-repo/mercury-repo-local-map/src/main/java/org/apache/maven/mercury/repository/local/map/LocalRepositoryMap.java Tue Dec 23 20:38:02 2008
@@ -19,9 +19,7 @@
 package org.apache.maven.mercury.repository.local.map;
 
 import java.io.File;
-import java.util.Map;
 
-import org.apache.maven.mercury.artifact.ArtifactBasicMetadata;
 import org.apache.maven.mercury.builder.api.DependencyProcessor;
 import org.apache.maven.mercury.repository.api.AbstractRepository;
 import org.apache.maven.mercury.repository.api.LocalRepository;
@@ -40,69 +38,63 @@
 implements LocalRepository
 {
     public static final String FLAT_REPOSITORY_TYPE = "map";
+    
+    protected Storage _storage;
 
     // ----------------------------------------------------------------------------------
-    public LocalRepositoryMap( String id, DependencyProcessor dp, Map<ArtifactBasicMetadata,File> files )
+    public LocalRepositoryMap( String id, DependencyProcessor dp, Storage storage )
     {
         super( id, FLAT_REPOSITORY_TYPE );
         setDependencyProcessor( dp );
+        
+        _storage = storage;
     }
-
     // ----------------------------------------------------------------------------------
     public File getDirectory()
     {
         return null;
     }
-
     // ----------------------------------------------------------------------------------
     public RepositoryReader getReader()
     {
-        return RepositoryReader.NULL_READER;
+        return new LocalRepositoryReaderMap( this, getDependencyProcessor() );
     }
-
     // ----------------------------------------------------------------------------------
     public RepositoryReader getReader( String protocol )
     {
-        return new LocalRepositoryReaderMap( this, getDependencyProcessor() );
+        return getReader();
     }
-
     // ----------------------------------------------------------------------------------
     public RepositoryWriter getWriter()
     {
         return RepositoryWriter.NULL_WRITER;
     }
-
     // ----------------------------------------------------------------------------------
     public RepositoryWriter getWriter( String protocol )
         throws NonExistentProtocolException
     {
         return getWriter();
     }
-
     // ----------------------------------------------------------------------------------
     public boolean isLocal()
     {
         return true;
     }
-
     // ----------------------------------------------------------------------------------
     public boolean isReadable()
     {
         return true;
     }
-
     // ----------------------------------------------------------------------------------
     public boolean isWriteable()
     {
         return false;
     }
-
     // ----------------------------------------------------------------------------------
     public String getType()
     {
         return FLAT_REPOSITORY_TYPE;
     }
-
     // ----------------------------------------------------------------------------------
     public String getMetadataName()
     {
@@ -110,4 +102,4 @@
     }
     // ----------------------------------------------------------------------------------
     // ----------------------------------------------------------------------------------
-}
+}
\ No newline at end of file

Modified: maven/mercury/trunk/mercury-repo/mercury-repo-local-map/src/main/java/org/apache/maven/mercury/repository/local/map/LocalRepositoryReaderMap.java
URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-repo/mercury-repo-local-map/src/main/java/org/apache/maven/mercury/repository/local/map/LocalRepositoryReaderMap.java?rev=729223&r1=729178&r2=729223&view=diff
==============================================================================
--- maven/mercury/trunk/mercury-repo/mercury-repo-local-map/src/main/java/org/apache/maven/mercury/repository/local/map/LocalRepositoryReaderMap.java (original)
+++ maven/mercury/trunk/mercury-repo/mercury-repo-local-map/src/main/java/org/apache/maven/mercury/repository/local/map/LocalRepositoryReaderMap.java Tue Dec 23 20:38:02 2008
@@ -25,11 +25,13 @@
 import java.util.Collection;
 import java.util.HashSet;
 import java.util.LinkedList;
+import java.util.List;
 import java.util.Set;
 
 import org.apache.maven.mercury.artifact.Artifact;
 import org.apache.maven.mercury.artifact.ArtifactBasicMetadata;
 import org.apache.maven.mercury.builder.api.DependencyProcessor;
+import org.apache.maven.mercury.builder.api.DependencyProcessorException;
 import org.apache.maven.mercury.builder.api.MetadataReaderException;
 import org.apache.maven.mercury.crypto.api.StreamVerifierFactory;
 import org.apache.maven.mercury.logging.IMercuryLogger;
@@ -52,95 +54,141 @@
 import org.codehaus.plexus.lang.Language;
 
 public class LocalRepositoryReaderMap
-extends AbstracRepositoryReader
-implements RepositoryReader
+    extends AbstracRepositoryReader
+    implements RepositoryReader
 {
-  private static final IMercuryLogger _log = MercuryLoggerManager.getLogger( LocalRepositoryReaderMap.class ); 
-  private static final Language _lang = new DefaultLanguage( LocalRepositoryReaderMap.class );
-  //---------------------------------------------------------------------------------------------------------------
-  private static final String [] _protocols = new String [] { "map" };
-  
-  private final LocalRepository _repo;
-  //---------------------------------------------------------------------------------------------------------------
-  public LocalRepositoryReaderMap( Repository repo, DependencyProcessor dp )
-  {
-      if( repo == null )
-          throw new IllegalArgumentException("localRepo cannot be null");
-        
-      if( dp == null )
-          throw new IllegalArgumentException("localRepo cannot be null");
-      
-      _mdProcessor = dp;
-      _repo = (LocalRepository) repo;
-  }
-  //---------------------------------------------------------------------------------------------------------------
-  public Repository getRepository()
-  {
-    return _repo;
-  }
-  //---------------------------------------------------------------------------------------------------------------
-  public boolean canHandle( String protocol )
-  {
-    return AbstractRepository.DEFAULT_LOCAL_READ_PROTOCOL.equals( protocol );
-  }
-  //---------------------------------------------------------------------------------------------------------------
-  public String[] getProtocols()
-  {
-    return _protocols;
-  }
-  //---------------------------------------------------------------------------------------------------------------
-  //---------------------------------------------------------------------------------------------------------------
-/* (non-Javadoc)
- * @see org.apache.maven.mercury.repository.api.RepositoryReader#readArtifacts(java.util.Collection)
- */
-public ArtifactResults readArtifacts( Collection<ArtifactBasicMetadata> query )
-    throws RepositoryException
-{
-    // TODO Auto-generated method stub
-    return null;
-}
-/* (non-Javadoc)
- * @see org.apache.maven.mercury.repository.api.RepositoryReader#readDependencies(java.util.Collection)
- */
-public ArtifactBasicResults readDependencies( Collection<ArtifactBasicMetadata> query )
-    throws RepositoryException
-{
-    // TODO Auto-generated method stub
-    return null;
-}
-/* (non-Javadoc)
- * @see org.apache.maven.mercury.repository.api.RepositoryReader#readRawData(java.lang.String)
- */
-public byte[] readRawData( String path )
-    throws MetadataReaderException
-{
-    // TODO Auto-generated method stub
-    return null;
-}
-/* (non-Javadoc)
- * @see org.apache.maven.mercury.repository.api.RepositoryReader#readVersions(java.util.Collection)
- */
-public ArtifactBasicResults readVersions( Collection<ArtifactBasicMetadata> query )
-    throws RepositoryException
-{
-    // TODO Auto-generated method stub
-    return null;
-}
-/* (non-Javadoc)
- * @see org.apache.maven.mercury.repository.api.RepositoryOperator#close()
- */
-public void close()
-{
-    // TODO Auto-generated method stub
-    
-}
-/* (non-Javadoc)
- * @see org.apache.maven.mercury.builder.api.MetadataReader#readRawData(org.apache.maven.mercury.artifact.ArtifactBasicMetadata, java.lang.String, java.lang.String)
- */
-public byte[] readRawData( ArtifactBasicMetadata bmd, String classifier, String type )
+    private static final IMercuryLogger _log = MercuryLoggerManager.getLogger( LocalRepositoryReaderMap.class );
+
+    private static final Language _lang = new DefaultLanguage( LocalRepositoryReaderMap.class );
+
+    // ---------------------------------------------------------------------------------------------------------------
+    private static final String[] _protocols = new String[] { "map" };
+
+    private final LocalRepositoryMap _repo;
+
+    // ---------------------------------------------------------------------------------------------------------------
+    public LocalRepositoryReaderMap( Repository repo, DependencyProcessor dp )
+    {
+        if ( repo == null )
+            throw new IllegalArgumentException( "localRepo cannot be null" );
+
+        if ( dp == null )
+            throw new IllegalArgumentException( "localRepo cannot be null" );
+
+        _mdProcessor = dp;
+
+        _repo = (LocalRepositoryMap) repo;
+
+    }
+    // ---------------------------------------------------------------------------------------------------------------
+    public Repository getRepository()
+    {
+        return _repo;
+    }
+    // ---------------------------------------------------------------------------------------------------------------
+    public boolean canHandle( String protocol )
+    {
+        return AbstractRepository.DEFAULT_LOCAL_READ_PROTOCOL.equals( protocol );
+    }
+    // ---------------------------------------------------------------------------------------------------------------
+    public String[] getProtocols()
+    {
+        return _protocols;
+    }
+    // ---------------------------------------------------------------------------------------------------------------
+    public ArtifactResults readArtifacts( Collection<ArtifactBasicMetadata> query )
+        throws RepositoryException
+    {
+        if( Util.isEmpty( query ) )
+            return null;
+        
+        if( Util.isEmpty( _repo._storage ) )
+            return null;
+        
+        ArtifactResults res = new ArtifactResults();
+        
+        for( ArtifactBasicMetadata bmd : query )
+        {
+            Artifact a;
+            try
+            {
+                a = _repo._storage.findArtifact( bmd );
+            }
+            catch ( Exception e )
+            {
+                throw new RepositoryException(e);
+            }
+            
+            if( a != null )
+                res.add( bmd, a );
+        }
+
+        return res;
+    }
+    // ---------------------------------------------------------------------------------------------------------------
+    public byte[] readRawData( String path )
     throws MetadataReaderException
-{
-    // TODO Auto-generated method stub
-    return null;
-}
+    {
+        try
+        {
+            return _repo._storage.findRaw( path );
+        }
+        catch ( StorageException e )
+        {
+            throw new MetadataReaderException(e);
+        }
+    }
+    // ---------------------------------------------------------------------------------------------------------------
+    public byte[] readRawData( ArtifactBasicMetadata bmd, String classifier, String type )
+        throws MetadataReaderException
+    {
+        
+        String key =  bmd.getGroupId()
+            + ":"+bmd.getArtifactId()
+            + ":"+bmd.getVersion()
+            + ":"+ (classifier == null ? "" : classifier)
+            + ":"+ (type == null ? bmd.getType() : type)
+        ;
+        
+        return readRawData( key );
+    }
+    // ---------------------------------------------------------------------------------------------------------------
+    public ArtifactBasicResults readDependencies( Collection<ArtifactBasicMetadata> query )
+        throws RepositoryException
+    {
+        if( Util.isEmpty( query ) )
+            return null;
+        
+        DependencyProcessor dp = _repo.getDependencyProcessor();
+        
+        ArtifactBasicResults res = new ArtifactBasicResults( query.size() );
+        
+        for( ArtifactBasicMetadata bmd : query )
+        {
+            try
+            {
+                List<ArtifactBasicMetadata> deps = dp.getDependencies( bmd, this, System.getenv(), System.getProperties() );
+                
+                res.add( bmd, deps );
+            }
+            catch ( Exception e )
+            {
+                res.addError( bmd, e );
+            }
+        }
+        
+        return res;
+    }
+    // ---------------------------------------------------------------------------------------------------------------
+    public ArtifactBasicResults readVersions( Collection<ArtifactBasicMetadata> query )
+        throws RepositoryException
+    {
+        return null;
+    }
+    // ---------------------------------------------------------------------------------------------------------------
+    public void close()
+    {
+    }
+    // ---------------------------------------------------------------------------------------------------------------
+    // ---------------------------------------------------------------------------------------------------------------
 }

Added: maven/mercury/trunk/mercury-repo/mercury-repo-local-map/src/main/java/org/apache/maven/mercury/repository/local/map/Messages.properties
URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-repo/mercury-repo-local-map/src/main/java/org/apache/maven/mercury/repository/local/map/Messages.properties?rev=729223&view=auto
==============================================================================
--- maven/mercury/trunk/mercury-repo/mercury-repo-local-map/src/main/java/org/apache/maven/mercury/repository/local/map/Messages.properties (added)
+++ maven/mercury/trunk/mercury-repo/mercury-repo-local-map/src/main/java/org/apache/maven/mercury/repository/local/map/Messages.properties Tue Dec 23 20:38:02 2008
@@ -0,0 +1,35 @@
+#
+#  Licensed to the Apache Software Foundation (ASF) under one
+#  or more contributor license agreements.  See the NOTICE file
+#  distributed with this work for additional information
+#  regarding copyright ownership.  The ASF licenses this file
+#  to you 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.
+#
+bad.repository.type=repository should implement LocalRepository, instead got {0}
+empty.query=received empty query - {0}
+binary.not.found=Artifact {0} binary at not found {1} 
+ga.not.found=Artifact {0} version group not found at {1} 
+gav.not.found=No artifact version for {0} found in {1}
+snapshot.not.found=No snapshot version for {0} found in {1}
+gavdir.not.found=No directory {1} for artifact {0} 
+pom.not.found=Artifact {0} - binary exists, but POM not found in the repository 
+artifact.no.stream=Cannot find either input stream or file, associated with artifact {0}
+pom.artifact.no.stream=Cannot find either pom blob, input stream or file, associated with artifact {0}
+no.signature.file=Verifier for {0} is mandatory, but file {1} does not exist
+signature.failed=Signature "{0}": verification failed for file {1}
+cannot.read.signature.file=Cannot read signature file {0}, error: {1}
+cannot.lock.gav=Cannot lock GAV folder {0} in {1} millis
+file.is.empty=File {0} exists, but is empty. Data corruption somewhere - please repair metadata.
+
+default.storage.bad.dir=supplied directory {0} is actually a file.

Propchange: maven/mercury/trunk/mercury-repo/mercury-repo-local-map/src/main/java/org/apache/maven/mercury/repository/local/map/Messages.properties
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/mercury/trunk/mercury-repo/mercury-repo-local-map/src/main/java/org/apache/maven/mercury/repository/local/map/Messages.properties
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Added: maven/mercury/trunk/mercury-repo/mercury-repo-local-map/src/main/java/org/apache/maven/mercury/repository/local/map/Storage.java
URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-repo/mercury-repo-local-map/src/main/java/org/apache/maven/mercury/repository/local/map/Storage.java?rev=729223&view=auto
==============================================================================
--- maven/mercury/trunk/mercury-repo/mercury-repo-local-map/src/main/java/org/apache/maven/mercury/repository/local/map/Storage.java (added)
+++ maven/mercury/trunk/mercury-repo/mercury-repo-local-map/src/main/java/org/apache/maven/mercury/repository/local/map/Storage.java Tue Dec 23 20:38:02 2008
@@ -0,0 +1,58 @@
+package org.apache.maven.mercury.repository.local.map;
+
+import java.io.File;
+
+import org.apache.maven.mercury.artifact.Artifact;
+import org.apache.maven.mercury.artifact.ArtifactBasicMetadata;
+
+/**
+ * storage for the repository
+ *
+ * @author Oleg Gusakov
+ * @version $Id$
+ *
+ */
+public interface Storage
+{
+    /**
+     * store an artifact
+     * 
+     * @param bmd metadata
+     * @param artifact artifact behind it
+     */
+    public abstract void add( ArtifactBasicMetadata bmd, Artifact artifact );
+
+    /**
+     * find an artifact by it's metadata
+     * 
+     * @param bmd
+     * @return
+     */
+    public abstract Artifact findArtifact( ArtifactBasicMetadata bmd );
+
+    /**
+     * find raw data in this stotage
+     * 
+     * @param key
+     * @return
+     * @throws StorageException 
+     */
+    public abstract byte[] findRaw( String key ) throws StorageException;
+
+    /**
+     * 
+     * @param key
+     * @param bytes
+     * @throws StorageException 
+     */
+    public abstract void add( String key, byte [] bytes )
+    throws StorageException;
+    
+    /**
+     * 
+     * @param key
+     * @param file
+     */
+    public abstract void add( String key, File file );
+
+}
\ No newline at end of file

Propchange: maven/mercury/trunk/mercury-repo/mercury-repo-local-map/src/main/java/org/apache/maven/mercury/repository/local/map/Storage.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/mercury/trunk/mercury-repo/mercury-repo-local-map/src/main/java/org/apache/maven/mercury/repository/local/map/Storage.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Added: maven/mercury/trunk/mercury-repo/mercury-repo-local-map/src/main/java/org/apache/maven/mercury/repository/local/map/StorageException.java
URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-repo/mercury-repo-local-map/src/main/java/org/apache/maven/mercury/repository/local/map/StorageException.java?rev=729223&view=auto
==============================================================================
--- maven/mercury/trunk/mercury-repo/mercury-repo-local-map/src/main/java/org/apache/maven/mercury/repository/local/map/StorageException.java (added)
+++ maven/mercury/trunk/mercury-repo/mercury-repo-local-map/src/main/java/org/apache/maven/mercury/repository/local/map/StorageException.java Tue Dec 23 20:38:02 2008
@@ -0,0 +1,46 @@
+package org.apache.maven.mercury.repository.local.map;
+
+/**
+ *
+ *
+ * @author Oleg Gusakov
+ * @version $Id$
+ *
+ */
+public class StorageException
+    extends Exception
+{
+
+    /**
+     * 
+     */
+    public StorageException()
+    {
+    }
+
+    /**
+     * @param message
+     */
+    public StorageException( String message )
+    {
+        super( message );
+    }
+
+    /**
+     * @param cause
+     */
+    public StorageException( Throwable cause )
+    {
+        super( cause );
+    }
+
+    /**
+     * @param message
+     * @param cause
+     */
+    public StorageException( String message, Throwable cause )
+    {
+        super( message, cause );
+    }
+
+}

Propchange: maven/mercury/trunk/mercury-repo/mercury-repo-local-map/src/main/java/org/apache/maven/mercury/repository/local/map/StorageException.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/mercury/trunk/mercury-repo/mercury-repo-local-map/src/main/java/org/apache/maven/mercury/repository/local/map/StorageException.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Copied: maven/mercury/trunk/mercury-repo/mercury-repo-local-map/src/test/java/org/apache/maven/mercury/repository/local/map/LocalRepositoryMapTest.java (from r729211, maven/mercury/trunk/mercury-repo/mercury-repo-map/src/test/java/org/apache/maven/mercury/repository/local/map/LocalRepositoryMapTest.java)
URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-repo/mercury-repo-local-map/src/test/java/org/apache/maven/mercury/repository/local/map/LocalRepositoryMapTest.java?p2=maven/mercury/trunk/mercury-repo/mercury-repo-local-map/src/test/java/org/apache/maven/mercury/repository/local/map/LocalRepositoryMapTest.java&p1=maven/mercury/trunk/mercury-repo/mercury-repo-map/src/test/java/org/apache/maven/mercury/repository/local/map/LocalRepositoryMapTest.java&r1=729211&r2=729223&rev=729223&view=diff
==============================================================================
--- maven/mercury/trunk/mercury-repo/mercury-repo-map/src/test/java/org/apache/maven/mercury/repository/local/map/LocalRepositoryMapTest.java (original)
+++ maven/mercury/trunk/mercury-repo/mercury-repo-local-map/src/test/java/org/apache/maven/mercury/repository/local/map/LocalRepositoryMapTest.java Tue Dec 23 20:38:02 2008
@@ -19,8 +19,6 @@
 package org.apache.maven.mercury.repository.local.map;
 
 import java.io.File;
-import java.io.InputStream;
-import java.net.URL;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
@@ -28,21 +26,11 @@
 
 import junit.framework.TestCase;
 
-import org.apache.maven.mercury.artifact.Artifact;
 import org.apache.maven.mercury.artifact.ArtifactBasicMetadata;
-import org.apache.maven.mercury.artifact.DefaultArtifact;
 import org.apache.maven.mercury.builder.api.DependencyProcessor;
-import org.apache.maven.mercury.logging.IMercuryLogger;
-import org.apache.maven.mercury.logging.MercuryLoggerManager;
 import org.apache.maven.mercury.repository.api.ArtifactBasicResults;
-import org.apache.maven.mercury.repository.api.Repository;
 import org.apache.maven.mercury.repository.api.RepositoryReader;
-import org.apache.maven.mercury.repository.api.RepositoryWriter;
 import org.apache.maven.mercury.repository.local.m2.MetadataProcessorMock;
-import org.apache.maven.mercury.repository.remote.m2.RemoteRepositoryM2;
-import org.apache.maven.mercury.repository.virtual.VirtualRepositoryReader;
-import org.apache.maven.mercury.transport.api.Server;
-import org.apache.maven.mercury.util.FileUtil;
 
 /**
  * @author Oleg Gusakov
@@ -58,16 +46,9 @@
     LocalRepositoryMap _repo;
     
     RepositoryReader _rr;
-
-    String _repoUrl = "http://repo1.sonatype.org";
-    // String repoUrl = "http://repository.sonatype.org/content/groups/public";
-    
-    RemoteRepositoryM2 _remoteRepo;
     
     ArtifactBasicMetadata bmd;
     
-    VirtualRepositoryReader _vr;
-    
     File _pom;
 
     @Override
@@ -88,14 +69,6 @@
         
         _rr = _repo.getReader();
         
-        Server server = new Server( "temp", new URL(_repoUrl) );
-        _remoteRepo = new RemoteRepositoryM2( server, new MetadataProcessorMock() );
-        
-        List<Repository> reps = new ArrayList<Repository>(3);
-        reps.add( _repo );
-        reps.add( _remoteRepo );
-        
-        _vr = new VirtualRepositoryReader( reps );
     }
 
     public void testReadMap()