Interface HippoSession

All Superinterfaces:
Session

public interface HippoSession extends Session
An extension of a plain Session based session. Any JCR Session obtained from the Hippo Repository also implements HippoSession allowing access to the extensions to the JCR API.
  • Method Details

    • copy

      Node copy(Node srcNode, String destAbsNodePath) throws RepositoryException
      Convenience function to copy a node to a destination path in the same workspace. Unlike the copy method in the javax.jcr.Workspace class, this copy method does not immediately persist (i.e. requires a save operation on the session, or ancestor node of the destination path) and it does return the produced copy. The latter makes this the preferred method to copy a node as the method on the Workspace makes it impossible to know for sure which node is produced in case of same-name siblings. It also provides a save method for copying node types that are extensions of the Hippo repository.
      Parameters:
      srcNode - the node to copy
      destAbsNodePath - the absolute path of the to be created target node which will be a copy of srcNode
      Returns:
      the resulting copy
      Throws:
      RepositoryException - a generic error while accessing the repository
    • pendingChanges

      NodeIterator pendingChanges(Node node, String nodeType, boolean prune) throws NamespaceException, NoSuchNodeTypeException, RepositoryException
      Obtains an iterator over the set of nodes that potentially contain changes, starting (and not including) the indicated node. Only nodes for which Node.isNodeType(nodeType) returns true are included in the resulting set. If the prune boolean value is true, then the nodes matching in the hierarchy first are returned. If matching modified node exists beneath the nodes, these are not included.
      Parameters:
      node - The starting node for which to look for changes, will not be included in result, may be null to indicate to search whole tree
      nodeType - Only nodes that are (derived) of this nodeType are included in the result, may be null to indicate no filtering on nodeType
      prune - Wheter only to return the first matching modified node in a subtree (true), or provide a depth search for all modified nodes (false)
      Returns:
      A NodeIterator instance which iterates over all modified nodes, not including the passed node
      Throws:
      NamespaceException - an invalid nodeType was passed
      RepositoryException - a generic error while accessing the repository
      NoSuchNodeTypeException - an invalid nodeType was passed
    • pendingChanges

      Conveniance method for pendingChanges(node,nodeType,false)
      Parameters:
      node - The starting node for which to look for changes, will not be included in result, may be null to indicate to search whole tree
      nodeType - Only nodes that are (derived) of this nodeType are included in the result, may be null to indicate no filtering on nodeType
      Returns:
      A NodeIterator instance which iterates over all modified nodes, not including the passed node
      Throws:
      NamespaceException - an invalid nodeType was passed
      RepositoryException - a generic error while accessing the repository
      NoSuchNodeTypeException - an invalid nodeType was passed
      See Also:
    • pendingChanges

      NodeIterator pendingChanges() throws RepositoryException
      Largely a conveniance method for pendingChanges(Session.getRootNode(), "nt:base", false) however will also return the root node if modified.
      Returns:
      A NodeIterator instance which iterates over all modified nodes, including the root
      Throws:
      RepositoryException
      See Also:
    • exportDereferencedView

      void exportDereferencedView(String absPath, OutputStream out, boolean binaryAsLink, boolean noRecurse) throws IOException, PathNotFoundException, RepositoryException
      Export a dereferenced view of a node.
      Parameters:
      absPath - the absolute path to the subtree to be exported
      out - the output stream to which the resulting XML should be outputted
      binaryAsLink - whether to include binaries
      noRecurse - whether to output just a single node or the whole subtree
      Throws:
      IOException - in case of an error writing to the output stream
      RepositoryException - a generic error while accessing the repository
      PathNotFoundException - in case the absPath parameter does not point to a valid node
      See Also:
    • exportDereferencedView

      void exportDereferencedView(String absPath, ContentHandler contentHandler, boolean binaryAsLink, boolean noRecurse) throws PathNotFoundException, SAXException, RepositoryException
      Export a dereferenced view of a node.
      Parameters:
      absPath - the absolute path to the subtree to be exported
      contentHandler - The org.xml.sax.ContentHandler to which the SAX events representing the XML serialization of the subgraph will be output.
      binaryAsLink - whether to include binaries
      noRecurse - whether to output just a single node or the whole subtree
      Throws:
      RepositoryException - a generic error while accessing the repository
      PathNotFoundException - in case the absPath parameter does not point to a valid node
      SAXException
      See Also:
    • importEnhancedSystemViewXML

      ImportResult importEnhancedSystemViewXML(String parentAbsPath, InputStream in, int uuidBehavior, int referenceBehavior, ContentResourceLoader referredResourceLoader) throws IOException, RepositoryException
      Import an enhanced system view xml file.
      Parameters:
      parentAbsPath - the parent node below which to in
      in - the input stream from which to read the XML
      uuidBehavior - how to handle deserialized UUIDs in the input stream ImportUUIDBehavior
      referenceBehavior - an options flag containing one of the values of ImportReferenceBehavior indicating how to handle references
      referredResourceLoader - the content resouce loader to load the referred imported content resources
      Throws:
      IOException - if incoming stream is not a valid XML document.
      RepositoryException - a generic error while accessing the repository
      See Also:
    • exportEnhancedSystemViewPackage

      File exportEnhancedSystemViewPackage(String parentAbsPath, boolean recurse) throws IOException, RepositoryException
      Throws:
      IOException
      RepositoryException
    • getXAResource

      XAResource getXAResource()
      Retrieves an XAResource object that the transaction manager will use to manage this XASession object's participation in a distributed transaction.
      Returns:
      the XAResource object.
    • getSessionClassLoader

      ClassLoader getSessionClassLoader() throws RepositoryException
      This call is not (yet) part of the API, but under evaluation. Probably it will change into getSessionClassLoader(Node) or similar. Get a classloader which uses the JCR repository to load the classes from.
      Returns:
      a classloader instance that will load class definitions stored in the JCR repository
      Throws:
      RepositoryException - a generic error while accessing the repository
    • isSystemSession

      boolean isSystemSession()
      If this is a JCR System Session, having all privileges everywhere.

      For a JCR System Session isUserInRole(String) and Session.hasPermission(String, String) will always return true!

      This should NOT be confused with User.isSystemUser() which indicates a required and non-human type of user necessary for the running system itself.

      A JCR System Session also does NOT have a User representation and calling getUser() for a JCR Session Session will result in a ItemNotFoundException!

      Returns:
      true if this a JCR System Session, having all privileges everywhere.
    • getUser

      Get the User object identified by this session's user id.
      Returns:
      the User object identified by this session's user id.
      Throws:
      ItemNotFoundException - when {isSystemSession()} returns true
    • isUserInRole

      boolean isUserInRole(String userRoleName)
      Check if a user has the specified userRole assigned, or is implied by one of the userRoles assigned.

      For a isSystemSession() this always returns true.

      Parameters:
      userRoleName - the user role name to check
      Returns:
      true if the user has the specified directly or indirectly assigned
    • createSecurityDelegate

      Session createSecurityDelegate(Session session, DomainRuleExtension... domainExtensions) throws RepositoryException
      Create a new Session that contains the union of access control rules of this Session and the provided session, with the optional addition of custom domain rules. Those rules will be added to existing domain rules, imposing additional restrictions on the session.
      Throws:
      RepositoryException
    • localRefresh

      void localRefresh()
      This method discards all pending changes currently recorded in this Session, including the built-up virtual node states. The difference with Session.refresh(boolean) is that after this method returns, the state of the items is not guaranteed to reflect the current persistent storage because in a clustered environment, the cluster node is not synced as a result of this call.
    • disableVirtualLayers

      void disableVirtualLayers()
      Disable virtual layers.
    • getWorkspace

      HippoWorkspace getWorkspace()
      Convenient return type override for getting the HippoWorkspace without needing to typecast
      Specified by:
      getWorkspace in interface Session
      Returns:
      HippoWorkspace