You are viewing a plain text version of this content. The canonical link for it is here.
Posted to xbean-scm@geronimo.apache.org by db...@apache.org on 2012/04/15 08:52:41 UTC
svn commit: r1326261 - in /geronimo/xbean/trunk/xbean-finder/src:
main/java/org/apache/xbean/finder/ main/java/org/apache/xbean/finder/archive/
test/java/org/apache/xbean/finder/archive/
Author: dblevins
Date: Sun Apr 15 06:52:40 2012
New Revision: 1326261
URL: http://svn.apache.org/viewvc?rev=1326261&view=rev
Log:
XBEAN-205: JarArchive and Archive API reworked for greater performance
Added:
geronimo/xbean/trunk/xbean-finder/src/main/java/org/apache/xbean/finder/archive/ArchiveIterator.java
geronimo/xbean/trunk/xbean-finder/src/test/java/org/apache/xbean/finder/archive/CompositeJarArchiveTest.java
- copied, changed from r1326253, geronimo/xbean/trunk/xbean-finder/src/test/java/org/apache/xbean/finder/archive/CompositeArchiveTest.java
Modified:
geronimo/xbean/trunk/xbean-finder/src/main/java/org/apache/xbean/finder/AnnotationFinder.java
geronimo/xbean/trunk/xbean-finder/src/main/java/org/apache/xbean/finder/archive/Archive.java
geronimo/xbean/trunk/xbean-finder/src/main/java/org/apache/xbean/finder/archive/BundleArchive.java
geronimo/xbean/trunk/xbean-finder/src/main/java/org/apache/xbean/finder/archive/ClassesArchive.java
geronimo/xbean/trunk/xbean-finder/src/main/java/org/apache/xbean/finder/archive/CompositeArchive.java
geronimo/xbean/trunk/xbean-finder/src/main/java/org/apache/xbean/finder/archive/FileArchive.java
geronimo/xbean/trunk/xbean-finder/src/main/java/org/apache/xbean/finder/archive/FilteredArchive.java
geronimo/xbean/trunk/xbean-finder/src/main/java/org/apache/xbean/finder/archive/JarArchive.java
geronimo/xbean/trunk/xbean-finder/src/test/java/org/apache/xbean/finder/archive/Archives.java
geronimo/xbean/trunk/xbean-finder/src/test/java/org/apache/xbean/finder/archive/ClassesArchiveTest.java
geronimo/xbean/trunk/xbean-finder/src/test/java/org/apache/xbean/finder/archive/CompositeArchiveTest.java
geronimo/xbean/trunk/xbean-finder/src/test/java/org/apache/xbean/finder/archive/FileArchiveTest.java
geronimo/xbean/trunk/xbean-finder/src/test/java/org/apache/xbean/finder/archive/FilteredArchiveTest.java
geronimo/xbean/trunk/xbean-finder/src/test/java/org/apache/xbean/finder/archive/JarArchiveTest.java
geronimo/xbean/trunk/xbean-finder/src/test/java/org/apache/xbean/finder/archive/MockArchive.java
Modified: geronimo/xbean/trunk/xbean-finder/src/main/java/org/apache/xbean/finder/AnnotationFinder.java
URL: http://svn.apache.org/viewvc/geronimo/xbean/trunk/xbean-finder/src/main/java/org/apache/xbean/finder/AnnotationFinder.java?rev=1326261&r1=1326260&r2=1326261&view=diff
==============================================================================
--- geronimo/xbean/trunk/xbean-finder/src/main/java/org/apache/xbean/finder/AnnotationFinder.java (original)
+++ geronimo/xbean/trunk/xbean-finder/src/main/java/org/apache/xbean/finder/AnnotationFinder.java Sun Apr 15 06:52:40 2012
@@ -32,6 +32,7 @@ import org.objectweb.asm.Type;
import org.objectweb.asm.commons.EmptyVisitor;
import org.objectweb.asm.signature.SignatureVisitor;
+import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.lang.annotation.Annotation;
@@ -110,6 +111,10 @@ public class AnnotationFinder implements
}
}
+ public boolean hasMetaAnnotations() {
+ return metaroots.size() > 0;
+ }
+
private void readClassDef(ClassInfo info) {
classInfos.put(info.name, info);
index(info);
@@ -151,13 +156,12 @@ public class AnnotationFinder implements
public AnnotationFinder(Archive archive) {
this.archive = archive;
- for (String className : this.archive) {
+ for (Archive.Entry entry : archive) {
+ final String className = entry.getName();
try {
- readClassDef(archive.getBytecode(className));
+ readClassDef(entry.getBytecode());
} catch (NoClassDefFoundError e) {
throw new NoClassDefFoundError("Could not fully load class: " + className + "\n due to:" + e.getMessage());
- } catch (ClassNotFoundException e) {
- e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
@@ -997,15 +1001,17 @@ public class AnnotationFinder implements
}
public class SubArchive implements Archive {
- private List<String> classes = new ArrayList<String>();
+ private List<Entry> classes = new ArrayList<Entry>();
public SubArchive(String... classes) {
- Collections.addAll(this.classes, classes);
+ for (String name : classes) {
+ this.classes.add(new E(name));
+ }
}
public SubArchive(Iterable<String> classes) {
for (String name : classes) {
- this.classes.add(name);
+ this.classes.add(new E(name));
}
}
@@ -1017,9 +1023,25 @@ public class AnnotationFinder implements
return archive.loadClass(className);
}
- public Iterator<String> iterator() {
+ public Iterator<Entry> iterator() {
return classes.iterator();
}
+
+ public class E implements Entry {
+ private final String name;
+
+ public E(String name) {
+ this.name = name;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public InputStream getBytecode() throws IOException {
+ return new ByteArrayInputStream(new byte[0]);
+ }
+ }
}
public class Annotatable {
Modified: geronimo/xbean/trunk/xbean-finder/src/main/java/org/apache/xbean/finder/archive/Archive.java
URL: http://svn.apache.org/viewvc/geronimo/xbean/trunk/xbean-finder/src/main/java/org/apache/xbean/finder/archive/Archive.java?rev=1326261&r1=1326260&r2=1326261&view=diff
==============================================================================
--- geronimo/xbean/trunk/xbean-finder/src/main/java/org/apache/xbean/finder/archive/Archive.java (original)
+++ geronimo/xbean/trunk/xbean-finder/src/main/java/org/apache/xbean/finder/archive/Archive.java Sun Apr 15 06:52:40 2012
@@ -22,10 +22,14 @@ import java.io.InputStream;
/**
* @version $Rev$ $Date$
*/
-public interface Archive extends Iterable<String> {
+public interface Archive extends Iterable<Archive.Entry> {
InputStream getBytecode(String className) throws IOException, ClassNotFoundException;
Class<?> loadClass(String className) throws ClassNotFoundException;
+ public interface Entry {
+ String getName();
+ InputStream getBytecode() throws IOException;
+ }
}
Added: geronimo/xbean/trunk/xbean-finder/src/main/java/org/apache/xbean/finder/archive/ArchiveIterator.java
URL: http://svn.apache.org/viewvc/geronimo/xbean/trunk/xbean-finder/src/main/java/org/apache/xbean/finder/archive/ArchiveIterator.java?rev=1326261&view=auto
==============================================================================
--- geronimo/xbean/trunk/xbean-finder/src/main/java/org/apache/xbean/finder/archive/ArchiveIterator.java (added)
+++ geronimo/xbean/trunk/xbean-finder/src/main/java/org/apache/xbean/finder/archive/ArchiveIterator.java Sun Apr 15 06:52:40 2012
@@ -0,0 +1,59 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.xbean.finder.archive;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Iterator;
+
+/**
+* @version $Rev$ $Date$
+*/
+public class ArchiveIterator implements Iterator<Archive.Entry> {
+ private final Iterator<String> classes;
+ private final Archive archive;
+
+ public ArchiveIterator(Archive archive, Iterator<String> classes) {
+ this.archive = archive;
+ this.classes = classes;
+ }
+
+ public boolean hasNext() {
+ return classes.hasNext();
+ }
+
+ public Archive.Entry next() {
+ final String name = classes.next();
+ return new Archive.Entry() {
+ public String getName() {
+ return name;
+ }
+
+ public InputStream getBytecode() throws IOException {
+ try {
+ return archive.getBytecode(name);
+ } catch (ClassNotFoundException e) {
+ throw new IOException(e);
+ }
+ }
+ };
+ }
+
+ public void remove() {
+ classes.remove();
+ }
+}
Modified: geronimo/xbean/trunk/xbean-finder/src/main/java/org/apache/xbean/finder/archive/BundleArchive.java
URL: http://svn.apache.org/viewvc/geronimo/xbean/trunk/xbean-finder/src/main/java/org/apache/xbean/finder/archive/BundleArchive.java?rev=1326261&r1=1326260&r2=1326261&view=diff
==============================================================================
--- geronimo/xbean/trunk/xbean-finder/src/main/java/org/apache/xbean/finder/archive/BundleArchive.java (original)
+++ geronimo/xbean/trunk/xbean-finder/src/main/java/org/apache/xbean/finder/archive/BundleArchive.java Sun Apr 15 06:52:40 2012
@@ -46,8 +46,7 @@ public class BundleArchive implements Ar
bundleResourceFinder.find(new AnnotationFindingCallback());
}
- public Iterator<String> iterator() {
- // TODO
+ public Iterator<Entry> iterator() {
return Collections.EMPTY_LIST.iterator();
}
Modified: geronimo/xbean/trunk/xbean-finder/src/main/java/org/apache/xbean/finder/archive/ClassesArchive.java
URL: http://svn.apache.org/viewvc/geronimo/xbean/trunk/xbean-finder/src/main/java/org/apache/xbean/finder/archive/ClassesArchive.java?rev=1326261&r1=1326260&r2=1326261&view=diff
==============================================================================
--- geronimo/xbean/trunk/xbean-finder/src/main/java/org/apache/xbean/finder/archive/ClassesArchive.java (original)
+++ geronimo/xbean/trunk/xbean-finder/src/main/java/org/apache/xbean/finder/archive/ClassesArchive.java Sun Apr 15 06:52:40 2012
@@ -50,8 +50,8 @@ public class ClassesArchive implements A
}
}
- public Iterator<String> iterator() {
- return classes.keySet().iterator();
+ public Iterator<Entry> iterator() {
+ return new ArchiveIterator(this, classes.keySet().iterator());
}
public InputStream getBytecode(String className) throws IOException, ClassNotFoundException {
@@ -89,4 +89,5 @@ public class ClassesArchive implements A
throw new ClassNotFoundException(className);
}
+
}
Modified: geronimo/xbean/trunk/xbean-finder/src/main/java/org/apache/xbean/finder/archive/CompositeArchive.java
URL: http://svn.apache.org/viewvc/geronimo/xbean/trunk/xbean-finder/src/main/java/org/apache/xbean/finder/archive/CompositeArchive.java?rev=1326261&r1=1326260&r2=1326261&view=diff
==============================================================================
--- geronimo/xbean/trunk/xbean-finder/src/main/java/org/apache/xbean/finder/archive/CompositeArchive.java (original)
+++ geronimo/xbean/trunk/xbean-finder/src/main/java/org/apache/xbean/finder/archive/CompositeArchive.java Sun Apr 15 06:52:40 2012
@@ -63,14 +63,15 @@ public class CompositeArchive implements
throw new ClassNotFoundException(className);
}
- public Iterator<String> iterator() {
+ public Iterator<Entry> iterator() {
+ if (archives.size() == 1) return archives.get(0).iterator();
return new CompositeIterator(archives);
}
- private static class CompositeIterator implements Iterator<String> {
+ private static class CompositeIterator implements Iterator<Entry> {
private Iterator<Archive> archives;
- private Iterator<String> current;
+ private Iterator<Entry> current;
private CompositeIterator(Iterable<Archive> archives) {
this.archives = archives.iterator();
@@ -90,7 +91,7 @@ public class CompositeArchive implements
return false;
}
- public String next() {
+ public Entry next() {
if (!hasNext()) throw new NoSuchElementException();
return current.next();
Modified: geronimo/xbean/trunk/xbean-finder/src/main/java/org/apache/xbean/finder/archive/FileArchive.java
URL: http://svn.apache.org/viewvc/geronimo/xbean/trunk/xbean-finder/src/main/java/org/apache/xbean/finder/archive/FileArchive.java?rev=1326261&r1=1326260&r2=1326261&view=diff
==============================================================================
--- geronimo/xbean/trunk/xbean-finder/src/main/java/org/apache/xbean/finder/archive/FileArchive.java (original)
+++ geronimo/xbean/trunk/xbean-finder/src/main/java/org/apache/xbean/finder/archive/FileArchive.java Sun Apr 15 06:52:40 2012
@@ -73,7 +73,11 @@ public class FileArchive implements Arch
return loader.loadClass(className);
}
- public Iterator<String> iterator() {
+ public Iterator<Entry> iterator() {
+ return new ArchiveIterator(this, _iterator());
+ }
+
+ public Iterator<String> _iterator() {
if (list != null) return list.iterator();
list = file(dir);
Modified: geronimo/xbean/trunk/xbean-finder/src/main/java/org/apache/xbean/finder/archive/FilteredArchive.java
URL: http://svn.apache.org/viewvc/geronimo/xbean/trunk/xbean-finder/src/main/java/org/apache/xbean/finder/archive/FilteredArchive.java?rev=1326261&r1=1326260&r2=1326261&view=diff
==============================================================================
--- geronimo/xbean/trunk/xbean-finder/src/main/java/org/apache/xbean/finder/archive/FilteredArchive.java (original)
+++ geronimo/xbean/trunk/xbean-finder/src/main/java/org/apache/xbean/finder/archive/FilteredArchive.java Sun Apr 15 06:52:40 2012
@@ -45,16 +45,16 @@ public class FilteredArchive implements
return archive.loadClass(className);
}
- public Iterator<String> iterator() {
+ public Iterator<Entry> iterator() {
return new FilteredIterator(archive.iterator());
}
- private final class FilteredIterator implements Iterator<String> {
- private final Iterator<String> it;
+ private final class FilteredIterator implements Iterator<Entry> {
+ private final Iterator<Entry> it;
- private String next;
+ private Entry next;
- private FilteredIterator(Iterator<String> it) {
+ private FilteredIterator(Iterator<Entry> it) {
this.it = it;
}
@@ -65,10 +65,10 @@ public class FilteredArchive implements
return hasNext();
}
- public String next() {
+ public Entry next() {
if (!hasNext()) throw new NoSuchElementException();
- String s = next;
+ Entry s = next;
next = null;
return s;
@@ -83,7 +83,7 @@ public class FilteredArchive implements
next = it.next();
- if (filter.accept(next)) return;
+ if (filter.accept(next.getName())) return;
next = null;
}
Modified: geronimo/xbean/trunk/xbean-finder/src/main/java/org/apache/xbean/finder/archive/JarArchive.java
URL: http://svn.apache.org/viewvc/geronimo/xbean/trunk/xbean-finder/src/main/java/org/apache/xbean/finder/archive/JarArchive.java?rev=1326261&r1=1326260&r2=1326261&view=diff
==============================================================================
--- geronimo/xbean/trunk/xbean-finder/src/main/java/org/apache/xbean/finder/archive/JarArchive.java (original)
+++ geronimo/xbean/trunk/xbean-finder/src/main/java/org/apache/xbean/finder/archive/JarArchive.java Sun Apr 15 06:52:40 2012
@@ -17,6 +17,7 @@
package org.apache.xbean.finder.archive;
import java.io.BufferedInputStream;
+import java.io.FilterInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
@@ -24,6 +25,7 @@ import java.util.ArrayList;
import java.util.Enumeration;
import java.util.Iterator;
import java.util.List;
+import java.util.NoSuchElementException;
import java.util.jar.JarEntry;
import java.util.jar.JarFile;
import java.util.jar.JarInputStream;
@@ -38,7 +40,7 @@ public class JarArchive implements Archi
private List<String> list;
public JarArchive(ClassLoader loader, URL url) {
- if (!"jar".equals(url.getProtocol())) throw new IllegalArgumentException("not a jar url: " + url);
+// if (!"jar".equals(url.getProtocol())) throw new IllegalArgumentException("not a jar url: " + url);
this.loader = loader;
this.url = url;
}
@@ -71,71 +73,103 @@ public class JarArchive implements Archi
return loader.loadClass(className);
}
- public Iterator<String> iterator() {
- if (list != null) return list.iterator();
-
- try {
- list = jar(url);
- return list.iterator();
- } catch (IOException e) {
- throw new IllegalStateException(e);
- }
+ public Iterator<Entry> iterator() {
+ return new JarIterator();
}
- private List<String> jar(URL location) throws IOException {
- String jarPath = location.getFile();
- if (jarPath.indexOf("!") > -1){
- jarPath = jarPath.substring(0, jarPath.indexOf("!"));
- }
- URL url = new URL(jarPath);
- if ("file".equals(url.getProtocol())) { // ZipFile is faster than ZipInputStream
- JarFile jarFile = new JarFile(url.getFile().replace("%20", " "));
- return jar(jarFile);
- } else {
- InputStream in = url.openStream();
+ private class JarIterator implements Iterator<Entry> {
+
+ private final JarInputStream stream;
+ private final NonClosable nonClosable;
+ private Entry next;
+
+ private JarIterator() {
try {
- JarInputStream jarStream = new JarInputStream(in);
- return jar(jarStream);
- } finally {
- in.close();
+ URL u = url;
+
+ String jarPath = url.getFile();
+ if (jarPath.contains("!")){
+ jarPath = jarPath.substring(0, jarPath.indexOf("!"));
+ u = new URL(jarPath);
+ }
+ InputStream in = u.openStream();
+ in = new BufferedInputStream(in, 1024 * 50);
+ stream = new JarInputStream(in);
+ nonClosable = new NonClosable(stream);
+ } catch (IOException e) {
+ throw new IllegalStateException(e);
}
}
- }
- private List<String> jar(JarFile jarFile) {
- List<String> classNames = new ArrayList<String>();
+ private boolean advance() {
+ if (next != null) return true;
+
+ try {
+ final JarEntry entry = stream.getNextJarEntry();
+
+ if (entry == null) {
+ next = null;
+ return false;
+ }
+
+ if (entry.isDirectory() || !entry.getName().endsWith(".class")) {
+ return advance();
+ }
+
+ final String className = entry.getName().replaceFirst(".class$", "");
+
+ if (className.contains(".")) {
+ return advance();
+ }
+
+ next = new ClassEntry(className.replace('/', '.'));
- Enumeration<? extends JarEntry> jarEntries =jarFile.entries();
- while (jarEntries.hasMoreElements()) {
- JarEntry entry = jarEntries.nextElement();
- addClassName(classNames, entry);
+ return true;
+ } catch (IOException e) {
+ throw new IllegalStateException(e);
+ }
}
- return classNames;
- }
+ public boolean hasNext() {
+ return advance();
+ }
- private List<String> jar(JarInputStream jarStream) throws IOException {
- List<String> classNames = new ArrayList<String>();
+ public Entry next() {
+ if (!hasNext()) throw new NoSuchElementException();
+ Entry entry = next;
+ next = null;
+ return entry;
+ }
- JarEntry entry;
- while ((entry = jarStream.getNextJarEntry()) != null) {
- addClassName(classNames, entry);
+ public void remove() {
+ throw new UnsupportedOperationException("remove");
}
- return classNames;
+ private class ClassEntry implements Entry {
+ private final String name;
+
+ private ClassEntry(String name) {
+ this.name = name;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public InputStream getBytecode() throws IOException {
+ return nonClosable;
+ }
+ }
}
- private void addClassName(List<String> classNames, JarEntry entry) {
- if (entry.isDirectory() || !entry.getName().endsWith(".class")) {
- return;
+ public static class NonClosable extends FilterInputStream {
+ public NonClosable(InputStream in) {
+ super(in);
}
- String className = entry.getName();
- className = className.replaceFirst(".class$", "");
- if (className.contains(".")) {
- return;
+
+ @Override
+ public void close() throws IOException {
}
- className = className.replace('/', '.');
- classNames.add(className);
}
}
Modified: geronimo/xbean/trunk/xbean-finder/src/test/java/org/apache/xbean/finder/archive/Archives.java
URL: http://svn.apache.org/viewvc/geronimo/xbean/trunk/xbean-finder/src/test/java/org/apache/xbean/finder/archive/Archives.java?rev=1326261&r1=1326260&r2=1326261&view=diff
==============================================================================
--- geronimo/xbean/trunk/xbean-finder/src/test/java/org/apache/xbean/finder/archive/Archives.java (original)
+++ geronimo/xbean/trunk/xbean-finder/src/test/java/org/apache/xbean/finder/archive/Archives.java Sun Apr 15 06:52:40 2012
@@ -93,7 +93,7 @@ public class Archives {
return classpath;
}
- public static File jarArchive(Class[] classes) throws IOException {
+ public static File jarArchive(Class... classes) throws IOException {
return jarArchive(new HashMap<String, String>(), classes);
}
Modified: geronimo/xbean/trunk/xbean-finder/src/test/java/org/apache/xbean/finder/archive/ClassesArchiveTest.java
URL: http://svn.apache.org/viewvc/geronimo/xbean/trunk/xbean-finder/src/test/java/org/apache/xbean/finder/archive/ClassesArchiveTest.java?rev=1326261&r1=1326260&r2=1326261&view=diff
==============================================================================
--- geronimo/xbean/trunk/xbean-finder/src/test/java/org/apache/xbean/finder/archive/ClassesArchiveTest.java (original)
+++ geronimo/xbean/trunk/xbean-finder/src/test/java/org/apache/xbean/finder/archive/ClassesArchiveTest.java Sun Apr 15 06:52:40 2012
@@ -61,8 +61,8 @@ public class ClassesArchiveTest extends
public void testIterator() throws Exception {
List<String> classes = new ArrayList<String>();
- for (String classname : archive) {
- classes.add(classname);
+ for (Archive.Entry entry : archive) {
+ classes.add(entry.getName());
}
assertFalse(0 == classes.size());
Modified: geronimo/xbean/trunk/xbean-finder/src/test/java/org/apache/xbean/finder/archive/CompositeArchiveTest.java
URL: http://svn.apache.org/viewvc/geronimo/xbean/trunk/xbean-finder/src/test/java/org/apache/xbean/finder/archive/CompositeArchiveTest.java?rev=1326261&r1=1326260&r2=1326261&view=diff
==============================================================================
--- geronimo/xbean/trunk/xbean-finder/src/test/java/org/apache/xbean/finder/archive/CompositeArchiveTest.java (original)
+++ geronimo/xbean/trunk/xbean-finder/src/test/java/org/apache/xbean/finder/archive/CompositeArchiveTest.java Sun Apr 15 06:52:40 2012
@@ -65,8 +65,8 @@ public class CompositeArchiveTest extend
public void testIterator() throws Exception {
List<String> classes = new ArrayList<String>();
- for (String classname : archive) {
- classes.add(classname);
+ for (Archive.Entry entry : archive) {
+ classes.add(entry.getName());
}
assertFalse(0 == classes.size());
Copied: geronimo/xbean/trunk/xbean-finder/src/test/java/org/apache/xbean/finder/archive/CompositeJarArchiveTest.java (from r1326253, geronimo/xbean/trunk/xbean-finder/src/test/java/org/apache/xbean/finder/archive/CompositeArchiveTest.java)
URL: http://svn.apache.org/viewvc/geronimo/xbean/trunk/xbean-finder/src/test/java/org/apache/xbean/finder/archive/CompositeJarArchiveTest.java?p2=geronimo/xbean/trunk/xbean-finder/src/test/java/org/apache/xbean/finder/archive/CompositeJarArchiveTest.java&p1=geronimo/xbean/trunk/xbean-finder/src/test/java/org/apache/xbean/finder/archive/CompositeArchiveTest.java&r1=1326253&r2=1326261&rev=1326261&view=diff
==============================================================================
--- geronimo/xbean/trunk/xbean-finder/src/test/java/org/apache/xbean/finder/archive/CompositeArchiveTest.java (original)
+++ geronimo/xbean/trunk/xbean-finder/src/test/java/org/apache/xbean/finder/archive/CompositeJarArchiveTest.java Sun Apr 15 06:52:40 2012
@@ -17,22 +17,28 @@
package org.apache.xbean.finder.archive;
import junit.framework.TestCase;
+import org.apache.xbean.finder.filter.Filter;
+import java.io.File;
import java.util.ArrayList;
import java.util.List;
/**
* @version $Rev$ $Date$
*/
-public class CompositeArchiveTest extends TestCase {
+public class CompositeJarArchiveTest extends TestCase {
private CompositeArchive archive;
Class[] classes = {Blue.class, Green.class, Red.class};
@Override
protected void setUp() throws Exception {
+
+ final File one = Archives.jarArchive(Red.class, Green.class);
+ final File two = Archives.jarArchive(Blue.class);
+
archive = new CompositeArchive(
- new ClassesArchive(Red.class, Green.class),
- new ClassesArchive(Blue.class)
+ new FilteredArchive(new CompositeArchive(new JarArchive(this.getClass().getClassLoader(), one.toURI().toURL())), new MyFilter()),
+ new FilteredArchive(new CompositeArchive(new JarArchive(this.getClass().getClassLoader(), two.toURI().toURL())), new MyFilter())
);
}
@@ -65,8 +71,8 @@ public class CompositeArchiveTest extend
public void testIterator() throws Exception {
List<String> classes = new ArrayList<String>();
- for (String classname : archive) {
- classes.add(classname);
+ for (Archive.Entry entry : archive) {
+ classes.add(entry.getName());
}
assertFalse(0 == classes.size());
@@ -86,4 +92,9 @@ public class CompositeArchiveTest extend
public static class Blue {
}
+ private static class MyFilter implements Filter {
+ public boolean accept(String name) {
+ return true;
+ }
+ }
}
Modified: geronimo/xbean/trunk/xbean-finder/src/test/java/org/apache/xbean/finder/archive/FileArchiveTest.java
URL: http://svn.apache.org/viewvc/geronimo/xbean/trunk/xbean-finder/src/test/java/org/apache/xbean/finder/archive/FileArchiveTest.java?rev=1326261&r1=1326260&r2=1326261&view=diff
==============================================================================
--- geronimo/xbean/trunk/xbean-finder/src/test/java/org/apache/xbean/finder/archive/FileArchiveTest.java (original)
+++ geronimo/xbean/trunk/xbean-finder/src/test/java/org/apache/xbean/finder/archive/FileArchiveTest.java Sun Apr 15 06:52:40 2012
@@ -90,8 +90,8 @@ public class FileArchiveTest {
@Test
public void testIterator() throws Exception {
List<String> actual = new ArrayList<String>();
- for (String classname : archive) {
- actual.add(classname);
+ for (Archive.Entry entry : archive) {
+ actual.add(entry.getName());
}
assertFalse(0 == actual.size());
Modified: geronimo/xbean/trunk/xbean-finder/src/test/java/org/apache/xbean/finder/archive/FilteredArchiveTest.java
URL: http://svn.apache.org/viewvc/geronimo/xbean/trunk/xbean-finder/src/test/java/org/apache/xbean/finder/archive/FilteredArchiveTest.java?rev=1326261&r1=1326260&r2=1326261&view=diff
==============================================================================
--- geronimo/xbean/trunk/xbean-finder/src/test/java/org/apache/xbean/finder/archive/FilteredArchiveTest.java (original)
+++ geronimo/xbean/trunk/xbean-finder/src/test/java/org/apache/xbean/finder/archive/FilteredArchiveTest.java Sun Apr 15 06:52:40 2012
@@ -49,13 +49,13 @@ public class FilteredArchiveTest extends
assertEquals(0, list.size());
}
- public static void assertEquals(Iterable<?> expectedList, Iterable<?> actualList) {
- final Iterator<?> expected = expectedList.iterator();
- final Iterator<?> actual = actualList.iterator();
+ public static void assertEquals(Iterable<Archive.Entry> expectedList, Iterable<Archive.Entry> actualList) {
+ final Iterator<Archive.Entry> expected = expectedList.iterator();
+ final Iterator<Archive.Entry> actual = actualList.iterator();
int i = 0;
while (expected.hasNext() && actual.hasNext()) {
- assertEquals(expected.next(), actual.next());
+ assertEquals(expected.next().getName(), actual.next().getName());
i++;
}
@@ -85,11 +85,11 @@ public class FilteredArchiveTest extends
}
}
- public static <T> List<T> list(Iterable<T> iterable) {
- List<T> list = new ArrayList<T>();
+ public static List<String> list(Iterable<Archive.Entry> iterable) {
+ List<String> list = new ArrayList<String>();
- for (T t : iterable) {
- list.add(t);
+ for (Archive.Entry t : iterable) {
+ list.add(t.getName());
}
return list;
Modified: geronimo/xbean/trunk/xbean-finder/src/test/java/org/apache/xbean/finder/archive/JarArchiveTest.java
URL: http://svn.apache.org/viewvc/geronimo/xbean/trunk/xbean-finder/src/test/java/org/apache/xbean/finder/archive/JarArchiveTest.java?rev=1326261&r1=1326260&r2=1326261&view=diff
==============================================================================
--- geronimo/xbean/trunk/xbean-finder/src/test/java/org/apache/xbean/finder/archive/JarArchiveTest.java (original)
+++ geronimo/xbean/trunk/xbean-finder/src/test/java/org/apache/xbean/finder/archive/JarArchiveTest.java Sun Apr 15 06:52:40 2012
@@ -91,8 +91,8 @@ public class JarArchiveTest {
@Test
public void testIterator() throws Exception {
List<String> actual = new ArrayList<String>();
- for (String classname : archive) {
- actual.add(classname);
+ for (Archive.Entry entry : archive) {
+ actual.add(entry.getName());
}
assertFalse(0 == actual.size());
Modified: geronimo/xbean/trunk/xbean-finder/src/test/java/org/apache/xbean/finder/archive/MockArchive.java
URL: http://svn.apache.org/viewvc/geronimo/xbean/trunk/xbean-finder/src/test/java/org/apache/xbean/finder/archive/MockArchive.java?rev=1326261&r1=1326260&r2=1326261&view=diff
==============================================================================
--- geronimo/xbean/trunk/xbean-finder/src/test/java/org/apache/xbean/finder/archive/MockArchive.java (original)
+++ geronimo/xbean/trunk/xbean-finder/src/test/java/org/apache/xbean/finder/archive/MockArchive.java Sun Apr 15 06:52:40 2012
@@ -49,8 +49,8 @@ public class MockArchive implements Arch
return null;
}
- public Iterator<String> iterator() {
- return list.iterator();
+ public Iterator<Entry> iterator() {
+ return new ArchiveIterator(this, list.iterator());
}
}