Add some IT for the example, remove some System.out, and organize imports.
diff --git a/pom.xml b/pom.xml
index dc8ff4c..848b7f9 100644
--- a/pom.xml
+++ b/pom.xml
@@ -177,6 +177,13 @@
<version>1.1.12</version>
<scope>test</scope>
</dependency>
+
+ <dependency>
+ <groupId>org.jsoup</groupId>
+ <artifactId>jsoup</artifactId>
+ <version>1.7.3</version>
+ <scope>test</scope>
+ </dependency>
</dependencies>
<profiles>
diff --git a/src/main/java/org/apache/sling/scripting/resolver/internal/BundledScriptContext.java b/src/main/java/org/apache/sling/scripting/resolver/internal/BundledScriptContext.java
index e6af123..0031f11 100644
--- a/src/main/java/org/apache/sling/scripting/resolver/internal/BundledScriptContext.java
+++ b/src/main/java/org/apache/sling/scripting/resolver/internal/BundledScriptContext.java
@@ -18,16 +18,15 @@
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
package org.apache.sling.scripting.resolver.internal;
-import java.io.Reader;
-import java.io.Writer;
-import java.util.Arrays;
-import java.util.List;
+import org.apache.sling.api.scripting.SlingScriptConstants;
import javax.script.Bindings;
import javax.script.SimpleBindings;
import javax.script.SimpleScriptContext;
-
-import org.apache.sling.api.scripting.SlingScriptConstants;
+import java.io.Reader;
+import java.io.Writer;
+import java.util.Arrays;
+import java.util.List;
class BundledScriptContext extends SimpleScriptContext {
diff --git a/src/main/java/org/apache/sling/scripting/resolver/internal/BundledScriptFinder.java b/src/main/java/org/apache/sling/scripting/resolver/internal/BundledScriptFinder.java
index deab1bb..2a271b4 100644
--- a/src/main/java/org/apache/sling/scripting/resolver/internal/BundledScriptFinder.java
+++ b/src/main/java/org/apache/sling/scripting/resolver/internal/BundledScriptFinder.java
@@ -18,21 +18,20 @@
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
package org.apache.sling.scripting.resolver.internal;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
-
-import javax.script.ScriptEngineFactory;
-import javax.script.ScriptEngineManager;
-
import org.apache.commons.lang3.StringUtils;
import org.apache.sling.api.SlingHttpServletRequest;
import org.osgi.framework.Bundle;
import org.osgi.service.component.annotations.Component;
import org.osgi.service.component.annotations.Reference;
+import javax.script.ScriptEngineFactory;
+import javax.script.ScriptEngineManager;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
@Component(
service = BundledScriptFinder.class
)
diff --git a/src/main/java/org/apache/sling/scripting/resolver/internal/BundledScriptServlet.java b/src/main/java/org/apache/sling/scripting/resolver/internal/BundledScriptServlet.java
index 0c1f0ca..49f5491 100644
--- a/src/main/java/org/apache/sling/scripting/resolver/internal/BundledScriptServlet.java
+++ b/src/main/java/org/apache/sling/scripting/resolver/internal/BundledScriptServlet.java
@@ -18,13 +18,13 @@
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
package org.apache.sling.scripting.resolver.internal;
-import java.io.IOException;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
-import java.util.concurrent.locks.ReadWriteLock;
-import java.util.concurrent.locks.ReentrantReadWriteLock;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.sling.api.SlingConstants;
+import org.apache.sling.api.SlingHttpServletRequest;
+import org.apache.sling.api.SlingHttpServletResponse;
+import org.apache.sling.api.request.RequestPathInfo;
+import org.apache.sling.api.scripting.ScriptEvaluationException;
+import org.osgi.framework.Bundle;
import javax.script.ScriptContext;
import javax.script.ScriptException;
@@ -33,16 +33,12 @@
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletResponse;
-
-import org.apache.commons.lang3.StringUtils;
-import org.apache.sling.api.SlingConstants;
-import org.apache.sling.api.SlingHttpServletRequest;
-import org.apache.sling.api.SlingHttpServletResponse;
-import org.apache.sling.api.request.RequestPathInfo;
-import org.apache.sling.api.scripting.ScriptEvaluationException;
-import org.osgi.framework.Bundle;
-import org.osgi.framework.Version;
-import org.osgi.framework.wiring.BundleWiring;
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.locks.ReadWriteLock;
+import java.util.concurrent.locks.ReentrantReadWriteLock;
class BundledScriptServlet extends GenericServlet {
diff --git a/src/main/java/org/apache/sling/scripting/resolver/internal/BundledScriptTracker.java b/src/main/java/org/apache/sling/scripting/resolver/internal/BundledScriptTracker.java
index 8f6a9bc..60bccd9 100644
--- a/src/main/java/org/apache/sling/scripting/resolver/internal/BundledScriptTracker.java
+++ b/src/main/java/org/apache/sling/scripting/resolver/internal/BundledScriptTracker.java
@@ -18,43 +18,11 @@
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
package org.apache.sling.scripting.resolver.internal;
-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.Comparator;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Hashtable;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-import java.util.Optional;
-import java.util.Set;
-import java.util.function.Function;
-import java.util.function.Predicate;
-import java.util.stream.Collectors;
-import java.util.stream.Stream;
-
-import javax.servlet.GenericServlet;
-import javax.servlet.RequestDispatcher;
-import javax.servlet.Servlet;
-import javax.servlet.ServletException;
-import javax.servlet.ServletRegistration;
-import javax.servlet.ServletRequest;
-import javax.servlet.ServletResponse;
-import javax.servlet.http.HttpServletResponse;
-
+import aQute.bnd.annotation.headers.ProvideCapability;
import org.apache.commons.lang3.StringUtils;
import org.apache.sling.api.SlingHttpServletRequest;
import org.apache.sling.api.SlingHttpServletResponse;
import org.apache.sling.api.request.RequestDispatcherOptions;
-import org.apache.sling.api.resource.Resource;
-import org.apache.sling.api.resource.ResourceUtil;
-import org.apache.sling.api.resource.ResourceWrapper;
-import org.apache.sling.api.resource.SyntheticResource;
import org.apache.sling.api.servlets.ServletResolverConstants;
import org.apache.sling.commons.osgi.PropertiesUtil;
import org.osgi.framework.Bundle;
@@ -76,7 +44,27 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import aQute.bnd.annotation.headers.ProvideCapability;
+import javax.servlet.GenericServlet;
+import javax.servlet.RequestDispatcher;
+import javax.servlet.Servlet;
+import javax.servlet.ServletException;
+import javax.servlet.ServletRequest;
+import javax.servlet.ServletResponse;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Hashtable;
+import java.util.List;
+import java.util.Map;
+import java.util.Optional;
+import java.util.Set;
+import java.util.function.Predicate;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
@Component(
service = {}
@@ -409,7 +397,6 @@
RequestDispatcherOptions options = new RequestDispatcherOptions();
options.setForceResourceType(rt);
- System.out.println("found: " + rt);
RequestDispatcher dispatcher = slingRequest.getRequestDispatcher(slingRequest.getResource(), options);
if (dispatcher != null)
{
@@ -422,7 +409,6 @@
}
else
{
- System.out.println("Not found");
((SlingHttpServletResponse) res).sendError(HttpServletResponse.SC_NOT_FOUND);
}
}
diff --git a/src/main/java/org/apache/sling/scripting/resolver/internal/LogWriter.java b/src/main/java/org/apache/sling/scripting/resolver/internal/LogWriter.java
index aaf6925..00a9b39 100644
--- a/src/main/java/org/apache/sling/scripting/resolver/internal/LogWriter.java
+++ b/src/main/java/org/apache/sling/scripting/resolver/internal/LogWriter.java
@@ -18,10 +18,10 @@
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
package org.apache.sling.scripting.resolver.internal;
-import java.io.Writer;
-
import org.slf4j.Logger;
+import java.io.Writer;
+
class LogWriter extends Writer {
/** The logger to which the error messages are written */
diff --git a/src/main/java/org/apache/sling/scripting/resolver/internal/ProtectedBindings.java b/src/main/java/org/apache/sling/scripting/resolver/internal/ProtectedBindings.java
index 1f0ac33..e2cb89d 100644
--- a/src/main/java/org/apache/sling/scripting/resolver/internal/ProtectedBindings.java
+++ b/src/main/java/org/apache/sling/scripting/resolver/internal/ProtectedBindings.java
@@ -18,13 +18,12 @@
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
package org.apache.sling.scripting.resolver.internal;
+import javax.script.Bindings;
import java.util.Collection;
import java.util.Collections;
import java.util.Map;
import java.util.Set;
-import javax.script.Bindings;
-
class ProtectedBindings implements Bindings {
private final Bindings wrapped;
diff --git a/src/main/java/org/apache/sling/scripting/resolver/internal/RequestWrapper.java b/src/main/java/org/apache/sling/scripting/resolver/internal/RequestWrapper.java
index 536f3bb..4e5c1d8 100644
--- a/src/main/java/org/apache/sling/scripting/resolver/internal/RequestWrapper.java
+++ b/src/main/java/org/apache/sling/scripting/resolver/internal/RequestWrapper.java
@@ -18,16 +18,15 @@
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
package org.apache.sling.scripting.resolver.internal;
-import java.util.Set;
-
-import javax.servlet.RequestDispatcher;
-
import org.apache.commons.lang3.StringUtils;
import org.apache.sling.api.SlingHttpServletRequest;
import org.apache.sling.api.request.RequestDispatcherOptions;
import org.apache.sling.api.resource.Resource;
import org.apache.sling.api.wrappers.SlingHttpServletRequestWrapper;
+import javax.servlet.RequestDispatcher;
+import java.util.Set;
+
class RequestWrapper extends SlingHttpServletRequestWrapper {
private final Set<String> wiredResourceTypes;
diff --git a/src/main/java/org/apache/sling/scripting/resolver/internal/Script.java b/src/main/java/org/apache/sling/scripting/resolver/internal/Script.java
index 1353138..a97fd8c 100644
--- a/src/main/java/org/apache/sling/scripting/resolver/internal/Script.java
+++ b/src/main/java/org/apache/sling/scripting/resolver/internal/Script.java
@@ -18,21 +18,20 @@
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
package org.apache.sling.scripting.resolver.internal;
-import java.io.IOException;
-import java.io.StringReader;
-import java.net.URL;
-import java.nio.charset.StandardCharsets;
-import java.util.concurrent.locks.Lock;
-import java.util.concurrent.locks.ReentrantLock;
+import org.apache.commons.io.IOUtils;
+import org.apache.sling.scripting.core.ScriptNameAwareReader;
import javax.script.Compilable;
import javax.script.CompiledScript;
import javax.script.ScriptContext;
import javax.script.ScriptEngine;
import javax.script.ScriptException;
-
-import org.apache.commons.io.IOUtils;
-import org.apache.sling.scripting.core.ScriptNameAwareReader;
+import java.io.IOException;
+import java.io.StringReader;
+import java.net.URL;
+import java.nio.charset.StandardCharsets;
+import java.util.concurrent.locks.Lock;
+import java.util.concurrent.locks.ReentrantLock;
class Script {
diff --git a/src/main/java/org/apache/sling/scripting/resolver/internal/ScriptContextProvider.java b/src/main/java/org/apache/sling/scripting/resolver/internal/ScriptContextProvider.java
index a4ce659..e1c9767 100644
--- a/src/main/java/org/apache/sling/scripting/resolver/internal/ScriptContextProvider.java
+++ b/src/main/java/org/apache/sling/scripting/resolver/internal/ScriptContextProvider.java
@@ -18,17 +18,6 @@
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
package org.apache.sling.scripting.resolver.internal;
-import java.io.IOException;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.Set;
-
-import javax.script.Bindings;
-import javax.script.ScriptContext;
-import javax.script.ScriptEngine;
-import javax.script.SimpleBindings;
-
import org.apache.sling.api.SlingHttpServletRequest;
import org.apache.sling.api.SlingHttpServletResponse;
import org.apache.sling.api.scripting.SlingBindings;
@@ -45,6 +34,16 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import javax.script.Bindings;
+import javax.script.ScriptContext;
+import javax.script.ScriptEngine;
+import javax.script.SimpleBindings;
+import java.io.IOException;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Set;
+
@Component(
service = ScriptContextProvider.class
)
diff --git a/src/test/java/org/apache/sling/junit/teleporter/customizers/ITCustomizer.java b/src/test/java/org/apache/sling/junit/teleporter/customizers/ITCustomizer.java
index 3bcd758..1ec4d79 100644
--- a/src/test/java/org/apache/sling/junit/teleporter/customizers/ITCustomizer.java
+++ b/src/test/java/org/apache/sling/junit/teleporter/customizers/ITCustomizer.java
@@ -17,8 +17,8 @@
package org.apache.sling.junit.teleporter.customizers;
import org.apache.sling.junit.rules.TeleporterRule;
-import org.apache.sling.testing.teleporter.client.ClientSideTeleporter;
import org.apache.sling.testing.clients.util.TimeoutsProvider;
+import org.apache.sling.testing.teleporter.client.ClientSideTeleporter;
public class ITCustomizer implements TeleporterRule.Customizer {
diff --git a/src/test/java/org/apache/sling/scripting/resolver/internal/BundledScriptTrackerIT.java b/src/test/java/org/apache/sling/scripting/resolver/internal/BundledScriptTrackerIT.java
index 1ee69b0..b99e939 100644
--- a/src/test/java/org/apache/sling/scripting/resolver/internal/BundledScriptTrackerIT.java
+++ b/src/test/java/org/apache/sling/scripting/resolver/internal/BundledScriptTrackerIT.java
@@ -32,5 +32,9 @@
public void testSlingServletForResourceTypeProvided()
{
Assert.assertNotNull(teleporter.getService(Servlet.class, String.format("(%s=%s)", "sling.servlet.resourceTypes", "org.apache.sling.scripting.examplebundle.hello/1.0.0")));
+ Assert.assertNotNull(teleporter.getService(Servlet.class, String.format("(%s=%s)", "sling.servlet.resourceTypes", "org.apache.sling.scripting.examplebundle.hello/2.0.0")));
+ Assert.assertNotNull(teleporter.getService(Servlet.class, String.format("(%s=%s)", "sling.servlet.resourceTypes", "org.apache.sling.scripting.examplebundle.hello")));
+ Assert.assertNotNull(teleporter.getService(Servlet.class, String.format("(%s=%s)", "sling.servlet.resourceTypes", "org.apache.sling.scripting.examplebundle.hi")));
+ Assert.assertNotNull(teleporter.getService(Servlet.class, String.format("(%s=%s)", "sling.servlet.resourceTypes", "org.apache.sling.scripting.examplebundle.hi/1.0.0")));
}
}
diff --git a/src/test/java/org/apache/sling/scripting/resolver/internal/EndpointIT.java b/src/test/java/org/apache/sling/scripting/resolver/internal/EndpointIT.java
new file mode 100644
index 0000000..fa97646
--- /dev/null
+++ b/src/test/java/org/apache/sling/scripting/resolver/internal/EndpointIT.java
@@ -0,0 +1,119 @@
+/*
+ * 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.
+ */
+package org.apache.sling.scripting.resolver.internal;
+
+import org.apache.http.HttpResponse;
+import org.apache.http.client.HttpClient;
+import org.apache.http.client.config.RequestConfig;
+import org.apache.http.client.methods.HttpGet;
+import org.apache.http.impl.client.HttpClientBuilder;
+import org.jsoup.Jsoup;
+import org.jsoup.nodes.Document;
+import org.junit.Assert;
+import org.junit.Test;
+
+import java.io.IOException;
+
+import static org.apache.sling.junit.teleporter.customizers.ITCustomizer.BASE_URL_PROP;
+
+public class EndpointIT
+{
+ @Test
+ public void testHelloEndpoint() throws IOException, InterruptedException
+ {
+ Document document = get("content/srr/examples/example.html", 200);
+
+ Assert.assertEquals("We're testing some serious scripting here in Version 2", document.select("h2").html());
+ Assert.assertTrue(document.body().html().contains("World2"));
+ Assert.assertTrue(document.body().html().contains("Hello2"));
+ }
+
+ @Test
+ public void testHelloEndpointV1() throws IOException, InterruptedException
+ {
+ Document document = get("content/srr/examples/examplev1.html", 200);
+
+ Assert.assertEquals("We're testing some serious scripting here", document.select("h2").html());
+ Assert.assertTrue(document.body().html().contains("World"));
+ Assert.assertTrue(document.body().html().contains("Hello"));
+ }
+
+ @Test
+ public void testHelloEndpointV2() throws IOException, InterruptedException
+ {
+ Document document = get("content/srr/examples/examplev2.html", 200);
+
+ Assert.assertEquals("We're testing some serious scripting here in Version 2", document.select("h2").html());
+ Assert.assertTrue(document.body().html().contains("World2"));
+ Assert.assertTrue(document.body().html().contains("Hello2"));
+ }
+
+ @Test
+ public void testHiEndpoint() throws IOException, InterruptedException
+ {
+ Document document = get("content/srr/examples/examplehi.html", 200);
+
+ Assert.assertEquals("We're testing some serious scripting here", document.select("h2").html());
+ Assert.assertTrue(document.body().html().contains("World"));
+ Assert.assertTrue(document.body().html().contains("Hallo"));
+ Assert.assertFalse(document.body().html().contains("Hello"));
+ }
+
+ @Test
+ public void testHiEndpointV1() throws IOException, InterruptedException
+ {
+ Document document = get("content/srr/examples/examplehiv1.html", 200);
+
+ Assert.assertEquals("We're testing some serious scripting here", document.select("h2").html());
+ Assert.assertTrue(document.body().html().contains("World"));
+ Assert.assertTrue(document.body().html().contains("Hallo"));
+ Assert.assertFalse(document.body().html().contains("Hello"));
+ }
+
+ private Document get(String path, long expected) throws IOException, InterruptedException
+ {
+ HttpClient client = HttpClientBuilder.create().build();
+ HttpGet get = new HttpGet(System.getProperty(BASE_URL_PROP, BASE_URL_PROP + "_IS_NOT_SET") + path);
+ RequestConfig requestConfig = RequestConfig.custom()
+ .setSocketTimeout(1000)
+ .setConnectTimeout(1000)
+ .setConnectionRequestTimeout(1000)
+ .build();
+ get.setConfig(requestConfig);
+ HttpResponse response = null;
+ for (int i = 0;i < 10;i++)
+ {
+ Thread.sleep(500);
+ try
+ {
+ response = client.execute(get);
+ if (response.getStatusLine().getStatusCode() == expected)
+ {
+ break;
+ }
+ }
+ catch (Exception ex) {
+ ex.printStackTrace();
+ }
+ get = new HttpGet(System.getProperty(BASE_URL_PROP, BASE_URL_PROP + "_IS_NOT_SET") + path);
+ get.setConfig(requestConfig);
+ }
+ Assert.assertNotNull(response);
+ Assert.assertEquals(expected, response.getStatusLine().getStatusCode());
+ return Jsoup.parse(response.getEntity().getContent(), "UTF-8", System.getProperty(BASE_URL_PROP, BASE_URL_PROP + "_IS_NOT_SET"));
+ }
+}