This is an automated email from the ASF dual-hosted git repository. radu pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-scripting-core.git
commit 1b5b0f13ac8190bb02be6c3bc6018e696e20b355 Author: Radu Cotescu <[email protected]> AuthorDate: Wed May 22 10:35:12 2019 +0200 SLING-8425 - NPE in SlingScriptEngineManager when Sling is run on GraalVM * corrected SlingScriptEngineManagerTest.testOSGiRegisteredFactoriesDifferentServiceRanking --- .../core/impl/jsr223/SlingScriptEngineManager.java | 6 +-- .../impl/jsr223/SlingScriptEngineManagerTest.java | 57 ++++++++-------------- 2 files changed, 22 insertions(+), 41 deletions(-) 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 fe7b425..14cb13a 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 @@ -296,21 +296,21 @@ public class SlingScriptEngineManager extends ScriptEngineManager implements Bun if (extension != null && !extension.isEmpty()) { internalManager.registerEngineExtension(extension, factory); } else { - LOG.warn("Could not register an empty or null extension for script engine factory {}", factory.getEngineName()); + LOG.warn("Could not register an empty or null extension for script engine factory {}.", factory.getEngineName()); } } for (String mimeType : factory.getMimeTypes()) { if (mimeType != null && !mimeType.isEmpty()) { internalManager.registerEngineMimeType(mimeType, factory); } else { - LOG.warn("Could not register an empty or null mime type for script engine factory {}", factory.getEngineName()); + LOG.warn("Could not register an empty or null mime type for script engine factory {}.", factory.getEngineName()); } } for (String name : factory.getNames()) { if (name != null && !name.isEmpty()) { internalManager.registerEngineName(name, factory); } else { - LOG.warn("Could not register an empty or null engine name for script engine factory {}", factory.getEngineName()); + LOG.warn("Could not register an empty or null engine name for script engine factory {}.", factory.getEngineName()); } } } 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 e737ede..4f28324 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 @@ -40,8 +40,6 @@ import org.apache.sling.testing.mock.osgi.junit.OsgiContext; import org.junit.Before; import org.junit.Rule; import org.junit.Test; -import org.mockito.invocation.InvocationOnMock; -import org.mockito.stubbing.Answer; import org.osgi.framework.Bundle; import org.osgi.framework.BundleEvent; import org.osgi.framework.Constants; @@ -75,17 +73,15 @@ public class SlingScriptEngineManagerTest { int jvmProvidedScriptEngineFactoryCount = jvmProvidedScriptEngineFactoryCount(); ScriptEngineManager scriptEngineManager = context.getService(ScriptEngineManager.class); assertNotNull("Expected a ScriptEngineManager would be already registered.", scriptEngineManager); - { - int expectedScriptEngineFactories = jvmProvidedScriptEngineFactoryCount; - assertEquals("The ScriptEngineManager should have had " + expectedScriptEngineFactories + " ScriptEngineFactory registered.", expectedScriptEngineFactories, scriptEngineManager - .getEngineFactories().size()); - } + assertEquals("The ScriptEngineManager should have had " + jvmProvidedScriptEngineFactoryCount + " ScriptEngineFactory registered.", jvmProvidedScriptEngineFactoryCount, scriptEngineManager.getEngineFactories().size()); } @Test public void testOSGiRegisteredFactoriesDifferentServiceRanking() throws Exception { + int numberOfOSGiRegisteredFactories = 2; int jvmProvidedScriptEngineFactoryCount = jvmProvidedScriptEngineFactoryCount(); - int expectedEvents = jvmProvidedScriptEngineFactoryCount + 1; + // we register 2 factories, then unregister 1 of them + int expectedEvents = 3; CountDownLatch latch = new CountDownLatch(expectedEvents); TestEventHandler eventHandler = new TestEventHandler (latch, "org/apache/sling/scripting/core/impl/jsr223/SlingScriptEngineManager/UPDATED"); @@ -113,24 +109,20 @@ public class SlingScriptEngineManagerTest { ScriptEngineManager scriptEngineManager = context.getService(ScriptEngineManager.class); assertNotNull("Expected a ScriptEngineManager would be already registered.", scriptEngineManager); List<ScriptEngineFactory> factories = scriptEngineManager.getEngineFactories(); - { - int expectedScriptEngineFactories = jvmProvidedScriptEngineFactoryCount + 2; - assertEquals("The ScriptEngineManager should have had " + expectedScriptEngineFactories + " ScriptEngineFactories registered.", expectedScriptEngineFactories, factories.size()); - } - assertEquals(f1.getEngineName(), factories.get(jvmProvidedScriptEngineFactoryCount + 1).getEngineName()); - assertEquals(f2.getEngineName(), factories.get(jvmProvidedScriptEngineFactoryCount).getEngineName()); + int expectedScriptEngineFactories = numberOfOSGiRegisteredFactories + jvmProvidedScriptEngineFactoryCount; + assertEquals("The ScriptEngineManager should have had " + expectedScriptEngineFactories + " ScriptEngineFactories registered.", expectedScriptEngineFactories, factories.size()); + assertEquals(f1.getEngineName(), factories.get(expectedScriptEngineFactories - 1).getEngineName()); + assertEquals(f2.getEngineName(), factories.get(expectedScriptEngineFactories - 2).getEngineName()); SlingScriptEngineManager slingScriptEngineManager = context.getService(SlingScriptEngineManager.class); assertEquals(2, slingScriptEngineManager.getProperties(f1).get(Constants.SERVICE_RANKING)); f1SR.unregister(); + expectedScriptEngineFactories--; factories = scriptEngineManager.getEngineFactories(); - { - int expectedScriptEngineFactories = jvmProvidedScriptEngineFactoryCount + 1; - assertEquals("The ScriptEngineManager should have had " + expectedScriptEngineFactories + " ScriptEngineFactories registered.", expectedScriptEngineFactories, factories.size()); - } - assertEquals(f2.getEngineName(), factories.get(jvmProvidedScriptEngineFactoryCount).getEngineName()); + assertEquals("The ScriptEngineManager should have had " + expectedScriptEngineFactories + " ScriptEngineFactories registered.", expectedScriptEngineFactories, factories.size()); + assertEquals(f2.getEngineName(), factories.get(expectedScriptEngineFactories - 1).getEngineName()); assertEquals(f2, scriptEngineManager.getEngineByName("f2").getFactory()); assertEquals(f2, scriptEngineManager.getEngineByExtension("f2").getFactory()); @@ -178,20 +170,16 @@ public class SlingScriptEngineManagerTest { assertNotNull("Expected that the SlingScriptEngineManager would already be registered.", slingScriptEngineManager); slingScriptEngineManager.bundleChanged(bundleEvent); List<ScriptEngineFactory> factories = slingScriptEngineManager.getEngineFactories(); - { - int expectedScriptEngineFactories = jvmProvidedScriptEngineFactoryCount + 1; - assertEquals("Expected " + expectedScriptEngineFactories + " ScriptEngineFactories.", expectedScriptEngineFactories, factories.size()); - } - assertEquals("Dummy Scripting Engine", factories.get(jvmProvidedScriptEngineFactoryCount).getEngineName()); + int expectedScriptEngineFactories = jvmProvidedScriptEngineFactoryCount + 1; + assertEquals("Expected " + expectedScriptEngineFactories + " ScriptEngineFactories.", expectedScriptEngineFactories, factories.size()); + assertEquals("Dummy Scripting Engine", factories.get(expectedScriptEngineFactories - 1).getEngineName()); bundleEvent = new BundleEvent(BundleEvent.STOPPED, bundle); slingScriptEngineManager.bundleChanged(bundleEvent); + expectedScriptEngineFactories--; + factories = slingScriptEngineManager.getEngineFactories(); - { - int expectedScriptEngineFactories = jvmProvidedScriptEngineFactoryCount; - assertEquals("Expected " + expectedScriptEngineFactories + " ScriptEngineFactory.", expectedScriptEngineFactories, factories.size()); - } - //assertEquals("Oracle Nashorn", factories.get(0).getEngineName()); + assertEquals("Expected " + expectedScriptEngineFactories + " ScriptEngineFactory.", expectedScriptEngineFactories, factories.size()); assertNull("Did not expect references to the already unregistered DummyScriptEngineFactory", slingScriptEngineManager .getEngineByExtension("dummy")); assertNull("Did not expect references to the already unregistered DummyScriptEngineFactory", @@ -230,16 +218,9 @@ public class SlingScriptEngineManagerTest { private File createFactoryFile() throws IOException { File tempFile = File.createTempFile("scriptEngine", "tmp"); tempFile.deleteOnExit(); - - FileOutputStream fos = null; - try { - fos = new FileOutputStream(tempFile); + try (FileOutputStream fos = new FileOutputStream(tempFile)) { fos.write("#I'm a test-comment\n".getBytes()); fos.write(SCRIPT_ENGINE_FACTORY.getName().getBytes()); - } finally { - if (fos != null) { - fos.close(); - } } return tempFile; } @@ -251,7 +232,7 @@ public class SlingScriptEngineManagerTest { CountDownLatch latch; int processedEvents = 0; - public TestEventHandler(CountDownLatch latch, String topic) { + TestEventHandler(CountDownLatch latch, String topic) { this.topic = topic; this.latch = latch; }
