You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by ep...@apache.org on 2005/12/12 09:10:05 UTC

svn commit: r356209 - in /maven/repository-manager/trunk/maven-repository-reports-standard/src: main/java/org/apache/maven/repository/reporting/ test/java/org/apache/maven/repository/reporting/ test/repository/groupId/artifactId/

Author: epunzalan
Date: Mon Dec 12 00:09:34 2005
New Revision: 356209

URL: http://svn.apache.org/viewcvs?rev=356209&view=rev
Log:
PR: MRM-39

Class updates and refactored to share methods with DefaultRepositoryQueryLayer.

Added:
    maven/repository-manager/trunk/maven-repository-reports-standard/src/main/java/org/apache/maven/repository/reporting/AbstractRepositoryQueryLayer.java   (with props)
    maven/repository-manager/trunk/maven-repository-reports-standard/src/main/java/org/apache/maven/repository/reporting/RepositoryQueryLayerException.java   (with props)
    maven/repository-manager/trunk/maven-repository-reports-standard/src/test/java/org/apache/maven/repository/reporting/CachedRepositoryQueryLayerTest.java   (with props)
    maven/repository-manager/trunk/maven-repository-reports-standard/src/test/repository/groupId/artifactId/maven-metadata.xml   (with props)
Modified:
    maven/repository-manager/trunk/maven-repository-reports-standard/src/main/java/org/apache/maven/repository/reporting/CachedRepositoryQueryLayer.java
    maven/repository-manager/trunk/maven-repository-reports-standard/src/main/java/org/apache/maven/repository/reporting/DefaultRepositoryQueryLayer.java
    maven/repository-manager/trunk/maven-repository-reports-standard/src/main/java/org/apache/maven/repository/reporting/RepositoryQueryLayer.java
    maven/repository-manager/trunk/maven-repository-reports-standard/src/test/java/org/apache/maven/repository/reporting/AbstractRepositoryQueryLayerTest.java
    maven/repository-manager/trunk/maven-repository-reports-standard/src/test/java/org/apache/maven/repository/reporting/MockRepositoryQueryLayer.java

Added: maven/repository-manager/trunk/maven-repository-reports-standard/src/main/java/org/apache/maven/repository/reporting/AbstractRepositoryQueryLayer.java
URL: http://svn.apache.org/viewcvs/maven/repository-manager/trunk/maven-repository-reports-standard/src/main/java/org/apache/maven/repository/reporting/AbstractRepositoryQueryLayer.java?rev=356209&view=auto
==============================================================================
--- maven/repository-manager/trunk/maven-repository-reports-standard/src/main/java/org/apache/maven/repository/reporting/AbstractRepositoryQueryLayer.java (added)
+++ maven/repository-manager/trunk/maven-repository-reports-standard/src/main/java/org/apache/maven/repository/reporting/AbstractRepositoryQueryLayer.java Mon Dec 12 00:09:34 2005
@@ -0,0 +1,96 @@
+package org.apache.maven.repository.reporting;
+
+/*
+ * Copyright 2001-2005 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ 
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import java.io.File;
+import java.io.FileReader;
+import java.util.List;
+
+import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.artifact.repository.metadata.ArtifactRepositoryMetadata;
+import org.apache.maven.artifact.repository.metadata.Metadata;
+import org.apache.maven.artifact.repository.metadata.Snapshot;
+import org.apache.maven.artifact.repository.metadata.io.xpp3.MetadataXpp3Reader;
+
+/**
+ *
+ */
+public abstract class AbstractRepositoryQueryLayer
+    implements RepositoryQueryLayer
+{
+    protected ArtifactRepository repository;
+
+    public boolean containsArtifact( Artifact artifact )
+    {
+        File f = new File( repository.getBasedir(), repository.pathOf( artifact ) );
+        return f.exists();
+    }
+
+    public boolean containsArtifact( Artifact artifact, Snapshot snapshot )
+    {
+        String artifactPath = getSnapshotArtifactRepositoryPath( artifact, snapshot );
+        File artifactFile = new File( artifactPath );
+        return artifactFile.exists();
+    }
+
+    public List getVersions( Artifact artifact )
+        throws RepositoryQueryLayerException
+    {
+        Metadata metadata = getMetadata( artifact );
+        
+        return metadata.getVersioning().getVersions();
+    }
+
+    protected String getSnapshotArtifactRepositoryPath( Artifact artifact, Snapshot snapshot )
+    {
+        File f = new File( repository.getBasedir(), repository.pathOf( artifact ) );
+        String snapshotInfo = artifact.getVersion().replaceAll( "SNAPSHOT", snapshot.getTimestamp() + "-" + 
+                                                                            snapshot.getBuildNumber() + ".pom" );
+        File snapshotFile = new File( f.getParentFile(), artifact.getArtifactId() + "-" + snapshotInfo );
+        return snapshotFile.getAbsolutePath();
+    }
+
+    protected Metadata getMetadata( Artifact artifact )
+        throws RepositoryQueryLayerException
+    {
+        Metadata metadata = null;
+
+        ArtifactRepositoryMetadata repositoryMetadata = new ArtifactRepositoryMetadata( artifact );
+        String path = repository.pathOfRemoteRepositoryMetadata( repositoryMetadata );
+        File metadataFile = new File( repository.getBasedir(), path );
+        if ( metadataFile.exists() )
+        {
+            MetadataXpp3Reader reader = new MetadataXpp3Reader();
+            try
+            {
+                metadata = reader.read( new FileReader( metadataFile ) );
+            }
+            catch ( Exception e )
+            {
+                throw new RepositoryQueryLayerException( "Error occurred while attempting to read metadata file", e );
+            }
+        }
+        else
+        {
+            throw new RepositoryQueryLayerException( "Metadata not found: " + metadataFile.getAbsolutePath() );
+        }
+
+        return metadata;
+    }
+}

Propchange: maven/repository-manager/trunk/maven-repository-reports-standard/src/main/java/org/apache/maven/repository/reporting/AbstractRepositoryQueryLayer.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/repository-manager/trunk/maven-repository-reports-standard/src/main/java/org/apache/maven/repository/reporting/AbstractRepositoryQueryLayer.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Modified: maven/repository-manager/trunk/maven-repository-reports-standard/src/main/java/org/apache/maven/repository/reporting/CachedRepositoryQueryLayer.java
URL: http://svn.apache.org/viewcvs/maven/repository-manager/trunk/maven-repository-reports-standard/src/main/java/org/apache/maven/repository/reporting/CachedRepositoryQueryLayer.java?rev=356209&r1=356208&r2=356209&view=diff
==============================================================================
--- maven/repository-manager/trunk/maven-repository-reports-standard/src/main/java/org/apache/maven/repository/reporting/CachedRepositoryQueryLayer.java (original)
+++ maven/repository-manager/trunk/maven-repository-reports-standard/src/main/java/org/apache/maven/repository/reporting/CachedRepositoryQueryLayer.java Mon Dec 12 00:09:34 2005
@@ -35,19 +35,19 @@
  *
  */
 public class CachedRepositoryQueryLayer
-    implements RepositoryQueryLayer
+    extends AbstractRepositoryQueryLayer
 {
-    // plexus components
-    private ArtifactRepository repository;
-
-    
+    //@todo caches should expire    
     //cache for metadata
     private Map cacheMetadata;
 
     //cache for repository files, all types
-    //@todo should also cache missing files???
+    //@todo ???should also cache missing files
     private Map cacheFile;
     
+    //@todo ???should a listener be required???
+    private long cacheHits = 0;
+
     public CachedRepositoryQueryLayer( ArtifactRepository repository )
     {
         this.repository = repository;
@@ -56,83 +56,92 @@
         
         cacheFile = new HashMap();
     }
+    
+    public long getCacheHits()
+    {
+        return cacheHits;
+    }
 
     public boolean containsArtifact( Artifact artifact )
     {
+        boolean artifactFound = true;
+        
         // @todo should check for snapshot artifacts
         File artifactFile = new File( repository.pathOf( artifact ) );
-        
-        return fileExists( artifactFile );
+
+        if ( !checkFileCache( artifactFile ) )
+        {
+            artifactFound = super.containsArtifact( artifact );
+            if ( artifactFound )
+            {
+                addToFileCache( artifactFile );
+            }
+        }
+
+        return artifactFound;
     }
 
     public boolean containsArtifact( Artifact artifact, Snapshot snapshot )
     {
-        return false;
-    }
+        boolean artifactFound = true;
 
-    private List getArtifactVersions( Artifact artifact )
-    {
-        Metadata metadata = getMetadata( artifact );
-        
-        return metadata.getVersioning().getVersions();
+        String path = getSnapshotArtifactRepositoryPath( artifact, snapshot );
+
+        if ( !checkFileCache( path ) )
+        {
+            artifactFound = super.containsArtifact( artifact, snapshot );
+            if ( artifactFound )
+            {
+                addToFileCache( new File( repository.getBasedir(), path ) );
+            }
+        }
+
+        return artifactFound;
     }
 
     /**
      * Method to utilize the cache
      */
-    private boolean fileExists( File file )
+    private boolean checkFileCache( File file )
     {
-        boolean existing = true;
-        
-        String path = file.getAbsolutePath();
-        if ( !cacheFile.containsKey( path ) )
+        boolean existing = false;
+
+        if ( cacheFile.containsKey( file ) )
         {
-            if ( file.exists() )
-            {
-                cacheFile.put( path, file );
-            }
-            else
-            {
-                existing = false;
-            }
+            cacheHits++;
+            existing = true;
         }
-        
+
         return existing;
     }
 
-    private boolean fileExists( String repositoryPath )
+    private boolean checkFileCache( String repositoryPath )
     {
-        return fileExists(  new File( repository.getBasedir(), repositoryPath ) );
+        return checkFileCache(  new File( repository.getBasedir(), repositoryPath ) );
+    }
+    
+    private void addToFileCache( File file )
+    {
+        cacheFile.put( file, file );
     }
 
     /**
-     * Method to utilize the cache
+     * Override method to utilize the cache
      */
-    private Metadata getMetadata( Artifact artifact )
+    protected Metadata getMetadata( Artifact artifact )
+        throws RepositoryQueryLayerException
     {
         Metadata metadata = null;
         
         if ( cacheMetadata.containsKey( artifact.getId() ) )
         {
+            cacheHits++;
             metadata = (Metadata) cacheMetadata.get( artifact.getId() );
         }
         else
         {
-            ArtifactRepositoryMetadata repositoryMetadata = new ArtifactRepositoryMetadata( artifact );
-            String path = repository.pathOfRemoteRepositoryMetadata( repositoryMetadata );
-            if ( fileExists( new File( path ) ) )
-            {
-                MetadataXpp3Reader reader = new MetadataXpp3Reader();
-                try
-                {
-                    metadata = reader.read( new FileReader( path ) );
-                    cacheMetadata.put( path, metadata );
-                }
-                catch ( Exception e )
-                {
-                    //@todo should throw something
-                }
-            }
+            metadata = super.getMetadata( artifact );
+            cacheMetadata.put( artifact.getId(), metadata );
         }
         
         return metadata;

Modified: maven/repository-manager/trunk/maven-repository-reports-standard/src/main/java/org/apache/maven/repository/reporting/DefaultRepositoryQueryLayer.java
URL: http://svn.apache.org/viewcvs/maven/repository-manager/trunk/maven-repository-reports-standard/src/main/java/org/apache/maven/repository/reporting/DefaultRepositoryQueryLayer.java?rev=356209&r1=356208&r2=356209&view=diff
==============================================================================
--- maven/repository-manager/trunk/maven-repository-reports-standard/src/main/java/org/apache/maven/repository/reporting/DefaultRepositoryQueryLayer.java (original)
+++ maven/repository-manager/trunk/maven-repository-reports-standard/src/main/java/org/apache/maven/repository/reporting/DefaultRepositoryQueryLayer.java Mon Dec 12 00:09:34 2005
@@ -21,32 +21,21 @@
 import org.apache.maven.artifact.repository.metadata.Snapshot;
 
 import java.io.File;
+import java.io.FileReader;
+import java.io.IOException;
+import java.util.List;
+import org.apache.maven.artifact.repository.metadata.ArtifactRepositoryMetadata;
+import org.apache.maven.artifact.repository.metadata.Metadata;
+import org.apache.maven.artifact.repository.metadata.io.xpp3.MetadataXpp3Reader;
 
 /**
  * 
  */
 public class DefaultRepositoryQueryLayer
-    implements RepositoryQueryLayer
+    extends AbstractRepositoryQueryLayer
 {
-    private final ArtifactRepository repository;
-
     public DefaultRepositoryQueryLayer( ArtifactRepository repository )
     {
         this.repository = repository;
-    }
-
-    public boolean containsArtifact( Artifact artifact )
-    {
-        File f = new File( repository.getBasedir(), repository.pathOf( artifact ) );
-        return f.exists();
-    }
-    
-    public boolean containsArtifact( Artifact artifact, Snapshot snapshot )
-    {
-        File f = new File( repository.getBasedir(), repository.pathOf( artifact ) );
-        String snapshotInfo = artifact.getVersion().replaceAll( "SNAPSHOT", snapshot.getTimestamp() + "-" + 
-                                                                            snapshot.getBuildNumber() + ".pom" );
-        File snapshotFile = new File( f.getParentFile(), artifact.getArtifactId() + "-" + snapshotInfo );
-        return snapshotFile.exists();
     }
 }

Modified: maven/repository-manager/trunk/maven-repository-reports-standard/src/main/java/org/apache/maven/repository/reporting/RepositoryQueryLayer.java
URL: http://svn.apache.org/viewcvs/maven/repository-manager/trunk/maven-repository-reports-standard/src/main/java/org/apache/maven/repository/reporting/RepositoryQueryLayer.java?rev=356209&r1=356208&r2=356209&view=diff
==============================================================================
--- maven/repository-manager/trunk/maven-repository-reports-standard/src/main/java/org/apache/maven/repository/reporting/RepositoryQueryLayer.java (original)
+++ maven/repository-manager/trunk/maven-repository-reports-standard/src/main/java/org/apache/maven/repository/reporting/RepositoryQueryLayer.java Mon Dec 12 00:09:34 2005
@@ -17,6 +17,7 @@
  * limitations under the License. 
  */
 
+import java.util.List;
 import org.apache.maven.artifact.Artifact;
 import org.apache.maven.artifact.repository.metadata.Snapshot;
 
@@ -33,4 +34,6 @@
     boolean containsArtifact( Artifact artifact );
 
     boolean containsArtifact( Artifact artifact, Snapshot snapshot );
+    
+    List getVersions( Artifact artifact ) throws RepositoryQueryLayerException;
 }

Added: maven/repository-manager/trunk/maven-repository-reports-standard/src/main/java/org/apache/maven/repository/reporting/RepositoryQueryLayerException.java
URL: http://svn.apache.org/viewcvs/maven/repository-manager/trunk/maven-repository-reports-standard/src/main/java/org/apache/maven/repository/reporting/RepositoryQueryLayerException.java?rev=356209&view=auto
==============================================================================
--- maven/repository-manager/trunk/maven-repository-reports-standard/src/main/java/org/apache/maven/repository/reporting/RepositoryQueryLayerException.java (added)
+++ maven/repository-manager/trunk/maven-repository-reports-standard/src/main/java/org/apache/maven/repository/reporting/RepositoryQueryLayerException.java Mon Dec 12 00:09:34 2005
@@ -0,0 +1,35 @@
+package org.apache.maven.repository.reporting;
+
+/*
+ * Copyright 2001-2005 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.
+ */
+
+/**
+ *
+ */
+public class RepositoryQueryLayerException
+    extends Exception
+{
+    public RepositoryQueryLayerException( String message, Throwable cause )
+    {
+        super( message, cause );
+    }
+    
+    public RepositoryQueryLayerException( String message )
+    {
+        super( message );
+    }
+}

Propchange: maven/repository-manager/trunk/maven-repository-reports-standard/src/main/java/org/apache/maven/repository/reporting/RepositoryQueryLayerException.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/repository-manager/trunk/maven-repository-reports-standard/src/main/java/org/apache/maven/repository/reporting/RepositoryQueryLayerException.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Modified: maven/repository-manager/trunk/maven-repository-reports-standard/src/test/java/org/apache/maven/repository/reporting/AbstractRepositoryQueryLayerTest.java
URL: http://svn.apache.org/viewcvs/maven/repository-manager/trunk/maven-repository-reports-standard/src/test/java/org/apache/maven/repository/reporting/AbstractRepositoryQueryLayerTest.java?rev=356209&r1=356208&r2=356209&view=diff
==============================================================================
--- maven/repository-manager/trunk/maven-repository-reports-standard/src/test/java/org/apache/maven/repository/reporting/AbstractRepositoryQueryLayerTest.java (original)
+++ maven/repository-manager/trunk/maven-repository-reports-standard/src/test/java/org/apache/maven/repository/reporting/AbstractRepositoryQueryLayerTest.java Mon Dec 12 00:09:34 2005
@@ -18,12 +18,14 @@
  */
 
 import java.io.File;
+import java.util.List;
 
 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.repository.ArtifactRepositoryFactory;
 import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout;
+import org.apache.maven.artifact.repository.metadata.Snapshot;
 
 import org.codehaus.plexus.PlexusTestCase;
 
@@ -44,37 +46,98 @@
         super.setUp();
         File repositoryDirectory = getTestFile( "src/test/repository" );
 
-        ArtifactFactory artifactFactory = (ArtifactFactory) lookup( ArtifactFactory.ROLE );
+        artifactFactory = (ArtifactFactory) lookup( ArtifactFactory.ROLE );
         ArtifactRepositoryFactory factory = (ArtifactRepositoryFactory) lookup( ArtifactRepositoryFactory.ROLE );
         ArtifactRepositoryLayout layout = (ArtifactRepositoryLayout) lookup( ArtifactRepositoryLayout.ROLE, "default" );
 
         repository =
             factory.createArtifactRepository( "test", repositoryDirectory.toURL().toString(), layout, null, null );
-
-        queryLayer = new CachedRepositoryQueryLayer( repository );
     }
 
     public void testContainsArtifactTrue()
     {
         Artifact artifact = getArtifact( "groupId", "artifactId", "1.0-alpha-1" );
         
-        assertTrue( "check artifact exists", queryLayer.containsArtifact( artifact ) );
+        assertTrue( "check artifact", queryLayer.containsArtifact( artifact ) );
     }
 
     public void testContainsArtifactFalse()
     {
         Artifact artifact = getArtifact( "groupId", "artifactId", "1.0-beta-1" );
         
-        assertFalse( "check artifact exists", queryLayer.containsArtifact( artifact ) );
+        assertFalse( "check non-existent artifact", queryLayer.containsArtifact( artifact ) );
+    }
+
+    public void testContainsSnapshotArtifactTrue()
+    {
+        Snapshot snapshot = new Snapshot();
+        snapshot.setTimestamp( "20050611.202024" );
+        snapshot.setBuildNumber( 1 );
+        
+        Artifact artifact = getArtifact( "groupId", "snapshot-artifact", "1.0-alpha-1-SNAPSHOT" );
+        assertTrue( "check for snapshot artifact", queryLayer.containsArtifact( artifact, snapshot ) );
+    }
+
+    public void testContainsSnapshotArtifactFalse()
+    {
+        Snapshot snapshot = new Snapshot();
+        snapshot.setTimestamp( "20050611.202024" );
+        snapshot.setBuildNumber( 2 );
+        
+        Artifact artifact = getArtifact( "groupId", "snapshot-artifact", "1.0-alpha-1-SNAPSHOT" );
+        assertFalse( "check for non-existent snapshot artifact", queryLayer.containsArtifact( artifact, snapshot ) );
+    }
+    
+    public void testArtifactVersionsTrue()
+        throws Exception
+    {
+        Artifact artifact = getArtifact( "groupId", "artifactId", "ignored" );
+        
+        List versions = queryLayer.getVersions( artifact );
+        
+        assertTrue( "check version 1.0-alpha-1", versions.contains( "1.0-alpha-1" ) );
+        assertTrue( "check version 1.0-alpha-2", versions.contains( "1.0-alpha-2" ) );
+        assertFalse( "check version 1.0-alpha-3", versions.contains( "1.0-alpha-3" ) );
     }
 
