This is an automated email from the ASF dual-hosted git repository.

enorman pushed a commit to branch master
in repository 
https://gitbox.apache.org/repos/asf/sling-org-apache-sling-scripting-core.git


The following commit(s) were added to refs/heads/master by this push:
     new 4bcf2fd  SLING-11431 cleanup many compiler and sonar warnings (#20)
4bcf2fd is described below

commit 4bcf2fdc941029e03470837030cf0cf88a01083d
Author: Eric Norman <enor...@apache.org>
AuthorDate: Thu Jun 30 15:26:49 2022 -0700

    SLING-11431 cleanup many compiler and sonar warnings (#20)
---
 .../apache/sling/scripting/core/ScriptHelper.java  |  51 +--
 .../impl/BindingsValuesProvidersByContextImpl.java | 103 +++---
 .../scripting/core/impl/ContextBvpCollector.java   |  36 +--
 .../scripting/core/impl/DefaultSlingScript.java    |  25 +-
 .../scripting/core/impl/InternalScriptHelper.java  |   5 +-
 .../core/impl/ScriptCacheConsolePlugin.java        |   4 +-
 .../sling/scripting/core/impl/ScriptCacheImpl.java |  52 ++-
 .../core/impl/ScriptCacheImplConfiguration.java    |   4 +-
 .../core/impl/ScriptEngineConsolePlugin.java       |  11 +-
 .../core/impl/ScriptingResourceResolver.java       |   4 +-
 .../ScriptingResourceResolverProviderImpl.java     |   2 +-
 .../core/impl/ScriptingVariablesConsolePlugin.java |   3 -
 .../sling/scripting/core/impl/ServiceCache.java    |  26 +-
 .../core/impl/SlingScriptAdapterFactory.java       |  21 +-
 .../core/impl/SlingScriptEnginePicker.java         |   7 +-
 .../core/impl/bundled/BundledScriptContext.java    |  14 +-
 .../scripting/core/impl/bundled/LogWriter.java     |   4 +-
 .../sling/scripting/core/impl/bundled/Script.java  |   3 +-
 .../core/impl/bundled/ScriptContextProvider.java   |   8 +-
 .../scripting/core/impl/helper/CachingMap.java     |  23 ++
 .../scripting/core/impl/helper/OnDemandReader.java |   2 +-
 .../core/impl/helper/ProtectedBindings.java        |  51 ++-
 .../core/impl/jsr223/SlingScriptEngineManager.java |   2 +-
 .../impl/jsr223/SortableScriptEngineFactory.java   |   5 +-
 .../sling/scripting/core/impl/LogWriterTest.java   | 357 ++++++++++-----------
 .../core/impl/ScriptingResourceResolverTest.java   |  14 +-
 .../scripting/core/impl/ServiceCacheTest.java      |   9 +-
 .../bundled/AbstractBundledRenderUnitTest.java     |   1 -
 .../impl/bundled/BundledScriptContextTest.java     |  11 +-
 .../scripting/core/impl/bundled/LogWriterTest.java |   7 +-
 .../core/impl/helper/ProtectedBindingsTest.java    |   6 +-
 .../impl/jsr223/SlingScriptEngineManagerTest.java  |  12 +-
 .../it/BindingsValuesProvidersByContextIT.java     |   4 +-
 .../sling/scripting/core/it/HtmlScriptingIT.java   |  18 +-
 34 files changed, 497 insertions(+), 408 deletions(-)

diff --git a/src/main/java/org/apache/sling/scripting/core/ScriptHelper.java 
b/src/main/java/org/apache/sling/scripting/core/ScriptHelper.java
index ce6b8f1..fa7024a 100644
--- a/src/main/java/org/apache/sling/scripting/core/ScriptHelper.java
+++ b/src/main/java/org/apache/sling/scripting/core/ScriptHelper.java
@@ -21,7 +21,7 @@ package org.apache.sling.scripting.core;
 import java.io.IOException;
 import java.lang.reflect.Array;
 import java.util.ArrayList;
-import java.util.Arrays;
+import java.util.Collection;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.Iterator;
@@ -77,7 +77,7 @@ public class ScriptHelper implements SlingScriptHelper {
      * The list of references - we don't need to synchronize this as we are
      * running in one single request.
      */
-    protected List<ServiceReference> references;
+    protected List<ServiceReference<?>> references;
 
     /** A map of found services. */
     protected Map<String, Object> services;
@@ -192,6 +192,7 @@ public class ScriptHelper implements SlingScriptHelper {
 
     /**
      * @see org.apache.sling.api.scripting.SlingScriptHelper#dispose()
+     * @deprecated This method is deprecated and should never be called by 
clients!
      */
     @Deprecated
     public void dispose() {
@@ -202,18 +203,18 @@ public class ScriptHelper implements SlingScriptHelper {
      * @see 
org.apache.sling.api.scripting.SlingScriptHelper#getService(java.lang.Class)
      */
     @SuppressWarnings("unchecked")
-    public <ServiceType> ServiceType getService(Class<ServiceType> type) {
-        ServiceType service = (this.services == null ? null : (ServiceType) 
this.services.get(type.getName()));
+    public <T> T getService(Class<T> type) {
+        T service = (this.services == null ? null : (T) 
this.services.get(type.getName()));
         if (service == null) {
-            final ServiceReference ref = 
this.bundleContext.getServiceReference(type.getName());
+            final ServiceReference<T> ref = 
this.bundleContext.getServiceReference(type);
             if (ref != null) {
-                service = (ServiceType) this.bundleContext.getService(ref);
+                service = this.bundleContext.getService(ref);
                 if ( service != null ) {
                     if ( this.services == null ) {
-                        this.services = new HashMap<String, Object>();
+                        this.services = new HashMap<>();
                     }
                     if ( this.references == null ) {
-                        this.references = new ArrayList<ServiceReference>();
+                        this.references = new ArrayList<>();
                     }
                     this.references.add(ref);
                     this.services.put(type.getName(), service);
@@ -227,33 +228,33 @@ public class ScriptHelper implements SlingScriptHelper {
      * @see 
org.apache.sling.api.scripting.SlingScriptHelper#getServices(java.lang.Class, 
java.lang.String)
      */
     @SuppressWarnings("unchecked")
-    public <ServiceType> ServiceType[] getServices(
-            Class<ServiceType> serviceType, String filter)
+    public <T> T[] getServices(
+            Class<T> serviceType, String filter)
     throws InvalidServiceFilterSyntaxException {
         try {
-            final ServiceReference[] refs = 
this.bundleContext.getServiceReferences(
-                serviceType.getName(), filter);
-            ServiceType[] result = null;
-            if (refs != null) {
+            Collection<ServiceReference<T>> refsCollection = 
this.bundleContext.getServiceReferences(
+                    serviceType, filter);
+            T[] result = null;
+            if (refsCollection != null) {
                 // sort by service ranking (lowest first) (see 
ServiceReference#compareTo(Object))
-                List<ServiceReference> references = Arrays.asList(refs);
-                Collections.sort(references);
+                List<ServiceReference<T>> refsList = new 
ArrayList<>(refsCollection);
+                Collections.sort(refsList);
                 // get the highest ranking first
-                Collections.reverse(references);
+                Collections.reverse(refsList);
                 
-                final List<ServiceType> objects = new ArrayList<ServiceType>();
-                for (ServiceReference reference : references) {
-                    final ServiceType service = (ServiceType) 
this.bundleContext.getService(reference);
+                final List<T> objects = new ArrayList<>();
+                for (ServiceReference<T> reference : refsList) {
+                    final T service = this.bundleContext.getService(reference);
                     if (service != null) {
                         if ( this.references == null ) {
-                            this.references = new 
ArrayList<ServiceReference>();
+                            this.references = new ArrayList<>();
                         }
                         this.references.add(reference);
                         objects.add(service);
                     }
                 }
-                if (objects.size() > 0) {
-                    ServiceType[] srv = (ServiceType[]) 
Array.newInstance(serviceType, objects.size());
+                if (!objects.isEmpty()) {
+                    T[] srv = (T[]) Array.newInstance(serviceType, 
objects.size());
                     result = objects.toArray(srv);
                 }
             }
@@ -269,9 +270,9 @@ public class ScriptHelper implements SlingScriptHelper {
      */
     public void cleanup() {
         if ( this.references != null ) {
-            final Iterator<ServiceReference> i = this.references.iterator();
+            final Iterator<ServiceReference<?>> i = this.references.iterator();
             while (i.hasNext()) {
-                final ServiceReference ref = i.next();
+                final ServiceReference<?> ref = i.next();
                 this.bundleContext.ungetService(ref);
             }
             this.references.clear();
diff --git 
a/src/main/java/org/apache/sling/scripting/core/impl/BindingsValuesProvidersByContextImpl.java
 
b/src/main/java/org/apache/sling/scripting/core/impl/BindingsValuesProvidersByContextImpl.java
index 850e5b1..9ef85f9 100644
--- 
a/src/main/java/org/apache/sling/scripting/core/impl/BindingsValuesProvidersByContextImpl.java
+++ 
b/src/main/java/org/apache/sling/scripting/core/impl/BindingsValuesProvidersByContextImpl.java
@@ -60,7 +60,7 @@ import org.slf4j.LoggerFactory;
             Constants.SERVICE_VENDOR + "=The Apache Software Foundation"
     }
 )
-public class BindingsValuesProvidersByContextImpl implements 
BindingsValuesProvidersByContext, ServiceTrackerCustomizer {
+public class BindingsValuesProvidersByContextImpl implements 
BindingsValuesProvidersByContext {
 
     private final Map<String, ContextBvpCollector> customizers = new 
HashMap<>();
     public static final String [] DEFAULT_CONTEXT_ARRAY = new String [] { 
DEFAULT_CONTEXT };
@@ -69,11 +69,12 @@ public class BindingsValuesProvidersByContextImpl 
implements BindingsValuesProvi
     private static final String TOPIC_MODIFIED = 
"org/apache/sling/scripting/core/BindingsValuesProvider/MODIFIED";
     private static final String TOPIC_REMOVED = 
"org/apache/sling/scripting/core/BindingsValuesProvider/REMOVED";
 
-    private ServiceTracker bvpTracker;
-    private ServiceTracker mapsTracker;
+    private ServiceTracker<BindingsValuesProvider, Object> bvpTracker;
+    @SuppressWarnings("rawtypes")
+    private ServiceTracker<Map, Object> mapsTracker;
     private BundleContext bundleContext;
     private final Logger logger = LoggerFactory.getLogger(getClass());
-    private final List<ServiceReference> pendingRefs = new ArrayList<>();
+    private final List<ServiceReference<?>> pendingRefs = new ArrayList<>();
 
     @Reference
     private SlingScriptEngineManager scriptEngineManager;
@@ -86,7 +87,11 @@ public class BindingsValuesProvidersByContextImpl implements 
BindingsValuesProvi
     private volatile EventAdmin eventAdmin;
 
     private abstract class ContextLoop {
-        Object apply(ServiceReference ref) {
+        private String [] getContexts(ServiceReference<?> reference) {
+            return 
PropertiesUtil.toStringArray(reference.getProperty(CONTEXT), new String[] { 
DEFAULT_CONTEXT });
+        }
+
+        Object apply(ServiceReference<?> ref) {
             final Object service = bundleContext.getService(ref);
             if(service != null) {
                 for(String context : getContexts(ref)) {
@@ -104,24 +109,26 @@ public class BindingsValuesProvidersByContextImpl 
implements BindingsValuesProvi
         }
 
         protected abstract void applyInContext(ContextBvpCollector c);
-    };
+    }
 
     @Activate
     public void activate(ComponentContext ctx) {
         bundleContext = ctx.getBundleContext();
 
         synchronized (pendingRefs) {
-            for(ServiceReference ref : pendingRefs) {
+            for(ServiceReference<?> ref : pendingRefs) {
                 addingService(ref);
             }
             pendingRefs.clear();
         }
 
-        bvpTracker = new ServiceTracker(bundleContext, 
BindingsValuesProvider.class.getName(), this);
+        bvpTracker = new ServiceTracker<>(bundleContext, 
BindingsValuesProvider.class,
+                new ProvidersServiceTrackerCustomizer<>());
         bvpTracker.open();
 
         // Map services can also be registered to provide bindings
-        mapsTracker = new ServiceTracker(bundleContext, Map.class.getName(), 
this);
+        mapsTracker = new ServiceTracker<>(bundleContext, Map.class,
+                new ProvidersServiceTrackerCustomizer<>());
         mapsTracker.open();
     }
 
@@ -155,7 +162,7 @@ public class BindingsValuesProvidersByContextImpl 
implements BindingsValuesProvi
         if (factoryProperties != null) {
             String[] compatibleLangs = 
PropertiesUtil.toStringArray(factoryProperties.get("compatible.javax.script.name"),
 new String[0]);
             for (final String name : compatibleLangs) {
-                final Map<ServiceReference, BindingsValuesProvider> 
langProviders = bvpc.getLangBindingsValuesProviders().get(name);
+                final Map<ServiceReference<?>, BindingsValuesProvider> 
langProviders = bvpc.getLangBindingsValuesProviders().get(name);
                 if (langProviders != null) {
                     results.addAll(langProviders.values());
                 }
@@ -164,7 +171,7 @@ public class BindingsValuesProvidersByContextImpl 
implements BindingsValuesProvi
         }
 
         for (final String name : scriptEngineFactory.getNames()) {
-            final Map<ServiceReference, BindingsValuesProvider> langProviders 
= bvpc.getLangBindingsValuesProviders().get(name);
+            final Map<ServiceReference<?>, BindingsValuesProvider> 
langProviders = bvpc.getLangBindingsValuesProviders().get(name);
             if (langProviders != null) {
                 results.addAll(langProviders.values());
             }
@@ -174,18 +181,13 @@ public class BindingsValuesProvidersByContextImpl 
implements BindingsValuesProvi
         return results;
     }
 
-    private String [] getContexts(ServiceReference reference) {
-        return PropertiesUtil.toStringArray(reference.getProperty(CONTEXT), 
new String[] { DEFAULT_CONTEXT });
-    }
-
-    private Event newEvent(final String topic, final ServiceReference 
reference) {
-        Dictionary<String, Object> props = new Hashtable<>();
+    private Event newEvent(final String topic, final ServiceReference<?> 
reference) {
+        Dictionary<String, Object> props = new Hashtable<>(); // NOSONAR
         props.put("service.id", reference.getProperty(Constants.SERVICE_ID));
         return new Event(topic, props);
     }
 
-    @Override
-    public Object addingService(final ServiceReference reference) {
+    private Object addingService(final ServiceReference<?> reference) {
         if(bundleContext == null) {
             synchronized (pendingRefs) {
                 pendingRefs.add(reference);
@@ -203,35 +205,46 @@ public class BindingsValuesProvidersByContextImpl 
implements BindingsValuesProvi
         }.apply(reference);
     }
 
-    @Override
-    public void modifiedService(final ServiceReference reference, final Object 
service) {
-        new ContextLoop() {
-            @Override
-            protected void applyInContext(ContextBvpCollector c) {
-                c.modifiedService(reference);
-                if (eventAdmin != null) {
-                    eventAdmin.postEvent(newEvent(TOPIC_MODIFIED, reference));
-                }
-            }
-        }.apply(reference);
-    }
+    private class ProvidersServiceTrackerCustomizer<S, T> implements 
ServiceTrackerCustomizer<S, T> {
 
-    @Override
-    public void removedService(final ServiceReference reference, final Object 
service) {
-        if(bundleContext == null) {
-            synchronized (pendingRefs) {
-                pendingRefs.remove(reference);
-            }
-            return;
+        @SuppressWarnings("unchecked")
+        @Override
+        public T addingService(ServiceReference<S> reference) {
+            return 
(T)BindingsValuesProvidersByContextImpl.this.addingService(reference);
         }
-        new ContextLoop() {
-            @Override
-            protected void applyInContext(ContextBvpCollector c) {
-                c.removedService(reference);
-                if (eventAdmin != null) {
-                    eventAdmin.postEvent(newEvent(TOPIC_REMOVED, reference));
+
+        @Override
+        public void modifiedService(ServiceReference<S> reference, T service) {
+            new ContextLoop() {
+                @Override
+                protected void applyInContext(ContextBvpCollector c) {
+                    c.modifiedService(reference);
+                    if (eventAdmin != null) {
+                        eventAdmin.postEvent(newEvent(TOPIC_MODIFIED, 
reference));
+                    }
+                }
+            }.apply(reference);
+        }
+
+        @Override
+        public void removedService(ServiceReference<S> reference, T service) {
+            if(bundleContext == null) {
+                synchronized (pendingRefs) {
+                    pendingRefs.remove(reference);
                 }
+                return;
             }
-        }.apply(reference);
+            new ContextLoop() {
+                @Override
+                protected void applyInContext(ContextBvpCollector c) {
+                    c.removedService(reference);
+                    if (eventAdmin != null) {
+                        eventAdmin.postEvent(newEvent(TOPIC_REMOVED, 
reference));
+                    }
+                }
+            }.apply(reference);
+        }
+
     }
+
 }
diff --git 
a/src/main/java/org/apache/sling/scripting/core/impl/ContextBvpCollector.java 
b/src/main/java/org/apache/sling/scripting/core/impl/ContextBvpCollector.java
index b2b5071..c77914a 100644
--- 
a/src/main/java/org/apache/sling/scripting/core/impl/ContextBvpCollector.java
+++ 
b/src/main/java/org/apache/sling/scripting/core/impl/ContextBvpCollector.java
@@ -19,6 +19,7 @@ package org.apache.sling.scripting.core.impl;
 import java.util.Arrays;
 import java.util.List;
 import java.util.Map;
+import java.util.Map.Entry;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ConcurrentSkipListMap;
 
@@ -41,21 +42,21 @@ class ContextBvpCollector {
     /**
      * The BindingsValuesProvider impls which apply to all languages. Keys are 
serviceIds.
      */
-    private final Map<ServiceReference, BindingsValuesProvider> 
genericBindingsValuesProviders;
+    private final Map<ServiceReference<?>, BindingsValuesProvider> 
genericBindingsValuesProviders;
 
     /**
      * The BindingsValuesProvider impls which apply to a specific language.
      */
-    private final Map<String, Map<ServiceReference, BindingsValuesProvider>> 
langBindingsValuesProviders;
+    private final Map<String, Map<ServiceReference<?>, 
BindingsValuesProvider>> langBindingsValuesProviders;
 
     ContextBvpCollector(BundleContext bc) {
         bundleContext = bc;
-        genericBindingsValuesProviders = new 
ConcurrentSkipListMap<ServiceReference, BindingsValuesProvider>();
-        langBindingsValuesProviders = new ConcurrentHashMap<String, 
Map<ServiceReference, BindingsValuesProvider>>();
+        genericBindingsValuesProviders = new ConcurrentSkipListMap<>();
+        langBindingsValuesProviders = new ConcurrentHashMap<>();
     }
 
     @SuppressWarnings("unchecked")
-    public Object addingService(final ServiceReference ref) {
+    public Object addingService(final ServiceReference<?> ref) {
         final String[] engineNames = PropertiesUtil
                 .toStringArray(ref.getProperty(ScriptEngine.NAME), new 
String[0]);
         Object service = bundleContext.getService(ref);
@@ -69,12 +70,7 @@ class ContextBvpCollector {
                 genericBindingsValuesProviders.put(ref, 
(BindingsValuesProvider) service);
             } else {
                 for (String engineName : engineNames) {
-                    Map<ServiceReference, BindingsValuesProvider> 
langProviders = langBindingsValuesProviders.get(engineName);
-                    if (langProviders == null) {
-                        langProviders = new 
ConcurrentSkipListMap<ServiceReference, BindingsValuesProvider>();
-                        langBindingsValuesProviders.put(engineName, 
langProviders);
-                    }
-
+                    Map<ServiceReference<?>, BindingsValuesProvider> 
langProviders = langBindingsValuesProviders.computeIfAbsent(engineName, k -> 
new ConcurrentSkipListMap<>());
                     langProviders.put(ref, (BindingsValuesProvider) service);
                 }
             }
@@ -82,7 +78,7 @@ class ContextBvpCollector {
         return service;
     }
 
-    public void modifiedService(final ServiceReference ref) {
+    public void modifiedService(final ServiceReference<?> ref) {
         removedService(ref);
         // Note that any calls to our get* methods at this
         // point won't see the service. We could synchronize
@@ -93,19 +89,23 @@ class ContextBvpCollector {
         addingService(ref);
     }
 
-    public void removedService(final ServiceReference ref) {
+    public void removedService(final ServiceReference<?> ref) {
         if (genericBindingsValuesProviders.remove(ref) == null) {
-            for (Map<ServiceReference, BindingsValuesProvider> coll : 
langBindingsValuesProviders.values()) {
+            for (Map<ServiceReference<?>, BindingsValuesProvider> coll : 
langBindingsValuesProviders.values()) {
                 coll.remove(ref);
             }
         }
     }
 
-    Map<ServiceReference, BindingsValuesProvider> 
getGenericBindingsValuesProviders() {
+    // ServiceReference type can be either Map or BindingsValuesProvider so we 
must use generic type
+    @SuppressWarnings("java:S1452") 
+    Map<ServiceReference<?>, BindingsValuesProvider> 
getGenericBindingsValuesProviders() {
         return genericBindingsValuesProviders;
     }
 
-    Map<String, Map<ServiceReference, BindingsValuesProvider>> 
getLangBindingsValuesProviders() {
+    // ServiceReference type can be either Map or BindingsValuesProvider so we 
must use generic type
+    @SuppressWarnings("java:S1452") 
+    Map<String, Map<ServiceReference<?>, BindingsValuesProvider>> 
getLangBindingsValuesProviders() {
         return langBindingsValuesProviders;
     }
 
@@ -118,8 +118,8 @@ class ContextBvpCollector {
         }
 
         public void addBindings(Bindings bindings) {
-            for (String key : map.keySet()) {
-                bindings.put(key, map.get(key));
+            for (Entry<String, Object> entry : map.entrySet()) {
+                bindings.put(entry.getKey(), entry.getValue());
             }
         }
 
diff --git 
a/src/main/java/org/apache/sling/scripting/core/impl/DefaultSlingScript.java 
b/src/main/java/org/apache/sling/scripting/core/impl/DefaultSlingScript.java
index 1d6b25c..2fca84b 100644
--- a/src/main/java/org/apache/sling/scripting/core/impl/DefaultSlingScript.java
+++ b/src/main/java/org/apache/sling/scripting/core/impl/DefaultSlingScript.java
@@ -97,11 +97,11 @@ class DefaultSlingScript implements SlingScript, Servlet, 
ServletConfig {
             "general page rendering performance.";
 
     /** Thread local containing the resource resolver. */
-    private static ThreadLocal<ResourceResolver> requestResourceResolver = new 
ThreadLocal<ResourceResolver>();
+    private static ThreadLocal<ResourceResolver> requestResourceResolver = new 
ThreadLocal<>();
 
     /** The set of protected keys. */
     private static final Set<String> PROTECTED_KEYS =
-        new HashSet<String>(Arrays.asList(REQUEST, RESPONSE, READER, SLING, 
RESOURCE, RESOLVER, OUT, LOG));
+        new HashSet<>(Arrays.asList(REQUEST, RESPONSE, READER, SLING, 
RESOURCE, RESOLVER, OUT, LOG));
 
     /** The resource pointing to the script. */
 
@@ -243,8 +243,9 @@ class DefaultSlingScript implements SlingScript, Servlet, 
ServletConfig {
                         case SlingScriptConstants.SLING_SCOPE : return 
slingScope;
                         case 100: return this.engineScope;
                         case 200: return this.globalScope;
+                        default:
+                            throw new IllegalArgumentException("Invalid 
scope");
                     }
-                    throw new IllegalArgumentException("Invalid scope");
                 }
 
                 /**
@@ -403,9 +404,9 @@ class DefaultSlingScript implements SlingScript, Servlet, 
ServletConfig {
                     throw new ScriptEvaluationException(this.scriptName, 
"Method " + method + " not found in script.", e);
                 }
             }
-            // optionall flush the output channel
+            // optional flush the output channel
             Object flushObject = bindings.get(FLUSH);
-            if (flushObject instanceof Boolean && (Boolean) flushObject) {
+            if (Boolean.TRUE.equals(flushObject)) {
                 ctx.getWriter().flush();
             }
 
@@ -455,7 +456,7 @@ class DefaultSlingScript implements SlingScript, Servlet, 
ServletConfig {
      */
     public void init(ServletConfig servletConfig) {
         if (servletConfig != null) {
-            final Dictionary<String, String> params = new Hashtable<String, 
String>();
+            final Dictionary<String, String> params = new Hashtable<>(); // 
NOSONAR
             for (Enumeration<?> ne = servletConfig.getInitParameterNames(); 
ne.hasMoreElements();) {
                 String name = String.valueOf(ne.nextElement());
                 String value = servletConfig.getInitParameter(name);
@@ -731,7 +732,7 @@ class DefaultSlingScript implements SlingScript, Servlet, 
ServletConfig {
         }
 
         if (!bindingsValuesProviders.isEmpty()) {
-            Set<String> protectedKeys = new HashSet<String>();
+            Set<String> protectedKeys = new HashSet<>();
             protectedKeys.addAll(PROTECTED_KEYS);
             ProtectedBindings protectedBindings = new 
ProtectedBindings(bindings, protectedKeys);
             
@@ -747,8 +748,10 @@ class DefaultSlingScript implements SlingScript, Servlet, 
ServletConfig {
                     if (request != null && request.getRequestProgressTracker() 
!= null) {
                         
request.getRequestProgressTracker().log(String.format(BINDINGS_THRESHOLD_MESSAGE,
 provider.getClass().getName(), (stop-start)/1000, 
WARN_LIMIT_FOR_BVP_NANOS/1000));
                     } else {
-                        LOGGER.info(String.format(BINDINGS_THRESHOLD_MESSAGE, 
provider.getClass().getName(), (stop-start)/1000,
-                                WARN_LIMIT_FOR_BVP_NANOS/1000));
+                        if (LOGGER.isInfoEnabled()) {
+                            
LOGGER.info(String.format(BINDINGS_THRESHOLD_MESSAGE, 
provider.getClass().getName(), (stop-start)/1000,
+                                    WARN_LIMIT_FOR_BVP_NANOS/1000));
+                        }
                     }
                 }
             }
@@ -795,7 +798,7 @@ class DefaultSlingScript implements SlingScript, Servlet, 
ServletConfig {
      * This ensures that the input stream is only fetched from the repository
      * if it is really used by the script engines.
      */
-    public final static class LazyInputStream extends InputStream {
+    public static final class LazyInputStream extends InputStream {
 
         /** The script resource which is adapted to an inputm stream. */
         private final Resource resource;
@@ -895,7 +898,7 @@ class DefaultSlingScript implements SlingScript, Servlet, 
ServletConfig {
         private Resource delegatee;
 
         public LazyScriptResource(final String path, final String 
resourceType, final ResourceResolver resolver) {
-            super(null);
+            super(null); // NOSONAR
             this.path = path;
             this.resourceType = resourceType;
             this.resolver = resolver;
diff --git 
a/src/main/java/org/apache/sling/scripting/core/impl/InternalScriptHelper.java 
b/src/main/java/org/apache/sling/scripting/core/impl/InternalScriptHelper.java
index 4b4f95e..737b284 100644
--- 
a/src/main/java/org/apache/sling/scripting/core/impl/InternalScriptHelper.java
+++ 
b/src/main/java/org/apache/sling/scripting/core/impl/InternalScriptHelper.java
@@ -51,12 +51,13 @@ public class InternalScriptHelper extends ScriptHelper {
     /**
      * @see 
org.apache.sling.api.scripting.SlingScriptHelper#getService(java.lang.Class)
      */
-    public <ServiceType> ServiceType getService(Class<ServiceType> type) {
+    @Override
+    public <T> T getService(Class<T> type) {
         return this.serviceCache.getService(type);
     }
 
     @Override
-    public <ServiceType> ServiceType[] getServices(Class<ServiceType> 
serviceType, String filter)
+    public <T> T[] getServices(Class<T> serviceType, String filter)
             throws InvalidServiceFilterSyntaxException {
         return this.serviceCache.getServices(serviceType, filter);
     }
diff --git 
a/src/main/java/org/apache/sling/scripting/core/impl/ScriptCacheConsolePlugin.java
 
b/src/main/java/org/apache/sling/scripting/core/impl/ScriptCacheConsolePlugin.java
index 7503515..8285594 100644
--- 
a/src/main/java/org/apache/sling/scripting/core/impl/ScriptCacheConsolePlugin.java
+++ 
b/src/main/java/org/apache/sling/scripting/core/impl/ScriptCacheConsolePlugin.java
@@ -49,6 +49,8 @@ import org.osgi.service.component.annotations.Reference;
 )
 public class ScriptCacheConsolePlugin extends AbstractWebConsolePlugin {
 
+    private static final long serialVersionUID = 8073398598702884758L;
+
     public static final String CONSOLE_LABEL = "scriptcache";
     public static final String CONSOLE_TITLE = "Script Cache Status";
     public static final String RESOURCES = CONSOLE_LABEL + "/ui";
@@ -83,7 +85,7 @@ public class ScriptCacheConsolePlugin extends 
AbstractWebConsolePlugin {
             StringBuilder sb = new StringBuilder();
             sb.append("<script type='text/javascript' 
src='").append(RESOURCES).append("/").append(SCRIPTCACHE_JS).append("'></script>");
             sb.append("<div id='cached-scripts' class='ui-widget statline'>");
-            if (scripts.size() > 0) {
+            if (!scripts.isEmpty()) {
                 Collections.sort(scripts);
                 sb.append("<p class='ui-widget-header'>Cached Scripts</p>");
                 sb.append("<table class='nicetable ui-widget-content'>");
diff --git 
a/src/main/java/org/apache/sling/scripting/core/impl/ScriptCacheImpl.java 
b/src/main/java/org/apache/sling/scripting/core/impl/ScriptCacheImpl.java
index c78cef9..579e11f 100644
--- a/src/main/java/org/apache/sling/scripting/core/impl/ScriptCacheImpl.java
+++ b/src/main/java/org/apache/sling/scripting/core/impl/ScriptCacheImpl.java
@@ -34,8 +34,6 @@ import javax.script.Compilable;
 import javax.script.ScriptEngine;
 import javax.script.ScriptEngineFactory;
 
-import org.apache.sling.api.resource.LoginException;
-import org.apache.sling.api.resource.ResourceResolver;
 import org.apache.sling.api.resource.ResourceResolverFactory;
 import 
org.apache.sling.api.resource.observation.ExternalResourceChangeListener;
 import org.apache.sling.api.resource.observation.ResourceChange;
@@ -79,7 +77,7 @@ import org.slf4j.LoggerFactory;
  */
 public class ScriptCacheImpl implements ScriptCache, ResourceChangeListener, 
ExternalResourceChangeListener, EventHandler {
 
-    private final Logger LOGGER = 
LoggerFactory.getLogger(ScriptCacheImpl.class);
+    private final Logger logger = 
LoggerFactory.getLogger(ScriptCacheImpl.class);
 
     public static final int DEFAULT_CACHE_SIZE = 65536;
 
@@ -88,7 +86,6 @@ public class ScriptCacheImpl implements ScriptCache, 
ResourceChangeListener, Ext
     private ServiceRegistration<ResourceChangeListener> resourceChangeListener;
     private Set<String> extensions = new HashSet<>();
     private String[] additionalExtensions = new String[]{};
-    private String[] searchPaths = {};
 
     // use a static policy so that we can reconfigure the watched script files 
if the search paths are changed
     @Reference
@@ -131,7 +128,7 @@ public class ScriptCacheImpl implements ScriptCache, 
ResourceChangeListener, Ext
         try {
             SoftReference<CachedScript> reference = new 
SoftReference<>(script);
             internalMap.put(script.getScriptPath(), reference);
-            LOGGER.debug("Added script {} to script cache.", 
script.getScriptPath());
+            logger.debug("Added script {} to script cache.", 
script.getScriptPath());
         } finally {
             writeLock.unlock();
         }
@@ -142,7 +139,7 @@ public class ScriptCacheImpl implements ScriptCache, 
ResourceChangeListener, Ext
         writeLock.lock();
         try {
             internalMap.clear();
-            LOGGER.debug("Cleared script cache.");
+            logger.debug("Cleared script cache.");
         } finally {
             writeLock.unlock();
         }
@@ -155,7 +152,7 @@ public class ScriptCacheImpl implements ScriptCache, 
ResourceChangeListener, Ext
             SoftReference<CachedScript> reference = 
internalMap.remove(scriptPath);
             boolean result = reference != null;
             if (result) {
-                LOGGER.debug("Removed script {} from script cache.", 
scriptPath);
+                logger.debug("Removed script {} from script cache.", 
scriptPath);
             }
             return result;
         } finally {
@@ -166,30 +163,27 @@ public class ScriptCacheImpl implements ScriptCache, 
ResourceChangeListener, Ext
     @Override
     public void onChange(@NotNull List<ResourceChange> list) {
         for (final ResourceChange change : list) {
-            Runnable eventTask = new Runnable() {
-                @Override
-                public void run() {
-                    String path = change.getPath();
-                    writeLock.lock();
-                    try {
-                        final boolean removed = internalMap.remove(path) != 
null;
-                        LOGGER.debug("Detected script change for {} - removed 
entry from the cache.", path);
-                        if ( !removed && change.getType() == 
ChangeType.REMOVED ) {
-                            final String prefix = path + "/";
-                            final Set<String> removal = new HashSet<>();
-                            for(final Map.Entry<String, 
SoftReference<CachedScript>> entry : internalMap.entrySet()) {
-                                if ( entry.getKey().startsWith(prefix) ) {
-                                    removal.add(entry.getKey());
-                                }
-                            }
-                            for(final String key : removal) {
-                                internalMap.remove(key);
-                                LOGGER.debug("Detected removal for {} - 
removed entry {} from the cache.", path, key);
+            Runnable eventTask = () -> {
+                String path = change.getPath();
+                writeLock.lock();
+                try {
+                    final boolean removed = internalMap.remove(path) != null;
+                    logger.debug("Detected script change for {} - removed 
entry from the cache.", path);
+                    if ( !removed && change.getType() == ChangeType.REMOVED ) {
+                        final String prefix = path + "/";
+                        final Set<String> removal = new HashSet<>();
+                        for(final Map.Entry<String, 
SoftReference<CachedScript>> entry : internalMap.entrySet()) {
+                            if ( entry.getKey().startsWith(prefix) ) {
+                                removal.add(entry.getKey());
                             }
                         }
-                    } finally {
-                        writeLock.unlock();
+                        for(final String key : removal) {
+                            internalMap.remove(key);
+                            logger.debug("Detected removal for {} - removed 
entry {} from the cache.", path, key);
+                        }
                     }
+                } finally {
+                    writeLock.unlock();
                 }
             };
             threadPool.execute(eventTask);
@@ -238,7 +232,7 @@ public class ScriptCacheImpl implements ScriptCache, 
ResourceChangeListener, Ext
                     for (String extension : extensions) {
                         globPatterns.add("glob:**/*." + extension);
                     }
-                    Dictionary<String, Object> 
resourceChangeListenerProperties = new Hashtable<>();
+                    Dictionary<String, Object> 
resourceChangeListenerProperties = new Hashtable<>(); // NOSONAR
                     resourceChangeListenerProperties
                             .put(ResourceChangeListener.PATHS, 
globPatterns.toArray(new String[globPatterns.size()]));
                     
resourceChangeListenerProperties.put(ResourceChangeListener.CHANGES,
diff --git 
a/src/main/java/org/apache/sling/scripting/core/impl/ScriptCacheImplConfiguration.java
 
b/src/main/java/org/apache/sling/scripting/core/impl/ScriptCacheImplConfiguration.java
index 7dd865f..2d1ed30 100644
--- 
a/src/main/java/org/apache/sling/scripting/core/impl/ScriptCacheImplConfiguration.java
+++ 
b/src/main/java/org/apache/sling/scripting/core/impl/ScriptCacheImplConfiguration.java
@@ -33,13 +33,13 @@ import static 
org.apache.sling.scripting.core.impl.ScriptCacheImpl.DEFAULT_CACHE
         name = "Cache Size",
         description = "The Cache Size defines the maximum number of compiled 
script references that will be stored in the cache's internal map."
     )
-    int org_apache_sling_scripting_cache_size() default DEFAULT_CACHE_SIZE;
+    int org_apache_sling_scripting_cache_size() default DEFAULT_CACHE_SIZE; // 
NOSONAR
 
     @AttributeDefinition(
         name = "Additional Extensions",
         description = "Scripts from the search paths with these extensions 
will also be monitored so that changes to them will clean the cache if the 
cache contains them."
 
     )
-    String[] org_apache_sling_scripting_cache_additional__extensions() default 
{};
+    String[] org_apache_sling_scripting_cache_additional__extensions() default 
{}; // NOSONAR
 
 }
diff --git 
a/src/main/java/org/apache/sling/scripting/core/impl/ScriptEngineConsolePlugin.java
 
b/src/main/java/org/apache/sling/scripting/core/impl/ScriptEngineConsolePlugin.java
index 1b88807..2bef509 100644
--- 
a/src/main/java/org/apache/sling/scripting/core/impl/ScriptEngineConsolePlugin.java
+++ 
b/src/main/java/org/apache/sling/scripting/core/impl/ScriptEngineConsolePlugin.java
@@ -20,25 +20,18 @@ package org.apache.sling.scripting.core.impl;
 
 import java.io.IOException;
 import java.io.PrintWriter;
-import java.util.Arrays;
-import java.util.Dictionary;
-import java.util.Hashtable;
 import java.util.Iterator;
 import java.util.List;
 
 import javax.script.ScriptEngineFactory;
-import javax.script.ScriptEngineManager;
 import javax.servlet.Servlet;
-import javax.servlet.ServletException;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
 import org.apache.felix.webconsole.AbstractWebConsolePlugin;
 import org.apache.felix.webconsole.WebConsoleConstants;
 import org.apache.sling.scripting.core.impl.jsr223.SlingScriptEngineManager;
-import org.osgi.framework.BundleContext;
 import org.osgi.framework.Constants;
-import org.osgi.framework.ServiceRegistration;
 import org.osgi.service.component.annotations.Component;
 import org.osgi.service.component.annotations.Reference;
 
@@ -55,6 +48,8 @@ import org.osgi.service.component.annotations.Reference;
 )
 public class ScriptEngineConsolePlugin extends AbstractWebConsolePlugin {
 
+    private static final long serialVersionUID = -6444729200748932100L;
+
     public static final String CONSOLE_LABEL = "slingscripting";
     public static final String CONSOLE_TITLE = "Script Engines";
 
@@ -109,7 +104,7 @@ public class ScriptEngineConsolePlugin extends 
AbstractWebConsolePlugin {
     }
 
     private void printArray(PrintWriter pw, List<?> values) {
-        if (values == null || values.size() == 0) {
+        if (values == null || values.isEmpty()) {
             pw.println("-");
         } else {
             for (Iterator<?> vi = values.iterator(); vi.hasNext();) {
diff --git 
a/src/main/java/org/apache/sling/scripting/core/impl/ScriptingResourceResolver.java
 
b/src/main/java/org/apache/sling/scripting/core/impl/ScriptingResourceResolver.java
index f91fece..2959825 100644
--- 
a/src/main/java/org/apache/sling/scripting/core/impl/ScriptingResourceResolver.java
+++ 
b/src/main/java/org/apache/sling/scripting/core/impl/ScriptingResourceResolver.java
@@ -54,11 +54,11 @@ public class ScriptingResourceResolver extends 
ResourceResolverWrapper {
             StringWriter writer = new StringWriter();
             Throwable t = new Throwable();
             t.printStackTrace(new PrintWriter(writer));
-            LOGGER.warn("The following code attempted to close the per-request 
resource resolver: {}", writer.toString());
+            LOGGER.warn("The following code attempted to close the per-request 
resource resolver: {}", writer);
         }
     }
 
-    void _close() {
+    void _close() { // NOSONAR
         delegate.close();
     }
 
diff --git 
a/src/main/java/org/apache/sling/scripting/core/impl/ScriptingResourceResolverProviderImpl.java
 
b/src/main/java/org/apache/sling/scripting/core/impl/ScriptingResourceResolverProviderImpl.java
index fb1b8ac..dac10a9 100644
--- 
a/src/main/java/org/apache/sling/scripting/core/impl/ScriptingResourceResolverProviderImpl.java
+++ 
b/src/main/java/org/apache/sling/scripting/core/impl/ScriptingResourceResolverProviderImpl.java
@@ -70,7 +70,7 @@ public class ScriptingResourceResolverProviderImpl implements 
ScriptingResourceR
                 description = "If enabled, all calls to ResourceResolver#close 
for the request-scoped resource resolvers will be logged " +
                         "with the full stack trace. Don't enable this setting 
on production systems."
         )
-        boolean log_stacktrace_onclose() default false;
+        boolean log_stacktrace_onclose() default false; // NOSONAR
 
     }
 
diff --git 
a/src/main/java/org/apache/sling/scripting/core/impl/ScriptingVariablesConsolePlugin.java
 
b/src/main/java/org/apache/sling/scripting/core/impl/ScriptingVariablesConsolePlugin.java
index 50237ac..89dca2d 100644
--- 
a/src/main/java/org/apache/sling/scripting/core/impl/ScriptingVariablesConsolePlugin.java
+++ 
b/src/main/java/org/apache/sling/scripting/core/impl/ScriptingVariablesConsolePlugin.java
@@ -61,9 +61,6 @@ public class ScriptingVariablesConsolePlugin extends 
AbstractWebConsolePlugin {
     @Reference
     private ScriptEngineManager scriptEngineManager;
 
-    public ScriptingVariablesConsolePlugin() {
-    }
-
     /**
      * Automatically called from
      * <a 
href="https://github.com/apache/felix/blob/4a60744d0f88f351551e4cb4673eb60b8fbd21d3/webconsole/src/main/java/org/apache/felix/webconsole/AbstractWebConsolePlugin.java#L510";>AbstractWebConsolePlugin#spoolResource</a>
diff --git 
a/src/main/java/org/apache/sling/scripting/core/impl/ServiceCache.java 
b/src/main/java/org/apache/sling/scripting/core/impl/ServiceCache.java
index d1e5062..235bbfe 100644
--- a/src/main/java/org/apache/sling/scripting/core/impl/ServiceCache.java
+++ b/src/main/java/org/apache/sling/scripting/core/impl/ServiceCache.java
@@ -71,10 +71,10 @@ public class ServiceCache implements ServiceListener {
      */
     @SuppressWarnings("unchecked")
     @Nullable
-    public <ServiceType> ServiceType getService(Class<ServiceType> type) {
+    public <T> T getService(Class<T> type) {
         SortedSet<Reference> references = getCachedReferences(type);
         for (Reference reference : references) {
-            ServiceType service = (ServiceType) reference.getService();
+            T service = (T) reference.getService();
             if (service != null) {
                 return service;
             }
@@ -84,22 +84,22 @@ public class ServiceCache implements ServiceListener {
 
     @SuppressWarnings("unchecked")
     @Nullable
-    public <ServiceType> ServiceType[] getServices(Class<ServiceType> type, 
String filter) {
-        List<ServiceType> result = new ArrayList<>();
+    public <T> T[] getServices(Class<T> type, String filter) {
+        List<T> result = new ArrayList<>();
         try {
             SortedSet<Reference> cachedReferences = getCachedReferences(type);
-            final Collection<ServiceReference<ServiceType>> filteredReferences 
= this.bundleContext.getServiceReferences(type, filter);
+            final Collection<ServiceReference<T>> filteredReferences = 
this.bundleContext.getServiceReferences(type, filter);
             if (!filteredReferences.isEmpty()) {
-                List<ServiceReference<ServiceType>> localFilteredReferences = 
new ArrayList<>(filteredReferences);
+                List<ServiceReference<T>> localFilteredReferences = new 
ArrayList<>(filteredReferences);
                 Collections.sort(localFilteredReferences);
                 // get the highest ranking first
                 Collections.reverse(localFilteredReferences);
-                for (ServiceReference<ServiceType> serviceReference : 
localFilteredReferences) {
+                for (ServiceReference<T> serviceReference : 
localFilteredReferences) {
                     Reference lookup = new Reference(serviceReference);
                     if (cachedReferences.contains(lookup)) {
                         for (Reference reference : cachedReferences) {
                             if 
(serviceReference.equals(reference.getServiceReference())) {
-                                ServiceType service = (ServiceType) 
reference.getService();
+                                T service = (T) reference.getService();
                                 if (service != null) {
                                     result.add(service);
                                 }
@@ -116,7 +116,7 @@ public class ServiceCache implements ServiceListener {
             LOGGER.error(String.format("Unable to retrieve the services of 
type %s.", type.getName()), e);
         }
         if (!result.isEmpty()) {
-            ServiceType[] srv = (ServiceType[]) Array.newInstance(type, 
result.size());
+            T[] srv = (T[]) Array.newInstance(type, result.size());
             return result.toArray(srv);
         }
         return null;
@@ -143,18 +143,18 @@ public class ServiceCache implements ServiceListener {
         }
     }
 
-    private <ServiceType> SortedSet<Reference> 
getCachedReferences(Class<ServiceType> type) {
+    private <T> SortedSet<Reference> getCachedReferences(Class<T> type) {
         String key = type.getName();
         SortedSet<Reference> references = cache.get(key);
         if (references == null) {
             references = new 
ConcurrentSkipListSet<>(Comparator.reverseOrder());
             try {
-                Collection<ServiceReference<ServiceType>> serviceReferences = 
this.bundleContext.getServiceReferences(type, null);
+                Collection<ServiceReference<T>> serviceReferences = 
this.bundleContext.getServiceReferences(type, null);
                 if (!serviceReferences.isEmpty()) {
-                    List<ServiceReference<ServiceType>> localReferences = new 
ArrayList<>(serviceReferences);
+                    List<ServiceReference<T>> localReferences = new 
ArrayList<>(serviceReferences);
                     Collections.sort(localReferences);
                     Collections.reverse(localReferences);
-                    for (ServiceReference<ServiceType> ref : localReferences) {
+                    for (ServiceReference<T> ref : localReferences) {
                         references.add(new Reference(ref));
                     }
                     synchronized (this) {
diff --git 
a/src/main/java/org/apache/sling/scripting/core/impl/SlingScriptAdapterFactory.java
 
b/src/main/java/org/apache/sling/scripting/core/impl/SlingScriptAdapterFactory.java
index c7bc766..edb1a66 100644
--- 
a/src/main/java/org/apache/sling/scripting/core/impl/SlingScriptAdapterFactory.java
+++ 
b/src/main/java/org/apache/sling/scripting/core/impl/SlingScriptAdapterFactory.java
@@ -31,8 +31,9 @@ import 
org.apache.sling.scripting.core.impl.jsr223.SlingScriptEngineManager;
 import org.jetbrains.annotations.NotNull;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.Constants;
-import org.osgi.service.component.ComponentContext;
+import org.osgi.service.component.annotations.Activate;
 import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Deactivate;
 import org.osgi.service.component.annotations.Reference;
 
 /**
@@ -87,7 +88,7 @@ public class SlingScriptAdapterFactory implements 
AdapterFactory, MimeTypeProvid
 
     @Override
     @SuppressWarnings("unchecked")
-    public <AdapterType> AdapterType getAdapter(@NotNull final Object 
adaptable, @NotNull final Class<AdapterType> type) {
+    public <A> A getAdapter(@NotNull final Object adaptable, @NotNull final 
Class<A> type) {
 
         final Resource resource = (Resource) adaptable;
         final String path = resource.getPath();
@@ -95,7 +96,7 @@ public class SlingScriptAdapterFactory implements 
AdapterFactory, MimeTypeProvid
 
         final List<ScriptEngine> engines = 
scriptEngineManager.getEnginesByExtension(extension);
         final ScriptEngine engine;
-        if (engines.size() == 0) {
+        if (engines.isEmpty()) {
             return null;
         } else if (engines.size() == 1) {
             engine = engines.get(0);
@@ -105,7 +106,7 @@ public class SlingScriptAdapterFactory implements 
AdapterFactory, MimeTypeProvid
         if (engine != null) {
             final Collection<BindingsValuesProvider> bindingsValuesProviders = 
bindingsValuesProviderTracker.getBindingsValuesProviders(engine.getFactory(), 
BINDINGS_CONTEXT);
             // unchecked cast
-            return (AdapterType) new DefaultSlingScript(this.bundleContext, 
resource, engine, bindingsValuesProviders, this.serviceCache, scriptCache);
+            return (A) new DefaultSlingScript(this.bundleContext, resource, 
engine, bindingsValuesProviders, this.serviceCache, scriptCache);
         }
 
         return null;
@@ -131,7 +132,7 @@ public class SlingScriptAdapterFactory implements 
AdapterFactory, MimeTypeProvid
         ScriptEngine se = scriptEngineManager.getEngineByExtension(name);
         if (se != null) {
             List<?> mimeTypes = se.getFactory().getMimeTypes();
-            if (mimeTypes != null && mimeTypes.size() > 0) {
+            if (mimeTypes != null && !mimeTypes.isEmpty()) {
                 return String.valueOf(mimeTypes.get(0));
             }
         }
@@ -153,7 +154,7 @@ public class SlingScriptAdapterFactory implements 
AdapterFactory, MimeTypeProvid
         ScriptEngine se = scriptEngineManager.getEngineByMimeType(mimeType);
         if (se != null) {
             List<?> extensions = se.getFactory().getExtensions();
-            if (extensions != null && extensions.size() > 0) {
+            if (extensions != null && !extensions.isEmpty()) {
                 return String.valueOf(extensions.get(0));
             }
         }
@@ -163,12 +164,14 @@ public class SlingScriptAdapterFactory implements 
AdapterFactory, MimeTypeProvid
 
     // ---------- SCR integration 
----------------------------------------------
 
-    protected void activate(ComponentContext context) {
-        bundleContext = context.getBundleContext();
+    @Activate
+    protected void activate(BundleContext bc) {
+        bundleContext = bc;
         this.serviceCache = new ServiceCache(this.bundleContext);
     }
 
-    protected void deactivate(ComponentContext context) {
+    @Deactivate
+    protected void deactivate() {
         this.serviceCache.dispose();
         this.serviceCache = null;
         this.bundleContext = null;
diff --git 
a/src/main/java/org/apache/sling/scripting/core/impl/SlingScriptEnginePicker.java
 
b/src/main/java/org/apache/sling/scripting/core/impl/SlingScriptEnginePicker.java
index 666189d..fd3cc4c 100644
--- 
a/src/main/java/org/apache/sling/scripting/core/impl/SlingScriptEnginePicker.java
+++ 
b/src/main/java/org/apache/sling/scripting/core/impl/SlingScriptEnginePicker.java
@@ -48,18 +48,15 @@ public class SlingScriptEnginePicker {
      * "html=Thymeleaf:3.0"
      * ]
      */
-    private static String SLING_SCRIPTING = "sling:scripting";
+    private static final String SLING_SCRIPTING = "sling:scripting";
 
     private final Logger logger = 
LoggerFactory.getLogger(SlingScriptEnginePicker.class);
 
-    public SlingScriptEnginePicker() {
-    }
-
     @Nullable ScriptEngine pickScriptEngine(@NotNull final List<ScriptEngine> 
scriptEngines, @NotNull Resource resource, @NotNull String extension) {
         final String scriptingMapping = findScriptingMapping(resource, 
extension);
         logger.debug("scripting mapping: {}", scriptingMapping);
         if (scriptingMapping == null || scriptingMapping.isEmpty()) {
-            return scriptEngines.size() > 0 ? scriptEngines.get(0) : null;
+            return !scriptEngines.isEmpty() ? scriptEngines.get(0) : null;
         }
 
         final Conditions conditions = parseScriptingMapping(scriptingMapping);
diff --git 
a/src/main/java/org/apache/sling/scripting/core/impl/bundled/BundledScriptContext.java
 
b/src/main/java/org/apache/sling/scripting/core/impl/bundled/BundledScriptContext.java
index 30d85be..b82a057 100644
--- 
a/src/main/java/org/apache/sling/scripting/core/impl/bundled/BundledScriptContext.java
+++ 
b/src/main/java/org/apache/sling/scripting/core/impl/bundled/BundledScriptContext.java
@@ -33,9 +33,14 @@ class BundledScriptContext extends SimpleScriptContext {
 
     private static final Integer[] SCOPES = {SlingScriptConstants.SLING_SCOPE, 
GLOBAL_SCOPE, ENGINE_SCOPE};
 
-    private Bindings globalScope = new LazyBindings();
-    private Bindings engineScope = new LazyBindings();
-    private Bindings slingScope = new LazyBindings();
+    private Bindings slingScope;
+
+    public BundledScriptContext() {
+        super();
+        globalScope = new LazyBindings();
+        engineScope = new LazyBindings();
+        slingScope = new LazyBindings();
+    }
 
     @Override
     public void setBindings(final Bindings bindings, final int scope) {
@@ -66,8 +71,9 @@ class BundledScriptContext extends SimpleScriptContext {
                 return this.engineScope;
             case 200:
                 return this.globalScope;
+            default:
+                throw new IllegalArgumentException("Invalid scope.");
         }
-        throw new IllegalArgumentException("Invalid scope.");
     }
 
     @Override
diff --git 
a/src/main/java/org/apache/sling/scripting/core/impl/bundled/LogWriter.java 
b/src/main/java/org/apache/sling/scripting/core/impl/bundled/LogWriter.java
index a55b450..c43bc07 100644
--- a/src/main/java/org/apache/sling/scripting/core/impl/bundled/LogWriter.java
+++ b/src/main/java/org/apache/sling/scripting/core/impl/bundled/LogWriter.java
@@ -27,13 +27,13 @@ class LogWriter extends Writer {
     /**
      * The logger to which the error messages are written
      */
-    final private Logger logger;
+    private final Logger logger;
 
     /**
      * The internal buffer to gather message data until being flushed or a CR 
or
      * LF is encountered in the message data.
      */
-    final private StringBuilder lineBuffer;
+    private final StringBuilder lineBuffer;
 
     /**
      * Creates a writer based on the given logger.
diff --git 
a/src/main/java/org/apache/sling/scripting/core/impl/bundled/Script.java 
b/src/main/java/org/apache/sling/scripting/core/impl/bundled/Script.java
index f46a77e..4de7150 100644
--- a/src/main/java/org/apache/sling/scripting/core/impl/bundled/Script.java
+++ b/src/main/java/org/apache/sling/scripting/core/impl/bundled/Script.java
@@ -22,6 +22,7 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.io.StringReader;
 import java.net.URL;
+import java.nio.charset.Charset;
 import java.nio.charset.StandardCharsets;
 import java.util.Set;
 import java.util.concurrent.locks.Lock;
@@ -80,7 +81,7 @@ class Script extends AbstractBundledRenderUnit {
     @Override
     public InputStream getInputStream() {
         try {
-            return IOUtils.toInputStream(getSourceCode());
+            return IOUtils.toInputStream(getSourceCode(), 
Charset.defaultCharset());
         }
         catch (IOException e) {
             return null;
diff --git 
a/src/main/java/org/apache/sling/scripting/core/impl/bundled/ScriptContextProvider.java
 
b/src/main/java/org/apache/sling/scripting/core/impl/bundled/ScriptContextProvider.java
index 02056f7..6855976 100644
--- 
a/src/main/java/org/apache/sling/scripting/core/impl/bundled/ScriptContextProvider.java
+++ 
b/src/main/java/org/apache/sling/scripting/core/impl/bundled/ScriptContextProvider.java
@@ -114,7 +114,7 @@ public class ScriptContextProvider {
         bindings.put(SlingBindings.SLING, scriptHelper);
         bindings.put(BundledRenderUnit.VARIABLE, executable);
         bindings.put(ScriptEngine.FILENAME, executable.getPath());
-        bindings.put(ScriptEngine.FILENAME.replaceAll("\\.", "_"), 
executable.getPath());
+        bindings.put(ScriptEngine.FILENAME.replace(".", "_"), 
executable.getPath());
 
         ProtectedBindings protectedBindings = new ProtectedBindings(bindings, 
PROTECTED_BINDINGS);
         long inclusionStart = System.nanoTime();
@@ -131,8 +131,10 @@ public class ScriptContextProvider {
                     
request.getRequestProgressTracker().log(String.format(BINDINGS_THRESHOLD_MESSAGE,
 bindingsValuesProvider.getClass().getName(),
                             (stop-start)/1000, WARN_LIMIT_FOR_BVP_NANOS/1000));
                 } else {
-                    LOG.info(String.format(BINDINGS_THRESHOLD_MESSAGE, 
bindingsValuesProvider.getClass().getName(), (stop-start)/1000,
-                            WARN_LIMIT_FOR_BVP_NANOS/1000));
+                    if (LOG.isInfoEnabled()) {
+                        LOG.info(String.format(BINDINGS_THRESHOLD_MESSAGE, 
bindingsValuesProvider.getClass().getName(), (stop-start)/1000,
+                                WARN_LIMIT_FOR_BVP_NANOS/1000));
+                    }
                 }
             }
         }
diff --git 
a/src/main/java/org/apache/sling/scripting/core/impl/helper/CachingMap.java 
b/src/main/java/org/apache/sling/scripting/core/impl/helper/CachingMap.java
index be5e973..f3cb326 100644
--- a/src/main/java/org/apache/sling/scripting/core/impl/helper/CachingMap.java
+++ b/src/main/java/org/apache/sling/scripting/core/impl/helper/CachingMap.java
@@ -36,6 +36,8 @@ import java.util.Map;
  */
 public class CachingMap<T> extends LinkedHashMap<String, SoftReference<T>> {
 
+    private static final long serialVersionUID = -3392702301736494889L;
+
     private int capacity;
 
     /**
@@ -51,4 +53,25 @@ public class CachingMap<T> extends LinkedHashMap<String, 
SoftReference<T>> {
     protected boolean removeEldestEntry(Map.Entry<String, SoftReference<T>> 
eldest) {
         return size() > capacity;
     }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = super.hashCode();
+        result = prime * result + capacity;
+        return result;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj)
+            return true;
+        if (!super.equals(obj))
+            return false;
+        if (getClass() != obj.getClass())
+            return false;
+        CachingMap<?> other = (CachingMap<?>) obj;
+        return capacity != other.capacity;
+    }
+
 }
diff --git 
a/src/main/java/org/apache/sling/scripting/core/impl/helper/OnDemandReader.java 
b/src/main/java/org/apache/sling/scripting/core/impl/helper/OnDemandReader.java
index d3384c6..e089e05 100644
--- 
a/src/main/java/org/apache/sling/scripting/core/impl/helper/OnDemandReader.java
+++ 
b/src/main/java/org/apache/sling/scripting/core/impl/helper/OnDemandReader.java
@@ -48,7 +48,7 @@ class OnDemandReader extends Reader {
 
     @Override
     public boolean markSupported() {
-        return (delegatee != null) ? delegatee.markSupported() : false;
+        return delegatee != null && delegatee.markSupported();
     }
 
     @Override
diff --git 
a/src/main/java/org/apache/sling/scripting/core/impl/helper/ProtectedBindings.java
 
b/src/main/java/org/apache/sling/scripting/core/impl/helper/ProtectedBindings.java
index c117b37..a2f8790 100644
--- 
a/src/main/java/org/apache/sling/scripting/core/impl/helper/ProtectedBindings.java
+++ 
b/src/main/java/org/apache/sling/scripting/core/impl/helper/ProtectedBindings.java
@@ -30,6 +30,8 @@ import org.jetbrains.annotations.NotNull;
 
 public class ProtectedBindings extends LazyBindings implements Bindings {
 
+    private static final long serialVersionUID = -5988579857015221345L;
+
     private final Bindings wrapped;
     private final Set<String> protectedKeys;
 
@@ -43,6 +45,7 @@ public class ProtectedBindings extends LazyBindings 
implements Bindings {
      *
      * @throws IllegalArgumentException if the key is protected
      */
+    @Override
     public Object put(String key, Object value) {
         if (protectedKeys.contains(key)) {
             throw new IllegalArgumentException(String.format("Key %s is 
protected.", key));
@@ -53,10 +56,13 @@ public class ProtectedBindings extends LazyBindings 
implements Bindings {
     /**
      * {@inheritDoc}
      */
+    @SuppressWarnings("java:S4968") // can't fix, so stop warning about it
+    @Override
     public void putAll(Map<? extends String, ? extends Object> toMerge) {
-        for (String key : toMerge.keySet()) {
+        for (Entry<? extends String, ? extends Object> entry : 
toMerge.entrySet()) {
+            String key = entry.getKey();
             if (!protectedKeys.contains(key)) {
-                wrapped.put(key, toMerge.get(key));
+                wrapped.put(key, entry.getValue());
             }
         }
     }
@@ -66,6 +72,7 @@ public class ProtectedBindings extends LazyBindings 
implements Bindings {
      *
      * @throws IllegalArgumentException if the key is protected
      */
+    @Override
     public Object remove(Object key) {
         if (protectedKeys.contains(key)) {
             throw new IllegalArgumentException(String.format("Key %s is 
protected.", key));
@@ -76,6 +83,7 @@ public class ProtectedBindings extends LazyBindings 
implements Bindings {
     /**
      * The clear operation is not supported.
      */
+    @Override
     public void clear() {
         throw new UnsupportedOperationException("ProtectedBindings does not 
support clear()");
     }
@@ -83,6 +91,7 @@ public class ProtectedBindings extends LazyBindings 
implements Bindings {
     /**
      * {@inheritDoc}
      */
+    @Override
     public boolean containsValue(Object value) {
         return wrapped.containsValue(value);
     }
@@ -93,6 +102,7 @@ public class ProtectedBindings extends LazyBindings 
implements Bindings {
      *
      * @return an unmodifiable Set view of the map
      */
+    @Override
     @NotNull
     public Set<Entry<String, Object>> entrySet() {
         return Collections.unmodifiableSet(wrapped.entrySet());
@@ -101,6 +111,7 @@ public class ProtectedBindings extends LazyBindings 
implements Bindings {
     /**
      * {@inheritDoc}
      */
+    @Override
     public boolean isEmpty() {
         return wrapped.isEmpty();
     }
@@ -111,6 +122,7 @@ public class ProtectedBindings extends LazyBindings 
implements Bindings {
      *
      * @return an unmodifiable Set view of the map's keys
      */
+    @Override
     @NotNull
     public Set<String> keySet() {
         return Collections.unmodifiableSet(wrapped.keySet());
@@ -119,6 +131,7 @@ public class ProtectedBindings extends LazyBindings 
implements Bindings {
     /**
      * {@inheritDoc}
      */
+    @Override
     public int size() {
         return wrapped.size();
     }
@@ -129,6 +142,7 @@ public class ProtectedBindings extends LazyBindings 
implements Bindings {
      *
      * @return an unmodifiable Collection view of the map's values
      */
+    @Override
     @NotNull
     public Collection<Object> values() {
         return Collections.unmodifiableCollection(wrapped.values());
@@ -137,6 +151,7 @@ public class ProtectedBindings extends LazyBindings 
implements Bindings {
     /**
      * {@inheritDoc}
      */
+    @Override
     public boolean containsKey(Object key) {
         return wrapped.containsKey(key);
     }
@@ -144,8 +159,40 @@ public class ProtectedBindings extends LazyBindings 
implements Bindings {
     /**
      * {@inheritDoc}
      */
+    @Override
     public Object get(Object key) {
         return wrapped.get(key);
     }
 
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = super.hashCode();
+        result = prime * result + ((protectedKeys == null) ? 0 : 
protectedKeys.hashCode());
+        result = prime * result + ((wrapped == null) ? 0 : wrapped.hashCode());
+        return result;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj)
+            return true;
+        if (!super.equals(obj))
+            return false;
+        if (getClass() != obj.getClass())
+            return false;
+        ProtectedBindings other = (ProtectedBindings) obj;
+        if (protectedKeys == null) {
+            if (other.protectedKeys != null)
+                return false;
+        } else if (!protectedKeys.equals(other.protectedKeys))
+            return false;
+        if (wrapped == null) {
+            if (other.wrapped != null)
+                return false;
+        } else if (!wrapped.equals(other.wrapped))
+            return false;
+        return true;
+    }
+
 }
diff --git 
a/src/main/java/org/apache/sling/scripting/core/impl/jsr223/SlingScriptEngineManager.java
 
b/src/main/java/org/apache/sling/scripting/core/impl/jsr223/SlingScriptEngineManager.java
index 63db942..5939a15 100644
--- 
a/src/main/java/org/apache/sling/scripting/core/impl/jsr223/SlingScriptEngineManager.java
+++ 
b/src/main/java/org/apache/sling/scripting/core/impl/jsr223/SlingScriptEngineManager.java
@@ -504,7 +504,7 @@ public class SlingScriptEngineManager extends 
ScriptEngineManager implements Bun
 
     private void postEvent(final String topic, final ScriptEngineFactory 
scriptEngineFactory) {
         if (eventAdmin != null) {
-            final Dictionary<String, Object> props = new Hashtable<>();
+            final Dictionary<String, Object> props = new Hashtable<>(); // 
NOSONAR
             
props.put(SlingScriptConstants.PROPERTY_SCRIPT_ENGINE_FACTORY_NAME, 
scriptEngineFactory.getEngineName());
             
props.put(SlingScriptConstants.PROPERTY_SCRIPT_ENGINE_FACTORY_VERSION, 
scriptEngineFactory.getEngineVersion());
             
props.put(SlingScriptConstants.PROPERTY_SCRIPT_ENGINE_FACTORY_EXTENSIONS, 
scriptEngineFactory.getExtensions().toArray(new String[0]));
diff --git 
a/src/main/java/org/apache/sling/scripting/core/impl/jsr223/SortableScriptEngineFactory.java
 
b/src/main/java/org/apache/sling/scripting/core/impl/jsr223/SortableScriptEngineFactory.java
index 30a70bc..040d8fb 100644
--- 
a/src/main/java/org/apache/sling/scripting/core/impl/jsr223/SortableScriptEngineFactory.java
+++ 
b/src/main/java/org/apache/sling/scripting/core/impl/jsr223/SortableScriptEngineFactory.java
@@ -27,7 +27,7 @@ import javax.script.ScriptEngineFactory;
 import org.jetbrains.annotations.NotNull;
 import org.jetbrains.annotations.Nullable;
 
-public class SortableScriptEngineFactory implements ScriptEngineFactory, 
Comparable {
+public class SortableScriptEngineFactory implements ScriptEngineFactory, 
Comparable<SortableScriptEngineFactory> {
 
     private final ScriptEngineFactory delegate;
     private final int serviceRanking;
@@ -129,8 +129,7 @@ public class SortableScriptEngineFactory implements 
ScriptEngineFactory, Compara
     }
 
     @Override
-    public int compareTo(@NotNull Object o) {
-        SortableScriptEngineFactory other = (SortableScriptEngineFactory) o;
+    public int compareTo(SortableScriptEngineFactory other) {
         if (equals(other)) {
             return 0;
         }
diff --git 
a/src/test/java/org/apache/sling/scripting/core/impl/LogWriterTest.java 
b/src/test/java/org/apache/sling/scripting/core/impl/LogWriterTest.java
index 812611e..a638c24 100644
--- a/src/test/java/org/apache/sling/scripting/core/impl/LogWriterTest.java
+++ b/src/test/java/org/apache/sling/scripting/core/impl/LogWriterTest.java
@@ -20,205 +20,204 @@ package org.apache.sling.scripting.core.impl;
 
 import java.io.IOException;
 
-import junit.framework.TestCase;
-
-import org.apache.sling.scripting.core.impl.LogWriter;
 import org.slf4j.Logger;
 import org.slf4j.Marker;
 
+import junit.framework.TestCase;
+
 public class LogWriterTest extends TestCase {
 
     public void testCharacter() {
         MockLogger logger = new MockLogger();
-        LogWriter logWriter = new LogWriter(logger);
-
-        // ensure logger is empty
-        logger.getLastMessage();
+        try(LogWriter logWriter = new LogWriter(logger)) {
+            // ensure logger is empty
+            logger.getLastMessage();
 
-        // empty flush
-        logWriter.flush();
-        String msg = logger.getLastMessage();
-        assertNull(msg);
+            // empty flush
+            logWriter.flush();
+            String msg = logger.getLastMessage();
+            assertNull(msg);
 
-        // write a single character, message only after flush
-        logWriter.write('a');
-        assertNull(logger.getLastMessage());
-        logWriter.flush();
-        msg = logger.getLastMessage();
-        assertNotNull(msg);
-        assertEquals("a", msg);
+            // write a single character, message only after flush
+            logWriter.write('a');
+            assertNull(logger.getLastMessage());
+            logWriter.flush();
+            msg = logger.getLastMessage();
+            assertNotNull(msg);
+            assertEquals("a", msg);
 
-        // write a single CR, no message
-        logWriter.write('\r');
-        assertNull(logger.getLastMessage());
+            // write a single CR, no message
+            logWriter.write('\r');
+            assertNull(logger.getLastMessage());
 
-        // write a single LF, no message
-        logWriter.write('\n');
-        assertNull(logger.getLastMessage());
+            // write a single LF, no message
+            logWriter.write('\n');
+            assertNull(logger.getLastMessage());
 
-        // write three characters (one is CR)
-        logWriter.write('a');
-        logWriter.write('\r');
-        logWriter.write('b');
+            // write three characters (one is CR)
+            logWriter.write('a');
+            logWriter.write('\r');
+            logWriter.write('b');
 
-        msg = logger.getLastMessage();
-        assertNotNull(msg);
-        assertEquals("a", msg);
+            msg = logger.getLastMessage();
+            assertNotNull(msg);
+            assertEquals("a", msg);
 
-        logWriter.flush();
+            logWriter.flush();
 
-        msg = logger.getLastMessage();
-        assertNotNull(msg);
-        assertEquals("b", msg);
+            msg = logger.getLastMessage();
+            assertNotNull(msg);
+            assertEquals("b", msg);
 
-        // write three characters (one is LF)
-        logWriter.write('a');
-        logWriter.write('\n');
-        logWriter.write('b');
+            // write three characters (one is LF)
+            logWriter.write('a');
+            logWriter.write('\n');
+            logWriter.write('b');
 
-        msg = logger.getLastMessage();
-        assertNotNull(msg);
-        assertEquals("a", msg);
+            msg = logger.getLastMessage();
+            assertNotNull(msg);
+            assertEquals("a", msg);
 
-        logWriter.flush();
+            logWriter.flush();
 
-        msg = logger.getLastMessage();
-        assertNotNull(msg);
-        assertEquals("b", msg);
+            msg = logger.getLastMessage();
+            assertNotNull(msg);
+            assertEquals("b", msg);
+        }
     }
 
     public void testStringCR() throws IOException {
         MockLogger logger = new MockLogger();
-        LogWriter logWriter = new LogWriter(logger);
-        
-        // ensure logger is empty
-        logger.getLastMessage();
-        
-        // empty flush
-        logWriter.flush();
-        String msg = logger.getLastMessage();
-        assertNull(msg);
-        
-        // intermediate CR
-        String tMsg1 = "Ein";
-        String tMsg2 = "Text";
-        String tMsg = tMsg1 + "\r" + tMsg2;
-        logWriter.write(tMsg);
-        msg = logger.getLastMessage();
-        assertNotNull(msg);
-        assertEquals(tMsg1, msg);
-        
-        logWriter.flush();
-        msg = logger.getLastMessage();
-        assertNotNull(msg);
-        assertEquals(tMsg2, msg);
-        
-        // initial CR
-        tMsg = "\r" + tMsg1 + tMsg2;
-        logWriter.write(tMsg);
-        msg = logger.getLastMessage();
-        assertNull(msg);
-        
-        logWriter.flush();
-        msg = logger.getLastMessage();
-        assertNotNull(msg);
-        assertEquals(tMsg1 + tMsg2, msg);
-        
-        // terminating CR
-        tMsg = tMsg1 + tMsg2 + "\r";
-        logWriter.write(tMsg);
-        msg = logger.getLastMessage();
-        assertNotNull(msg);
-        assertEquals(tMsg1+tMsg2, msg);
-        
-        logWriter.flush();
-        msg = logger.getLastMessage();
-        assertNull(msg);
+        try (LogWriter logWriter = new LogWriter(logger)) {
+            // ensure logger is empty
+            logger.getLastMessage();
+            
+            // empty flush
+            logWriter.flush();
+            String msg = logger.getLastMessage();
+            assertNull(msg);
+            
+            // intermediate CR
+            String tMsg1 = "Ein";
+            String tMsg2 = "Text";
+            String tMsg = tMsg1 + "\r" + tMsg2;
+            logWriter.write(tMsg);
+            msg = logger.getLastMessage();
+            assertNotNull(msg);
+            assertEquals(tMsg1, msg);
+            
+            logWriter.flush();
+            msg = logger.getLastMessage();
+            assertNotNull(msg);
+            assertEquals(tMsg2, msg);
+            
+            // initial CR
+            tMsg = "\r" + tMsg1 + tMsg2;
+            logWriter.write(tMsg);
+            msg = logger.getLastMessage();
+            assertNull(msg);
+            
+            logWriter.flush();
+            msg = logger.getLastMessage();
+            assertNotNull(msg);
+            assertEquals(tMsg1 + tMsg2, msg);
+            
+            // terminating CR
+            tMsg = tMsg1 + tMsg2 + "\r";
+            logWriter.write(tMsg);
+            msg = logger.getLastMessage();
+            assertNotNull(msg);
+            assertEquals(tMsg1+tMsg2, msg);
+            
+            logWriter.flush();
+            msg = logger.getLastMessage();
+            assertNull(msg);
+        }
     }
-    
+
     public void testStringLF() throws IOException {
         MockLogger logger = new MockLogger();
-        LogWriter logWriter = new LogWriter(logger);
-
-        // ensure logger is empty
-        logger.getLastMessage();
-
-        // empty flush
-        logWriter.flush();
-        String msg = logger.getLastMessage();
-        assertNull(msg);
-
-        // intermediate LF
-        String tMsg1 = "Ein";
-        String tMsg2 = "Text";
-        String tMsg = tMsg1 + "\n" + tMsg2;
-        logWriter.write(tMsg);
-        msg = logger.getLastMessage();
-        assertNotNull(msg);
-        assertEquals(tMsg1, msg);
-
-        logWriter.flush();
-        msg = logger.getLastMessage();
-        assertNotNull(msg);
-        assertEquals(tMsg2, msg);
-
-        // initial LF
-        tMsg = "\n" + tMsg1 + tMsg2;
-        logWriter.write(tMsg);
-        msg = logger.getLastMessage();
-        assertNull(msg);
-
-        logWriter.flush();
-        msg = logger.getLastMessage();
-        assertNotNull(msg);
-        assertEquals(tMsg1 + tMsg2, msg);
-
-        // terminating LF
-        tMsg = tMsg1 + tMsg2 + "\n";
-        logWriter.write(tMsg);
-        msg = logger.getLastMessage();
-        assertNotNull(msg);
-        assertEquals(tMsg1+tMsg2, msg);
-
-        logWriter.flush();
-        msg = logger.getLastMessage();
-        assertNull(msg);
+        try (LogWriter logWriter = new LogWriter(logger)) {
+            // ensure logger is empty
+            logger.getLastMessage();
+
+            // empty flush
+            logWriter.flush();
+            String msg = logger.getLastMessage();
+            assertNull(msg);
+
+            // intermediate LF
+            String tMsg1 = "Ein";
+            String tMsg2 = "Text";
+            String tMsg = tMsg1 + "\n" + tMsg2;
+            logWriter.write(tMsg);
+            msg = logger.getLastMessage();
+            assertNotNull(msg);
+            assertEquals(tMsg1, msg);
+
+            logWriter.flush();
+            msg = logger.getLastMessage();
+            assertNotNull(msg);
+            assertEquals(tMsg2, msg);
+
+            // initial LF
+            tMsg = "\n" + tMsg1 + tMsg2;
+            logWriter.write(tMsg);
+            msg = logger.getLastMessage();
+            assertNull(msg);
+
+            logWriter.flush();
+            msg = logger.getLastMessage();
+            assertNotNull(msg);
+            assertEquals(tMsg1 + tMsg2, msg);
+
+            // terminating LF
+            tMsg = tMsg1 + tMsg2 + "\n";
+            logWriter.write(tMsg);
+            msg = logger.getLastMessage();
+            assertNotNull(msg);
+            assertEquals(tMsg1+tMsg2, msg);
+
+            logWriter.flush();
+            msg = logger.getLastMessage();
+            assertNull(msg);
+        }
     }
 
     public void testString() throws IOException {
         MockLogger logger = new MockLogger();
-        LogWriter logWriter = new LogWriter(logger);
-
-        // ensure logger is empty
-        logger.getLastMessage();
-
-        // empty flush
-        logWriter.flush();
-        String msg = logger.getLastMessage();
-        assertNull(msg);
-
-        // flushed line
-        String tMsg = "Ein Text";
-        logWriter.write(tMsg);
-        msg = logger.getLastMessage();
-        assertNull(msg);
-
-        logWriter.flush();
-        msg = logger.getLastMessage();
-        assertNotNull(msg);
-        assertEquals(tMsg, msg);
-
-        // CR terminated line
-        logWriter.write(tMsg + "\r");
-        msg = logger.getLastMessage();
-        assertNotNull(msg);
-        assertEquals(tMsg, msg);
-
-        // LF terminated line
-        logWriter.write(tMsg + "\n");
-        msg = logger.getLastMessage();
-        assertNotNull(msg);
-        assertEquals(tMsg, msg);
+        try (LogWriter logWriter = new LogWriter(logger)) {
+            // ensure logger is empty
+            logger.getLastMessage();
+
+            // empty flush
+            logWriter.flush();
+            String msg = logger.getLastMessage();
+            assertNull(msg);
+
+            // flushed line
+            String tMsg = "Ein Text";
+            logWriter.write(tMsg);
+            msg = logger.getLastMessage();
+            assertNull(msg);
+
+            logWriter.flush();
+            msg = logger.getLastMessage();
+            assertNotNull(msg);
+            assertEquals(tMsg, msg);
+
+            // CR terminated line
+            logWriter.write(tMsg + "\r");
+            msg = logger.getLastMessage();
+            assertNotNull(msg);
+            assertEquals(tMsg, msg);
+
+            // LF terminated line
+            logWriter.write(tMsg + "\n");
+            msg = logger.getLastMessage();
+            assertNotNull(msg);
+            assertEquals(tMsg, msg);
+        }
     }
 
     private static class MockLogger implements Logger {
@@ -239,7 +238,7 @@ public class LogWriterTest extends TestCase {
             fail("Unexpected call");
         }
 
-        public void debug(String format, Object[] argArray) {
+        public void debug(String format, Object... argArray) {
             fail("Unexpected call");
         }
 
@@ -259,7 +258,7 @@ public class LogWriterTest extends TestCase {
             fail("Unexpected call");
         }
 
-        public void debug(Marker marker, String format, Object[] argArray) {
+        public void debug(Marker marker, String format, Object... argArray) {
             fail("Unexpected call");
         }
 
@@ -279,7 +278,7 @@ public class LogWriterTest extends TestCase {
             fail("Unexpected call");
         }
 
-        public void error(String format, Object[] argArray) {
+        public void error(String format, Object... argArray) {
             fail("Unexpected call");
         }
 
@@ -299,7 +298,7 @@ public class LogWriterTest extends TestCase {
             fail("Unexpected call");
         }
 
-        public void error(Marker marker, String format, Object[] argArray) {
+        public void error(Marker marker, String format, Object... argArray) {
             fail("Unexpected call");
         }
 
@@ -323,7 +322,7 @@ public class LogWriterTest extends TestCase {
             fail("Unexpected call");
         }
 
-        public void info(String format, Object[] argArray) {
+        public void info(String format, Object... argArray) {
             fail("Unexpected call");
         }
 
@@ -343,7 +342,7 @@ public class LogWriterTest extends TestCase {
             fail("Unexpected call");
         }
 
-        public void info(Marker marker, String format, Object[] argArray) {
+        public void info(Marker marker, String format, Object... argArray) {
             fail("Unexpected call");
         }
 
@@ -403,7 +402,7 @@ public class LogWriterTest extends TestCase {
             fail("Unexpected call");
         }
 
-        public void trace(String format, Object[] argArray) {
+        public void trace(String format, Object... argArray) {
             fail("Unexpected call");
         }
 
@@ -423,7 +422,7 @@ public class LogWriterTest extends TestCase {
             fail("Unexpected call");
         }
 
-        public void trace(Marker marker, String format, Object[] argArray) {
+        public void trace(Marker marker, String format, Object... argArray) {
             fail("Unexpected call");
         }
 
@@ -443,7 +442,7 @@ public class LogWriterTest extends TestCase {
             fail("Unexpected call");
         }
 
-        public void warn(String format, Object[] argArray) {
+        public void warn(String format, Object... argArray) {
             fail("Unexpected call");
         }
 
@@ -463,7 +462,7 @@ public class LogWriterTest extends TestCase {
             fail("Unexpected call");
         }
 
-        public void warn(Marker marker, String format, Object[] argArray) {
+        public void warn(Marker marker, String format, Object... argArray) {
             fail("Unexpected call");
         }
 
diff --git 
a/src/test/java/org/apache/sling/scripting/core/impl/ScriptingResourceResolverTest.java
 
b/src/test/java/org/apache/sling/scripting/core/impl/ScriptingResourceResolverTest.java
index c764703..45ab297 100644
--- 
a/src/test/java/org/apache/sling/scripting/core/impl/ScriptingResourceResolverTest.java
+++ 
b/src/test/java/org/apache/sling/scripting/core/impl/ScriptingResourceResolverTest.java
@@ -16,19 +16,21 @@
  
******************************************************************************/
 package org.apache.sling.scripting.core.impl;
 
+import static org.junit.Assert.assertArrayEquals;
+import static org.junit.Assert.assertTrue;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
 import java.util.Map;
 
 import org.apache.sling.api.resource.LoginException;
 import org.apache.sling.api.resource.ResourceResolver;
 import org.junit.Before;
-import org.junit.BeforeClass;
 import org.junit.Test;
 
-import static org.junit.Assert.assertArrayEquals;
-import static org.junit.Assert.assertTrue;
-import static org.mockito.Mockito.*;
-
-@SuppressWarnings({"unchecked", "deprecation"})
+@SuppressWarnings({"unchecked"})
 public class ScriptingResourceResolverTest {
 
     private ScriptingResourceResolver scriptingResourceResolver;
diff --git 
a/src/test/java/org/apache/sling/scripting/core/impl/ServiceCacheTest.java 
b/src/test/java/org/apache/sling/scripting/core/impl/ServiceCacheTest.java
index ccbb6c0..90144e6 100644
--- a/src/test/java/org/apache/sling/scripting/core/impl/ServiceCacheTest.java
+++ b/src/test/java/org/apache/sling/scripting/core/impl/ServiceCacheTest.java
@@ -18,21 +18,19 @@
  
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
 package org.apache.sling.scripting.core.impl;
 
+import static org.junit.Assert.assertArrayEquals;
+import static org.junit.Assert.assertEquals;
+
 import java.util.Dictionary;
 import java.util.Hashtable;
 
 import org.apache.sling.testing.mock.osgi.junit.OsgiContext;
-import org.apache.sling.testing.mock.sling.junit.SlingContext;
 import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.Constants;
 
-import static org.junit.Assert.assertArrayEquals;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-
 public class ServiceCacheTest {
 
     @Rule
@@ -94,6 +92,7 @@ public class ServiceCacheTest {
     }
 
     private static final class TestService {
+        @SuppressWarnings("unused")
         private final String service;
 
         public TestService(String service) {
diff --git 
a/src/test/java/org/apache/sling/scripting/core/impl/bundled/AbstractBundledRenderUnitTest.java
 
b/src/test/java/org/apache/sling/scripting/core/impl/bundled/AbstractBundledRenderUnitTest.java
index 2c3aca2..7ba5923 100644
--- 
a/src/test/java/org/apache/sling/scripting/core/impl/bundled/AbstractBundledRenderUnitTest.java
+++ 
b/src/test/java/org/apache/sling/scripting/core/impl/bundled/AbstractBundledRenderUnitTest.java
@@ -61,7 +61,6 @@ public class AbstractBundledRenderUnitTest {
         serviceCache = new ServiceCache(bundleContext);
     }
 
-    @SuppressWarnings({ "unchecked", "rawtypes" })
     @Test
     public void testGetService() throws Exception {
         Object fooBarSvc = new Object();
diff --git 
a/src/test/java/org/apache/sling/scripting/core/impl/bundled/BundledScriptContextTest.java
 
b/src/test/java/org/apache/sling/scripting/core/impl/bundled/BundledScriptContextTest.java
index 342c385..41f7883 100644
--- 
a/src/test/java/org/apache/sling/scripting/core/impl/bundled/BundledScriptContextTest.java
+++ 
b/src/test/java/org/apache/sling/scripting/core/impl/bundled/BundledScriptContextTest.java
@@ -18,19 +18,18 @@
  
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
 package org.apache.sling.scripting.core.impl.bundled;
 
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+
 import javax.script.Bindings;
 import javax.script.ScriptContext;
 import javax.script.SimpleBindings;
 
 import org.apache.sling.api.scripting.SlingScriptConstants;
-import org.apache.sling.scripting.core.impl.bundled.BundledScriptContext;
 import org.junit.Test;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
-
 public class BundledScriptContextTest {
 
     @Test
diff --git 
a/src/test/java/org/apache/sling/scripting/core/impl/bundled/LogWriterTest.java 
b/src/test/java/org/apache/sling/scripting/core/impl/bundled/LogWriterTest.java
index 850a0e0..6dbc3a1 100644
--- 
a/src/test/java/org/apache/sling/scripting/core/impl/bundled/LogWriterTest.java
+++ 
b/src/test/java/org/apache/sling/scripting/core/impl/bundled/LogWriterTest.java
@@ -18,14 +18,13 @@
  
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
 package org.apache.sling.scripting.core.impl.bundled;
 
-import org.apache.sling.scripting.core.impl.bundled.LogWriter;
-import org.junit.Test;
-import org.slf4j.Logger;
-
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.verifyNoMoreInteractions;
 
+import org.junit.Test;
+import org.slf4j.Logger;
+
 public class LogWriterTest {
 
     @Test
diff --git 
a/src/test/java/org/apache/sling/scripting/core/impl/helper/ProtectedBindingsTest.java
 
b/src/test/java/org/apache/sling/scripting/core/impl/helper/ProtectedBindingsTest.java
index aeccaef..e8b2a06 100644
--- 
a/src/test/java/org/apache/sling/scripting/core/impl/helper/ProtectedBindingsTest.java
+++ 
b/src/test/java/org/apache/sling/scripting/core/impl/helper/ProtectedBindingsTest.java
@@ -24,6 +24,8 @@ import javax.script.SimpleBindings;
 
 import org.junit.Before;
 import org.junit.Test;
+import org.junit.Test.None;
+
 import static org.junit.Assert.*;
 
 
@@ -52,12 +54,12 @@ public class ProtectedBindingsTest {
         bindings.remove("test1");
     }
 
-    @Test
+    @Test(expected=None.class)
     public void testAddingAllowed() {
         bindings.put("test2", "value2");
     }
 
-    @Test
+    @Test(expected=None.class)
     public void testOverwriteNonProtectedAllowed() {
         bindings.put("test2", "value2");
         bindings.put("test2", "value3");
diff --git 
a/src/test/java/org/apache/sling/scripting/core/impl/jsr223/SlingScriptEngineManagerTest.java
 
b/src/test/java/org/apache/sling/scripting/core/impl/jsr223/SlingScriptEngineManagerTest.java
index 761a114..2e4b961 100644
--- 
a/src/test/java/org/apache/sling/scripting/core/impl/jsr223/SlingScriptEngineManagerTest.java
+++ 
b/src/test/java/org/apache/sling/scripting/core/impl/jsr223/SlingScriptEngineManagerTest.java
@@ -87,7 +87,9 @@ public class SlingScriptEngineManagerTest {
                 (latch, 
"org/apache/sling/scripting/core/impl/jsr223/SlingScriptEngineManager/UPDATED");
         context.registerService(
                 EventHandler.class, eventHandler,
-                new HashMap<String, Object>() {{
+                new HashMap<String, Object>() {
+                    private static final long serialVersionUID = 
-826334194042415106L;
+                {
                     put(EventConstants.EVENT_TOPIC, 
"org/apache/sling/scripting/core/impl/jsr223/SlingScriptEngineManager/*");
                 }}
         );
@@ -98,11 +100,15 @@ public class SlingScriptEngineManagerTest {
                 .singletonList("f2/text"));
 
         ServiceRegistration<ScriptEngineFactory> f1SR = 
context.bundleContext().registerService(ScriptEngineFactory.class, f1, new
-                Hashtable<String, Object>() {{
+                Hashtable<String, Object>() {
+                    private static final long serialVersionUID = 
3476669145432094983L;
+                {
                     put(Constants.SERVICE_RANKING, 2);
                 }});
         context.bundleContext().registerService(ScriptEngineFactory.class, f2, 
new
-                Hashtable<String, Object>() {{
+                Hashtable<String, Object>() {
+                    private static final long serialVersionUID = 
625624336896085659L;
+                {
                     put(Constants.SERVICE_RANKING, 1);
                 }});
 
diff --git 
a/src/test/java/org/apache/sling/scripting/core/it/BindingsValuesProvidersByContextIT.java
 
b/src/test/java/org/apache/sling/scripting/core/it/BindingsValuesProvidersByContextIT.java
index 31a18f8..19ad338 100644
--- 
a/src/test/java/org/apache/sling/scripting/core/it/BindingsValuesProvidersByContextIT.java
+++ 
b/src/test/java/org/apache/sling/scripting/core/it/BindingsValuesProvidersByContextIT.java
@@ -60,7 +60,7 @@ public class BindingsValuesProvidersByContextIT extends 
ScriptingCoreTestSupport
     @Inject
     private BundleContext bundleContext;
 
-    private final List<ServiceRegistration> regs = new 
ArrayList<ServiceRegistration>();
+    private final List<ServiceRegistration<?>> regs = new ArrayList<>();
 
     @Before
     public void setup() {
@@ -69,7 +69,7 @@ public class BindingsValuesProvidersByContextIT extends 
ScriptingCoreTestSupport
 
     @After
     public void cleanup() {
-        for (ServiceRegistration reg : regs) {
+        for (ServiceRegistration<?> reg : regs) {
             reg.unregister();
         }
     }
diff --git 
a/src/test/java/org/apache/sling/scripting/core/it/HtmlScriptingIT.java 
b/src/test/java/org/apache/sling/scripting/core/it/HtmlScriptingIT.java
index 94794d9..0fbcf17 100644
--- a/src/test/java/org/apache/sling/scripting/core/it/HtmlScriptingIT.java
+++ b/src/test/java/org/apache/sling/scripting/core/it/HtmlScriptingIT.java
@@ -18,6 +18,15 @@
  */
 package org.apache.sling.scripting.core.it;
 
+import static 
org.apache.sling.testing.paxexam.SlingOptions.slingQuickstartOakTar;
+import static 
org.apache.sling.testing.paxexam.SlingOptions.slingScriptingSightly;
+import static 
org.apache.sling.testing.paxexam.SlingOptions.slingScriptingThymeleaf;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.is;
+import static org.ops4j.pax.exam.CoreOptions.composite;
+import static org.ops4j.pax.exam.CoreOptions.options;
+import static 
org.ops4j.pax.exam.cm.ConfigurationAdminOptions.factoryConfiguration;
+
 import java.io.IOException;
 
 import javax.inject.Inject;
@@ -40,15 +49,6 @@ import org.ops4j.pax.exam.spi.reactors.PerClass;
 import org.ops4j.pax.exam.util.Filter;
 import org.osgi.service.http.HttpService;
 
-import static 
org.apache.sling.testing.paxexam.SlingOptions.slingQuickstartOakTar;
-import static 
org.apache.sling.testing.paxexam.SlingOptions.slingScriptingSightly;
-import static 
org.apache.sling.testing.paxexam.SlingOptions.slingScriptingThymeleaf;
-import static org.hamcrest.Matchers.is;
-import static org.junit.Assert.assertThat;
-import static org.ops4j.pax.exam.CoreOptions.composite;
-import static org.ops4j.pax.exam.CoreOptions.options;
-import static 
org.ops4j.pax.exam.cm.ConfigurationAdminOptions.factoryConfiguration;
-
 @RunWith(PaxExam.class)
 @ExamReactorStrategy(PerClass.class)
 public class HtmlScriptingIT extends ScriptingCoreTestSupport {

Reply via email to