Interface HippoBean

    • Field Detail

      • log

        static final org.slf4j.Logger log
    • Method Detail

      • getNode

        Node getNode()
        This returns the backing jcr node for this bean.
        Returns:
        the backing jcr node for this bean. null if the bean is detached
      • getName

        String getName()
        This returns the node name of the backing jcr node for this bean
        Returns:
        the node name of the backing jcr node. This method never returns null
      • getDisplayName

        String getDisplayName()
        Returns the display name of the backing jcr node for this bean as determined by its hippo:name property or the node name of the backing jcr node if no such property exists
        Returns:
        the display name of the backing jcr node for this bean as determined by its hippo:name property or the node name of the backing jcr node if no such proeprty exists
      • getContentType

        default String getContentType()
        Returns:
        the primary nodetype name of the backing JCR Node and null if no backing jcr node is found
      • getPath

        String getPath()
        This returns the absolute path of the backing jcr node for this bean, for example /documents/content/myprojec/news/article When the jcr node is virtual, it returns the virtual path.
        Returns:
        the absolute jcr path of the backing jcr node.
      • getComparePath

        default String getComparePath()
        Returns the canonical path
        Returns:
      • getCanonicalUUID

        String getCanonicalUUID()
        Returns the jcr uuid of the backing canonical (physical) jcr node or null when

        • there is no canonical node (for example this might be the case for faceted navigation folders)
        • the jcr node is detached
        • a repository exception happened

        For HippoDocumentBean's, the uuid of the handle might be more valuable, which you can get with HippoDocumentBean.getCanonicalHandleUUID().

        Returns:
        the jcr uuid of the backing canonical (physical) jcr node or null
        See Also:
        HippoDocumentBean.getCanonicalHandleUUID()
      • getCanonicalPath

        String getCanonicalPath()
        Returns the jcr path of the backing canonical (physical) jcr node or null when

        • there is no canonical node (for example this might be the case for faceted navigation folders)
        • the jcr node is detached
        • a repository exception happened

        For HippoDocumentBean's, the uuid of the handle might be more valuable, which you can get with HippoDocumentBean.getCanonicalHandleUUID().

        Returns:
        the jcr path of the backing canonical (physical) jcr node or null
        See Also:
        HippoDocumentBean.getCanonicalHandlePath()
      • getSingleProperty

        <T> T getSingleProperty​(String name)
        Returns the value of a document field which is marked as single. If the value is an array, then returns the first element.
        Type Parameters:
        T -
        Parameters:
        name - the name of the property
        Returns:
        The value of the property or null if it doesn't exist. Return types are String, Boolean, Long, Double or Calendar
      • getSingleProperty

        <T> T getSingleProperty​(String name,
                                T defaultValue)
        Returns the value of a document field which is marked as single. If the value is an array, then returns the first element.
        Type Parameters:
        T -
        Parameters:
        name - the name of the property
        Returns:
        The value of the property and defaultValue if it doesn't exist. Allowed return types are String, Boolean, Long, Double or Calendar
      • getMultipleProperty

        <T> T[] getMultipleProperty​(String name)
        Returns the value of a document field which is marked as multiple. If the value is not an array, then returns the value by creating an array.
        Type Parameters:
        T -
        Parameters:
        name - the name of the property
        Returns:
        The value of the property and null if it doesn't exist. Allowed return types are String[], Boolean[], Long[], Double[] or Calendar[]
      • getMultipleProperty

        <T> T[] getMultipleProperty​(String name,
                                    T[] defaultValue)
        Returns the value of a document field which is marked as multiple. If the value is not an array, then returns the value by creating an array.
        Type Parameters:
        T -
        Parameters:
        name - the name of the property
        Returns:
        The value of the property and defaultValue if it doesn't exist. Allowed return types are String[], Boolean[], Long[], Double[] or Calendar[]
      • getProperty

        Map<String,​Object> getProperty()
        Returns:
        Map of all properties, where the values can be of type String, String[], Boolean, Boolean[], Long, Long[], Double, Double[] or Calendar, Calendar[]
      • getBean

        <T> T getBean​(String relPath)
        This methods fetches a child HippoBean with the relative path relPath. A relPath is not allowed to start with a "/", as this is considered to be an absolute path. For example getBean("x/y") is a valid relative path. "../x" is also supported, but dis-encouraged as the "../" works directly on jcr level, which does not take the hippo:handle intermediate node into account in case of a HippoDocument bean. Always preferred to use is getParentBean() instead of using "../". In case of a HippoDocument kind of bean, the getParentBean() jumps to the parent of the handle, while ../ jumps to the handle, resulting in the exact same bean in case of a HippoDocument
        Parameters:
        relPath - a path that does not start with a "/"
        Returns:
        returns the HippoBean with relative path relPath to this bean, or null when it does not exist, or when the relPath is not a valid relative path
      • getBean

        <T extends HippoBean> T getBean​(String relPath,
                                        Class<T> beanMappingClass)
        Only if a bean found of type beanMappingClass, it is returned, and otherwise null is returned.
        Type Parameters:
        T -
        Parameters:
        relPath - a path that does not start with a "/"
        beanMappingClass - the class T that the child bean must inherit from
        Returns:
        returns the HippoBean of (sub)type beanMappingClass with relative path relPath to this bean, or null when it does not exist, is not of (sub)type beanMappingClass, or when the relPath is not a valid relative path
        See Also:
        getBean(String)
      • getChildBeans

        <T extends HippoBeanList<T> getChildBeans​(Class<T> beanMappingClass)

        Returns all the child beans as a List with elements of type T. When a child bean is found that is not of type beanMappingClass, it is skipped

        If you want all child beans that can be mapped to a HippoBean, just call List beans = getBeans(HippoBean.class);

        Type Parameters:
        T - the return type of the child bean
        Parameters:
        beanMappingClass - the class T that the child beans must inherit from
        Returns:
        List where the backing jcr nodes have the name childNodeName
      • getChildBeansByName

        <T> List<T> getChildBeansByName​(String childNodeName)
                                 throws ClassCastException
        Returns all the child beans of name childNodeName as a List with elements of type T. When a found bean is not of type T a ClassCastException is thrown.
        Type Parameters:
        T - the return type of the child bean
        Parameters:
        childNodeName -
        Returns:
        List where the backing jcr nodes have the name childNodeName
        Throws:
        ClassCastException
      • getChildBeansByName

        <T extends HippoBeanList<T> getChildBeansByName​(String childNodeName,
                                                          Class<T> beanMappingClass)

        Returns all the child beans of name childNodeName as a List with elements of type T. When a child bean is found that is not of type beanMappingClass, it is skipped

        If the beanMappingClass is null, it is ignored. Then, this method returns the same a getChildBeansByName(String) and can throw a ClassCastException

        Type Parameters:
        T - the return type of the child bean
        Parameters:
        childNodeName -
        beanMappingClass - the class T that the child beans must inherit from
        Returns:
        List where the backing jcr nodes have the name childNodeName
      • getChildBeans

        <T> List<T> getChildBeans​(String jcrPrimaryNodeType)
        Returns all the child beans of this bean, where the backing jcr node primary node type equals jcrPrimaryNodeType. If a jcr child node is of primary nodetype 'hippo:handle', we look whether the underlying 'Document' has the corresponding jcrPrimaryNodeType. If so, we return the bean for this 'Document'.
        Type Parameters:
        T - the return type of the List elements
        Parameters:
        jcrPrimaryNodeType - the primary type the child beans should inherit from
        Returns:
        List where the backing jcr nodes are of type jcrPrimaryNodeType
      • getLinkedBean

        <T extends HippoBean> T getLinkedBean​(String relPath,
                                              Class<T> beanMappingClass)

        This method returns the HippoBean linked by relPath of type beanMappingClass. It returns a HippoBean if and only if

        1. relPath points to a node of (sub)type hippo:mirror or of (sub)type hippo:facetselect
        2. the hippo:docbase of the mirror points to an existing node that results in a HippoBean of type beanMappingClass
        In all other case, null is returned.
        Type Parameters:
        T - the expected type of the linked bean
        Parameters:
        relPath - (path not starting with a "/")
        beanMappingClass - the expected class of the linked bean
        Returns:
        The linked HippoBean or null
      • getBeanByUUID

        <T extends HippoBean> T getBeanByUUID​(String uuid,
                                              Class<T> beanMappingClass)
        Type Parameters:
        T - the type of the returned bean
        Parameters:
        uuid - the uuid of the node for which to get the HippoBean
        beanMappingClass - the expected class of the linked bean
        Returns:
        The HippoBean of type T for uuid or null if no node for uuid found or not of correct type
      • getParentBean

        HippoBean getParentBean()
        Returns the parent bean wrt this bean. Note that this does not automatically imply a bean with the parent jcr node of this bean. When the parent node is of type "hippo:handle", the parent of the handle must be taken
        Returns:
        the parent bean wrt this bean, or if this bean backing jcr node is null or object converter cannot create a bean for the parent, return null
      • getCanonicalBean

        <T extends HippoBean> T getCanonicalBean()
        Returns the canonical version of the current HippoBean or null in case that the backing Node is pure virtual, which is the case for example for some faceted navigation nodes. When an exception happens null can be returned
        Type Parameters:
        T -
        Returns:
        the canonical version of the current HippoBean or null in case that the backing Node is pure virtual or when some exception happened
      • isHippoDocumentBean

        boolean isHippoDocumentBean()
        Returns:
        true is this HippoBean is an instanceof HippoDocumentBean
      • isHippoFolderBean

        boolean isHippoFolderBean()
        Returns:
        true is this HippoBean is an instanceof HippoFolderBean
      • isLeaf

        boolean isLeaf()
        Returns:
        true when the backing jcr Node has no child nodes
      • isAncestor

        boolean isAncestor​(HippoBean compare)
        Returns true when this HippoBean is an ancestor of the compare HippoBean. Note that this is done by the jcr path of the backing jcr node. In case of a virtual node, the virtual path is taken.
        Parameters:
        compare -
        Returns:
        true when this HippoBean is an ancestor of the compare HippoBean.
      • isDescendant

        boolean isDescendant​(HippoBean compare)
        Returns true when this HippoBean is an descendant of the compare HippoBean. Note that this is done by the jcr path of the backing jcr node. In case of a virtual node, the virtual path is taken. This means, that although the canonical nodes of the backing jcr nodes might return true for this method, this does not automatically holds for the beans of the virtual nodes.
        Parameters:
        compare -
        Returns:
        true when this HippoBean is an descendant of the compare HippoBean.
      • isSelf

        boolean isSelf​(HippoBean compare)
        Returns true when this HippoBean has a underlying jcr node with the same jcr path as the compare HippoBean. This means, that two HippoBeans might have the same canonical underlying jcr node, but do not return true because their virtual node might have different jcr paths.
        Parameters:
        compare -
        Returns:
        Returns true when this HippoBean has the same underlying jcr node path as the compare HippoBean.
      • equalCompare

        boolean equalCompare​(Object compare)
        A convenience method capable of comparing two HippoBean instances for you for the underlying jcr node. When the nodes being compared have the same canonical node (physical equivalence) this method returns true. If there is no canonical node the virtual jcr path is used to compare the items: if these paths are the same, true is returned Note: this method compares the jcr path of the backing canonical jcr nodes. All implementing classes override Object.equals(Object) to compare the jcr node path, which might be a virtual path. So this method can return true while Object.equals(Object) returns false
        Parameters:
        compare - the object to compare to
        Returns:
        true if the object compared has the same canonical node or the same virtual path when they don't have a canonical
      • getEqualComparator

        Map<Object,​Object> getEqualComparator()
        A convenience method capable of comparing two HippoBean instances for you for the underlying jcr node. When the nodes being compared have the same canonical node (physical equivalence) the get(Object o) returns true. In expression language, for example jsp, you can use to compare as follows: ${mydocument.equalComparator[otherdocument]} returns true when mydocument and otherdocument have the same canonical node If there is no canonical node the virtual jcr path is used to compare the items: if these paths are the same, true is returned Note: this method compares the jcr path of the backing canonical jcr nodes. All implementing classes override Object.equals(Object) to compare the jcr node path, which might be a virtual path. So this method can return true while Object.equals(Object) returns false
        Returns:
        a ComparatorMap in which you can compare HippoBeans via the get(Object o)
      • isVersionedNode

        boolean isVersionedNode()
        Returns:
        true if the backing node from getNode() is a versioned node