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.apache.openjpa.jdbc.kernel
Class AbstractJDBCSeq

    java.lang.Object
      org.apache.openjpa.jdbc.kernel.AbstractJDBCSeq

All Implemented Interfaces:
  JDBCSeq, Seq, Closeable

Direct Known Subclasses:
  NativeJDBCSeq, TableJDBCSeq

    public abstract class AbstractJDBCSeq

extends Object
implements JDBCSeq

Abstract sequence implementation. Handles obtaining the proper connection to used based on whether the sequence is transactional and whether a second datasource is configured.

Author:
  Abe White

Field Summary
`protected Object` | `current`
`protected int` | `type`

Fields inherited from interface org.apache.openjpa.kernel.Seq
`TYPE_CONTIGUOUS, TYPE_DEFAULT, TYPE_NONTRANSACTIONAL, TYPE_TRANSACTIONAL`

Constructor Summary
`AbstractJDBCSeq()`

Method Summary
`void` | `addSchema(ClassMapping mapping, SchemaGroup group)` No-op.
`void` | `allocate(int additional, StoreContext ctx, ClassMetaData meta)` Allocate additional values efficiently.
`protected void` | `allocateInternal(int additional, JDBCStore store, ClassMapping mapping)` Allocate additional sequence values.
`void` | `close()` No-op.
`protected void` | `closeConnection(Connection conn)` Close the current connection.
`Object` | `current(StoreContext ctx, ClassMetaData meta)` Return the current value of the sequence, or null if not available.
`protected Object` | `currentInternal(JDBCStore store, ClassMapping mapping)` Return the current sequence object.
`abstract JDBCConfiguration` | `getConfiguration()` Return the `JDBCConfiguration` for this sequence.
`protected Connection` | `getConnection(JDBCStore store)` Return the connection to use based on the type of sequence.
`Object` | `next(StoreContext ctx, ClassMetaData meta)` Return the next value in the sequence.
`protected abstract Object` | `nextInternal(JDBCStore store, ClassMapping mapping)` Return the next sequence object.
`void` | `setType(int type)` Records the sequence type.
`protected boolean` | `suspendInJTA()` Detect whether or not OpenJPA should suspend the transaction in a managed environment.

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Field Detail

### type

    protected int type

### current

    protected Object current

Constructor Detail

### AbstractJDBCSeq

    public AbstractJDBCSeq()

Method Detail

### setType

    public void setType(int type)

  Records the sequence type.

  Specified by:
    `setType` in interface `Seq`

### next

    public Object next(StoreContext ctx,
                       ClassMetaData meta)

  Description copied from interface: `Seq`
  Return the next value in the sequence.

  Specified by:
    `next` in interface `Seq`
  Parameters:
    `ctx` - the current context
    `meta` - if this is a datastore identity sequence, the persistent class the identity value is for; else null

### current

    public Object current(StoreContext ctx,
                          ClassMetaData meta)

  Description copied from interface: `Seq`
  Return the current value of the sequence, or null if not available.

  Specified by:
    `current` in interface `Seq`
  Parameters:
    `ctx` - the current context
    `meta` - if this is a datastore identity sequence, the persistent class the identity value is for; else null

### allocate

    public void allocate(int additional,
                         StoreContext ctx,
                         ClassMetaData meta)

  Description copied from interface: `Seq`
  Allocate additional values efficiently.

  Specified by:
    `allocate` in interface `Seq`
    `ctx` - the current context
    `meta` - if this is a datastore identity sequence, the persistent class the identity value is for; else null

### addSchema

    public void addSchema(ClassMapping mapping,
                          SchemaGroup group)

  No-op.

  Specified by:
    `addSchema` in interface `JDBCSeq`

### close

    public void close()

  No-op.

  Specified by:
    `close` in interface `Seq`
  Specified by:
    `close` in interface `Closeable`

### nextInternal

    protected abstract Object nextInternal(JDBCStore store,
                                           ClassMapping mapping)
                                    throws Exception

  Return the next sequence object.

  Throws:
    `Exception`

### getConfiguration

    public abstract JDBCConfiguration getConfiguration()

  Return the `JDBCConfiguration` for this sequence.

### currentInternal

    protected Object currentInternal(JDBCStore store,
                                     ClassMapping mapping)
                              throws Exception

  Return the current sequence object. By default returns the last sequence value used, or null if no sequence values have been requested yet. Default implementation is not threadsafe.

  Throws:
    `Exception`

### allocateInternal

    protected void allocateInternal(int additional,
                                    JDBCStore store,
                                    ClassMapping mapping)
                             throws Exception

  Allocate additional sequence values. Does nothing by default.

  Throws:
    `Exception`

### getConnection

    protected Connection getConnection(JDBCStore store)
                                throws SQLException

  Return the connection to use based on the type of sequence. This connection will automatically be closed; do not close it.

  Returns:
    If the sequence type is `TYPE_TRANSACTIONAL` or `TYPE_CONTIGUOUS` the connection from the `StoreManager` will be returned.

    Otherwise a new connection will be obtained using DataSource2 from the current configuration. In this case autocommit is set to false prior to returning the connection.

  Throws:
    `SQLException`

### closeConnection

    protected void closeConnection(Connection conn)

  Close the current connection. If the sequence is `TYPE_TRANSACTIONAL` or `TYPE_CONTIGUOUS` we will decrement the ref count. Otherwise the connection will be committed and then closed.

### suspendInJTA

    protected boolean suspendInJTA()

  Detect whether or not OpenJPA should suspend the transaction in a managed environment.

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 © 2006-2013 Apache Software Foundation. All Rights Reserved.