Return-Path: X-Original-To: apmail-tomcat-dev-archive@www.apache.org Delivered-To: apmail-tomcat-dev-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id EDE38DC0C for ; Fri, 29 Jun 2012 19:36:33 +0000 (UTC) Received: (qmail 90014 invoked by uid 500); 29 Jun 2012 19:36:33 -0000 Delivered-To: apmail-tomcat-dev-archive@tomcat.apache.org Received: (qmail 89947 invoked by uid 500); 29 Jun 2012 19:36:33 -0000 Mailing-List: contact dev-help@tomcat.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: "Tomcat Developers List" Delivered-To: mailing list dev@tomcat.apache.org Received: (qmail 89935 invoked by uid 99); 29 Jun 2012 19:36:33 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 29 Jun 2012 19:36:33 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 29 Jun 2012 19:36:30 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id DAA7323889D5 for ; Fri, 29 Jun 2012 19:36:09 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1355524 - in /tomcat/tc6.0.x/trunk: ./ java/org/apache/naming/SelectorContext.java webapps/docs/changelog.xml Date: Fri, 29 Jun 2012 19:36:09 -0000 To: dev@tomcat.apache.org From: markt@apache.org X-Mailer: svnmailer-1.0.8-patched Message-Id: <20120629193609.DAA7323889D5@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: markt Date: Fri Jun 29 19:36:07 2012 New Revision: 1355524 URL: http://svn.apache.org/viewvc?rev=1355524&view=rev Log: Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=52830 Align parseName(Name) with parseName(String) so both have the same behaviour Modified: tomcat/tc6.0.x/trunk/ (props changed) tomcat/tc6.0.x/trunk/java/org/apache/naming/SelectorContext.java tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml Propchange: tomcat/tc6.0.x/trunk/ ------------------------------------------------------------------------------ Merged /tomcat/trunk:r1298628-1298629,1304468 Merged /tomcat/tc7.0.x/trunk:r1298635,1304471 Modified: tomcat/tc6.0.x/trunk/java/org/apache/naming/SelectorContext.java URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/naming/SelectorContext.java?rev=1355524&r1=1355523&r2=1355524&view=diff ============================================================================== --- tomcat/tc6.0.x/trunk/java/org/apache/naming/SelectorContext.java (original) +++ tomcat/tc6.0.x/trunk/java/org/apache/naming/SelectorContext.java Fri Jun 29 19:36:07 2012 @@ -5,15 +5,15 @@ * 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.naming; @@ -107,18 +107,18 @@ public class SelectorContext implements /** - * Retrieves the named object. If name is empty, returns a new instance - * of this context (which represents the same naming context as this - * context, but its environment may be modified independently and it may + * Retrieves the named object. If name is empty, returns a new instance + * of this context (which represents the same naming context as this + * context, but its environment may be modified independently and it may * be accessed concurrently). - * + * * @param name the name of the object to look up * @return the object bound to name * @exception NamingException if a naming exception is encountered */ public Object lookup(Name name) throws NamingException { - + if (log.isDebugEnabled()) { log.debug(sm.getString("selectorContext.methodUsingName", "lookup", name)); @@ -133,7 +133,7 @@ public class SelectorContext implements /** * Retrieves the named object. - * + * * @param name the name of the object to look up * @return the object bound to name * @exception NamingException if a naming exception is encountered @@ -154,10 +154,10 @@ public class SelectorContext implements /** - * Binds a name to an object. All intermediate contexts and the target - * context (that named by all but terminal atomic component of the name) + * Binds a name to an object. All intermediate contexts and the target + * context (that named by all but terminal atomic component of the name) * must already exist. - * + * * @param name the name to bind; may not be empty * @param obj the object to bind; possibly null * @exception NameAlreadyBoundException if name is already bound @@ -173,7 +173,7 @@ public class SelectorContext implements /** * Binds a name to an object. - * + * * @param name the name to bind; may not be empty * @param obj the object to bind; possibly null * @exception NameAlreadyBoundException if name is already bound @@ -188,14 +188,14 @@ public class SelectorContext implements /** - * Binds a name to an object, overwriting any existing binding. All - * intermediate contexts and the target context (that named by all but + * Binds a name to an object, overwriting any existing binding. All + * intermediate contexts and the target context (that named by all but * terminal atomic component of the name) must already exist. *

