Return-Path: Delivered-To: apmail-sling-commits-archive@www.apache.org Received: (qmail 28361 invoked from network); 27 Apr 2010 13:12:39 -0000 Received: from unknown (HELO mail.apache.org) (140.211.11.3) by 140.211.11.9 with SMTP; 27 Apr 2010 13:12:39 -0000 Received: (qmail 79812 invoked by uid 500); 27 Apr 2010 13:12:39 -0000 Delivered-To: apmail-sling-commits-archive@sling.apache.org Received: (qmail 79760 invoked by uid 500); 27 Apr 2010 13:12:38 -0000 Mailing-List: contact commits-help@sling.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@sling.apache.org Delivered-To: mailing list commits@sling.apache.org Received: (qmail 79753 invoked by uid 99); 27 Apr 2010 13:12:38 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 27 Apr 2010 13:12:38 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=10.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; Tue, 27 Apr 2010 13:12:34 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id 368BE23889CB; Tue, 27 Apr 2010 13:11:51 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r938445 - in /sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl: ./ helper/ parameters/ request/ Date: Tue, 27 Apr 2010 13:11:51 -0000 To: commits@sling.apache.org From: cziegeler@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20100427131151.368BE23889CB@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: cziegeler Date: Tue Apr 27 13:11:50 2010 New Revision: 938445 URL: http://svn.apache.org/viewvc?rev=938445&view=rev Log: Code clean up and avoid calling deprecated stuff - no functional changes. Modified: sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/ProfilingResourceResolver.java sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/SlingMainServlet.java sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/helper/SlingFilterConfig.java sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/parameters/ParameterMap.java sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/parameters/SlingUnsupportedEncodingException.java sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/request/RequestData.java Modified: sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/ProfilingResourceResolver.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/ProfilingResourceResolver.java?rev=938445&r1=938444&r2=938445&view=diff ============================================================================== --- sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/ProfilingResourceResolver.java (original) +++ sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/ProfilingResourceResolver.java Tue Apr 27 13:11:50 2010 @@ -18,6 +18,7 @@ */ package org.apache.sling.engine.impl; +import java.util.HashMap; import java.util.Iterator; import java.util.Map; @@ -25,44 +26,66 @@ import javax.servlet.http.HttpServletReq import org.apache.sling.api.resource.Resource; import org.apache.sling.api.resource.ResourceResolver; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; +import org.apache.sling.api.resource.ResourceWrapper; public class ProfilingResourceResolver implements ResourceResolver { private final ResourceResolver delegatee; - private final Logger logger = LoggerFactory.getLogger(this.getClass()); +// private final Logger logger = LoggerFactory.getLogger(this.getClass()); - int getResource; +// int getResource; + +// int adaptToCount; + +// int adaptToCountCacheHit; + + private final Map adaptToCache = new HashMap(); public ProfilingResourceResolver(final ResourceResolver delegatee) { this.delegatee = delegatee; } public AdapterType adaptTo(Class type) { - return delegatee.adaptTo(type); + final String key = type.getName(); +// adaptToCount++; + Object obj = adaptToCache.get(key); + if ( obj == null ) { +// logger.info("Adapting to {}", type); + obj = delegatee.adaptTo(type); + adaptToCache.put(key, obj); +// } else { +// adaptToCountCacheHit++; + } + return (AdapterType) obj; } public void close() { - logger.info("* #getResource({})", getResource); +// logger.info("* #getResource({})", getResource); +// logger.info("* #adaptTo({})", adaptToCount); +// logger.info("* #adaptToCacheHit({})", adaptToCountCacheHit); delegatee.close(); } public Iterator findResources(String query, String language) { - return delegatee.findResources(query, language); + return new IteratorDecorator(delegatee.findResources(query, language), this); } public Resource getResource(Resource base, String path) { - getResource++; - logger.info("* getResource({}, {})", base.getPath(), path); - return delegatee.getResource(base, path); +// getResource++; +// logger.info("* getResource({}, {})", base.getPath(), path); + final Resource rsrc = delegatee.getResource(base, path); + return rsrc == null ? null : new InternalResource(rsrc, this); } public Resource getResource(String path) { - getResource++; - logger.info("* getResource({})", path); - return delegatee.getResource(path); +// getResource++; +// if ( path.startsWith("/apps") ) { +// logger.info("Who is calling this: " + path, new Exception()); +// } +// logger.info("* getResource({})", path); + final Resource rsrc = delegatee.getResource(path); + return rsrc == null ? null : new InternalResource(rsrc, this); } public String[] getSearchPath() { @@ -70,8 +93,8 @@ public class ProfilingResourceResolver i } public Iterator listChildren(Resource parent) { - logger.info("* listChildren({})", parent.getPath()); - return delegatee.listChildren(parent); +// logger.info("* listChildren({})", parent.getPath()); + return new IteratorDecorator(delegatee.listChildren(parent), this); } public String map(HttpServletRequest request, String resourcePath) { @@ -88,15 +111,75 @@ public class ProfilingResourceResolver i } public Resource resolve(HttpServletRequest request, String absPath) { - return delegatee.resolve(request, absPath); + final Resource rsrc = delegatee.resolve(request, absPath); + return rsrc == null ? null : new InternalResource(rsrc, this); } public Resource resolve(HttpServletRequest request) { - return delegatee.resolve(request); + final Resource rsrc = delegatee.resolve(request); + return rsrc == null ? null : new InternalResource(rsrc, this); } public Resource resolve(String path) { - logger.info("* resolve({})", path); - return delegatee.resolve(path); +// logger.info("* resolve({})", path); + final Resource rsrc = delegatee.resolve(path); + return rsrc == null ? null : new InternalResource(rsrc, this); + } + + public static final class InternalResource extends ResourceWrapper { + + private final ResourceResolver resolver; + + private final Map adaptToCache = new HashMap(); + + public InternalResource(Resource resource, final ResourceResolver resolver) { + super(resource); + this.resolver = resolver; + } + + @Override + public ResourceResolver getResourceResolver() { + return this.resolver; + } + + @SuppressWarnings("unchecked") + @Override + public AdapterType adaptTo(Class type) { + final String key = type.getName(); + Object obj = adaptToCache.get(key); + if ( obj == null ) { + obj = super.adaptTo(type); + if ( obj != null ) { + adaptToCache.put(key, obj); + } + } + return (AdapterType) obj; + } + + } + + public static final class IteratorDecorator implements Iterator { + + private final Iterator delegatee; + private final ResourceResolver resolver; + + public IteratorDecorator(final Iterator delegatee, final ResourceResolver resolver) { + this.delegatee = delegatee; + this.resolver = resolver; + } + + public boolean hasNext() { + return this.delegatee.hasNext(); + } + + public Resource next() { + final Resource rsrc = delegatee.next(); + return rsrc == null ? null : new InternalResource(rsrc, resolver); + } + + public void remove() { + delegatee.remove(); + } + } } Modified: sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/SlingMainServlet.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/SlingMainServlet.java?rev=938445&r1=938444&r2=938445&view=diff ============================================================================== --- sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/SlingMainServlet.java (original) +++ sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/SlingMainServlet.java Tue Apr 27 13:11:50 2010 @@ -51,6 +51,7 @@ import org.apache.sling.api.SlingHttpSer import org.apache.sling.api.adapter.AdapterManager; import org.apache.sling.api.request.RequestPathInfo; import org.apache.sling.api.request.RequestProgressTracker; +import org.apache.sling.api.request.ResponseUtil; import org.apache.sling.api.resource.Resource; import org.apache.sling.api.resource.ResourceNotFoundException; import org.apache.sling.api.resource.ResourceResolver; @@ -58,7 +59,6 @@ import org.apache.sling.api.servlets.Ser import org.apache.sling.commons.auth.AuthenticationSupport; import org.apache.sling.commons.mime.MimeTypeService; import org.apache.sling.commons.osgi.OsgiUtil; -import org.apache.sling.engine.ResponseUtil; import org.apache.sling.engine.impl.filter.RequestSlingFilterChain; import org.apache.sling.engine.impl.filter.SlingComponentFilterChain; import org.apache.sling.engine.impl.filter.SlingFilterChainHelper; @@ -68,7 +68,6 @@ import org.apache.sling.engine.impl.log. import org.apache.sling.engine.impl.parameters.ParameterSupport; import org.apache.sling.engine.impl.request.ContentData; import org.apache.sling.engine.impl.request.RequestData; -import org.apache.sling.engine.servlets.AbstractServiceReferenceConfig; import org.apache.sling.engine.servlets.ErrorHandler; import org.osgi.framework.BundleContext; import org.osgi.framework.Constants; @@ -699,7 +698,7 @@ public class SlingMainServlet extends Ge } // require a name for the filter - String filterName = AbstractServiceReferenceConfig.getName(ref); + final String filterName = SlingFilterConfig.getName(ref); if (filterName == null) { log.error("initFilter: Missing name for filter {}", ref); return; @@ -707,7 +706,7 @@ public class SlingMainServlet extends Ge // initialize the filter first try { - FilterConfig config = new SlingFilterConfig(slingServletContext, + final FilterConfig config = new SlingFilterConfig(slingServletContext, ref, filterName); filter.init(config); Modified: sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/helper/SlingFilterConfig.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/helper/SlingFilterConfig.java?rev=938445&r1=938444&r2=938445&view=diff ============================================================================== --- sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/helper/SlingFilterConfig.java (original) +++ sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/helper/SlingFilterConfig.java Tue Apr 27 13:11:50 2010 @@ -18,21 +18,97 @@ */ package org.apache.sling.engine.impl.helper; +import static org.osgi.framework.Constants.SERVICE_ID; +import static org.osgi.framework.Constants.SERVICE_PID; +import static org.osgi.service.component.ComponentConstants.COMPONENT_NAME; + +import java.util.Arrays; +import java.util.Collections; +import java.util.Enumeration; +import java.util.List; + import javax.servlet.FilterConfig; import javax.servlet.ServletContext; -import org.apache.sling.engine.servlets.AbstractServiceReferenceConfig; import org.osgi.framework.ServiceReference; -public class SlingFilterConfig extends AbstractServiceReferenceConfig implements - FilterConfig { +public class SlingFilterConfig implements FilterConfig { + + /** The list of property names checked by {@link #getName(ServiceReference)} */ + private static final String[] NAME_PROPERTIES = { "sling.core.servletName", + COMPONENT_NAME, SERVICE_PID, SERVICE_ID }; + + /** The ServletContext of this configuration object */ + private ServletContext servletContext; + + /** The ServiceReference providing the properties */ + private ServiceReference reference; + + /** The name of this configuration object */ + private String name; + + + /** + * Sets up this base configuration object. + * + * @param servletContext The ServletContext attached to this + * configuration. + * @param reference The service reference providing the initialization + * parameter values. + * @param filterName The name of this configuration. + */ + public SlingFilterConfig(final ServletContext servletContext, + final ServiceReference reference, + final String filterName) { + this.servletContext = servletContext; + this.reference = reference; + this.name = filterName; + } + + /** + * @see javax.servlet.FilterConfig#getInitParameter(java.lang.String) + */ + public String getInitParameter(String name) { + Object prop = reference.getProperty(name); + return (prop == null) ? null : String.valueOf(prop); + } + + /** + * @see javax.servlet.FilterConfig#getInitParameterNames() + */ + public Enumeration getInitParameterNames() { + List keys = Arrays.asList(reference.getPropertyKeys()); + return Collections.enumeration(keys); + } + + /** + * @see javax.servlet.FilterConfig#getServletContext() + */ + public ServletContext getServletContext() { + return servletContext; + } - public SlingFilterConfig(ServletContext servletContext, - ServiceReference reference, String filterName) { - super(servletContext, reference, filterName); + /** + * Looks for a name value in the service reference properties. See the + * class comment at the top for the list of properties checked by this + * method. + */ + public static String getName(ServiceReference reference) { + String servletName = null; + for (int i = 0; i < NAME_PROPERTIES.length + && (servletName == null || servletName.length() == 0); i++) { + Object prop = reference.getProperty(NAME_PROPERTIES[i]); + if (prop != null) { + servletName = String.valueOf(prop); + } + } + return servletName; } + /** + * @see javax.servlet.FilterConfig#getFilterName() + */ public String getFilterName() { - return getName(); + return name; } } \ No newline at end of file Modified: sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/parameters/ParameterMap.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/parameters/ParameterMap.java?rev=938445&r1=938444&r2=938445&view=diff ============================================================================== --- sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/parameters/ParameterMap.java (original) +++ sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/parameters/ParameterMap.java Tue Apr 27 13:11:50 2010 @@ -31,6 +31,8 @@ import org.apache.sling.api.request.Requ class ParameterMap extends LinkedHashMap implements RequestParameterMap { + private static final long serialVersionUID = -3984737679401682171L; + private Map stringParameterMap; ParameterMap() { Modified: sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/parameters/SlingUnsupportedEncodingException.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/parameters/SlingUnsupportedEncodingException.java?rev=938445&r1=938444&r2=938445&view=diff ============================================================================== --- sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/parameters/SlingUnsupportedEncodingException.java (original) +++ sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/parameters/SlingUnsupportedEncodingException.java Tue Apr 27 13:11:50 2010 @@ -24,8 +24,10 @@ import org.apache.sling.api.SlingIOExcep public class SlingUnsupportedEncodingException extends SlingIOException { + private static final long serialVersionUID = -4482276105859280247L; + SlingUnsupportedEncodingException(UnsupportedEncodingException uee) { super(uee); } - + } Modified: sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/request/RequestData.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/request/RequestData.java?rev=938445&r1=938444&r2=938445&view=diff ============================================================================== --- sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/request/RequestData.java (original) +++ sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/request/RequestData.java Tue Apr 27 13:11:50 2010 @@ -44,13 +44,13 @@ import org.apache.sling.api.adapter.Adap import org.apache.sling.api.request.RecursionTooDeepException; import org.apache.sling.api.request.RequestPathInfo; import org.apache.sling.api.request.RequestProgressTracker; +import org.apache.sling.api.request.RequestUtil; import org.apache.sling.api.request.TooManyCallsException; import org.apache.sling.api.resource.Resource; import org.apache.sling.api.resource.ResourceResolver; import org.apache.sling.api.servlets.ServletResolver; import org.apache.sling.api.wrappers.SlingHttpServletRequestWrapper; import org.apache.sling.api.wrappers.SlingHttpServletResponseWrapper; -import org.apache.sling.engine.RequestUtil; import org.apache.sling.engine.impl.SlingHttpServletRequestImpl; import org.apache.sling.engine.impl.SlingHttpServletResponseImpl; import org.apache.sling.engine.impl.SlingMainServlet;