Simplified code
Project: http://git-wip-us.apache.org/repos/asf/maven-aether/repo Commit: http://git-wip-us.apache.org/repos/asf/maven-aether/commit/cbcde593 Tree: http://git-wip-us.apache.org/repos/asf/maven-aether/tree/cbcde593 Diff: http://git-wip-us.apache.org/repos/asf/maven-aether/diff/cbcde593 Branch: refs/heads/master Commit: cbcde59357d3dbce018bc5596a92f854ca7226d9 Parents: c2b1c3d Author: Benjamin Bentmann <bentm...@sonatype.com> Authored: Sat Jun 21 21:26:27 2014 +0200 Committer: Benjamin Bentmann <bentm...@sonatype.com> Committed: Sat Jun 21 21:26:27 2014 +0200 ---------------------------------------------------------------------- .../eclipse/aether/internal/impl/DataPool.java | 35 +++++--------------- .../impl/DefaultDependencyCollector.java | 2 +- .../aether/internal/impl/ObjectPool.java | 20 ++++++----- 3 files changed, 20 insertions(+), 37 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/maven-aether/blob/cbcde593/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DataPool.java ---------------------------------------------------------------------- diff --git a/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DataPool.java b/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DataPool.java index 545aa49..3da5e60 100644 --- a/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DataPool.java +++ b/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DataPool.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2010, 2013 Sonatype, Inc. + * Copyright (c) 2010, 2014 Sonatype, Inc. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -41,18 +41,14 @@ import org.eclipse.aether.version.VersionConstraint; final class DataPool { - private static final String ARTIFACT_POOL = DataPool.class.getName() + "$Artifact"; - - private static final String DEPENDENCY_POOL = DataPool.class.getName() + "$Dependency"; + private static final String OBJECT_POOL = DataPool.class.getName() + "$Objects"; private static final String DESCRIPTORS = DataPool.class.getName() + "$Descriptors"; public static final ArtifactDescriptorResult NO_DESCRIPTOR = new ArtifactDescriptorResult( new ArtifactDescriptorRequest() ); - private ObjectPool<Artifact> artifacts; - - private ObjectPool<Dependency> dependencies; + private ObjectPool objectPool; private Map<Object, Descriptor> descriptors; @@ -67,26 +63,16 @@ final class DataPool if ( cache != null ) { - artifacts = (ObjectPool<Artifact>) cache.get( session, ARTIFACT_POOL ); - dependencies = (ObjectPool<Dependency>) cache.get( session, DEPENDENCY_POOL ); + objectPool = (ObjectPool) cache.get( session, OBJECT_POOL ); descriptors = (Map<Object, Descriptor>) cache.get( session, DESCRIPTORS ); } - if ( artifacts == null ) + if ( objectPool == null ) { - artifacts = new ObjectPool<Artifact>(); + objectPool = new ObjectPool(); if ( cache != null ) { - cache.put( session, ARTIFACT_POOL, artifacts ); - } - } - - if ( dependencies == null ) - { - dependencies = new ObjectPool<Dependency>(); - if ( cache != null ) - { - cache.put( session, DEPENDENCY_POOL, dependencies ); + cache.put( session, OBJECT_POOL, objectPool ); } } @@ -100,14 +86,9 @@ final class DataPool } } - public Artifact intern( Artifact artifact ) - { - return artifacts.intern( artifact ); - } - public Dependency intern( Dependency dependency ) { - return dependencies.intern( dependency ); + return objectPool.intern( dependency ); } public Object toKey( ArtifactDescriptorRequest request ) http://git-wip-us.apache.org/repos/asf/maven-aether/blob/cbcde593/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultDependencyCollector.java ---------------------------------------------------------------------- diff --git a/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultDependencyCollector.java b/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultDependencyCollector.java index 404897c..28770c1 100644 --- a/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultDependencyCollector.java +++ b/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultDependencyCollector.java @@ -441,7 +441,7 @@ public class DefaultDependencyCollector } else { - d = args.pool.intern( d.setArtifact( args.pool.intern( d.getArtifact() ) ) ); + d = args.pool.intern( d ); List<RemoteRepository> repos = getRemoteRepositories( rangeResult.getRepository( version ), repositories ); http://git-wip-us.apache.org/repos/asf/maven-aether/blob/cbcde593/aether-impl/src/main/java/org/eclipse/aether/internal/impl/ObjectPool.java ---------------------------------------------------------------------- diff --git a/aether-impl/src/main/java/org/eclipse/aether/internal/impl/ObjectPool.java b/aether-impl/src/main/java/org/eclipse/aether/internal/impl/ObjectPool.java index acbf055..bdf0909 100644 --- a/aether-impl/src/main/java/org/eclipse/aether/internal/impl/ObjectPool.java +++ b/aether-impl/src/main/java/org/eclipse/aether/internal/impl/ObjectPool.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2010, 2011 Sonatype, Inc. + * Copyright (c) 2010, 2014 Sonatype, Inc. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -15,29 +15,31 @@ import java.lang.ref.WeakReference; import java.util.Map; import java.util.WeakHashMap; +import org.eclipse.aether.graph.Dependency; + /** * Pool of immutable object instances, used to avoid excessive memory consumption of (dirty) dependency graph which * tends to have many duplicate artifacts/dependencies. */ -class ObjectPool<T> +final class ObjectPool { - private final Map<Object, Reference<T>> objects = new WeakHashMap<Object, Reference<T>>( 256 ); + private final Map<Object, Reference<Dependency>> dependencies = + new WeakHashMap<Object, Reference<Dependency>>( 256 ); - public synchronized T intern( T object ) + public synchronized Dependency intern( Dependency dependency ) { - Reference<T> pooledRef = objects.get( object ); + Reference<Dependency> pooledRef = dependencies.get( dependency ); if ( pooledRef != null ) { - T pooled = pooledRef.get(); + Dependency pooled = pooledRef.get(); if ( pooled != null ) { return pooled; } } - - objects.put( object, new WeakReference<T>( object ) ); - return object; + dependencies.put( dependency, new WeakReference<Dependency>( dependency ) ); + return dependency; } }