Package org.apache.sling.jcr.oak.server.internal

## Class TcclWrappingJackrabbitRepository

- java.lang.Object
- - org.apache.sling.jcr.oak.server.internal.TcclWrappingJackrabbitRepository

All Implemented Interfaces:
  `javax.jcr.Repository`, `org.apache.jackrabbit.api.JackrabbitRepository`

    public class TcclWrappingJackrabbitRepository
    extends Object
    implements org.apache.jackrabbit.api.JackrabbitRepository

Custom `JackrabbitRepository` that ensures that the correct Thread Context ClassLoader is set in OSGi environments

Oak still requires that for `Repository.login()` and `Session.impersonate(Credentials)` calls a custom thread context class loader is set. This wrapper simply ensures that the TCCL is set for all calls.

### Field Summary

### Fields inherited from interface org.apache.jackrabbit.api.JackrabbitRepository

`OPTION_PRINCIPAL_MANAGEMENT_SUPPORTED, OPTION_PRIVILEGE_MANAGEMENT_SUPPORTED, OPTION_USER_MANAGEMENT_SUPPORTED`

### 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 Summary

Constructors
`TcclWrappingJackrabbitRepository​(org.apache.jackrabbit.api.JackrabbitRepository wrapped)`

### Method Summary

All Methods Instance Methods Concrete Methods
`String` `getDescriptor​(String key)`
`String[]` `getDescriptorKeys()`
`javax.jcr.Value` `getDescriptorValue​(String key)`
`javax.jcr.Value[]` `getDescriptorValues​(String key)`
`boolean` `isSingleValueDescriptor​(String key)`
`boolean` `isStandardDescriptor​(String key)`
`javax.jcr.Session` `login()`
`javax.jcr.Session` `login​(String workspaceName)`
`javax.jcr.Session` `login​(javax.jcr.Credentials credentials)`
`javax.jcr.Session` `login​(javax.jcr.Credentials credentials, String workspaceName)`
`javax.jcr.Session` `login​(javax.jcr.Credentials credentials, String workspaceName, Map<String,​Object> attributes)`
`void` `shutdown()`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Constructor Detail

#### TcclWrappingJackrabbitRepository

    public TcclWrappingJackrabbitRepository​(org.apache.jackrabbit.api.JackrabbitRepository wrapped)

### Method Detail

#### login

    public javax.jcr.Session login​(javax.jcr.Credentials credentials,
                                   String workspaceName)
                            throws javax.jcr.LoginException,
                                   javax.jcr.NoSuchWorkspaceException,
                                   javax.jcr.RepositoryException

Specified by:
  `login` in interface `javax.jcr.Repository`
Throws:
  `javax.jcr.LoginException`
  `javax.jcr.NoSuchWorkspaceException`
  `javax.jcr.RepositoryException`

#### login

    public javax.jcr.Session login​(javax.jcr.Credentials credentials)
                            throws javax.jcr.LoginException,
                                   javax.jcr.RepositoryException

Specified by:
  `login` in interface `javax.jcr.Repository`
Throws:
  `javax.jcr.LoginException`
  `javax.jcr.RepositoryException`

#### login

    public javax.jcr.Session login​(String workspaceName)
                            throws javax.jcr.LoginException,
                                   javax.jcr.NoSuchWorkspaceException,
                                   javax.jcr.RepositoryException

Specified by:
  `login` in interface `javax.jcr.Repository`
Throws:
  `javax.jcr.LoginException`
  `javax.jcr.NoSuchWorkspaceException`
  `javax.jcr.RepositoryException`

#### login

    public javax.jcr.Session login()
                            throws javax.jcr.LoginException,
                                   javax.jcr.RepositoryException

Specified by:
  `login` in interface `javax.jcr.Repository`
Throws:
  `javax.jcr.LoginException`
  `javax.jcr.RepositoryException`

#### login

    public javax.jcr.Session login​(javax.jcr.Credentials credentials,
                                   String workspaceName,
                                   Map<String,​Object> attributes)
                            throws javax.jcr.LoginException,
                                   javax.jcr.NoSuchWorkspaceException,
                                   javax.jcr.RepositoryException

Specified by:
  `login` in interface `org.apache.jackrabbit.api.JackrabbitRepository`
Throws:
  `javax.jcr.LoginException`
  `javax.jcr.NoSuchWorkspaceException`
  `javax.jcr.RepositoryException`

#### 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`

#### shutdown

    public void shutdown()

Specified by:
  `shutdown` in interface `org.apache.jackrabbit.api.JackrabbitRepository`