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.kernel.exps
Class AbstractExpressionBuilder

    java.lang.Object
      org.apache.openjpa.kernel.exps.AbstractExpressionBuilder

Direct Known Subclasses:
  JPQLExpressionBuilder

    public abstract class AbstractExpressionBuilder

extends Object

Abstract base class to help build expressions. Provides generic language-independent support for variable resolution, path traversal, and error messages.

Author:
  Marc Prud'hommeaux

Field Summary
`static int` | `CONTAINS_TYPE_ELEMENT`
`static int` | `CONTAINS_TYPE_KEY`
`static int` | `CONTAINS_TYPE_VALUE`
`protected static int` | `EX_FATAL`
`protected static int` | `EX_UNSUPPORTED`
`protected static int` | `EX_USER`
`protected ExpressionFactory` | `factory`
`protected Resolver` | `resolver`
`static Class<Character>` | `TYPE_CHAR_OBJ`
`static Class<Collection>` | `TYPE_COLLECTION`
`static Class<Map>` | `TYPE_MAP`
`static Class<Number>` | `TYPE_NUMBER`
`static Class<Object>` | `TYPE_OBJECT`
`static Class<String>` | `TYPE_STRING`

Constructor Summary
`AbstractExpressionBuilder(ExpressionFactory factory, Resolver resolver)` Constructor.

Method Summary
`protected ClassMetaData` | `addAccessPath(ClassMetaData meta)` Register the specified metadata as being in the query's access path.
`protected abstract void` | `addSchemaToContext(String alias, ClassMetaData meta)` Register the schema alias to the current JPQL query context.
`protected abstract void` | `addVariableToContext(String id, Value var)` Register the variable associated with the schema alias (id) to the current JPQL query context.
`protected void` | `assertUnboundVariablesValid()` Validate that all unbound variables are of a PC type.
`protected void` | `bind(Value var)` Record that the given variable is bound.
`static void` | `convertTypes(Value val1, Value val2)` Perform conversions to make values compatible.
`static void` | `convertTypesQuotedNumbers(Value val1, Value val2)` Perform conversions to make values compatible.
`protected Value` | `createVariable(String id, boolean bind)`
`protected abstract String` | `currentQuery()` Returns the current string being parsed; used for error messages.
`protected ClassMetaData[]` | `getAccessPath()` Return the recorded query access path.
`protected abstract ClassLoader` | `getClassLoader()` Returns the class loader that should be used for resolving class names (in addition to the resolver in the query).
`protected abstract Class<?>` | `getDeclaredVariableType(String name)` Returns the type of the named variable if it has been declared.
`protected abstract Localizer` | `getLocalizer()` Used for obtaining the `Localizer` to use for translating error messages.
`protected ClassMetaData` | `getMetaData(Class<?> c, boolean required)` Convenience method to get metadata for the given type.
`protected ClassMetaData` | `getMetaData(Class<?> c, boolean required, ClassLoader loader)` Convenience method to get metadata for the given type.
`protected abstract Value` | `getVariable(String id)` Returns the variable associated with the schema alias (id).
`protected Value` | `getVariable(String id, boolean bind)` Returns a value for the given id.
`protected boolean` | `isBound(Value var)` Return true if the given variable has been bound.
`protected abstract boolean` | `isDeclaredVariable(String id)` Returns whether the specified variable name has been explicitly declared.
`static boolean` | `isNumeric(Class<?> type)` Return true if given class can be used as a number.
`protected boolean` | `isSeenVariable(String id)` Return whether the given id has been used as a variable.
`protected OpenJPAException` | `parseException(int e, String token, Object[] args, Exception nest)` Create a proper parse exception for the given reason.
`protected void` | `setImplicitContainsTypes(Value val1, Value val2, int op)` Set the implicit types of the given values based on the fact that the first is supposed to contain the second.
`protected static void` | `setImplicitType(Value val, Class<?> expected)` Set the implicit type of the given value to the given class.
`protected void` | `setImplicitTypes(Value val1, Value val2, Class<?> expected)` Set the implicit types of the given values based on the fact that they're used together, and based on the operator type.
`protected static void` | `setImplicitTypes(Value val1, Value val2, Class<?> expected, Resolver resolver)`
`protected Value` | `traversePath(Path path, String field)` Traverse the given field in the given path.
`protected Value` | `traversePath(Path path, String field, boolean pcOnly, boolean allowNull)` Traverse the given field in the given path.
`protected Object` | `traverseStaticField(Class<?> cls, String field)` Return a constant containing the value of the given static field.
`protected Value` | `traverseXPath(Path path, String field)`

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

Field Detail

### EX_USER

    protected static final int EX_USER

See Also:
  Constant Field Values

### EX_FATAL

    protected static final int EX_FATAL

See Also:
  Constant Field Values

### EX_UNSUPPORTED

    protected static final int EX_UNSUPPORTED

See Also:
  Constant Field Values

### TYPE_OBJECT

    public static final Class<Object> TYPE_OBJECT

### TYPE_STRING

    public static final Class<String> TYPE_STRING

### TYPE_CHAR_OBJ

    public static final Class<Character> TYPE_CHAR_OBJ

### TYPE_NUMBER

    public static final Class<Number> TYPE_NUMBER

