Sling resource types have their own super type hierarchy. Using jcr node types 
if no sling:resourceType is specified was added as a fallback for cases where 
it is impractical to set a sling:resourceType. But it does not take into 
account the node type hierarchy, I think because it would simply be too 
complex, since you then have to look at two hierarchies.

I would use sling resource types as much as possible over node types, since 
they are a lot more flexible.

HTH,
Alex

On 11.09.2014, at 14:54, Jason E Bailey <[email protected]> wrote:

> I understand the difference between the Sling Resource Type and the JCR
> Node type. However the resource.isResourceType is not specifically
> dealing with one or the other. If I had a resource of a node with a
> primaryNodeType of nt:file then doing resource.isResourceType("nt:file")
> would return true. 
> 
> I had to dig through the code to see what was going on. 
> 
> The basic idea is that calling resource.getResourceType() will return
> the sling:resourceType and if that's not there then it will return the
> jcr:primaryType. When calling "isResourceType" it will compare against
> the resource.getResourceType() and if that's not a match will march of
> the chain of getSuperResourceType looking for a match, and that matches
> only against the sling:resourceType.
> 
> I can sorta see where that's useful from a script resolution point of
> view. I find it odd overall as it's missing out on a section of
> inheritance. It's like having a java instanceof operator ignoring
> interfaces. 
> 
> -- 
>  Jason
> 
> On Wed, Sep 10, 2014, at 01:13 PM, Paul McMahon wrote:
>> There isn't necessarily a mapping between Sling Resource Type and the JCR
>> Node type. The sling resource type is determined based on the value or
>> the sling:resourceType property on the node, where as the JCR Node type
>> is determined based on jcr:primaryType value. In most cases nodes of
>> sling:resourceType will always be the same jcr:primaryType, but technical
>> that isn't a requirement. In  reality there are most jcr:primaryTypes map
>> to many different sling:resourceType (or no sling resource type). 
>> 
>> 
>> Paul McMahon
>> Acquity Group, Part of Accenture Interactive
>> 
>> 
>> On Wednesday, September 10, 2014 9:56 AM, Jason E Bailey
>> <[email protected]> wrote:
>> 
>> 
>> 
>> Lets say I have a node of type sling:Folder.
>> 
>> 
>> 
>> Calling
>> 
>> node.isNodeType("nt:folder")
>> 
>> will return true, since sling:Folder extends nt:folder
>> 
>> 
>> 
>> However
>> 
>> resource.isResourceType("nt:folder")
>> 
>> will return false. I'm assuming since it's attempting to
>> resolve up the resource heirarchy(?)
>> 
>> 
>> 
>> My question, is there a Foo utility to determine if a given
>> resource is of a particular type via the node definition?
>> 
>> 
>> 
>> TIA.
>> 
>> --
>> Jason E Bailey

Reply via email to