- * If the object is a DirContext, any existing attributes associated with - * the name are replaced with those of the object. Otherwise, any + * If the object is a DirContext, any existing attributes associated with + * the name are replaced with those of the object. Otherwise, any * existing attributes associated with the name remain unchanged. - * + * * @param name the name to bind; may not be empty * @param obj the object to bind; possibly null * @exception InvalidAttributesException if object did not supply all @@ -210,7 +210,7 @@ public class SelectorContext implements /** * Binds a name to an object, overwriting any existing binding. - * + * * @param name the name to bind; may not be empty * @param obj the object to bind; possibly null * @exception InvalidAttributesException if object did not supply all @@ -224,14 +224,14 @@ public class SelectorContext implements /** - * Unbinds the named object. Removes the terminal atomic name in name - * from the target context--that named by all but the terminal atomic + * Unbinds the named object. Removes the terminal atomic name in name + * from the target context--that named by all but the terminal atomic * part of name. *

- * This method is idempotent. It succeeds even if the terminal atomic - * name is not bound in the target context, but throws - * NameNotFoundException if any of the intermediate contexts do not exist. - * + * This method is idempotent. It succeeds even if the terminal atomic + * name is not bound in the target context, but throws + * NameNotFoundException if any of the intermediate contexts do not exist. + * * @param name the name to bind; may not be empty * @exception NameNotFoundException if an intermediate context does not * exist @@ -245,7 +245,7 @@ public class SelectorContext implements /** * Unbinds the named object. - * + * * @param name the name to bind; may not be empty * @exception NameNotFoundException if an intermediate context does not * exist @@ -258,11 +258,11 @@ public class SelectorContext implements /** - * Binds a new name to the object bound to an old name, and unbinds the - * old name. Both names are relative to this context. Any attributes - * associated with the old name become associated with the new name. + * Binds a new name to the object bound to an old name, and unbinds the + * old name. Both names are relative to this context. Any attributes + * associated with the old name become associated with the new name. * Intermediate contexts of the old name are not changed. - * + * * @param oldName the name of the existing binding; may not be empty * @param newName the name of the new binding; may not be empty * @exception NameAlreadyBoundException if newName is already bound @@ -275,9 +275,9 @@ public class SelectorContext implements /** - * Binds a new name to the object bound to an old name, and unbinds the + * Binds a new name to the object bound to an old name, and unbinds the * old name. - * + * * @param oldName the name of the existing binding; may not be empty * @param newName the name of the new binding; may not be empty * @exception NameAlreadyBoundException if newName is already bound @@ -290,21 +290,21 @@ public class SelectorContext implements /** - * Enumerates the names bound in the named context, along with the class - * names of objects bound to them. The contents of any subcontexts are + * Enumerates the names bound in the named context, along with the class + * names of objects bound to them. The contents of any subcontexts are * not included. *

- * If a binding is added to or removed from this context, its effect on + * If a binding is added to or removed from this context, its effect on * an enumeration previously returned is undefined. - * + * * @param name the name of the context to list - * @return an enumeration of the names and class names of the bindings in + * @return an enumeration of the names and class names of the bindings in * this context. Each element of the enumeration is of type NameClassPair. * @exception NamingException if a naming exception is encountered */ public NamingEnumeration list(Name name) throws NamingException { - + if (log.isDebugEnabled()) { log.debug(sm.getString("selectorContext.methodUsingName", "list", name)); @@ -315,17 +315,17 @@ public class SelectorContext implements /** - * Enumerates the names bound in the named context, along with the class + * Enumerates the names bound in the named context, along with the class * names of objects bound to them. - * + * * @param name the name of the context to list - * @return an enumeration of the names and class names of the bindings in + * @return an enumeration of the names and class names of the bindings in * this context. Each element of the enumeration is of type NameClassPair. * @exception NamingException if a naming exception is encountered */ public NamingEnumeration list(String name) throws NamingException { - + if (log.isDebugEnabled()) { log.debug(sm.getString("selectorContext.methodUsingString", "list", name)); @@ -336,15 +336,15 @@ public class SelectorContext implements /** - * Enumerates the names bound in the named context, along with the - * objects bound to them. The contents of any subcontexts are not + * Enumerates the names bound in the named context, along with the + * objects bound to them. The contents of any subcontexts are not * included. *

- * If a binding is added to or removed from this context, its effect on + * If a binding is added to or removed from this context, its effect on * an enumeration previously returned is undefined. - * + * * @param name the name of the context to list - * @return an enumeration of the bindings in this context. + * @return an enumeration of the bindings in this context. * Each element of the enumeration is of type Binding. * @exception NamingException if a naming exception is encountered */ @@ -361,11 +361,11 @@ public class SelectorContext implements /** - * Enumerates the names bound in the named context, along with the + * Enumerates the names bound in the named context, along with the * objects bound to them. - * + * * @param name the name of the context to list - * @return an enumeration of the bindings in this context. + * @return an enumeration of the bindings in this context. * Each element of the enumeration is of type Binding. * @exception NamingException if a naming exception is encountered */ @@ -382,24 +382,24 @@ public class SelectorContext implements /** - * Destroys the named context and removes it from the namespace. Any - * attributes associated with the name are also removed. Intermediate + * Destroys the named context and removes it from the namespace. Any + * attributes associated with the name are also removed. Intermediate * contexts are not destroyed. *

- * This method is idempotent. It succeeds even if the terminal atomic - * name is not bound in the target context, but throws - * NameNotFoundException if any of the intermediate contexts do not exist. - * - * In a federated naming system, a context from one naming system may be - * bound to a name in another. One can subsequently look up and perform - * operations on the foreign context using a composite name. However, an - * attempt destroy the context using this composite name will fail with - * NotContextException, because the foreign context is not a "subcontext" - * of the context in which it is bound. Instead, use unbind() to remove - * the binding of the foreign context. Destroying the foreign context - * requires that the destroySubcontext() be performed on a context from + * This method is idempotent. It succeeds even if the terminal atomic + * name is not bound in the target context, but throws + * NameNotFoundException if any of the intermediate contexts do not exist. + * + * In a federated naming system, a context from one naming system may be + * bound to a name in another. One can subsequently look up and perform + * operations on the foreign context using a composite name. However, an + * attempt destroy the context using this composite name will fail with + * NotContextException, because the foreign context is not a "subcontext" + * of the context in which it is bound. Instead, use unbind() to remove + * the binding of the foreign context. Destroying the foreign context + * requires that the destroySubcontext() be performed on a context from * the foreign context's "native" naming system. - * + * * @param name the name of the context to be destroyed; may not be empty * @exception NameNotFoundException if an intermediate context does not * exist @@ -414,7 +414,7 @@ public class SelectorContext implements /** * Destroys the named context and removes it from the namespace. - * + * * @param name the name of the context to be destroyed; may not be empty * @exception NameNotFoundException if an intermediate context does not * exist @@ -428,11 +428,11 @@ public class SelectorContext implements /** - * Creates and binds a new context. Creates a new context with the given - * name and binds it in the target context (that named by all but - * terminal atomic component of the name). All intermediate contexts and + * Creates and binds a new context. Creates a new context with the given + * name and binds it in the target context (that named by all but + * terminal atomic component of the name). All intermediate contexts and * the target context must already exist. - * + * * @param name the name of the context to create; may not be empty * @return the newly created context * @exception NameAlreadyBoundException if name is already bound @@ -448,7 +448,7 @@ public class SelectorContext implements /** * Creates and binds a new context. - * + * * @param name the name of the context to create; may not be empty * @return the newly created context * @exception NameAlreadyBoundException if name is already bound @@ -463,12 +463,12 @@ public class SelectorContext implements /** - * Retrieves the named object, following links except for the terminal - * atomic component of the name. If the object bound to name is not a + * Retrieves the named object, following links except for the terminal + * atomic component of the name. If the object bound to name is not a * link, returns the object itself. - * + * * @param name the name of the object to look up - * @return the object bound to name, not following the terminal link + * @return the object bound to name, not following the terminal link * (if any). * @exception NamingException if a naming exception is encountered */ @@ -485,11 +485,11 @@ public class SelectorContext implements /** - * Retrieves the named object, following links except for the terminal + * Retrieves the named object, following links except for the terminal * atomic component of the name. - * + * * @param name the name of the object to look up - * @return the object bound to name, not following the terminal link + * @return the object bound to name, not following the terminal link * (if any). * @exception NamingException if a naming exception is encountered */ @@ -506,16 +506,16 @@ public class SelectorContext implements /** - * Retrieves the parser associated with the named context. In a - * federation of namespaces, different naming systems will parse names - * differently. This method allows an application to get a parser for - * parsing names into their atomic components using the naming convention - * of a particular naming system. Within any single naming system, - * NameParser objects returned by this method must be equal (using the + * Retrieves the parser associated with the named context. In a + * federation of namespaces, different naming systems will parse names + * differently. This method allows an application to get a parser for + * parsing names into their atomic components using the naming convention + * of a particular naming system. Within any single naming system, + * NameParser objects returned by this method must be equal (using the * equals() test). - * + * * @param name the name of the context from which to get the parser - * @return a name parser that can parse compound names into their atomic + * @return a name parser that can parse compound names into their atomic * components * @exception NamingException if a naming exception is encountered */ @@ -527,9 +527,9 @@ public class SelectorContext implements /** * Retrieves the parser associated with the named context. - * + * * @param name the name of the context from which to get the parser - * @return a name parser that can parse compound names into their atomic + * @return a name parser that can parse compound names into their atomic * components * @exception NamingException if a naming exception is encountered */ @@ -542,13 +542,13 @@ public class SelectorContext implements /** * Composes the name of this context with a name relative to this context. *

- * Given a name (name) relative to this context, and the name (prefix) - * of this context relative to one of its ancestors, this method returns - * the composition of the two names using the syntax appropriate for the - * naming system(s) involved. That is, if name names an object relative - * to this context, the result is the name of the same object, but + * Given a name (name) relative to this context, and the name (prefix) + * of this context relative to one of its ancestors, this method returns + * the composition of the two names using the syntax appropriate for the + * naming system(s) involved. That is, if name names an object relative + * to this context, the result is the name of the same object, but * relative to the ancestor context. None of the names may be null. - * + * * @param name a name relative to this context * @param prefix the name of this context relative to one of its ancestors * @return the composition of prefix and name @@ -563,7 +563,7 @@ public class SelectorContext implements /** * Composes the name of this context with a name relative to this context. - * + * * @param name a name relative to this context * @param prefix the name of this context relative to one of its ancestors * @return the composition of prefix and name @@ -576,10 +576,10 @@ public class SelectorContext implements /** - * Adds a new environment property to the environment of this context. If + * Adds a new environment property to the environment of this context. If * the property already exists, its value is overwritten. - * - * @param propName the name of the environment property to add; may not + * + * @param propName the name of the environment property to add; may not * be null * @param propVal the value of the property to add; may not be null * @exception NamingException if a naming exception is encountered @@ -591,9 +591,9 @@ public class SelectorContext implements /** - * Removes an environment property from the environment of this context. - * - * @param propName the name of the environment property to remove; + * Removes an environment property from the environment of this context. + * + * @param propName the name of the environment property to remove; * may not be null * @exception NamingException if a naming exception is encountered */ @@ -604,12 +604,12 @@ public class SelectorContext implements /** - * Retrieves the environment in effect for this context. See class - * description for more details on environment properties. - * The caller should not make any changes to the object returned: their - * effect on the context is undefined. The environment of this context + * Retrieves the environment in effect for this context. See class + * description for more details on environment properties. + * The caller should not make any changes to the object returned: their + * effect on the context is undefined. The environment of this context * may be changed using addToEnvironment() and removeFromEnvironment(). - * + * * @return the environment of this context; never null * @exception NamingException if a naming exception is encountered */ @@ -620,13 +620,13 @@ public class SelectorContext implements /** - * Closes this context. This method releases this context's resources - * immediately, instead of waiting for them to be released automatically + * Closes this context. This method releases this context's resources + * immediately, instead of waiting for them to be released automatically * by the garbage collector. - * This method is idempotent: invoking it on a context that has already - * been closed has no effect. Invoking any other method on a closed + * This method is idempotent: invoking it on a context that has already + * been closed has no effect. Invoking any other method on a closed * context is not allowed, and results in undefined behaviour. - * + * * @exception NamingException if a naming exception is encountered */ public void close() @@ -638,15 +638,15 @@ public class SelectorContext implements /** * Retrieves the full name of this context within its own namespace. *

- * Many naming services have a notion of a "full name" for objects in - * their respective namespaces. For example, an LDAP entry has a - * distinguished name, and a DNS record has a fully qualified name. This - * method allows the client application to retrieve this name. The string - * returned by this method is not a JNDI composite name and should not be - * passed directly to context methods. In naming systems for which the - * notion of full name does not make sense, + * Many naming services have a notion of a "full name" for objects in + * their respective namespaces. For example, an LDAP entry has a + * distinguished name, and a DNS record has a fully qualified name. This + * method allows the client application to retrieve this name. The string + * returned by this method is not a JNDI composite name and should not be + * passed directly to context methods. In naming systems for which the + * notion of full name does not make sense, * OperationNotSupportedException is thrown. - * + * * @return this context's name in its own namespace; never null * @exception OperationNotSupportedException if the naming system does * not have the notion of a full name @@ -676,7 +676,7 @@ public class SelectorContext implements } Context initialContext = ContextBindings.getContext(ICName); if (initialContext == null) { - // Allocating a new context and binding it to the appropriate + // Allocating a new context and binding it to the appropriate // name initialContext = new NamingContext(env, ICName); ContextBindings.bindContext(ICName, initialContext); @@ -695,14 +695,14 @@ public class SelectorContext implements /** * Strips the URL header. - * + * * @return the parsed name - * @exception NamingException if there is no "java:" header or if no + * @exception NamingException if there is no "java:" header or if no * naming context has been bound to this thread */ - protected String parseName(String name) + protected String parseName(String name) throws NamingException { - + if ((!initialContext) && (name.startsWith(prefix))) { return (name.substring(prefixLength)); } else { @@ -713,29 +713,35 @@ public class SelectorContext implements (sm.getString("selectorContext.noJavaUrl")); } } - + } /** * Strips the URL header. - * + * * @return the parsed name - * @exception NamingException if there is no "java:" header or if no + * @exception NamingException if there is no "java:" header or if no * naming context has been bound to this thread */ - protected Name parseName(Name name) + protected Name parseName(Name name) throws NamingException { - if ((!initialContext) && (!name.isEmpty()) - && (name.get(0).equals(prefix))) { - return (name.getSuffix(1)); + if (!initialContext && !name.isEmpty() && + name.get(0).startsWith(prefix)) { + if (name.get(0).equals(prefix)) { + return name.getSuffix(1); + } else { + Name result = name.getSuffix(1); + result.add(0, name.get(0).substring(prefixLength)); + return result; + } } else { if (initialContext) { - return (name); + return name; } else { - throw new NamingException - (sm.getString("selectorContext.noJavaUrl")); + throw new NamingException( + sm.getString("selectorContext.noJavaUrl")); } } Modified: tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml?rev=1355524&r1=1355523&r2=1355524&view=diff ============================================================================== --- tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml (original) +++ tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml Fri Jun 29 19:36:07 2012 @@ -118,6 +118,11 @@ 52719: Fix a theoretical resource leak in the JAR validation that checks for non-permitted classes in web application JARs. (markt) + + 52830: Correct JNDI lookups when using + javax.naming.Name to identify the resource rather than a + java.lang.String. (markt) + 52996: In StandardThreadExecutor: Add the ability to configure a job queue size --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org For additional commands, e-mail: dev-help@tomcat.apache.org