|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectorg.apache.openjpa.kernel.exps.AbstractExpressionBuilder
public abstract class AbstractExpressionBuilder
Abstract base class to help build expressions. Provides generic language-independent support for variable resolution, path traversal, and error messages.
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 java.lang.Class<java.lang.Character> |
TYPE_CHAR_OBJ
|
static java.lang.Class<java.util.Collection> |
TYPE_COLLECTION
|
static java.lang.Class<java.util.Map> |
TYPE_MAP
|
static java.lang.Class<java.lang.Number> |
TYPE_NUMBER
|
static java.lang.Class<java.lang.Object> |
TYPE_OBJECT
|
static java.lang.Class<java.lang.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(java.lang.String alias,
ClassMetaData meta)
Register the schema alias to the current JPQL query context. |
protected abstract void |
addVariableToContext(java.lang.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(java.lang.String id,
boolean bind)
|
protected abstract java.lang.String |
currentQuery()
Returns the current string being parsed; used for error messages. |
protected ClassMetaData[] |
getAccessPath()
Return the recorded query access path. |
protected abstract java.lang.ClassLoader |
getClassLoader()
Returns the class loader that should be used for resolving class names (in addition to the resolver in the query). |
protected abstract java.lang.Class<?> |
getDeclaredVariableType(java.lang.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(java.lang.Class<?> c,
boolean required)
Convenience method to get metadata for the given type. |
protected ClassMetaData |
getMetaData(java.lang.Class<?> c,
boolean required,
java.lang.ClassLoader loader)
Convenience method to get metadata for the given type. |
protected abstract Value |
getVariable(java.lang.String id)
Returns the variable associated with the schema alias (id). |
protected Value |
getVariable(java.lang.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(java.lang.String id)
Returns whether the specified variable name has been explicitly declared. |
static boolean |
isNumeric(java.lang.Class<?> type)
Return true if given class can be used as a number. |
protected boolean |
isSeenVariable(java.lang.String id)
Return whether the given id has been used as a variable. |
protected OpenJPAException |
parseException(int e,
java.lang.String token,
java.lang.Object[] args,
java.lang.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,
java.lang.Class<?> expected)
Set the implicit type of the given value to the given class. |
protected void |
setImplicitTypes(Value val1,
Value val2,
java.lang.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,
java.lang.Class<?> expected,
Resolver resolver)
|
protected Value |
traversePath(Path path,
java.lang.String field)
Traverse the given field in the given path. |
protected Value |
traversePath(Path path,
java.lang.String field,
boolean pcOnly,
boolean allowNull)
Traverse the given field in the given path. |
protected java.lang.Object |
traverseStaticField(java.lang.Class<?> cls,
java.lang.String field)
Return a constant containing the value of the given static field. |
protected Value |
traverseXPath(Path path,
java.lang.String field)
|
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
protected static final int EX_USER
protected static final int EX_FATAL
protected static final int EX_UNSUPPORTED
public static final java.lang.Class<java.lang.Object> TYPE_OBJECT
public static final java.lang.Class<java.lang.String> TYPE_STRING
public static final java.lang.Class<java.lang.Character> TYPE_CHAR_OBJ
public static final java.lang.Class<java.lang.Number> TYPE_NUMBER
public static final java.lang.Class<java.util.Collection> TYPE_COLLECTION
public static final java.lang.Class<java.util.Map> TYPE_MAP
public static final int CONTAINS_TYPE_ELEMENT
public static final int CONTAINS_TYPE_KEY
public static final int CONTAINS_TYPE_VALUE
protected final Resolver resolver
protected ExpressionFactory factory
Constructor Detail |
---|
public AbstractExpressionBuilder(ExpressionFactory factory, Resolver resolver)
factory
- the expression factory to useresolver
- used to resolve variables, parameters, and class
names used in the queryMethod Detail |
---|
protected abstract java.lang.ClassLoader getClassLoader()
protected OpenJPAException parseException(int e, java.lang.String token, java.lang.Object[] args, java.lang.Exception nest)
protected ClassMetaData addAccessPath(ClassMetaData meta)
protected ClassMetaData[] getAccessPath()
protected boolean isBound(Value var)
protected void bind(Value var)
protected Value getVariable(java.lang.String id, boolean bind)
protected Value createVariable(java.lang.String id, boolean bind)
protected void assertUnboundVariablesValid()
protected abstract boolean isDeclaredVariable(java.lang.String id)
id
- the variable to check
protected boolean isSeenVariable(java.lang.String id)
protected ClassMetaData getMetaData(java.lang.Class<?> c, boolean required)
protected ClassMetaData getMetaData(java.lang.Class<?> c, boolean required, java.lang.ClassLoader loader)
protected Value traversePath(Path path, java.lang.String field)
protected Value traverseXPath(Path path, java.lang.String field)
protected Value traversePath(Path path, java.lang.String field, boolean pcOnly, boolean allowNull)
protected java.lang.Object traverseStaticField(java.lang.Class<?> cls, java.lang.String field)
protected abstract java.lang.Class<?> getDeclaredVariableType(java.lang.String name)
protected void setImplicitTypes(Value val1, Value val2, java.lang.Class<?> expected)
protected static void setImplicitTypes(Value val1, Value val2, java.lang.Class<?> expected, Resolver resolver)
public static void convertTypes(Value val1, Value val2)
public static void convertTypesQuotedNumbers(Value val1, Value val2)
public static boolean isNumeric(java.lang.Class<?> type)
protected void setImplicitContainsTypes(Value val1, Value val2, int op)
protected static void setImplicitType(Value val, java.lang.Class<?> expected)
protected abstract Localizer getLocalizer()
Localizer
to use for translating
error messages.
protected abstract java.lang.String currentQuery()
protected abstract void addSchemaToContext(java.lang.String alias, ClassMetaData meta)
alias
- meta
- protected abstract void addVariableToContext(java.lang.String id, Value var)
id
- var
- protected abstract Value getVariable(java.lang.String id)
id
-
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |