1 package org.apache.maven.archiva.layer;
4 * Copyright 2005-2006 The Apache Software Foundation.
6 * Licensed under the Apache License, Version 2.0 (the "License");
7 * you may not use this file except in compliance with the License.
8 * You may obtain a copy of the License at
10 * http://www.apache.org/licenses/LICENSE-2.0
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
19 import org.apache.maven.artifact.Artifact;
20 import org.apache.maven.artifact.repository.ArtifactRepository;
22 import java.util.List;
28 public class CachedRepositoryQueryLayer
29 implements RepositoryQueryLayer
33 public static final double CACHE_HIT_RATIO = 0.5;
35 private RepositoryQueryLayer layer;
37 public CachedRepositoryQueryLayer( RepositoryQueryLayer layer )
41 cache = new Cache( CACHE_HIT_RATIO );
44 public CachedRepositoryQueryLayer( RepositoryQueryLayer layer, Cache cache )
50 public double getCacheHitRate()
52 return cache.getHitRate();
55 public boolean containsArtifact( Artifact artifact )
57 boolean artifactFound = true;
59 String artifactPath = layer.getRepository().pathOf( artifact );
61 if ( cache.get( artifactPath ) == null )
63 artifactFound = layer.containsArtifact( artifact );
66 cache.put( artifactPath, artifactPath );
73 public List getVersions( Artifact artifact )
74 throws RepositoryQueryLayerException
76 List list = (List) cache.get( artifact.getId() );
80 list = layer.getVersions( artifact );
81 cache.put( artifact.getId(), list );
87 public ArtifactRepository getRepository()
89 return layer.getRepository();