-    public void testContainsSnapshotArtifact()
+    public void testArtifactVersionsFalse()
+        throws Exception
     {
+        Artifact artifact = getArtifact( "groupId", "artifactId", "ignored" );
         
+        List versions = queryLayer.getVersions( artifact );
+        
+        assertTrue( "check version 1.0-alpha-1", versions.contains( "1.0-alpha-1" ) );
+        assertTrue( "check version 1.0-alpha-2", versions.contains( "1.0-alpha-2" ) );
+        assertFalse( "check version 1.0-alpha-3", versions.contains( "1.0-alpha-3" ) );
     }
     
+    public void testArtifactVersionsError()
+    {
+        Artifact artifact = getArtifact( "groupId", "none", "ignored" );
+        
+        try
+        {
+            queryLayer.getVersions( artifact );
+            fail( "expected error not thrown" );
+        }
+        catch ( RepositoryQueryLayerException e )
+        {
+            //expected
+        }
+    }
+
     protected Artifact getArtifact( String groupId, String artifactId, String version )
     {
+        if ( artifactFactory == null ) System.out.println("NULL");
         return artifactFactory.createBuildArtifact( groupId, artifactId, version, "pom" );
+    }
+
+    protected void tearDown() throws Exception
+    {
+        release( artifactFactory );
+        super.tearDown();
+        artifactFactory = null;
+        repository = null;
     }
 }

