Class ContextImpl

java.lang.Object
org.apache.derby.iapi.services.context.ContextImpl
All Implemented Interfaces:
Context
Direct Known Subclasses:
ClassFactoryContext, CompilerContextImpl, DatabaseContextImpl, EmbedConnectionContext, GenericExecutionContext, GenericLanguageConnectionContext, GenericStatementContext, RAMTransactionContext, ServiceBootContext, SystemContext, XactContext, XATransactionState

public abstract class ContextImpl extends Object implements Context
Contexts are created and used to manage the execution environment. They provide a convenient location for storing globals organized by the module using the globals.

We provide this abstract class for other implementations to use so that they can simply add fields and operations on them. To be usable by the context manager, the subclasses must define CleanupOnError and call super() in any constructor.

Contexts assist in cleanup when errors are caught in the outer block.

Contexts implement the sanity interface to check and provide information about their contents.

  • Field Details

    • myIdName

      private final String myIdName
    • myContextManager

      private final ContextManager myContextManager
  • Constructor Details

  • Method Details

    • getContextManager

      public final ContextManager getContextManager()
      Description copied from interface: Context
      Returns the context manager that has stored this context in its stack.
      Specified by:
      getContextManager in interface Context
      See Also:
    • getIdName

      public final String getIdName()
      Description copied from interface: Context
      Returns the current id name associated with this context. Contexts are placed into stacks by id, in a context manager. Null if the context is not assigned to an id. Contexts known by context managers are always assigned to an id.

      A default Id name should be defined in each specific context interface as a static final field with the name CONTEXT_ID. For example, see org.apache.derby.iapi.sql.compile.CompilerContext.CONTEXT_ID.

      Specified by:
      getIdName in interface Context
      See Also:
    • pushMe

      public final void pushMe()
      Description copied from interface: Context
      Push myself onto my context stack.
      Specified by:
      pushMe in interface Context
    • popMe

      public final void popMe()
      Description copied from interface: Context
      Pop myself of the context stack.
      Specified by:
      popMe in interface Context
      See Also:
    • isLastHandler

      public boolean isLastHandler(int severity)
      Description copied from interface: Context
      Return whether or not this context is the "last" handler for a the specified severity level. Previously, the context manager would march through all of the contexts in cleanupOnError() and call each of their cleanupOnError() methods. That did not work with server side JDBC, especially for a StatementException, because outer contexts could get cleaned up incorrectly. This functionality is specific to the Language system. Any non-language system contexts should return ExceptionSeverity.NOT_APPLICABLE_SEVERITY. NOTE: Both the LanguageConnectionContext and the JDBC Connection Context are interested in session level errors because they both have clean up to do. This method allows both of them to return false so that all such handlers under them can do their clean up.
      Specified by:
      isLastHandler in interface Context
      See Also:
    • appendErrorInfo

      public StringBuffer appendErrorInfo()