Class AbstractSlingRepository2
- All Implemented Interfaces:
Repository,SlingRepository
AbstractSlingRepository2 is an abstract implementation of
the SlingRepository version 2.3 interface (phasing
loginAdministrative(String) out in favor of
loginService(String, String)) which provides default support for
attached repositories.
Implementations of the SlingRepository interface may wish to
extend this class to benefit from default implementations of most methods.
To be able to know the calling bundle to implement the
loginService(String, String) method the bundle using the repository
service has to be provided in the
constructor.
The premise of this abstract class is that an instance of an implementation
of this abstract class is handed out to each consumer of the
SlingRepository service. Each instance is generally based on the same
delegated repository instance.- Since:
- API version 2.4 (bundle version 2.3)
- See Also:
-
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 -
Method Summary
Modifier and TypeMethodDescriptionfinal StringReturns the default workspace to login to if any of theloginandcreateSessionmethods is called without an explicit workspace name.getDescriptor(String name) A convenience method.String[]Returns a string array holding all descriptor keys available for this implementation, both the standard descriptors defined by the string constants in this interface and any implementation-specific descriptors.getDescriptorValue(String key) The value of a single-value descriptor is found by passing the key for that descriptor to this method.Value[]The value array of a multi-value descriptor is found by passing the key for that descriptor to this method.impersonateFromService(String subServiceName, Credentials credentials, String workspaceName) Default implementation of theimpersonateFromService(String, Credentials, String)method taking into account the bundle calling this method.booleanReturnstrueifkeyis a valid single-value descriptor; otherwise returnsfalse.booleanReturnstrueifkeyis a standard descriptor defined by the string constants in this interface andfalseif it is either a valid implementation-specific key or not a valid key.login()Same as callinglogin(null, null).Same as callinglogin(null, workspace).login(Credentials credentials) Same as callinglogin(credentials, null).login(Credentials credentials, String workspace) Logs into the repository at the givenworkspacewith the givencredentialsand returns the session returned from the repository.final SessionloginAdministrative(String workspace) Login as an administrative user.final SessionloginService(String subServiceName, String workspace) Actual implementation of theloginService(String, String)method taking into account the bundle calling this method.
-
Method Details
-
getDefaultWorkspace
Returns the default workspace to login to if any of theloginandcreateSessionmethods is called without an explicit workspace name.This method may return
nullin which case the actual default workspace used depends on the underlying JCR Repository implementation.- Specified by:
getDefaultWorkspacein interfaceSlingRepository- Returns:
- null if the configured default workspace name is empty, SLING-256
-
login
Same as callinglogin(null, null).This method may be overwritten.
- Specified by:
loginin interfaceRepository- Returns:
- the result of calling
login(null, null). - Throws:
LoginException- If login is not possibleRepositoryException- If another error occurrs during login- See Also:
-
login
Same as callinglogin(credentials, null).This method may be overwritten.
- Specified by:
loginin interfaceRepository- Parameters:
credentials- TheCredentialsto use to login.- Returns:
- the result of calling
login(credentials, null). - Throws:
LoginException- If login is not possibleRepositoryException- If another error occurrs during login- See Also:
-
login
public Session login(String workspace) throws LoginException, NoSuchWorkspaceException, RepositoryException Same as callinglogin(null, workspace).This method may be overwritten.
- Specified by:
loginin interfaceRepository- Parameters:
workspace- The workspace to access ornullto access thedefault workspace- Returns:
- the result of calling
login(null, workspace). - Throws:
LoginException- If login is not possibleRepositoryException- If another error occurrs during loginNoSuchWorkspaceException- if the specifiedworkspaceNameis not recognized.- See Also:
-
login
public Session login(Credentials credentials, String workspace) throws LoginException, NoSuchWorkspaceException, RepositoryException Logs into the repository at the givenworkspacewith the givencredentialsand returns the session returned from the repository.This method logs in as a guest if
nullcredentials are provided. The method may be overwritten to implement a different behaviour as indicated by the JCR specification for this method to use external mechanisms to login instead of leveraging provided credentials.This method may be overwritten.
- Specified by:
loginin interfaceRepository- Parameters:
credentials- TheCredentialsto use to login. If this isnullJCRGuestCredentialsare used to login.workspace- The workspace to access ornullto access thedefault workspace- Returns:
- a valid session for the user to access the repository.
- Throws:
LoginException- If login is not possibleNoSuchWorkspaceException- if the desired workspace is not availableRepositoryException- If another error occurrs during login
-
loginService
public final Session loginService(String subServiceName, String workspace) throws LoginException, RepositoryException Actual implementation of theloginService(String, String)method taking into account the bundle calling this method. This method uses theServiceUserMapperservice to map the named service to a user and then calls thecreateServiceSession(String, String)method actually create a session for that user.- Specified by:
loginServicein interfaceSlingRepository- Parameters:
subServiceName- An optional subService identifier (may benull)workspace- The workspace to access ornullto access thedefault workspace- Returns:
- A session authenticated with the service user
- Throws:
LoginException- if the service name cannot be derived or if logging is as the user to which the service name maps is not allowedRepositoryException- If a general error occurs while creating the session- See Also:
-
impersonateFromService
public Session impersonateFromService(String subServiceName, Credentials credentials, String workspaceName) throws LoginException, RepositoryException Default implementation of theimpersonateFromService(String, Credentials, String)method taking into account the bundle calling this method. This method uses theServiceUserMapperservice to map the named service to a user and then calls thecreateServiceSession(String, String)method actually create a session for that user. This service session is then impersonated to the subject identified by the specifiedcredentials.- Specified by:
impersonateFromServicein interfaceSlingRepository- Parameters:
subServiceName- An optional subService identifier (may benull)credentials- A valid non-nullCredentialsobjectworkspaceName- The workspace to access ornullto access thedefault workspace- Returns:
- a new
Sessionobject - Throws:
LoginException- If the current session does not have sufficient access to perform the operation.RepositoryException- If another error occurs.- Since:
- 2.4
-
loginAdministrative
Login as an administrative user. This method is deprecated and its use can be completely disabled by settingdisableLoginAdministrativetotrue.This implementation cannot be overwritten but, unless disabled, forwards to the
createAdministrativeSession(String)method.- Specified by:
loginAdministrativein interfaceSlingRepository- Parameters:
workspace- The workspace to access ornullto access thedefault workspace- Returns:
- An administrative session
- Throws:
RepositoryException- If the login fails or has been disabled
-
getDescriptor
Description copied from interface:RepositoryA convenience method. The call
String s = repository.getDescriptor(key);is equivalent to
Value v = repository.getDescriptorValue(key);
String s = (v == null) ? null : v.getString();- Specified by:
getDescriptorin interfaceRepository- Parameters:
name- a descriptor key.- Returns:
- a descriptor value in string form.
-
getDescriptorKeys
Description copied from interface:RepositoryReturns a string array holding all descriptor keys available for this implementation, both the standard descriptors defined by the string constants in this interface and any implementation-specific descriptors. Used in conjunction withRepository.getDescriptorValue(String key)andRepository.getDescriptorValues(String key)to query information about this repository implementation.- Specified by:
getDescriptorKeysin interfaceRepository- Returns:
- a string array holding all descriptor keys.
-
getDescriptorValue
Description copied from interface:RepositoryThe value of a single-value descriptor is found by passing the key for that descriptor to this method. Ifkeyis the key of a multi-value descriptor or not a valid key this method returnsnull.- Specified by:
getDescriptorValuein interfaceRepository- Parameters:
key- a descriptor key.- Returns:
- The value of the indicated descriptor
-
getDescriptorValues
Description copied from interface:RepositoryThe value array of a multi-value descriptor is found by passing the key for that descriptor to this method. Ifkeyis the key of a single-value descriptor then this method returns that value as an array of size one. Ifkeyis not a valid key this method returnsnull.- Specified by:
getDescriptorValuesin interfaceRepository- Parameters:
key- a descriptor key.- Returns:
- the value array for the indicated descriptor
-
isSingleValueDescriptor
Description copied from interface:RepositoryReturnstrueifkeyis a valid single-value descriptor; otherwise returnsfalse.- Specified by:
isSingleValueDescriptorin interfaceRepository- Parameters:
key- a descriptor key.- Returns:
- whether the specified desdfriptor is multi-valued.
-
isStandardDescriptor
Description copied from interface:RepositoryReturnstrueifkeyis a standard descriptor defined by the string constants in this interface andfalseif it is either a valid implementation-specific key or not a valid key.- Specified by:
isStandardDescriptorin interfaceRepository- Parameters:
key- a descriptor key.- Returns:
- whether
keyis a standard descriptor.
-