Added: maven/repository-manager/trunk/maven-repository-reports-standard/src/test/java/org/apache/maven/repository/reporting/CachedRepositoryQueryLayerTest.java
URL: http://svn.apache.org/viewcvs/maven/repository-manager/trunk/maven-repository-reports-standard/src/test/java/org/apache/maven/repository/reporting/CachedRepositoryQueryLayerTest.java?rev=356209&view=auto
==============================================================================
--- maven/repository-manager/trunk/maven-repository-reports-standard/src/test/java/org/apache/maven/repository/reporting/CachedRepositoryQueryLayerTest.java (added)
+++ maven/repository-manager/trunk/maven-repository-reports-standard/src/test/java/org/apache/maven/repository/reporting/CachedRepositoryQueryLayerTest.java Mon Dec 12 00:09:34 2005
@@ -0,0 +1,57 @@
+package org.apache.maven.repository.reporting;
+
+/*
+ * Copyright 2001-2005 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.
+ */
+
+/**
+ *
+ */
+public class CachedRepositoryQueryLayerTest
+    extends AbstractRepositoryQueryLayerTest
+{
+    protected void setUp() throws Exception
+    {
+        super.setUp();
+        
+        queryLayer = new CachedRepositoryQueryLayer( repository );
+    }
+    
+    public void testUseFileCache()
+    {
+        testContainsArtifactTrue();
+        assertEquals( "check cache usage", 0, queryLayer.getCacheHits() );
+        testContainsArtifactTrue();
+        assertEquals( "check cache usage", 1, queryLayer.getCacheHits() );
+    }
+    
+    public void testUseMetadataCache()
+        throws Exception
+    {
+        testArtifactVersionsTrue();
+        assertEquals( "check cache usage", 0, queryLayer.getCacheHits() );
+        testArtifactVersionsTrue();
+        assertEquals( "check cache usage", 1, queryLayer.getCacheHits() );
+    }
+    
+    public void testUseFileCacheOnSnapshot()
+    {
+        testContainsSnapshotArtifactTrue();
+        assertEquals( "check cache usage", 0, queryLayer.getCacheHits() );
+        testContainsSnapshotArtifactTrue();
+        assertEquals( "check cache usage", 1, queryLayer.getCacheHits() );
+    }
+}

