Author: scheu Date: Thu Jan 3 07:26:44 2008 New Revision: 608527 URL: http://svn.apache.org/viewvc?rev=608527&view=rev Log: AXIS2-3422 Contributor:Rich Scheuerle Performance Analysis: David Strite Recode the MessageContext.getProperty(String) method to avoid duplicate lookups.
Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/AbstractContext.java webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/MessageContext.java Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/AbstractContext.java URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/AbstractContext.java?rev=608527&r1=608526&r2=608527&view=diff ============================================================================== --- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/AbstractContext.java (original) +++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/AbstractContext.java Thu Jan 3 07:26:44 2008 @@ -59,6 +59,24 @@ } /** + * @param context + * @return true if the context is an ancestor + */ + public boolean isAncestor(AbstractContext context) { + if (context == null) { + return false; + } + for (AbstractContext ancestor = getParent(); + ancestor != null; + ancestor = ancestor.getParent()) { + if (ancestor == context) { + return true; + } + } + return false; + } + + /** * @return The properties * @deprecated Use [EMAIL PROTECTED] #getPropertyNames()}, [EMAIL PROTECTED] #getProperty(String)}, * [EMAIL PROTECTED] #setProperty(String, Object)} & [EMAIL PROTECTED] #removeProperty(String)}instead. Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/MessageContext.java URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/MessageContext.java?rev=608527&r1=608526&r2=608527&view=diff ============================================================================== --- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/MessageContext.java (original) +++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/MessageContext.java Thu Jan 3 07:26:44 2008 @@ -919,21 +919,29 @@ // My own context hierarchy may not all be present. So look for whatever // nearest level is present and ask that to find the property. + // + // If the context is already an ancestor, it was checked during + // the super.getProperty call. In such cases, the second check + // is not performed. if (operationContext != null) { - return operationContext.getProperty(name); - } - if (serviceContext != null) { - return serviceContext.getProperty(name); - } - if (serviceGroupContext != null) { - return serviceGroupContext.getProperty(name); - } - if (configurationContext != null) { - return configurationContext.getProperty(name); + if (!isAncestor(operationContext)) { + obj = operationContext.getProperty(name); + } + } else if (serviceContext != null) { + if (!isAncestor(serviceContext)) { + obj = serviceContext.getProperty(name); + } + } else if (serviceGroupContext != null) { + if (!isAncestor(serviceGroupContext)) { + obj = serviceGroupContext.getProperty(name); + } + } else if (configurationContext != null) { + if (!isAncestor(configurationContext)) { + obj = configurationContext.getProperty(name); + } } - // tough - return null; + return obj; } /** --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]