Return-Path: Delivered-To: apmail-harmony-commits-archive@www.apache.org Received: (qmail 17816 invoked from network); 10 Sep 2007 07:33:19 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 10 Sep 2007 07:33:19 -0000 Received: (qmail 16830 invoked by uid 500); 10 Sep 2007 07:33:12 -0000 Delivered-To: apmail-harmony-commits-archive@harmony.apache.org Received: (qmail 16816 invoked by uid 500); 10 Sep 2007 07:33:12 -0000 Mailing-List: contact commits-help@harmony.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@harmony.apache.org Delivered-To: mailing list commits@harmony.apache.org Received: (qmail 16807 invoked by uid 99); 10 Sep 2007 07:33:12 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 10 Sep 2007 00:33:12 -0700 X-ASF-Spam-Status: No, hits=-100.0 required=10.0 tests=ALL_TRUSTED 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; Mon, 10 Sep 2007 07:34:48 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id 348B91A983A; Mon, 10 Sep 2007 00:32:56 -0700 (PDT) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r574157 - /harmony/enhanced/classlib/trunk/modules/jndi/src/main/java/javax/naming/InitialContext.java Date: Mon, 10 Sep 2007 07:32:55 -0000 To: commits@harmony.apache.org From: leoli@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20070910073256.348B91A983A@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: leoli Date: Mon Sep 10 00:32:55 2007 New Revision: 574157 URL: http://svn.apache.org/viewvc?rev=574157&view=rev Log: Apply patch for ([classlib][jndi] InitialContext.getURLOrDefaultInitCtx() optimization). Modified: harmony/enhanced/classlib/trunk/modules/jndi/src/main/java/javax/naming/InitialContext.java Modified: harmony/enhanced/classlib/trunk/modules/jndi/src/main/java/javax/naming/InitialContext.java URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/jndi/src/main/java/javax/naming/InitialContext.java?rev=574157&r1=574156&r2=574157&view=diff ============================================================================== --- harmony/enhanced/classlib/trunk/modules/jndi/src/main/java/javax/naming/InitialContext.java (original) +++ harmony/enhanced/classlib/trunk/modules/jndi/src/main/java/javax/naming/InitialContext.java Mon Sep 10 00:32:55 2007 @@ -17,6 +17,7 @@ package javax.naming; +import java.util.HashMap; import java.util.Hashtable; import javax.naming.spi.NamingManager; @@ -351,10 +352,20 @@ String scheme = UrlParser.getScheme(name); Context ctx = null; if (null != scheme) { - // So the first component is a valid URL - ctx = NamingManager.getURLContext(scheme, myProps); + synchronized (contextCache) { + if (contextCache.containsKey(scheme)) { + return contextCache.get(scheme); + } + + // So the first component is a valid URL + ctx = NamingManager.getURLContext(scheme, myProps); + if (null == ctx) { + ctx = getDefaultInitCtx(); + } + contextCache.put(scheme, ctx); + } } - return null == ctx ? getDefaultInitCtx() : ctx; + return getDefaultInitCtx(); } public Object lookup(Name name) throws NamingException { @@ -493,13 +504,19 @@ } public Object addToEnvironment(String propName, Object propVal) - throws NamingException { - this.myProps.put(propName, propVal); + throws NamingException { + synchronized (contextCache) { + myProps.put(propName, propVal); + contextCache.clear(); + } return getDefaultInitCtx().addToEnvironment(propName, propVal); } public Object removeFromEnvironment(String propName) throws NamingException { - this.myProps.remove(propName); + synchronized (contextCache) { + myProps.remove(propName); + contextCache.clear(); + } return getDefaultInitCtx().removeFromEnvironment(propName); } @@ -516,5 +533,7 @@ public String getNameInNamespace() throws NamingException { return getDefaultInitCtx().getNameInNamespace(); } - + + + private HashMap contextCache = new HashMap(); }