Class SilverpeasRepository

  • All Implemented Interfaces:
    javax.jcr.Repository
    Direct Known Subclasses:
    OakRepository

    public class SilverpeasRepository
    extends Object
    implements javax.jcr.Repository
    Implementation of the Repository in Silverpeas. The SilverpeasRepository objects are created by a SilverpeasRepositoryFactory instance.

    It is in fact a wrapper of the actual Repository object used to access the JCR with the goal to wrap the login/logout operations in order to implement a reentrant JCR session. Indeed, in Silverpeas several accesses to the JCR can be performed within a single flow of treatment (and hence a single thread) and these accesses can be asked by independent services. As these services don't know what it was done out of their own scope, they cannot know whether a session has been already opened with the JCR and hence ask for their own use to open a session. In order to avoid inter-blocking and interleaving session, a mechanism of reentrant session is implemented in Silverpeas with the aim to reuse an opened session within the same single thread.

    So, when a call to a login method is performed, the first thing the method does is to check a session is already opened. In this case, this session is just returned, otherwise a true login is performed driving to the creation and the opening of a new session to the workspace of the repository (in Silverpeas, there is only one workspace).

    Author:
    mmoquillon
    • Field Summary

      • Fields inherited from interface javax.jcr.Repository

        IDENTIFIER_STABILITY, IDENTIFIER_STABILITY_INDEFINITE_DURATION, IDENTIFIER_STABILITY_METHOD_DURATION, IDENTIFIER_STABILITY_SAVE_DURATION, IDENTIFIER_STABILITY_SESSION_DURATION, LEVEL_1_SUPPORTED, LEVEL_2_SUPPORTED, NODE_TYPE_MANAGEMENT_AUTOCREATED_DEFINITIONS_SUPPORTED, NODE_TYPE_MANAGEMENT_INHERITANCE, NODE_TYPE_MANAGEMENT_INHERITANCE_MINIMAL, NODE_TYPE_MANAGEMENT_INHERITANCE_MULTIPLE, NODE_TYPE_MANAGEMENT_INHERITANCE_SINGLE, NODE_TYPE_MANAGEMENT_MULTIPLE_BINARY_PROPERTIES_SUPPORTED, NODE_TYPE_MANAGEMENT_MULTIVALUED_PROPERTIES_SUPPORTED, NODE_TYPE_MANAGEMENT_ORDERABLE_CHILD_NODES_SUPPORTED, NODE_TYPE_MANAGEMENT_OVERRIDES_SUPPORTED, NODE_TYPE_MANAGEMENT_PRIMARY_ITEM_NAME_SUPPORTED, NODE_TYPE_MANAGEMENT_PROPERTY_TYPES, NODE_TYPE_MANAGEMENT_RESIDUAL_DEFINITIONS_SUPPORTED, NODE_TYPE_MANAGEMENT_SAME_NAME_SIBLINGS_SUPPORTED, NODE_TYPE_MANAGEMENT_UPDATE_IN_USE_SUPORTED, NODE_TYPE_MANAGEMENT_VALUE_CONSTRAINTS_SUPPORTED, OPTION_ACCESS_CONTROL_SUPPORTED, OPTION_ACTIVITIES_SUPPORTED, OPTION_BASELINES_SUPPORTED, OPTION_JOURNALED_OBSERVATION_SUPPORTED, OPTION_LIFECYCLE_SUPPORTED, OPTION_LOCKING_SUPPORTED, OPTION_NODE_AND_PROPERTY_WITH_SAME_NAME_SUPPORTED, OPTION_NODE_TYPE_MANAGEMENT_SUPPORTED, OPTION_OBSERVATION_SUPPORTED, OPTION_QUERY_SQL_SUPPORTED, OPTION_RETENTION_SUPPORTED, OPTION_SHAREABLE_NODES_SUPPORTED, OPTION_SIMPLE_VERSIONING_SUPPORTED, OPTION_TRANSACTIONS_SUPPORTED, OPTION_UNFILED_CONTENT_SUPPORTED, OPTION_UPDATE_MIXIN_NODE_TYPES_SUPPORTED, OPTION_UPDATE_PRIMARY_NODE_TYPE_SUPPORTED, OPTION_VERSIONING_SUPPORTED, OPTION_WORKSPACE_MANAGEMENT_SUPPORTED, OPTION_XML_EXPORT_SUPPORTED, OPTION_XML_IMPORT_SUPPORTED, QUERY_FULL_TEXT_SEARCH_SUPPORTED, QUERY_JOINS, QUERY_JOINS_INNER, QUERY_JOINS_INNER_OUTER, QUERY_JOINS_NONE, QUERY_LANGUAGES, QUERY_STORED_QUERIES_SUPPORTED, QUERY_XPATH_DOC_ORDER, QUERY_XPATH_POS_INDEX, REP_NAME_DESC, REP_VENDOR_DESC, REP_VENDOR_URL_DESC, REP_VERSION_DESC, SPEC_NAME_DESC, SPEC_VERSION_DESC, WRITE_SUPPORTED
    • Constructor Detail

      • SilverpeasRepository

        protected SilverpeasRepository​(javax.jcr.Repository repository)
        Constructor to be used only by wrap(Repository) or by any subclasses of SilverpeasRepository.
        Parameters:
        repository - the JCR repository to wrap.
    • Method Detail

      • getDescriptorKeys

        public String[] getDescriptorKeys()
        Specified by:
        getDescriptorKeys in interface javax.jcr.Repository
      • isStandardDescriptor

        public boolean isStandardDescriptor​(String key)
        Specified by:
        isStandardDescriptor in interface javax.jcr.Repository
      • isSingleValueDescriptor

        public boolean isSingleValueDescriptor​(String key)
        Specified by:
        isSingleValueDescriptor in interface javax.jcr.Repository
      • getDescriptorValue

        public javax.jcr.Value getDescriptorValue​(String key)
        Specified by:
        getDescriptorValue in interface javax.jcr.Repository
      • getDescriptorValues

        public javax.jcr.Value[] getDescriptorValues​(String key)
        Specified by:
        getDescriptorValues in interface javax.jcr.Repository
      • getDescriptor

        public String getDescriptor​(String key)
        Specified by:
        getDescriptor in interface javax.jcr.Repository
      • login

        public JCRSession login​(javax.jcr.Credentials credentials,
                                String workspaceName)
                         throws javax.jcr.RepositoryException
        Specified by:
        login in interface javax.jcr.Repository
        Throws:
        javax.jcr.RepositoryException
      • login

        public JCRSession login​(javax.jcr.Credentials credentials)
                         throws javax.jcr.RepositoryException
        Specified by:
        login in interface javax.jcr.Repository
        Throws:
        javax.jcr.RepositoryException
      • login

        public JCRSession login​(String workspaceName)
                         throws javax.jcr.RepositoryException
        Specified by:
        login in interface javax.jcr.Repository
        Throws:
        javax.jcr.RepositoryException
      • login

        public JCRSession login()
                         throws javax.jcr.RepositoryException
        Specified by:
        login in interface javax.jcr.Repository
        Throws:
        javax.jcr.RepositoryException
      • getRepository

        protected javax.jcr.Repository getRepository()
        Gets the wrapped repository.
        Returns:
        the JCR repository used in Silverpeas.