From 21ea5eeca8448c8880a3f2d975dee3107e3175b3 Mon Sep 17 00:00:00 2001 From: Reinier Zwitserloot Date: Wed, 23 Sep 2009 07:43:43 +0200 Subject: Slight tweak to SpiLoadUtil: It now returns iterables instead of iterators. --- src/lombok/core/SpiLoadUtil.java | 38 +++++++++++++++++++++----------------- 1 file changed, 21 insertions(+), 17 deletions(-) (limited to 'src/lombok/core') diff --git a/src/lombok/core/SpiLoadUtil.java b/src/lombok/core/SpiLoadUtil.java index c28f8c23..9f047c22 100644 --- a/src/lombok/core/SpiLoadUtil.java +++ b/src/lombok/core/SpiLoadUtil.java @@ -61,7 +61,7 @@ public class SpiLoadUtil { * * @param target class to find implementations for. */ - public static Iterator findServices(Class target) throws IOException { + public static Iterable findServices(Class target) throws IOException { return findServices(target, Thread.currentThread().getContextClassLoader()); } @@ -75,7 +75,7 @@ public class SpiLoadUtil { * @param loader The classloader object to use to both the spi discovery files, as well as the loader to use * to make the returned instances. */ - public static Iterator findServices(final Class target, final ClassLoader loader) throws IOException { + public static Iterable findServices(final Class target, final ClassLoader loader) throws IOException { Enumeration resources = loader.getResources("META-INF/services/" + target.getName()); final Set entries = new LinkedHashSet(); while ( resources.hasMoreElements() ) { @@ -84,21 +84,25 @@ public class SpiLoadUtil { } final Iterator names = entries.iterator(); - return new Iterator() { - public boolean hasNext() { - return names.hasNext(); - } - - public C next() { - try { - return target.cast(Class.forName(names.next(), true, loader).newInstance()); - } catch ( Throwable t ) { - throw Lombok.sneakyThrow(t); - } - } - - public void remove() { - throw new UnsupportedOperationException(); + return new Iterable () { + @Override public Iterator iterator() { + return new Iterator() { + @Override public boolean hasNext() { + return names.hasNext(); + } + + @Override public C next() { + try { + return target.cast(Class.forName(names.next(), true, loader).newInstance()); + } catch ( Throwable t ) { + throw Lombok.sneakyThrow(t); + } + } + + @Override public void remove() { + throw new UnsupportedOperationException(); + } + }; } }; } -- cgit