You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ra...@apache.org on 2015/02/20 20:28:09 UTC
svn commit: r1661199 -
/sling/trunk/contrib/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/engine/extension/use/RenderUnitProvider.java
Author: radu
Date: Fri Feb 20 19:28:09 2015
New Revision: 1661199
URL: http://svn.apache.org/r1661199
Log:
SLING-4448 - Make the RenderUnitProvider fail loudly if the provided identifier does not resolve to a script
* explicitly return a failure cause if the identifier does not resolve to a script
Modified:
sling/trunk/contrib/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/engine/extension/use/RenderUnitProvider.java
Modified: sling/trunk/contrib/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/contrib/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/engine/extension/use/RenderUnitProvider.java?rev=1661199&r1=1661198&r2=1661199&view=diff
==============================================================================
--- sling/trunk/contrib/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/engine/extension/use/RenderUnitProvider.java (original)
+++ sling/trunk/contrib/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/engine/extension/use/RenderUnitProvider.java Fri Feb 20 19:28:09 2015
@@ -21,6 +21,7 @@ package org.apache.sling.scripting.sight
import javax.script.Bindings;
+import org.apache.commons.lang.StringUtils;
import org.apache.felix.scr.annotations.Component;
import org.apache.felix.scr.annotations.Properties;
import org.apache.felix.scr.annotations.Property;
@@ -28,9 +29,9 @@ import org.apache.felix.scr.annotations.
import org.apache.felix.scr.annotations.Service;
import org.apache.sling.api.SlingHttpServletRequest;
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.scripting.sightly.ResourceResolution;
+import org.apache.sling.scripting.sightly.SightlyException;
import org.apache.sling.scripting.sightly.impl.engine.SightlyScriptEngineFactory;
import org.apache.sling.scripting.sightly.impl.engine.UnitLoader;
import org.apache.sling.scripting.sightly.impl.engine.runtime.RenderContextImpl;
@@ -68,16 +69,22 @@ public class RenderUnitProvider implemen
public ProviderOutcome provide(String identifier, RenderContext renderContext, Bindings arguments) {
if (identifier.endsWith("." + SightlyScriptEngineFactory.EXTENSION)) {
Bindings globalBindings = renderContext.getBindings();
- Resource renderUnitResource = locateResource(globalBindings, identifier, renderContext);
+ SlingHttpServletRequest request = (SlingHttpServletRequest) globalBindings.get(SlingBindings.REQUEST);
+ Resource resource = ResourceResolution.getResourceForRequest(renderContext.getScriptResourceResolver(), request);
+ Resource renderUnitResource = ResourceResolution.getResourceFromSearchPath(resource, identifier);
+ if (renderUnitResource == null) {
+ String resourceSuperType = resource.getResourceSuperType();
+ StringBuilder errorMessage = new StringBuilder("Cannot find resource ");
+ errorMessage.append(identifier).append(" for base path ").append(resource.getPath());
+ if (StringUtils.isNotEmpty(resourceSuperType)) {
+ errorMessage.append(" with resource super type ").append(resourceSuperType);
+ }
+ errorMessage.append(".");
+ return ProviderOutcome.failure(new SightlyException(errorMessage.toString()));
+ }
RenderUnit renderUnit = unitLoader.createUnit(renderUnitResource, globalBindings, (RenderContextImpl) renderContext);
return ProviderOutcome.success(renderUnit);
}
return ProviderOutcome.failure();
}
-
- private Resource locateResource(Bindings bindings, String script, RenderContext renderContext) {
- SlingHttpServletRequest request = (SlingHttpServletRequest) bindings.get(SlingBindings.REQUEST);
- Resource resource = ResourceResolution.getResourceForRequest(renderContext.getScriptResourceResolver(), request);
- return ResourceResolution.getResourceFromSearchPath(resource, script);
- }
}