Propchange: maven/repository-manager/trunk/maven-repository-reports-standard/src/test/java/org/apache/maven/repository/reporting/CachedRepositoryQueryLayerTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/repository-manager/trunk/maven-repository-reports-standard/src/test/java/org/apache/maven/repository/reporting/CachedRepositoryQueryLayerTest.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Modified: maven/repository-manager/trunk/maven-repository-reports-standard/src/test/java/org/apache/maven/repository/reporting/MockRepositoryQueryLayer.java
URL: http://svn.apache.org/viewcvs/maven/repository-manager/trunk/maven-repository-reports-standard/src/test/java/org/apache/maven/repository/reporting/MockRepositoryQueryLayer.java?rev=356209&r1=356208&r2=356209&view=diff
==============================================================================
--- maven/repository-manager/trunk/maven-repository-reports-standard/src/test/java/org/apache/maven/repository/reporting/MockRepositoryQueryLayer.java (original)
+++ maven/repository-manager/trunk/maven-repository-reports-standard/src/test/java/org/apache/maven/repository/reporting/MockRepositoryQueryLayer.java Mon Dec 12 00:09:34 2005
@@ -70,4 +70,14 @@
         // TODO
         return containsArtifact( artifact );
     }
+
+    public boolean containsArtifactVersion(Artifact artifact, String version)
+    {
+        return false;
+    }
+    
+    public List getVersions( Artifact artifact )
+    {
+        return null;
+    }
 }

