Hi,

as described we are using sling with an object mapper.

------------------------------------------------
wall (sling:resourceType = "wall")
|
|--> brickgroup1 (sling:resourceType = "brickgroup")
|         |
|         |--> brick11 (sling:resourceType = "statichtmlbrick")
|         |--> brick12 (sling:resourceType = "contentbrick")
|         |--> brick13 (sling:resourceType = "contentbrick")
|
|--> brickgroup2 (sling:resourceType = "brickgroup")
         |
         |--> brick21 (sling:resourceType = "contentbrick")
         |--> brick22 (sling:resourceType = "contentbrick")
         |--> brick23 (sling:resourceType = "statichtmlbrick")
------------------------------------------------

If we include other scripts to a script, we always use
----
sling.include(brickgroup.getPath());
----

inside the script, we adapt resource to our class with an AdapterFactory.


This means, the node has always to be retrieved and mapped again by the OR mapper.


So i am wondering if it could be useful to have a new include method on SlingHelper to handle

public void include(Resource resource, RequestDispatcherOptions options) {
// doing similar than other includes, but with resource
}


And than i could create a PojoSyntheticResource and include directly in the script. Benefit its already resolved and mapped....
example:

sling.include(new PojoSyntheticResource(brickgroup));

-------------------------
public class PojoSyntheticResource extends SyntheticResource {


   Base base;

public PojoSyntheticResource(ResourceResolver resourceResolver, Base base) {
       this(resourceResolver, base.getPath(), base.getResourceType());
       this.base = base;
   }

   /**
    * Creates a synthetic resource with the given <code>path</code> and
    * <code>resourceType</code>.
    */
protected PojoSyntheticResource(ResourceResolver resourceResolver, String path, String resourceType) {
       super(resourceResolver, path, resourceType);
   }

   @Override
   public <Type> Type adaptTo(Class<Type> type) {
       if (Base.class.isAssignableFrom(type)) {
           return (Type) base;
       }
       return null;
   }
}

-------------------------------------


Do you like to have an scriptHelper method like this ? than i would open an jira issue. Or do you any other suggestions ?



Markus

Reply via email to