### TYPE_COLLECTION

    public static final Class<Collection> TYPE_COLLECTION

### TYPE_MAP

    public static final Class<Map> TYPE_MAP

### CONTAINS_TYPE_ELEMENT

    public static final int CONTAINS_TYPE_ELEMENT

See Also:
  Constant Field Values

### CONTAINS_TYPE_KEY

    public static final int CONTAINS_TYPE_KEY

See Also:
  Constant Field Values

### CONTAINS_TYPE_VALUE

    public static final int CONTAINS_TYPE_VALUE

See Also:
  Constant Field Values

### resolver

    protected final Resolver resolver

### factory

    protected ExpressionFactory factory

Constructor Detail

### AbstractExpressionBuilder

    public AbstractExpressionBuilder(ExpressionFactory factory,
                                     Resolver resolver)

  Constructor.

  Parameters:
    `factory` - the expression factory to use
    `resolver` - used to resolve variables, parameters, and class names used in the query

Method Detail

### getClassLoader

    protected abstract ClassLoader getClassLoader()

  Returns the class loader that should be used for resolving class names (in addition to the resolver in the query).

### parseException

    protected OpenJPAException parseException(int e,
                                              String token,
                                              Object[] args,
                                              Exception nest)

  Create a proper parse exception for the given reason.

### addAccessPath

    protected ClassMetaData addAccessPath(ClassMetaData meta)

  Register the specified metadata as being in the query's access path.

### getAccessPath

    protected ClassMetaData[] getAccessPath()

  Return the recorded query access path.

### isBound

    protected boolean isBound(Value var)

  Return true if the given variable has been bound.

### bind

    protected void bind(Value var)

  Record that the given variable is bound.

### getVariable

    protected Value getVariable(String id,
                                boolean bind)

  Returns a value for the given id.

### createVariable

    protected Value createVariable(String id,
                                   boolean bind)

### assertUnboundVariablesValid

    protected void assertUnboundVariablesValid()

  Validate that all unbound variables are of a PC type. If not, assume that the user actually made a typo that we took for an implicit unbound variable.

### isDeclaredVariable

    protected abstract boolean isDeclaredVariable(String id)

  Returns whether the specified variable name has been explicitly declared. Note all query languages necessarily support declaring variables.

  Parameters:
    `id` - the variable to check
  Returns:
    true if the variabe has been explicitely declared

### isSeenVariable

    protected boolean isSeenVariable(String id)

  Return whether the given id has been used as a variable.

### getMetaData

    protected ClassMetaData getMetaData(Class<?> c,
                                        boolean required)

  Convenience method to get metadata for the given type.

### getMetaData

    protected ClassMetaData getMetaData(Class<?> c,
                                        boolean required,
                                        ClassLoader loader)

  Convenience method to get metadata for the given type.

### traversePath

    protected Value traversePath(Path path,
                                 String field)

  Traverse the given field in the given path.

### traverseXPath

    protected Value traverseXPath(Path path,
                                  String field)

### traversePath

    protected Value traversePath(Path path,
                                 String field,
                                 boolean pcOnly,
                                 boolean allowNull)

  Traverse the given field in the given path.

### traverseStaticField

    protected Object traverseStaticField(Class<?> cls,
                                         String field)

  Return a constant containing the value of the given static field.

### getDeclaredVariableType

    protected abstract Class<?> getDeclaredVariableType(String name)

  Returns the type of the named variable if it has been declared.

### setImplicitTypes

    protected void setImplicitTypes(Value val1,
                                    Value val2,
                                    Class<?> expected)

  Set the implicit types of the given values based on the fact that they're used together, and based on the operator type.

### setImplicitTypes

    protected static void setImplicitTypes(Value val1,
                                           Value val2,
                                           Class<?> expected,
                                           Resolver resolver)

### convertTypes

    public static void convertTypes(Value val1,
                                    Value val2)

  Perform conversions to make values compatible.

### convertTypesQuotedNumbers

    public static void convertTypesQuotedNumbers(Value val1,
                                                 Value val2)

  Perform conversions to make values compatible.

### isNumeric

    public static boolean isNumeric(Class<?> type)

  Return true if given class can be used as a number.

### setImplicitContainsTypes

    protected void setImplicitContainsTypes(Value val1,
                                            Value val2,
                                            int op)

  Set the implicit types of the given values based on the fact that the first is supposed to contain the second.

### setImplicitType

    protected static void setImplicitType(Value val,
                                          Class<?> expected)

  Set the implicit type of the given value to the given class.

### getLocalizer

    protected abstract Localizer getLocalizer()

  Used for obtaining the `Localizer` to use for translating error messages.

### currentQuery

    protected abstract String currentQuery()

  Returns the current string being parsed; used for error messages.

### addSchemaToContext

    protected abstract void addSchemaToContext(String alias,
                                               ClassMetaData meta)

  Register the schema alias to the current JPQL query context.

  Parameters:
    `alias` -
    `meta` -

### addVariableToContext

    protected abstract void addVariableToContext(String id,
                                                 Value var)

  Register the variable associated with the schema alias (id) to the current JPQL query context.

  Parameters:
    `id` -
    `var` -

### getVariable

    protected abstract Value getVariable(String id)

  Returns the variable associated with the schema alias (id).

  Parameters:
    `id` -
  Returns:

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.