Return-Path: Delivered-To: apmail-geronimo-xbean-scm-archive@locus.apache.org Received: (qmail 23260 invoked from network); 21 Mar 2007 19:23:27 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 21 Mar 2007 19:23:27 -0000 Received: (qmail 93474 invoked by uid 500); 21 Mar 2007 19:23:35 -0000 Delivered-To: apmail-geronimo-xbean-scm-archive@geronimo.apache.org Received: (qmail 93461 invoked by uid 500); 21 Mar 2007 19:23:35 -0000 Mailing-List: contact xbean-scm-help@geronimo.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: xbean-scm@geronimo.apache.org Delivered-To: mailing list xbean-scm@geronimo.apache.org Received: (qmail 93450 invoked by uid 99); 21 Mar 2007 19:23:35 -0000 Received: from herse.apache.org (HELO herse.apache.org) (140.211.11.133) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 21 Mar 2007 12:23:35 -0700 X-ASF-Spam-Status: No, hits=-99.5 required=10.0 tests=ALL_TRUSTED,NO_REAL_NAME X-Spam-Check-By: apache.org Received: from [140.211.11.3] (HELO eris.apache.org) (140.211.11.3) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 21 Mar 2007 12:23:26 -0700 Received: by eris.apache.org (Postfix, from userid 65534) id 823A71A9838; Wed, 21 Mar 2007 12:23:06 -0700 (PDT) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r520977 - in /geronimo/xbean/trunk/xbean-naming/src/main/java/org/apache/xbean/naming/context: AbstractFederatedContext.java ContextFederation.java WritableContext.java Date: Wed, 21 Mar 2007 19:23:06 -0000 To: xbean-scm@geronimo.apache.org From: dain@apache.org X-Mailer: svnmailer-1.1.0 Message-Id: <20070321192306.823A71A9838@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: dain Date: Wed Mar 21 12:23:05 2007 New Revision: 520977 URL: http://svn.apache.org/viewvc?view=rev&rev=520977 Log: Federated contexts should not list bindings to find a single value. Fixed rebind error in federated contexts where bind would be to the wrong location in the index but not the local bindings Modified: geronimo/xbean/trunk/xbean-naming/src/main/java/org/apache/xbean/naming/context/AbstractFederatedContext.java geronimo/xbean/trunk/xbean-naming/src/main/java/org/apache/xbean/naming/context/ContextFederation.java geronimo/xbean/trunk/xbean-naming/src/main/java/org/apache/xbean/naming/context/WritableContext.java Modified: geronimo/xbean/trunk/xbean-naming/src/main/java/org/apache/xbean/naming/context/AbstractFederatedContext.java URL: http://svn.apache.org/viewvc/geronimo/xbean/trunk/xbean-naming/src/main/java/org/apache/xbean/naming/context/AbstractFederatedContext.java?view=diff&rev=520977&r1=520976&r2=520977 ============================================================================== --- geronimo/xbean/trunk/xbean-naming/src/main/java/org/apache/xbean/naming/context/AbstractFederatedContext.java (original) +++ geronimo/xbean/trunk/xbean-naming/src/main/java/org/apache/xbean/naming/context/AbstractFederatedContext.java Wed Mar 21 12:23:05 2007 @@ -59,6 +59,14 @@ return super.faultLookup(stringName, parsedName); } + protected Object getBinding(String name) throws NamingException { + Object value = contextFederation.getFederatedBinding(name); + if (value == null) { + value = getWrapperBindings().get(name); + } + return value; + } + protected final Map getBindings() throws NamingException { Map bindings = contextFederation.getFederatedBindings(); bindings.putAll(getWrapperBindings()); Modified: geronimo/xbean/trunk/xbean-naming/src/main/java/org/apache/xbean/naming/context/ContextFederation.java URL: http://svn.apache.org/viewvc/geronimo/xbean/trunk/xbean-naming/src/main/java/org/apache/xbean/naming/context/ContextFederation.java?view=diff&rev=520977&r1=520976&r2=520977 ============================================================================== --- geronimo/xbean/trunk/xbean-naming/src/main/java/org/apache/xbean/naming/context/ContextFederation.java (original) +++ geronimo/xbean/trunk/xbean-naming/src/main/java/org/apache/xbean/naming/context/ContextFederation.java Wed Mar 21 12:23:05 2007 @@ -63,6 +63,22 @@ return (Set) federatedContextRef.get(); } + public Object getFederatedBinding(String name) throws NamingException { + for (Iterator iterator = getFederatedContexts().iterator(); iterator.hasNext();) { + Context context = (Context) iterator.next(); + + try { + Object value = context.lookup(name); + if (value != null) { + return value; + } + } catch (NamingException e) { + // ignore + } + } + return null; + } + public Map getFederatedBindings() throws NamingException { Map bindings = new HashMap(); for (Iterator iterator = getFederatedContexts().iterator(); iterator.hasNext();) { Modified: geronimo/xbean/trunk/xbean-naming/src/main/java/org/apache/xbean/naming/context/WritableContext.java URL: http://svn.apache.org/viewvc/geronimo/xbean/trunk/xbean-naming/src/main/java/org/apache/xbean/naming/context/WritableContext.java?view=diff&rev=520977&r1=520976&r2=520977 ============================================================================== --- geronimo/xbean/trunk/xbean-naming/src/main/java/org/apache/xbean/naming/context/WritableContext.java (original) +++ geronimo/xbean/trunk/xbean-naming/src/main/java/org/apache/xbean/naming/context/WritableContext.java Wed Mar 21 12:23:05 2007 @@ -78,11 +78,11 @@ return true; } - addBinding(bindingsRef, name, value, rebind); + addBinding(bindingsRef, name, getNameInNamespace(name), value, rebind); return true; } - protected void addBinding(AtomicReference bindingsRef, String name, Object value, boolean rebind) throws NamingException { + protected void addBinding(AtomicReference bindingsRef, String name, String nameInNamespace, Object value, boolean rebind) throws NamingException { writeLock.lock(); try { Map bindings = (Map) bindingsRef.get(); @@ -98,14 +98,13 @@ newBindings.put(name,value); bindingsRef.set(newBindings); - Map newIndex = addToIndex(name, value); - indexRef.set(newIndex); + addToIndex(nameInNamespace, value); } finally { writeLock.unlock(); } } - private Map addToIndex(String name, Object value) { + private void addToIndex(String name, Object value) { Map index = (Map) indexRef.get(); Map newIndex = new HashMap(index); newIndex.put(name, value); @@ -114,7 +113,7 @@ Map newIndexValues = buildIndex(name, (Map) nestedcontext.bindingsRef.get()); newIndex.putAll(newIndexValues); } - return newIndex; + indexRef.set(newIndex); } protected boolean removeBinding(String name, boolean removeNotEmptyContext) throws NamingException { @@ -233,7 +232,7 @@ return true; } - WritableContext.this.addBinding(bindingsRef, name, value, rebind); + WritableContext.this.addBinding(bindingsRef, name, getNameInNamespace(name), value, rebind); return true; }