Author: dims Date: Fri Feb 29 21:07:32 2008 New Revision: 632552 URL: http://svn.apache.org/viewvc?rev=632552&view=rev Log: Cache/lookup the list of classes for the handlers *only* if the service delegate is not set. the cache is inside the ServiceDescription
Modified: webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/handler/HandlerResolverImpl.java webservices/axis2/trunk/java/modules/metadata/src/org/apache/axis2/jaxws/description/ServiceDescription.java webservices/axis2/trunk/java/modules/metadata/src/org/apache/axis2/jaxws/description/impl/ServiceDescriptionImpl.java Modified: webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/handler/HandlerResolverImpl.java URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/handler/HandlerResolverImpl.java?rev=632552&r1=632551&r2=632552&view=diff ============================================================================== --- webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/handler/HandlerResolverImpl.java (original) +++ webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/handler/HandlerResolverImpl.java Fri Feb 29 21:07:32 2008 @@ -77,8 +77,19 @@ } public List<Handler> getHandlerChain(PortInfo portinfo) { - // TODO: would check and/or build cache here if implemented later - List<Class> handlerClasses = resolveHandlers(portinfo); + List<Class> handlerClasses = null; + // Look into the cache only if the service delegate key is null. + if (serviceDelegateKey == null) { + handlerClasses = serviceDesc.getHandlerChainClasses(portinfo); + } + if (handlerClasses == null) { + // resolve handlers if we did not find them in the cache + handlerClasses = resolveHandlers(portinfo); + // Store the list of classes + if (serviceDelegateKey == null) { + serviceDesc.setHandlerChainClasses(portinfo, handlerClasses); + } + } if (handlerClasses.size() == 0) { return new ArrayList<Handler>(); } Modified: webservices/axis2/trunk/java/modules/metadata/src/org/apache/axis2/jaxws/description/ServiceDescription.java URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/metadata/src/org/apache/axis2/jaxws/description/ServiceDescription.java?rev=632552&r1=632551&r2=632552&view=diff ============================================================================== --- webservices/axis2/trunk/java/modules/metadata/src/org/apache/axis2/jaxws/description/ServiceDescription.java (original) +++ webservices/axis2/trunk/java/modules/metadata/src/org/apache/axis2/jaxws/description/ServiceDescription.java Fri Feb 29 21:07:32 2008 @@ -23,6 +23,7 @@ import org.apache.axis2.jaxws.description.xml.handler.HandlerChainsType; import org.apache.axis2.jaxws.catalog.JAXWSCatalogManager; import javax.xml.namespace.QName; +import javax.xml.ws.handler.PortInfo; import java.util.Collection; import java.util.List; @@ -144,4 +145,8 @@ public QName getPreferredPort(Object key); public JAXWSCatalogManager getCatalogManager(); + + public List<Class> getHandlerChainClasses(PortInfo portinfo); + + public void setHandlerChainClasses(PortInfo portinfo, List<Class> handlerClasses); } Modified: webservices/axis2/trunk/java/modules/metadata/src/org/apache/axis2/jaxws/description/impl/ServiceDescriptionImpl.java URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/metadata/src/org/apache/axis2/jaxws/description/impl/ServiceDescriptionImpl.java?rev=632552&r1=632551&r2=632552&view=diff ============================================================================== --- webservices/axis2/trunk/java/modules/metadata/src/org/apache/axis2/jaxws/description/impl/ServiceDescriptionImpl.java (original) +++ webservices/axis2/trunk/java/modules/metadata/src/org/apache/axis2/jaxws/description/impl/ServiceDescriptionImpl.java Fri Feb 29 21:07:32 2008 @@ -56,6 +56,7 @@ import javax.wsdl.extensions.ExtensibilityElement; import javax.xml.namespace.QName; import javax.xml.ws.WebServiceClient; +import javax.xml.ws.handler.PortInfo; import javax.xml.ws.soap.SOAPBinding; import java.io.FileNotFoundException; @@ -103,6 +104,9 @@ private Map<Object, Map<QName, EndpointDescriptionImpl>> dynamicEndpointDescriptions = new WeakHashMap<Object, Map<QName, EndpointDescriptionImpl>>(); + // Cache classes for the handler chain + Map<PortInfo, List<Class>> handlerClassesMap = + new WeakHashMap<PortInfo, List<Class>>(); private static final Log log = LogFactory.getLog(ServiceDescriptionImpl.class); @@ -2146,4 +2150,13 @@ return cl; } + + public List<Class> getHandlerChainClasses(PortInfo portinfo) { + return handlerClassesMap.get(portinfo); + } + + public void setHandlerChainClasses(PortInfo portinfo, List<Class> handlerClasses) { + handlerClassesMap.put(portinfo, handlerClasses); + } + } --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]