Added: maven/repository-manager/trunk/maven-repository-reports-standard/src/test/repository/groupId/artifactId/maven-metadata.xml
URL: http://svn.apache.org/viewcvs/maven/repository-manager/trunk/maven-repository-reports-standard/src/test/repository/groupId/artifactId/maven-metadata.xml?rev=356209&view=auto
==============================================================================
--- maven/repository-manager/trunk/maven-repository-reports-standard/src/test/repository/groupId/artifactId/maven-metadata.xml (added)
+++ maven/repository-manager/trunk/maven-repository-reports-standard/src/test/repository/groupId/artifactId/maven-metadata.xml Mon Dec 12 00:09:34 2005
@@ -0,0 +1,11 @@
+<metadata>
+  <groupId>groupId</groupId> 
+  <artifactId>artifactId</artifactId> 
+  <version>1.0-alpha-1</version> 
+  <versioning>
+    <versions>
+      <version>1.0-alpha-1</version> 
+      <version>1.0-alpha-2</version> 
+    </versions>
+  </versioning>
+</metadata>

Propchange: maven/repository-manager/trunk/maven-repository-reports-standard/src/test/repository/groupId/artifactId/maven-metadata.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/repository-manager/trunk/maven-repository-reports-standard/src/test/repository/groupId/artifactId/maven-metadata.xml
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"