Switch to more efficient 'direct servlet' internal requests
diff --git a/org.apache.sling.graphql.samples.website/src/main/java/org/apache/sling/scripting/handlebars/HandlebarsScriptEngine.java b/org.apache.sling.graphql.samples.website/src/main/java/org/apache/sling/scripting/handlebars/HandlebarsScriptEngine.java
index 677f7e6..4333813 100644
--- a/org.apache.sling.graphql.samples.website/src/main/java/org/apache/sling/scripting/handlebars/HandlebarsScriptEngine.java
+++ b/org.apache.sling.graphql.samples.website/src/main/java/org/apache/sling/scripting/handlebars/HandlebarsScriptEngine.java
@@ -38,9 +38,10 @@
import org.apache.commons.io.IOUtils;
import org.apache.sling.api.resource.Resource;
-import org.apache.sling.api.resource.ResourceResolver;
import org.apache.sling.api.scripting.SlingBindings;
-import org.apache.sling.servlethelpers.internalrequests.InternalRequest;
+import org.apache.sling.servlethelpers.internalrequests.ServletInternalRequest;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/** Minimal script engine for server-side rendering
* using Handlebars templates. Might need some changes if
@@ -55,6 +56,7 @@
*/
public class HandlebarsScriptEngine extends AbstractScriptEngine {
+ private final Logger log = LoggerFactory.getLogger(getClass());
private final HandlebarsScriptEngineFactory factory;
public HandlebarsScriptEngine(HandlebarsScriptEngineFactory factory) {
@@ -89,20 +91,21 @@
// Request resource.json and convert the result to Maps
String jsonString = null;
try {
- jsonString = InternalRequest
- .slingRequest(r.getResourceResolver(), factory.getSlingRequestProcessor(), r.getPath())
+ jsonString =
+ new ServletInternalRequest(factory.getServletResolver(), r)
.withExtension("json")
- .withResourceType(r.getResourceType())
- .withResourceSuperType(r.getResourceSuperType())
.execute()
.getResponseAsString()
;
} catch(Exception e) {
final ScriptException up = new ScriptException("Internal request failed");
up.initCause(e);
+ log.info("getData() failed", up);
throw up;
}
- return JsonReader.jsonToMaps(jsonString);
+ final Map<?, ?> result = JsonReader.jsonToMaps(jsonString);
+ log.debug("getData() returns a Map with {} keys", result.keySet().size());
+ return result;
}
@Override
diff --git a/org.apache.sling.graphql.samples.website/src/main/java/org/apache/sling/scripting/handlebars/HandlebarsScriptEngineFactory.java b/org.apache.sling.graphql.samples.website/src/main/java/org/apache/sling/scripting/handlebars/HandlebarsScriptEngineFactory.java
index 78f90e1..a212acf 100644
--- a/org.apache.sling.graphql.samples.website/src/main/java/org/apache/sling/scripting/handlebars/HandlebarsScriptEngineFactory.java
+++ b/org.apache.sling.graphql.samples.website/src/main/java/org/apache/sling/scripting/handlebars/HandlebarsScriptEngineFactory.java
@@ -22,7 +22,7 @@
import javax.script.ScriptEngine;
import javax.script.ScriptEngineFactory;
-import org.apache.sling.engine.SlingRequestProcessor;
+import org.apache.sling.api.servlets.ServletResolver;
import org.apache.sling.scripting.api.AbstractScriptEngineFactory;
import org.osgi.framework.BundleContext;
import org.osgi.framework.Constants;
@@ -50,7 +50,7 @@
public static final String LANGUAGE_VERSION = "Sling:Handlebars:0.1";
@Reference
- private SlingRequestProcessor requestProcessor;
+ private ServletResolver servletResolver;
@Activate
private void activate(final HandlebarsScriptEngineFactoryConfig config, final BundleContext ctx) {
@@ -74,7 +74,7 @@
return new HandlebarsScriptEngine(this);
}
- SlingRequestProcessor getSlingRequestProcessor() {
- return requestProcessor;
+ ServletResolver getServletResolver() {
+ return servletResolver;
}
}
\ No newline at end of file
diff --git a/org.apache.sling.graphql.samples.website/src/main/resources/features/feature-graphql-example-website.json b/org.apache.sling.graphql.samples.website/src/main/resources/features/feature-graphql-example-website.json
index c5c1d99..ce08a2f 100644
--- a/org.apache.sling.graphql.samples.website/src/main/resources/features/feature-graphql-example-website.json
+++ b/org.apache.sling.graphql.samples.website/src/main/resources/features/feature-graphql-example-website.json
@@ -32,13 +32,15 @@
},
"org.apache.sling.commons.log.LogManager.factory.config~debug.log" : {
"org.apache.sling.commons.log.file": "logs/debug.log",
- "org.apache.sling.commons.log.level": "DEBUG",
+ "org.apache.sling.commons.log.level": "INFO",
"org.apache.sling.commons.log.names":
[
"org.apache.sling.engine",
"org.apache.sling.servlet",
"org.apache.sling.servlets",
- "org.apache.sling.servlethelpers.internalrequests"
+ "org.apache.sling.servlethelpers.internalrequests",
+ "org.apache.sling.graphql",
+ "org.apache.sling.scripting"
],
"org.apache.sling.commons.log.pattern": "%-5level [%-50logger{50}] %message ## %mdc{sling.InternalRequest} %n"
}