Repository: tapestry-5 Updated Branches: refs/heads/master 7e710abee -> b0f280657
TAP5-2335: Spot-optimization to the NamedSet collection Project: http://git-wip-us.apache.org/repos/asf/tapestry-5/repo Commit: http://git-wip-us.apache.org/repos/asf/tapestry-5/commit/b0f28065 Tree: http://git-wip-us.apache.org/repos/asf/tapestry-5/tree/b0f28065 Diff: http://git-wip-us.apache.org/repos/asf/tapestry-5/diff/b0f28065 Branch: refs/heads/master Commit: b0f280657b939fb1efb91cfc4c7d6e2560df19fc Parents: 7e710ab Author: Howard M. Lewis Ship <[email protected]> Authored: Fri Aug 1 12:52:46 2014 -0700 Committer: Howard M. Lewis Ship <[email protected]> Committed: Fri Aug 1 12:52:46 2014 -0700 ---------------------------------------------------------------------- .../org/apache/tapestry5/internal/util/NamedSet.java | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/b0f28065/tapestry-core/src/main/java/org/apache/tapestry5/internal/util/NamedSet.java ---------------------------------------------------------------------- diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/util/NamedSet.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/util/NamedSet.java index 642968f..301954c 100644 --- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/util/NamedSet.java +++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/util/NamedSet.java @@ -1,5 +1,3 @@ -// Copyright 2011, 2012 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 @@ -21,6 +19,7 @@ import org.apache.tapestry5.ioc.internal.util.CollectionFactory; import org.apache.tapestry5.ioc.internal.util.InternalUtils; import org.apache.tapestry5.ioc.internal.util.LockSupport; +import java.util.Collection; import java.util.Collections; import java.util.Set; import java.util.concurrent.locks.ReadWriteLock; @@ -87,7 +86,12 @@ public class NamedSet<T> extends LockSupport public Set<T> getValues() { Set<T> result = CollectionFactory.newSet(); + addValues(result); + return result; + } + private void addValues(Collection<T> result) + { try { acquireReadLock(); @@ -100,7 +104,6 @@ public class NamedSet<T> extends LockSupport cursor = cursor.next; } - return result; } finally { releaseReadLock(); @@ -197,7 +200,9 @@ public class NamedSet<T> extends LockSupport */ public void eachValue(Worker<T> worker) { - F.flow(getValues()).each(worker); + Collection<T> result = CollectionFactory.newList(); + addValues(result); + F.flow(result).each(worker); }
