Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## org.modeshape.jdbc
Class LocalJcrDriver

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

All Implemented Interfaces:
  Driver

Direct Known Subclasses:
  JcrDriver

    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
`static interface` | `LocalJcrDriver.JcrContextFactory` And interface that can be passed to this driver's contructor to create the JNDI naming context given the set of connection properties.

Field Summary
`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
`` | `LocalJcrDriver()` No-arg constructor, required by the `DriverManager`.
`` | `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
`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()`
`static LocalJcrDriver` | `getInstance()`
`int` | `getMajorVersion()`
`int` | `getMinorVersion()`
`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

    public 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

### getInstance

    public static LocalJcrDriver getInstance()

### acceptsURL

    public boolean acceptsURL(String url)

  Specified by:
    `acceptsURL` in interface `Driver`
  See Also:
    `Driver.acceptsURL(java.lang.String)`

### getPropertyInfo

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

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

### 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`
  See Also:
    `Driver.getMajorVersion()`

### getMinorVersion

    public int getMinorVersion()

  Specified by:
    `getMinorVersion` in interface `Driver`
  See Also:
    `Driver.getMinorVersion()`

### getVendorName

    public String getVendorName()

### getVendorUrl

    public String getVendorUrl()

### getVersion

    public String getVersion()

### jdbcCompliant

    public boolean jdbcCompliant()

  Specified by:
    `jdbcCompliant` in interface `Driver`
  See Also:
    `Driver.jdbcCompliant()`

### getDriverInfo

    protected final DriverInfo getDriverInfo()

Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

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