You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by en...@apache.org on 2022/06/30 22:26:54 UTC
[sling-org-apache-sling-scripting-core] branch master updated: SLING-11431 cleanup many compiler and sonar warnings (#20)
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 <en...@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 {