Author: olamy
Date: Thu Mar 27 06:02:33 2014
New Revision: 1582203
URL: http://svn.apache.org/r1582203
Log:
add a bit of caching here at least for released version
Modified:
archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultBrowseService.java
archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/resources/META-INF/spring-context.xml
Modified:
archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultBrowseService.java
URL:
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultBrowseService.java?rev=1582203&r1=1582202&r2=1582203&view=diff
==============================================================================
---
archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultBrowseService.java
(original)
+++
archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultBrowseService.java
Thu Mar 27 06:02:33 2014
@@ -41,6 +41,7 @@ import org.apache.archiva.metadata.repos
import org.apache.archiva.model.ArchivaArtifact;
import org.apache.archiva.model.ArchivaRepositoryMetadata;
import org.apache.archiva.proxy.model.RepositoryProxyConnectors;
+import org.apache.archiva.redback.components.cache.Cache;
import org.apache.archiva.repository.ManagedRepositoryContent;
import org.apache.archiva.repository.RepositoryContentFactory;
import org.apache.archiva.repository.RepositoryException;
@@ -103,6 +104,10 @@ public class DefaultBrowseService
@Named( value = "repositoryProxyConnectors#default" )
private RepositoryProxyConnectors connectors;
+ @Inject
+ @Named( value = "browse#versionMetadata" )
+ private Cache<String, ProjectVersionMetadata> versionMetadataCache;
+
public BrowseResult getRootGroups( String repositoryId )
throws ArchivaRestServiceException
{
@@ -333,9 +338,35 @@ public class DefaultBrowseService
{
try
{
- versionMetadata =
- metadataResolver.resolveProjectVersion(
repositorySession, repoId, groupId, artifactId,
-
version );
+ ProjectVersionMetadata
projectVersionMetadataResolved = null;
+ boolean useCache = !StringUtils.endsWith( version,
VersionUtil.SNAPSHOT );
+ String cacheKey = null;
+ boolean cacheToUpdate = false;
+ // FIXME a bit maven centric!!!
+ // not a snapshot so get it from cache
+ if ( useCache )
+ {
+ cacheKey = repoId + groupId + artifactId +
version;
+ projectVersionMetadataResolved =
versionMetadataCache.get( cacheKey );
+ }
+ if ( useCache && projectVersionMetadataResolved !=
null )
+ {
+ versionMetadata =
projectVersionMetadataResolved;
+ }
+ else
+ {
+ projectVersionMetadataResolved =
+ metadataResolver.resolveProjectVersion(
repositorySession, repoId, groupId,
+
artifactId, version );
+ versionMetadata =
projectVersionMetadataResolved;
+ cacheToUpdate = true;
+ }
+
+ if ( useCache && cacheToUpdate )
+ {
+ versionMetadataCache.put( cacheKey,
projectVersionMetadataResolved );
+ }
+
}
catch ( MetadataResolutionException e )
{
@@ -479,8 +510,8 @@ public class DefaultBrowseService
{
// TODO: what about if we want to see this irrespective of
version?
references.addAll(
- metadataResolver.resolveProjectReferences(
repositorySession, repoId, groupId, artifactId, version )
- );
+ metadataResolver.resolveProjectReferences(
repositorySession, repoId, groupId, artifactId,
+ version ) );
}
}
catch ( MetadataResolutionException e )
@@ -1111,4 +1142,14 @@ public class DefaultBrowseService
n + "." +
subNamespaces.iterator().next() );
}
}
+
+ public Cache getVersionMetadataCache()
+ {
+ return versionMetadataCache;
+ }
+
+ public void setVersionMetadataCache( Cache versionMetadataCache )
+ {
+ this.versionMetadataCache = versionMetadataCache;
+ }
}
Modified:
archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/resources/META-INF/spring-context.xml
URL:
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/resources/META-INF/spring-context.xml?rev=1582203&r1=1582202&r2=1582203&view=diff
==============================================================================
---
archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/resources/META-INF/spring-context.xml
(original)
+++
archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/resources/META-INF/spring-context.xml
Thu Mar 27 06:02:33 2014
@@ -85,4 +85,15 @@
</jaxrs:outFaultInterceptors>
</jaxrs:server>
+ <bean name="browse#versionMetadata"
class="org.apache.archiva.redback.components.cache.ehcache.EhcacheCache"
+ init-method="initialize">
+ <property name="diskPersistent" value="false"/>
+ <property name="eternal" value="false"/>
+ <property name="maxElementsInMemory" value="1000"/>
+ <property name="memoryEvictionPolicy" value="LRU"/>
+ <property name="name" value="userPermissions"/>
+ <property name="timeToIdleSeconds" value="300"/>
+ <property name="timeToLiveSeconds" value="600"/>
+ </bean>
+
</beans>
\ No newline at end of file