Index: src/org/openide/util/lookup/ProxyLookupTest.java =================================================================== RCS file: /cvs/openide/test/unit/src/org/openide/util/lookup/Attic/ProxyLookupTest.java,v retrieving revision 1.6 diff -u -r1.6 ProxyLookupTest.java --- src/org/openide/util/lookup/ProxyLookupTest.java 25 Apr 2004 18:00:10 -0000 1.6 +++ src/org/openide/util/lookup/ProxyLookupTest.java 16 May 2005 08:26:53 -0000 @@ -144,4 +144,47 @@ p.setLookups (new Lookup[] { a1, a2, a3 }); } } + + public void testProxyLookupTemplateCaching(){ + // Create MyProxyLookup with one lookup containing the String object + Lookup lookups[] = new Lookup[1]; + InstanceContent ic = new InstanceContent(); + ic.add(new String("Hello World")); //NOI18N + lookups[0] = new AbstractLookup(ic); + MyProxyLookup proxy = new MyProxyLookup(lookups); + + // Performing template lookup for String object + Lookup.Result result = proxy.lookup(new Lookup.Template(String.class, null, null)); + int stringTemplateResultSize = result.allInstances().size(); + assertTrue ("Ensure, there is only one instance of String.class in proxyLookup:", //NOI18N + stringTemplateResultSize == 1); + + // Changing lookup in proxy lookup, now it will contain + // StringBuffer Object instead of String + InstanceContent ic2 = new InstanceContent(); + ic2.add(new Integer(1234567890)); + lookups[0] = new AbstractLookup(ic2); + proxy.setProxyLookups(lookups); + + // Instance of String.class should not appear in proxyLookup + result = proxy.lookup(new Lookup.Template(String.class, null, null)); + stringTemplateResultSize = result.allInstances().size(); + assertTrue ("Instance of String.class should not appear in proxyLookup:", //NOI18N + stringTemplateResultSize == 0); + + result = proxy.lookup(new Lookup.Template(Integer.class, null, null)); + int integerTemplateResultSize = result.allInstances().size(); + assertTrue ("There is only one instance of Integer.class in proxyLookup:", //NOI18N + integerTemplateResultSize == 1); + + } + + private class MyProxyLookup extends ProxyLookup{ + public MyProxyLookup(Lookup lookups[]){ + super(lookups); + } + public void setProxyLookups(Lookup lookups[]){ + setLookups(lookups); + } + } }