You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by cz...@apache.org on 2015/09/28 17:38:39 UTC

svn commit: r1705708 - /sling/trunk/bundles/servlets/resolver/src/main/java/org/apache/sling/servlets/resolver/internal/SlingServletResolver.java

Author: cziegeler
Date: Mon Sep 28 15:38:39 2015
New Revision: 1705708

URL: http://svn.apache.org/viewvc?rev=1705708&view=rev
Log:
SLING-5070 : ServletResolverCacheMBeanImpl throws NPE when cache is diabled. Apply patch from Dirk Rudolph

Modified:
    sling/trunk/bundles/servlets/resolver/src/main/java/org/apache/sling/servlets/resolver/internal/SlingServletResolver.java

Modified: sling/trunk/bundles/servlets/resolver/src/main/java/org/apache/sling/servlets/resolver/internal/SlingServletResolver.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/servlets/resolver/src/main/java/org/apache/sling/servlets/resolver/internal/SlingServletResolver.java?rev=1705708&r1=1705707&r2=1705708&view=diff
==============================================================================
--- sling/trunk/bundles/servlets/resolver/src/main/java/org/apache/sling/servlets/resolver/internal/SlingServletResolver.java (original)
+++ sling/trunk/bundles/servlets/resolver/src/main/java/org/apache/sling/servlets/resolver/internal/SlingServletResolver.java Mon Sep 28 15:38:39 2015
@@ -222,6 +222,7 @@ public class SlingServletResolver
     /**
      * @see org.apache.sling.api.servlets.ServletResolver#resolveServlet(org.apache.sling.api.SlingHttpServletRequest)
      */
+    @Override
     public Servlet resolveServlet(final SlingHttpServletRequest request) {
         final Resource resource = request.getResource();
 
@@ -272,6 +273,7 @@ public class SlingServletResolver
     /**
      * @see org.apache.sling.api.servlets.ServletResolver#resolveServlet(org.apache.sling.api.resource.Resource, java.lang.String)
      */
+    @Override
     public Servlet resolveServlet(final Resource resource, final String scriptName) {
         if ( resource == null ) {
             throw new IllegalArgumentException("Resource must not be null");
@@ -298,6 +300,7 @@ public class SlingServletResolver
     /**
      * @see org.apache.sling.api.servlets.ServletResolver#resolveServlet(org.apache.sling.api.resource.ResourceResolver, java.lang.String)
      */
+    @Override
     public Servlet resolveServlet(final ResourceResolver resolver, final String scriptName) {
         if ( resolver == null ) {
             throw new IllegalArgumentException("Resource resolver must not be null");
@@ -346,6 +349,7 @@ public class SlingServletResolver
     /**
      * @see org.apache.sling.api.scripting.SlingScriptResolver#findScript(org.apache.sling.api.resource.ResourceResolver, java.lang.String)
      */
+    @Override
     public SlingScript findScript(final ResourceResolver resourceResolver, final String name)
     throws SlingException {
 
@@ -393,6 +397,7 @@ public class SlingServletResolver
      * @see org.apache.sling.engine.servlets.ErrorHandler#handleError(int,
      *      String, SlingHttpServletRequest, SlingHttpServletResponse)
      */
+    @Override
     public void handleError(final int status,
             final String message,
             final SlingHttpServletRequest request,
@@ -449,6 +454,7 @@ public class SlingServletResolver
     /**
      * @see org.apache.sling.engine.servlets.ErrorHandler#handleError(java.lang.Throwable, org.apache.sling.api.SlingHttpServletRequest, org.apache.sling.api.SlingHttpServletResponse)
      */
+    @Override
     public void handleError(final Throwable throwable, final SlingHttpServletRequest request, final SlingHttpServletResponse response)
     throws IOException {
         // do not handle, if already handling ....
@@ -519,6 +525,7 @@ public class SlingServletResolver
     /**
      * @see org.apache.sling.api.request.SlingRequestListener#onEvent(org.apache.sling.api.request.SlingRequestEvent)
      */
+    @Override
     public void onEvent(final SlingRequestEvent event) {
         if ( event.getType() == SlingRequestEvent.EventType.EVENT_INIT ) {
             try {
@@ -855,14 +862,16 @@ public class SlingServletResolver
 
         this.plugin = new ServletResolverWebConsolePlugin(context.getBundleContext());
 
-        try {
-            Dictionary<String, String> mbeanProps = new Hashtable<String, String>();
-            mbeanProps.put("jmx.objectname", "org.apache.sling:type=servletResolver,service=SlingServletResolverCache");
+        if (this.cacheSize > 0) {
+            try {
+                Dictionary<String, String> mbeanProps = new Hashtable<String, String>();
+                mbeanProps.put("jmx.objectname", "org.apache.sling:type=servletResolver,service=SlingServletResolverCache");
 
-            ServletResolverCacheMBeanImpl mbean = new ServletResolverCacheMBeanImpl();
-            mbeanRegistration = context.getBundleContext().registerService(SlingServletResolverCacheMBean.class.getName(), mbean, mbeanProps);
-        } catch (Throwable t) {
-            LOGGER.debug("Unable to register mbean");
+                ServletResolverCacheMBeanImpl mbean = new ServletResolverCacheMBeanImpl();
+                mbeanRegistration = context.getBundleContext().registerService(SlingServletResolverCacheMBean.class.getName(), mbean, mbeanProps);
+            } catch (Throwable t) {
+                LOGGER.debug("Unable to register mbean");
+            }
         }
     }
 
@@ -1053,6 +1062,7 @@ public class SlingServletResolver
     /**
      * @see org.osgi.service.event.EventHandler#handleEvent(org.osgi.service.event.Event)
      */
+    @Override
     public void handleEvent(final Event event) {
         if (this.cache != null) {
             boolean flushCache = false;
@@ -1386,14 +1396,17 @@ public class SlingServletResolver
             super(SlingServletResolverCacheMBean.class);
         }
 
+        @Override
         public int getCacheSize() {
-            return cache.size();
+            return cache != null ? cache.size() : 0;
         }
 
+        @Override
         public void flushCache() {
             SlingServletResolver.this.flushCache();
         }
 
+        @Override
         public int getMaximumCacheSize() {
             return cacheSize;
         }