1.1 --- a/samples/consistency/src-api1.0/api/Lookups.java Sat Jun 14 10:04:04 2008 +0200
1.2 +++ b/samples/consistency/src-api1.0/api/Lookups.java Sat Jun 14 10:04:06 2008 +0200
1.3 @@ -1,6 +1,9 @@
1.4 package api;
1.5
1.6 +import java.util.ArrayList;
1.7 import java.util.Collection;
1.8 +import java.util.HashSet;
1.9 +import java.util.List;
1.10 import java.util.Set;
1.11
1.12 /** Factory to create various types of lookup instances.
1.13 @@ -12,7 +15,39 @@
1.14 private Lookups() {
1.15 }
1.16
1.17 - public static Lookup fixed(Object... instances) {
1.18 - return null;
1.19 + public static Lookup fixed(final Object... instances) {
1.20 + return new Lookup() {
1.21 + @Override
1.22 + public <T> T lookup(Class<T> clazz) {
1.23 + for (Object obj : instances) {
1.24 + if (clazz.isInstance(obj)) {
1.25 + return clazz.cast(obj);
1.26 + }
1.27 + }
1.28 + return null;
1.29 + }
1.30 +
1.31 + @Override
1.32 + public <T> Collection<? extends T> lookupAll(Class<T> clazz) {
1.33 + List<T> result = new ArrayList<T>();
1.34 + for (Object obj : instances) {
1.35 + if (clazz.isInstance(obj)) {
1.36 + result.add(clazz.cast(obj));
1.37 + }
1.38 + }
1.39 + return result;
1.40 + }
1.41 +
1.42 + @Override
1.43 + public <T> Set<Class<? extends T>> lookupAllClasses(Class<T> clazz) {
1.44 + Set<Class<? extends T>> result = new HashSet<Class<? extends T>>();
1.45 + for (Object obj : instances) {
1.46 + if (clazz.isInstance(obj)) {
1.47 + result.add(obj.getClass().asSubclass(clazz));
1.48 + }
1.49 + }
1.50 + return result;
1.51 + }
1.52 + };
1.53 }
1.54 }
2.1 --- a/samples/consistency/src-api2.0/api/Lookup.java Sat Jun 14 10:04:04 2008 +0200
2.2 +++ b/samples/consistency/src-api2.0/api/Lookup.java Sat Jun 14 10:04:06 2008 +0200
2.3 @@ -1,6 +1,11 @@
2.4 package api;
2.5
2.6 +import java.util.ArrayList;
2.7 import java.util.Collection;
2.8 +import java.util.Collections;
2.9 +import java.util.HashSet;
2.10 +import java.util.Iterator;
2.11 +import java.util.List;
2.12 import java.util.Set;
2.13
2.14 /** Simplified version of NetBeans
2.15 @@ -13,26 +18,48 @@
2.16 * @version 2.0
2.17 */
2.18 // BEGIN: design.consistency.2.0
2.19 -public final class Lookup {
2.20 +public abstract class Lookup {
2.21 + /** only for classes in the same package */
2.22 Lookup() {
2.23 }
2.24
2.25 // BEGIN: design.consistency.lookup.2.0
2.26 public <T> T lookup(Class<T> clazz) {
2.27 - return null;
2.28 + Iterator<T> it = doLookup(clazz);
2.29 + return it.hasNext() ? it.next() : null;
2.30 }
2.31 // END: design.consistency.lookup.2.0
2.32
2.33 // BEGIN: design.consistency.lookupAll.2.0
2.34 public <T> Collection<? extends T> lookupAll(Class<T> clazz) {
2.35 - return null;
2.36 + Iterator<T> it = doLookup(clazz);
2.37 + if (!it.hasNext()) {
2.38 + return Collections.emptyList();
2.39 + } else {
2.40 + List<T> result = new ArrayList<T>();
2.41 + while (it.hasNext()) {
2.42 + result.add(it.next());
2.43 + }
2.44 + return result;
2.45 + }
2.46 }
2.47 // END: design.consistency.lookupAll.2.0
2.48
2.49 // BEGIN: design.consistency.lookupAllClasses.2.0
2.50 public <T> Set<Class<? extends T>> lookupAllClasses(Class<T> clazz) {
2.51 - return null;
2.52 + Iterator<T> it = doLookup(clazz);
2.53 + if (!it.hasNext()) {
2.54 + return Collections.emptySet();
2.55 + } else {
2.56 + Set<Class<? extends T>> result = new HashSet<Class<? extends T>>();
2.57 + while (it.hasNext()) {
2.58 + result.add(it.next().getClass().asSubclass(clazz));
2.59 + }
2.60 + return result;
2.61 + }
2.62 }
2.63 // END: design.consistency.lookupAllClasses.2.0
2.64 +// FINISH: design.consistency.2.0
2.65 +
2.66 + abstract <T> Iterator<T> doLookup(Class<T> clazz);
2.67 }
2.68 -// END: design.consistency.2.0
2.69 \ No newline at end of file
3.1 --- a/samples/consistency/src-api2.0/api/Lookups.java Sat Jun 14 10:04:04 2008 +0200
3.2 +++ b/samples/consistency/src-api2.0/api/Lookups.java Sat Jun 14 10:04:06 2008 +0200
3.3 @@ -1,6 +1,8 @@
3.4 package api;
3.5
3.6 +import java.util.ArrayList;
3.7 import java.util.Collection;
3.8 +import java.util.Iterator;
3.9 import java.util.Set;
3.10
3.11 /** Factory to create various types of lookup instances.
3.12 @@ -12,12 +14,30 @@
3.13 private Lookups() {
3.14 }
3.15
3.16 - public static Lookup fixed(Object... instances) {
3.17 - return null;
3.18 + public static Lookup fixed(final Object... instances) {
3.19 + return new Lookup() {
3.20 + @Override
3.21 + <T> Iterator<T> doLookup(Class<T> clazz) {
3.22 + ArrayList<T> result = new ArrayList<T>();
3.23 + for (Object obj : instances) {
3.24 + if (clazz.isInstance(obj)) {
3.25 + result.add(clazz.cast(obj));
3.26 + }
3.27 + }
3.28 + return result.iterator();
3.29 + }
3.30 + };
3.31 }
3.32
3.33 - public static Lookup dynamic(Dynamic provider) {
3.34 - return null;
3.35 + public static Lookup dynamic(final Dynamic provider) {
3.36 + return new Lookup() {
3.37 + @Override
3.38 + <T> Iterator<T> doLookup(Class<T> clazz) {
3.39 + ArrayList<T> result = new ArrayList<T>();
3.40 + provider.computeInstances(clazz, result);
3.41 + return result.iterator();
3.42 + }
3.43 + };
3.44 }
3.45
3.46 public interface Dynamic {
4.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
4.2 +++ b/samples/consistency/src-test/impl/ConsistencyOfURLTest.java Sat Jun 14 10:04:06 2008 +0200
4.3 @@ -0,0 +1,20 @@
4.4 +package impl;
4.5 +
4.6 +import java.net.URL;
4.7 +import org.junit.Test;
4.8 +import static org.junit.Assert.assertEquals;
4.9 +
4.10 +/**
4.11 + *
4.12 + * @author Jaroslav Tulach <jtulach@netbeans.org>
4.13 + */
4.14 +public class ConsistencyOfURLTest {
4.15 +
4.16 + @Test public void urlToExternalAndToString() throws Exception {
4.17 + // BEGIN: consistency.url
4.18 + URL url = new URL("http://www.apidesign.org");
4.19 + assertEquals(url.toString(), url.toExternalForm());
4.20 + // END: consistency.url
4.21 + }
4.22 +
4.23 +}