You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by cz...@apache.org on 2010/04/06 11:09:30 UTC
svn commit: r931058 -
/sling/trunk/bundles/scripting/core/src/main/java/org/apache/sling/scripting/core/impl/DefaultSlingScript.java
Author: cziegeler
Date: Tue Apr 6 09:09:30 2010
New Revision: 931058
URL: http://svn.apache.org/viewvc?rev=931058&view=rev
Log:
SLING-1473 : Resolve script resource lazy
Modified:
sling/trunk/bundles/scripting/core/src/main/java/org/apache/sling/scripting/core/impl/DefaultSlingScript.java
Modified: sling/trunk/bundles/scripting/core/src/main/java/org/apache/sling/scripting/core/impl/DefaultSlingScript.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/scripting/core/src/main/java/org/apache/sling/scripting/core/impl/DefaultSlingScript.java?rev=931058&r1=931057&r2=931058&view=diff
==============================================================================
--- sling/trunk/bundles/scripting/core/src/main/java/org/apache/sling/scripting/core/impl/DefaultSlingScript.java (original)
+++ sling/trunk/bundles/scripting/core/src/main/java/org/apache/sling/scripting/core/impl/DefaultSlingScript.java Tue Apr 6 09:09:30 2010
@@ -143,11 +143,8 @@ class DefaultSlingScript implements Slin
// if we don't have a request resolver we directly return the script resource
return scriptResource;
}
- Resource rsrc = resolver.getResource(this.scriptName);
- if ( rsrc == null ) {
- rsrc = new SyntheticResource(resolver, this.scriptName, this.scriptResource.getResourceType());
- }
- return rsrc;
+ return new LazyScriptResource(this.scriptName,
+ this.scriptResource.getResourceType(), resolver);
}
/**
@@ -669,4 +666,77 @@ class DefaultSlingScript implements Slin
}
}
+
+ /**
+ * This is a lazy implementation of the script resource which
+ * just returns the path, resource type and resource resolver directly.
+ */
+ private static final class LazyScriptResource implements Resource {
+
+ private final String path;
+
+ private final String resourceType;
+
+ private final ResourceResolver resolver;
+
+ private Resource delegatee;
+
+ public LazyScriptResource(final String path, final String resourceType, final ResourceResolver resolver) {
+ this.path = path;
+ this.resourceType = resourceType;
+ this.resolver = resolver;
+ }
+
+ /**
+ * @see org.apache.sling.api.resource.Resource#getPath()
+ */
+ public String getPath() {
+ return this.path;
+ }
+
+ /**
+ * @see org.apache.sling.api.resource.Resource#getResourceType()
+ */
+ public String getResourceType() {
+ return this.resourceType;
+ }
+
+ /**
+ * @see org.apache.sling.api.resource.Resource#getResourceResolver()
+ */
+ public ResourceResolver getResourceResolver() {
+ return this.resolver;
+ }
+
+ private Resource getResource() {
+ if ( this.delegatee == null ) {
+ this.delegatee = this.resolver.getResource(this.path);
+ if ( this.delegatee == null ) {
+ this.delegatee = new SyntheticResource(resolver, this.path, this.resourceType);
+ }
+ }
+ return this.delegatee;
+ }
+
+ /**
+ * @see org.apache.sling.api.resource.Resource#getResourceMetadata()
+ */
+ public ResourceMetadata getResourceMetadata() {
+ return this.getResource().getResourceMetadata();
+ }
+
+ /**
+ * @see org.apache.sling.api.resource.Resource#getResourceSuperType()
+ */
+ public String getResourceSuperType() {
+ return this.getResource().getResourceSuperType();
+ }
+
+ /**
+ * @see org.apache.sling.api.adapter.Adaptable#adaptTo(java.lang.Class)
+ */
+ public <AdapterType> AdapterType adaptTo(Class<AdapterType> type) {
+ return this.getResource().adaptTo(type);
+ }
+ }
}
\ No newline at end of file