|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.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 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 |
---|
protected static final int EX_USER
protected static final int EX_FATAL
protected static final int EX_UNSUPPORTED
public static final Class<Object> TYPE_OBJECT
public static final Class<String> TYPE_STRING
public static final Class<Character> TYPE_CHAR_OBJ
public static final Class<Number> TYPE_NUMBER
public static final Class<Collection> TYPE_COLLECTION
public static final Class<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 ClassLoader getClassLoader()
protected OpenJPAException parseException(int e, String token, Object[] args, Exception nest)
protected ClassMetaData addAccessPath(ClassMetaData meta)
protected ClassMetaData[] getAccessPath()
protected boolean isBound(Value var)
protected void bind(Value var)
protected Value getVariable(String id, boolean bind)
protected Value createVariable(String id, boolean bind)
protected void assertUnboundVariablesValid()
protected abstract boolean isDeclaredVariable(String id)
id
- the variable to check
protected boolean isSeenVariable(String id)
protected ClassMetaData getMetaData(Class<?> c, boolean required)
protected ClassMetaData getMetaData(Class<?> c, boolean required, ClassLoader loader)
protected Value traversePath(Path path, String field)
protected Value traverseXPath(Path path, String field)
protected Value traversePath(Path path, String field, boolean pcOnly, boolean allowNull)
protected Object traverseStaticField(Class<?> cls, String field)
protected abstract Class<?> getDeclaredVariableType(String name)
protected void setImplicitTypes(Value val1, Value val2, Class<?> expected)
protected static void setImplicitTypes(Value val1, Value val2, Class<?> expected, Resolver resolver)
public static void convertTypes(Value val1, Value val2)
public static void convertTypesQuotedNumbers(Value val1, Value val2)
public static boolean isNumeric(Class<?> type)
protected void setImplicitContainsTypes(Value val1, Value val2, int op)
protected static void setImplicitType(Value val, Class<?> expected)
protected abstract Localizer getLocalizer()
Localizer
to use for translating
error messages.
protected abstract String currentQuery()
protected abstract void addSchemaToContext(String alias, ClassMetaData meta)
alias
- meta
- protected abstract void addVariableToContext(String id, Value var)
id
- var
- protected abstract Value getVariable(String id)
id
-
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |