Author: radu Date: Thu Jan 21 17:20:05 2016 New Revision: 1726029 URL: http://svn.apache.org/viewvc?rev=1726029&view=rev Log: SLING-5447 - Enable FindBugs for the Sightly Scripting Engine
* enabled FindBugs for the build process * cleared static analysis bugs Added: sling/trunk/bundles/scripting/sightly/engine/src/test/resources/ sling/trunk/bundles/scripting/sightly/engine/src/test/resources/findbugs-exclude.xml Modified: sling/trunk/bundles/scripting/sightly/engine/pom.xml sling/trunk/bundles/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/compiler/SightlyCompilerService.java sling/trunk/bundles/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/compiler/SightlyJavaCompilerService.java sling/trunk/bundles/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/compiler/UnitChangeMonitor.java sling/trunk/bundles/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/compiler/expression/node/BinaryOperator.java sling/trunk/bundles/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/compiler/frontend/ElementContext.java sling/trunk/bundles/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/compiler/optimization/DeadCodeRemoval.java sling/trunk/bundles/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/compiler/visitor/CodeGenVisitor.java sling/trunk/bundles/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/engine/SightlyScriptEngineFactory.java sling/trunk/bundles/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/engine/UnitLoader.java sling/trunk/bundles/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/engine/extension/ResourceRuntimeExtension.java sling/trunk/bundles/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/engine/extension/use/RenderUnitProvider.java sling/trunk/bundles/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/engine/runtime/RenderUnit.java sling/trunk/bundles/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/filter/URIManipulationFilter.java sling/trunk/bundles/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/html/dom/HtmlParser.java sling/trunk/bundles/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/plugin/PluginCallInfo.java Modified: sling/trunk/bundles/scripting/sightly/engine/pom.xml URL: http://svn.apache.org/viewvc/sling/trunk/bundles/scripting/sightly/engine/pom.xml?rev=1726029&r1=1726028&r2=1726029&view=diff ============================================================================== --- sling/trunk/bundles/scripting/sightly/engine/pom.xml (original) +++ sling/trunk/bundles/scripting/sightly/engine/pom.xml Thu Jan 21 17:20:05 2016 @@ -126,6 +126,25 @@ <excludePackageNames>*.impl:*.internal:${site.javadoc.exclude}</excludePackageNames> </configuration> </plugin> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>findbugs-maven-plugin</artifactId> + <version>3.0.3</version> + <configuration> + <effort>Max</effort> + <xmlOutput>true</xmlOutput> + <excludeFilterFile>src/test/resources/findbugs-exclude.xml</excludeFilterFile> + </configuration> + <executions> + <execution> + <id>find-bugs</id> + <phase>process-classes</phase> + <goals> + <goal>check</goal> + </goals> + </execution> + </executions> + </plugin> </plugins> </build> Modified: sling/trunk/bundles/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/compiler/SightlyCompilerService.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/compiler/SightlyCompilerService.java?rev=1726029&r1=1726028&r2=1726029&view=diff ============================================================================== --- sling/trunk/bundles/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/compiler/SightlyCompilerService.java (original) +++ sling/trunk/bundles/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/compiler/SightlyCompilerService.java Thu Jan 21 17:20:05 2016 @@ -22,6 +22,8 @@ package org.apache.sling.scripting.sight import java.util.ArrayList; import java.util.List; import java.util.Map; +import java.util.concurrent.locks.Lock; +import java.util.concurrent.locks.ReentrantLock; import org.apache.felix.scr.annotations.Activate; import org.apache.felix.scr.annotations.Component; @@ -31,11 +33,6 @@ import org.apache.felix.scr.annotations. import org.apache.felix.scr.annotations.References; import org.apache.felix.scr.annotations.Service; import org.apache.sling.scripting.sightly.impl.compiler.debug.SanityChecker; -import org.apache.sling.scripting.sightly.impl.compiler.ris.CommandStream; -import org.apache.sling.scripting.sightly.impl.compiler.util.stream.PushStream; -import org.apache.sling.scripting.sightly.impl.filter.Filter; -import org.apache.sling.scripting.sightly.impl.html.dom.HtmlParserService; -import org.apache.sling.scripting.sightly.impl.plugin.Plugin; import org.apache.sling.scripting.sightly.impl.compiler.frontend.SimpleFrontend; import org.apache.sling.scripting.sightly.impl.compiler.optimization.CoalescingWrites; import org.apache.sling.scripting.sightly.impl.compiler.optimization.DeadCodeRemoval; @@ -44,6 +41,11 @@ import org.apache.sling.scripting.sightl import org.apache.sling.scripting.sightly.impl.compiler.optimization.SyntheticMapRemoval; import org.apache.sling.scripting.sightly.impl.compiler.optimization.UnusedVariableRemoval; import org.apache.sling.scripting.sightly.impl.compiler.optimization.reduce.ConstantFolding; +import org.apache.sling.scripting.sightly.impl.compiler.ris.CommandStream; +import org.apache.sling.scripting.sightly.impl.compiler.util.stream.PushStream; +import org.apache.sling.scripting.sightly.impl.filter.Filter; +import org.apache.sling.scripting.sightly.impl.html.dom.HtmlParserService; +import org.apache.sling.scripting.sightly.impl.plugin.Plugin; import org.osgi.service.component.ComponentContext; /** @@ -69,6 +71,8 @@ public class SightlyCompilerService { private List<Filter> filters = new ArrayList<Filter>(); private List<Plugin> plugins = new ArrayList<Plugin>(); + private static final Lock FILTERS_LOCK = new ReentrantLock(); + private static final Lock PLUGINS_LOCK = new ReentrantLock(); private volatile StreamTransformer optimizer; private volatile CompilerFrontend frontend; @@ -117,33 +121,46 @@ public class SightlyCompilerService { @SuppressWarnings("UnusedDeclaration") protected void bindFilterService(Filter filter, Map<String, Object> properties) { - synchronized(filters) { + FILTERS_LOCK.lock(); + try { filters = add(filters, filter); reloadFrontend(); + } finally { + FILTERS_LOCK.unlock(); } } @SuppressWarnings("UnusedDeclaration") protected void unbindFilterService(Filter filter, Map<String, Object> properties) { - synchronized (filters) { + FILTERS_LOCK.lock(); + try { filters = remove(filters, filter); reloadFrontend(); + } finally { + FILTERS_LOCK.unlock(); } + } @SuppressWarnings("UnusedDeclaration") protected void bindPluginService(Plugin plugin, Map<String, Object> properties) { - synchronized (plugins) { + PLUGINS_LOCK.lock(); + try { plugins = add(plugins, plugin); reloadFrontend(); + } finally { + PLUGINS_LOCK.unlock(); } } @SuppressWarnings("UnusedDeclaration") protected void unbindPluginService(Plugin plugin, Map<String, Object> properties) { - synchronized (plugins) { + PLUGINS_LOCK.lock(); + try { plugins = remove(plugins, plugin); reloadFrontend(); + } finally { + PLUGINS_LOCK.unlock(); } } Modified: sling/trunk/bundles/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/compiler/SightlyJavaCompilerService.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/compiler/SightlyJavaCompilerService.java?rev=1726029&r1=1726028&r2=1726029&view=diff ============================================================================== --- sling/trunk/bundles/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/compiler/SightlyJavaCompilerService.java (original) +++ sling/trunk/bundles/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/compiler/SightlyJavaCompilerService.java Thu Jan 21 17:20:05 2016 @@ -133,33 +133,25 @@ public class SightlyJavaCompilerService * @throws CompilerException in case of any runtime exception */ public Object compileSource(SourceIdentifier sourceIdentifier, String sourceCode, String fqcn) { - boolean downgradedLock = false; - writeLock.lock(); + readLock.lock(); try { - if (sourceIdentifier != null) { - if (sourceIdentifier.needsUpdate()) { + if (sourceIdentifier == null || sourceIdentifier.needsUpdate()) { + readLock.unlock(); + writeLock.lock(); + try { return internalCompileSource(sourceCode, fqcn); - } else { - /** - * downgrade write lock to a read lock; we don't need to recompile the class since it seems it has been recompiled by - * another thread - */ + } finally { + // downgrade write lock since we've probably compiled the source code by now readLock.lock(); writeLock.unlock(); - downgradedLock = true; - return classLoaderWriter.getClassLoader().loadClass(fqcn).newInstance(); } } else { - return internalCompileSource(sourceCode, fqcn); + return classLoaderWriter.getClassLoader().loadClass(fqcn).newInstance(); } } catch (Exception e) { throw new CompilerException(CompilerException.CompilerExceptionCause.COMPILER_ERRORS, e); } finally { - if (downgradedLock) { - readLock.unlock(); - } else { - writeLock.unlock(); - } + readLock.unlock(); } } @@ -366,7 +358,7 @@ public class SightlyJavaCompilerService return buffer.toString(); } - class SightlyCompilationUnit implements CompilationUnit { + private static class SightlyCompilationUnit implements CompilationUnit { private String fqcn; private String sourceCode; @@ -378,7 +370,7 @@ public class SightlyJavaCompilerService @Override public Reader getSource() throws IOException { - return new InputStreamReader(IOUtils.toInputStream(sourceCode, "UTF-8")); + return new InputStreamReader(IOUtils.toInputStream(sourceCode, "UTF-8"), "UTF-8"); } @Override Modified: sling/trunk/bundles/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/compiler/UnitChangeMonitor.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/compiler/UnitChangeMonitor.java?rev=1726029&r1=1726028&r2=1726029&view=diff ============================================================================== --- sling/trunk/bundles/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/compiler/UnitChangeMonitor.java (original) +++ sling/trunk/bundles/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/compiler/UnitChangeMonitor.java Thu Jan 21 17:20:05 2016 @@ -51,7 +51,7 @@ public class UnitChangeMonitor { private static final Logger LOG = LoggerFactory.getLogger(UnitChangeMonitor.class); - private Map<String, SightlyScript> slyScriptsMap = new ConcurrentHashMap<String, SightlyScript>(); + private Map<String, SightlyScriptMetaInfo> slyScriptsMap = new ConcurrentHashMap<String, SightlyScriptMetaInfo>(); private Map<String, Long> slyJavaUseMap = new ConcurrentHashMap<String, Long>(); private ServiceRegistration eventHandlerServiceRegistration; @@ -68,17 +68,17 @@ public class UnitChangeMonitor { * @return the script's last modified date or 0 if there's no information about the script */ public long getLastModifiedDateForScript(String script) { - SightlyScript sightlyScript = slyScriptsMap.get(script); - if (sightlyScript != null) { - return sightlyScript.lastModified; + SightlyScriptMetaInfo sightlyScriptMetaInfo = slyScriptsMap.get(script); + if (sightlyScriptMetaInfo != null) { + return sightlyScriptMetaInfo.lastModified; } return 0; } public String getScriptEncoding(String script) { - SightlyScript sightlyScript = getScript(script); - if (sightlyScript != null) { - return sightlyScript.encoding; + SightlyScriptMetaInfo sightlyScriptMetaInfo = getScript(script); + if (sightlyScriptMetaInfo != null) { + return sightlyScriptMetaInfo.encoding; } return sightlyEngineConfiguration.getEncoding(); } @@ -175,7 +175,7 @@ public class UnitChangeMonitor { if (StringUtils.isEmpty(encoding)) { encoding = sightlyEngineConfiguration.getEncoding(); } - slyScriptsMap.put(path, new SightlyScript(path, encoding, System.currentTimeMillis())); + slyScriptsMap.put(path, new SightlyScriptMetaInfo(encoding, System.currentTimeMillis())); } } else if (SlingConstants.TOPIC_RESOURCE_REMOVED.equals(topic)) { if (path.endsWith(".java")) { @@ -186,11 +186,11 @@ public class UnitChangeMonitor { } } - private SightlyScript getScript(String script) { - SightlyScript sightlyScript = null; + private SightlyScriptMetaInfo getScript(String script) { + SightlyScriptMetaInfo sightlyScriptMetaInfo = null; if (StringUtils.isNotEmpty(script)) { - sightlyScript = slyScriptsMap.get(script); - if (sightlyScript == null) { + sightlyScriptMetaInfo = slyScriptsMap.get(script); + if (sightlyScriptMetaInfo == null) { ResourceResolver resolver = null; try { resolver = rrf.getAdministrativeResourceResolver(null); @@ -203,8 +203,8 @@ public class UnitChangeMonitor { if (StringUtils.isEmpty(encoding)) { encoding = sightlyEngineConfiguration.getEncoding(); } - sightlyScript = new SightlyScript(script, encoding, scriptResourceMetadata.getModificationTime()); - slyScriptsMap.put(script, sightlyScript); + sightlyScriptMetaInfo = new SightlyScriptMetaInfo(encoding, scriptResourceMetadata.getModificationTime()); + slyScriptsMap.put(script, sightlyScriptMetaInfo); } catch (LoginException e) { // do nothing; we'll just return the default encoding LOG.warn("Cannot read character encoding value for script " + script); @@ -215,19 +215,15 @@ public class UnitChangeMonitor { } } } - return sightlyScript; + return sightlyScriptMetaInfo; } - private class SightlyScript { + private static class SightlyScriptMetaInfo { String encoding; - String className; - String path; long lastModified; - public SightlyScript(String path, String encoding, long lastModified) { + public SightlyScriptMetaInfo(String encoding, long lastModified) { this.encoding = encoding; - className = Utils.getJavaNameFromPath(path); - this.path = path; this.lastModified = lastModified; } } Modified: sling/trunk/bundles/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/compiler/expression/node/BinaryOperator.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/compiler/expression/node/BinaryOperator.java?rev=1726029&r1=1726028&r2=1726029&view=diff ============================================================================== --- sling/trunk/bundles/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/compiler/expression/node/BinaryOperator.java (original) +++ sling/trunk/bundles/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/compiler/expression/node/BinaryOperator.java Thu Jan 21 17:20:05 2016 @@ -142,8 +142,7 @@ public enum BinaryOperator { I_DIV { @Override public Object eval(Object left, Object right) { - return adjust(RenderUtils.toNumber(left).intValue() - / RenderUtils.toNumber(right).intValue()); + return RenderUtils.toNumber(left).intValue() / RenderUtils.toNumber(right).intValue(); } }, @@ -158,10 +157,10 @@ public enum BinaryOperator { }; - public static String OBJECT_NAME = BinaryOperator.class.getName(); - public static String METHOD_STRICT_EQ = "strictEq"; - public static String METHOD_LEQ = "leq"; - public static String METHOD_LT = "lt"; + public static final String OBJECT_NAME = BinaryOperator.class.getName(); + public static final String METHOD_STRICT_EQ = "strictEq"; + public static final String METHOD_LEQ = "leq"; + public static final String METHOD_LT = "lt"; private static boolean eq(Object left, Object right) { if (left == null) { Modified: sling/trunk/bundles/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/compiler/frontend/ElementContext.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/compiler/frontend/ElementContext.java?rev=1726029&r1=1726028&r2=1726029&view=diff ============================================================================== --- sling/trunk/bundles/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/compiler/frontend/ElementContext.java (original) +++ sling/trunk/bundles/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/compiler/frontend/ElementContext.java Thu Jan 21 17:20:05 2016 @@ -103,5 +103,23 @@ public class ElementContext { } return 1; } + + @Override + public boolean equals(Object obj) { + if (!(obj instanceof PrioritizedInvoke)) { + return false; + } + PrioritizedInvoke that = (PrioritizedInvoke) obj; + if (this.priority == that.priority) { + return true; + } + return false; + } + + @Override + public int hashCode() { + assert false : "hashCode not designed"; + return 42; + } } } Modified: sling/trunk/bundles/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/compiler/optimization/DeadCodeRemoval.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/compiler/optimization/DeadCodeRemoval.java?rev=1726029&r1=1726028&r2=1726029&view=diff ============================================================================== --- sling/trunk/bundles/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/compiler/optimization/DeadCodeRemoval.java (original) +++ sling/trunk/bundles/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/compiler/optimization/DeadCodeRemoval.java Thu Jan 21 17:20:05 2016 @@ -69,7 +69,20 @@ public class DeadCodeRemoval extends Tra @Override public void visit(VariableBinding.Start variableBindingStart) { - Boolean truthValue = decodeConstantBool(variableBindingStart.getExpression()); + Boolean truthValue = null; + ExpressionNode node = variableBindingStart.getExpression(); + if (node instanceof StringConstant) { + truthValue = RenderUtils.toBoolean(((StringConstant) node).getText()); + } + if (node instanceof BooleanConstant) { + truthValue = ((BooleanConstant) node).getValue(); + } + if (node instanceof NumericConstant) { + truthValue = RenderUtils.toBoolean(((NumericConstant) node).getValue()); + } + if (node instanceof NullLiteral) { + truthValue = RenderUtils.toBoolean(null); + } tracker.pushVariable(variableBindingStart.getVariableName(), truthValue); outStream.emit(variableBindingStart); } @@ -108,7 +121,7 @@ public class DeadCodeRemoval extends Tra @Override protected Boolean assignDefault(Command command) { - return null; + return false; } @Override @@ -116,19 +129,4 @@ public class DeadCodeRemoval extends Tra outStream.emit(command); } - private Boolean decodeConstantBool(ExpressionNode node) { - if (node instanceof StringConstant) { - return RenderUtils.toBoolean(((StringConstant) node).getText()); - } - if (node instanceof BooleanConstant) { - return ((BooleanConstant) node).getValue(); - } - if (node instanceof NumericConstant) { - return RenderUtils.toBoolean(((NumericConstant) node).getValue()); - } - if (node instanceof NullLiteral) { - return RenderUtils.toBoolean(null); - } - return null; - } } Modified: sling/trunk/bundles/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/compiler/visitor/CodeGenVisitor.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/compiler/visitor/CodeGenVisitor.java?rev=1726029&r1=1726028&r2=1726029&view=diff ============================================================================== --- sling/trunk/bundles/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/compiler/visitor/CodeGenVisitor.java (original) +++ sling/trunk/bundles/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/compiler/visitor/CodeGenVisitor.java Thu Jan 21 17:20:05 2016 @@ -31,6 +31,7 @@ import org.apache.sling.scripting.sightl import org.apache.sling.scripting.sightly.impl.compiled.UnitBuilder; import org.apache.sling.scripting.sightly.impl.compiled.VariableAnalyzer; import org.apache.sling.scripting.sightly.impl.compiled.VariableDescriptor; +import org.apache.sling.scripting.sightly.impl.compiled.VariableScope; import org.apache.sling.scripting.sightly.impl.compiler.ris.CommandVisitor; import org.apache.sling.scripting.sightly.impl.compiler.ris.command.Conditional; import org.apache.sling.scripting.sightly.impl.compiler.ris.command.Loop; @@ -78,25 +79,23 @@ public class CodeGenVisitor implements C } private void initVariable(VariableDescriptor descriptor, JavaSource initSource) { - switch (descriptor.getScope()) { - case DYNAMIC: - initSource.beginAssignment(descriptor.getAssignedName()); - if (descriptor.isTemplateVariable()) { - initSource.startCall(SourceGenConstants.RECORD_GET_VALUE); - } else if (unitParameters.contains(descriptor.getOriginalName().toLowerCase())) { - initSource.startMethodCall(SourceGenConstants.ARGUMENTS_FIELD, SourceGenConstants.BINDINGS_GET_METHOD); - } else { - initSource.startMethodCall(SourceGenConstants.BINDINGS_FIELD, SourceGenConstants.BINDINGS_GET_METHOD); - } - initSource.stringLiteral(descriptor.getOriginalName()) - .endCall() - .endStatement(); - break; - case GLOBAL: - initSource.beginAssignment(descriptor.getAssignedName()) - .nullLiteral() - .endStatement(); - break; + VariableScope scope = descriptor.getScope(); + if (scope == VariableScope.DYNAMIC) { + initSource.beginAssignment(descriptor.getAssignedName()); + if (descriptor.isTemplateVariable()) { + initSource.startCall(SourceGenConstants.RECORD_GET_VALUE); + } else if (unitParameters.contains(descriptor.getOriginalName().toLowerCase())) { + initSource.startMethodCall(SourceGenConstants.ARGUMENTS_FIELD, SourceGenConstants.BINDINGS_GET_METHOD); + } else { + initSource.startMethodCall(SourceGenConstants.BINDINGS_FIELD, SourceGenConstants.BINDINGS_GET_METHOD); + } + initSource.stringLiteral(descriptor.getOriginalName()) + .endCall() + .endStatement(); + } else if (scope == VariableScope.GLOBAL) { + initSource.beginAssignment(descriptor.getAssignedName()) + .nullLiteral() + .endStatement(); } String listCoercionVar = descriptor.getListCoercion(); if (listCoercionVar != null) { Modified: sling/trunk/bundles/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/engine/SightlyScriptEngineFactory.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/engine/SightlyScriptEngineFactory.java?rev=1726029&r1=1726028&r2=1726029&view=diff ============================================================================== --- sling/trunk/bundles/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/engine/SightlyScriptEngineFactory.java (original) +++ sling/trunk/bundles/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/engine/SightlyScriptEngineFactory.java Thu Jan 21 17:20:05 2016 @@ -42,13 +42,13 @@ import org.apache.sling.scripting.api.Ab public class SightlyScriptEngineFactory extends AbstractScriptEngineFactory { @Reference - private UnitLoader unitLoader = null; + private UnitLoader unitLoader; @Reference - private ExtensionRegistryService extensionRegistryService = null; + private ExtensionRegistryService extensionRegistryService; @Reference - private DynamicClassLoaderManager dynamicClassLoaderManager = null; + private DynamicClassLoaderManager dynamicClassLoaderManager; public final static String SHORT_NAME = "sightly"; Modified: sling/trunk/bundles/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/engine/UnitLoader.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/engine/UnitLoader.java?rev=1726029&r1=1726028&r2=1726029&view=diff ============================================================================== --- sling/trunk/bundles/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/engine/UnitLoader.java (original) +++ sling/trunk/bundles/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/engine/UnitLoader.java Thu Jan 21 17:20:05 2016 @@ -180,7 +180,7 @@ public class UnitLoader { if (url == null) { throw new SightlyException("No bundle resource resides at " + path); } - inputStream = componentContext.getBundleContext().getBundle().getEntry(path).openStream(); + inputStream = url.openStream(); return IOUtils.toString(inputStream); } catch (IOException e) { throw new SightlyException("Java class templates could not be found"); Modified: sling/trunk/bundles/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/engine/extension/ResourceRuntimeExtension.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/engine/extension/ResourceRuntimeExtension.java?rev=1726029&r1=1726028&r2=1726029&view=diff ============================================================================== --- sling/trunk/bundles/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/engine/extension/ResourceRuntimeExtension.java (original) +++ sling/trunk/bundles/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/engine/extension/ResourceRuntimeExtension.java Thu Jan 21 17:20:05 2016 @@ -229,10 +229,6 @@ public class ResourceRuntimeExtension im return null; } - private String getOption(Map<String, Object> options, String property) { - return (String) options.get(property); - } - private String getOption(String option, Map<String, Object> options, String defaultValue) { if (options.containsKey(option)) { return (String) options.get(option); @@ -329,4 +325,4 @@ public class ResourceRuntimeExtension im } return sb.toString(); } -} \ No newline at end of file +} Modified: sling/trunk/bundles/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/engine/extension/use/RenderUnitProvider.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/engine/extension/use/RenderUnitProvider.java?rev=1726029&r1=1726028&r2=1726029&view=diff ============================================================================== --- sling/trunk/bundles/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/engine/extension/use/RenderUnitProvider.java (original) +++ sling/trunk/bundles/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/engine/extension/use/RenderUnitProvider.java Thu Jan 21 17:20:05 2016 @@ -62,7 +62,7 @@ import org.osgi.framework.Constants; public class RenderUnitProvider implements UseProvider { @Reference - private UnitLoader unitLoader = null; + private UnitLoader unitLoader; @Override public ProviderOutcome provide(String identifier, RenderContext renderContext, Bindings arguments) { Modified: sling/trunk/bundles/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/engine/runtime/RenderUnit.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/engine/runtime/RenderUnit.java?rev=1726029&r1=1726028&r2=1726029&view=diff ============================================================================== --- sling/trunk/bundles/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/engine/runtime/RenderUnit.java (original) +++ sling/trunk/bundles/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/engine/runtime/RenderUnit.java Thu Jan 21 17:20:05 2016 @@ -84,7 +84,6 @@ public abstract class RenderUnit impleme throw new SightlyException("data-sly-call: " + templateObj.getClass().getName() + " does not represent a Sightly template."); } RenderUnit unit = (RenderUnit) templateObj; - SlingScriptHelper ssh = (SlingScriptHelper) renderContext.getBindings().get(SlingBindings.SLING); Map<String, Object> argumentsMap = RenderUtils.toMap(argsObj); Bindings arguments = new SimpleBindings(Collections.unmodifiableMap(argumentsMap)); unit.render(renderContext, arguments); Modified: sling/trunk/bundles/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/filter/URIManipulationFilter.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/filter/URIManipulationFilter.java?rev=1726029&r1=1726028&r2=1726029&view=diff ============================================================================== --- sling/trunk/bundles/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/filter/URIManipulationFilter.java (original) +++ sling/trunk/bundles/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/filter/URIManipulationFilter.java Thu Jan 21 17:20:05 2016 @@ -102,9 +102,6 @@ public class URIManipulationFilter exten ExtensionUtils.checkArgumentCount(URI_MANIPULATION_FUNCTION, arguments, 2); String uriString = RenderUtils.toString(arguments[0]); Map<String, Object> options = RenderUtils.toMap(arguments[1]); - if (uriString == null) { - return null; - } StringBuilder sb = new StringBuilder(); PathInfo pathInfo = new PathInfo(uriString); uriAppender(sb, SCHEME, options, pathInfo.getScheme()); Modified: sling/trunk/bundles/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/html/dom/HtmlParser.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/html/dom/HtmlParser.java?rev=1726029&r1=1726028&r2=1726029&view=diff ============================================================================== --- sling/trunk/bundles/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/html/dom/HtmlParser.java (original) +++ sling/trunk/bundles/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/html/dom/HtmlParser.java Thu Jan 21 17:20:05 2016 @@ -222,6 +222,8 @@ public final class HtmlParser { parseSubState = 0; } break; + default: + break; } break; case COMMENT: @@ -289,6 +291,8 @@ public final class HtmlParser { parseSubState = 2; } break; + default: + break; } break; @@ -375,6 +379,8 @@ public final class HtmlParser { parseState = PARSE_STATE.OUTSIDE; } break; + default: + break; } break; @@ -397,6 +403,8 @@ public final class HtmlParser { } exprType = EXPR_NONE; break; + default: + break; } } if (start < end) { Modified: sling/trunk/bundles/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/plugin/PluginCallInfo.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/plugin/PluginCallInfo.java?rev=1726029&r1=1726028&r2=1726029&view=diff ============================================================================== --- sling/trunk/bundles/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/plugin/PluginCallInfo.java (original) +++ sling/trunk/bundles/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/plugin/PluginCallInfo.java Thu Jan 21 17:20:05 2016 @@ -18,6 +18,8 @@ ******************************************************************************/ package org.apache.sling.scripting.sightly.impl.plugin; +import java.util.Arrays; + /** * Data related to a plugin call */ @@ -28,7 +30,7 @@ public class PluginCallInfo { public PluginCallInfo(String name, String[] arguments) { this.name = name; - this.arguments = arguments; + this.arguments = Arrays.copyOf(arguments, arguments.length); } /** @@ -44,6 +46,6 @@ public class PluginCallInfo { * @return a possibly empty array of args */ public String[] getArguments() { - return arguments; + return Arrays.copyOf(arguments, arguments.length); } } Added: sling/trunk/bundles/scripting/sightly/engine/src/test/resources/findbugs-exclude.xml URL: http://svn.apache.org/viewvc/sling/trunk/bundles/scripting/sightly/engine/src/test/resources/findbugs-exclude.xml?rev=1726029&view=auto ============================================================================== --- sling/trunk/bundles/scripting/sightly/engine/src/test/resources/findbugs-exclude.xml (added) +++ sling/trunk/bundles/scripting/sightly/engine/src/test/resources/findbugs-exclude.xml Thu Jan 21 17:20:05 2016 @@ -0,0 +1,21 @@ +<!--~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ~ Licensed to the Apache Software Foundation (ASF) under one or more + ~ contributor license agreements. See the NOTICE file distributed with + ~ this work for additional information regarding copyright ownership. + ~ The ASF licenses this file to You under the Apache License, Version 2.0 + ~ (the "License"); you may not use this file except in compliance with + ~ the License. You may obtain a copy of the License at + ~ + ~ http://www.apache.org/licenses/LICENSE-2.0 + ~ + ~ Unless required by applicable law or agreed to in writing, software + ~ distributed under the License is distributed on an "AS IS" BASIS, + ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + ~ See the License for the specific language governing permissions and + ~ limitations under the License. + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~--> +<FindBugsFilter> + <Match> + <Package name="org.apache.sling.scripting.sightly.impl.parser.expr.generated"/> + </Match> +</FindBugsFilter>