org.modeshape.jdbc

## Class LocalJcrDriver

- java.lang.Object
- - org.modeshape.jdbc.LocalJcrDriver

- All Implemented Interfaces:
    Driver

      public class LocalJcrDriver
      extends Object
      implements Driver

  A JDBC driver implementation that is able to access a JCR repository to query its contents using JCR-SQL2.

  ### Connection URLs

  The driver accepts the following URL format for accessing a local JCR repository using JNDI:

           jdbc:jcr:jndi:{jndiName}

  or

           jdbc:jcr:jndi:{jndiName}?{firstProperty}&{secondProperty}&...

  where
  - {jndiName} is the JNDI name where the `Repository` or org.modeshape.jcr.api.Repositories instance can be found;
  - {firstProperty} consists of the first property name followed by '=' followed by the property's value;
  - {secondProperty} consists of the second property name followed by '=' followed by the property's value;
  Note that any use of URL encoding ('%' followed by a two-digit hexadecimal value) will be decoded before being used.

  Here's an example of a URL that defines a `Repository` instance located at "`jcr/local`" with a repository name of "repository" and a user, password of "secret", and workspace name of "My Workspace":

           jdbc:jcr:jndi:jcr/local?repositoryName=repository&user=jsmith&password=secret&workspace=My%20Workspace

  The "repository" property is required only if the object in JNDI is a org.modeshape.jcr.api.Repositories object.

  Note that any use of URL encoding ('%' followed by a two-digit hexadecimal value) will be decoded before being used.

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `static interface` | `LocalJcrDriver.JcrContextFactory` And interface that can be passed to this driver's constructor to create the JNDI naming context given the set of connection properties.

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected static Set<String>` | `ALL_PROPERTY_NAMES`
    `static String` | `JNDI_URL_PREFIX`
    `protected static Logger` | `logger`
    `static String` | `PASSWORD_PROPERTY_NAME`
    `static String` | `REPOSITORY_PROPERTY_NAME`
    `static String` | `TEIID_SUPPORT_PROPERTY_NAME`
    `static String` | `USERNAME_PROPERTY_NAME`
    `static String` | `WORKSPACE_PROPERTY_NAME`

  - ### Constructor Summary

    Constructors
    Modifier | Constructor and Description
    --- | ---
    `` | `LocalJcrDriver()` No-arg constructor, required by the `DriverManager`.
    `protected` | `LocalJcrDriver(LocalJcrDriver.JcrContextFactory namingContextFactory)` Create an instance of this driver using the supplied JNDI naming context factory.
    `protected` | `LocalJcrDriver(RepositoryDelegateFactory delegateFactory, DriverInfo driverInfo, LocalJcrDriver.JcrContextFactory namingContextFactory)` Constructor for subclasses, that should be called by subclasses no-arg constructor.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `boolean` | `acceptsURL(String url)`
    `Connection` | `connect(String url, Properties info)` Note that if the supplied properties and URL contain properties with the same name, the value from the supplied Properties object will take precedence.
    `protected ConnectionInfo` | `createConnectionInfo(String url, Properties info)` Get the information describing the connection.
    `protected DriverInfo` | `getDriverInfo()`
    `int` | `getMajorVersion()`
    `int` | `getMinorVersion()`
    `Logger` | `getParentLogger()` This method always throws `SQLFeatureNotSupportedException`.
    `DriverPropertyInfo[]` | `getPropertyInfo(String url, Properties info)`
    `String` | `getVendorName()`
    `String` | `getVendorUrl()`
    `String` | `getVersion()`
    `boolean` | `jdbcCompliant()`

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

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

- - ### Field Detail

    - #### logger

          protected static Logger logger

    - #### WORKSPACE_PROPERTY_NAME

          public static final String WORKSPACE_PROPERTY_NAME

      See Also:
        Constant Field Values

    - #### REPOSITORY_PROPERTY_NAME

          public static final String REPOSITORY_PROPERTY_NAME

      See Also:
        Constant Field Values

    - #### USERNAME_PROPERTY_NAME

          public static final String USERNAME_PROPERTY_NAME

      See Also:
        Constant Field Values

    - #### PASSWORD_PROPERTY_NAME

          public static final String PASSWORD_PROPERTY_NAME

      See Also:
        Constant Field Values

    - #### TEIID_SUPPORT_PROPERTY_NAME

          public static final String TEIID_SUPPORT_PROPERTY_NAME

      See Also:
        Constant Field Values

    - #### ALL_PROPERTY_NAMES

          protected static final Set<String> ALL_PROPERTY_NAMES

    - #### JNDI_URL_PREFIX

          public static final String JNDI_URL_PREFIX

      See Also:
        Constant Field Values

  - ### Constructor Detail

    - #### LocalJcrDriver

          public LocalJcrDriver()

      No-arg constructor, required by the `DriverManager`.

    - #### LocalJcrDriver

          protected LocalJcrDriver(LocalJcrDriver.JcrContextFactory namingContextFactory)

      Create an instance of this driver using the supplied JNDI naming context factory. This is useful for testing, but is otherwise not generally recommended.
      Parameters:
        `namingContextFactory` - the naming context factory; may be null if one should be created automatically

    - #### LocalJcrDriver

          protected LocalJcrDriver(RepositoryDelegateFactory delegateFactory,
                        DriverInfo driverInfo,
                        LocalJcrDriver.JcrContextFactory namingContextFactory)

      Constructor for subclasses, that should be called by subclasses no-arg constructor.
      Parameters:
        `delegateFactory` - the factory that should be used to create `RepositoryDelegate` instances; may not be null
        `driverInfo` - the information about the driver; may not be null
        `namingContextFactory` - the naming context factory; may be null if one should be created automatically

  - ### Method Detail

    - #### acceptsURL

          public boolean acceptsURL(String url)

      Specified by:
        `acceptsURL` in interface `Driver`

    - #### getPropertyInfo

          public DriverPropertyInfo[] getPropertyInfo(String url,
                                             Properties info)
                                               throws SQLException

      Specified by:
        `getPropertyInfo` in interface `Driver`
      Throws:
        `SQLException`

    - #### createConnectionInfo

          protected ConnectionInfo createConnectionInfo(String url,
                                            Properties info)
                                                 throws SQLException

      Get the information describing the connection. This method can be overridden to return a subclass of `ConnectionInfo` that implements `ConnectionInfo.getCredentials()` for a specific JCR implementation.
      Parameters:
        `url` - the JDBC URL
        `info` - the JDBC connection properties
      Returns:
        the connection information, or null if the URL is null or not of the proper format
      Throws:
        `SQLException`

    - #### connect

          public Connection connect(String url,
                           Properties info)
                             throws SQLException

      Note that if the supplied properties and URL contain properties with the same name, the value from the supplied Properties object will take precedence.

      Specified by:
        `connect` in interface `Driver`
      Throws:
        `SQLException`
      See Also:
        `Driver.connect(java.lang.String, java.util.Properties)`

    - #### getMajorVersion

          public int getMajorVersion()

      Specified by:
        `getMajorVersion` in interface `Driver`

    - #### getMinorVersion

          public int getMinorVersion()

      Specified by:
        `getMinorVersion` in interface `Driver`

    - #### getVendorName

          public String getVendorName()

    - #### getVendorUrl

          public String getVendorUrl()

    - #### getVersion

          public String getVersion()

    - #### jdbcCompliant

          public boolean jdbcCompliant()

      Specified by:
        `jdbcCompliant` in interface `Driver`

    - #### getDriverInfo

          protected final DriverInfo getDriverInfo()

    - #### getParentLogger

          public Logger getParentLogger()
                                 throws SQLFeatureNotSupportedException

      This method always throws `SQLFeatureNotSupportedException`.

      Note: This method is part of the JDBC API in JDK 1.7.

      Specified by:
        `getParentLogger` in interface `Driver`
      Returns:
        the parent logger
      Throws:
        `SQLFeatureNotSupportedException`

Copyright © 2008-2014 JBoss, a division of Red Hat. All Rights Reserved.