Class PropertyExistenceImpl
- java.lang.Object
-
- org.apache.jackrabbit.oak.query.ast.ConstraintImpl
-
- org.apache.jackrabbit.oak.query.ast.PropertyExistenceImpl
-
public class PropertyExistenceImpl extends ConstraintImpl
A condition to check if the property exists ("is not null").
-
-
Constructor Summary
Constructors Constructor Description PropertyExistenceImpl(String selectorName, String propertyName)
PropertyExistenceImpl(SelectorImpl selector, String selectorName, String propertyName)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
bindSelector(SourceImpl source)
protected PropertyValue
convertValueToType(PropertyValue v, PropertyValue targetType)
org.apache.jackrabbit.oak.query.ast.AstElement
copyOf()
boolean
equals(Object obj)
boolean
evaluate()
Evaluate the result using the currently set values.protected String
getLocalPath(String path)
Calculate the session local path (the path excluding the workspace name) if possible.Set<PropertyExistenceImpl>
getPropertyExistenceConditions()
Get the set of property existence conditions that can be derived for this condition.Set<SelectorImpl>
getSelectors()
Get the set of selectors for the given condition.int
hashCode()
protected String
normalizePath(String path)
Validate and normalize the path.protected String
normalizePropertyName(String propertyName)
Normalize the property name (including namespace remapping).protected String
protect(Object expression)
protected String
quote(String pathOrName)
protected String
quoteJson(String string)
void
restrict(FilterImpl f)
Apply the condition to the filter, further restricting the filter if possible.void
restrictPushDown(SelectorImpl s)
Push as much of the condition down to this selector, further restricting the selector condition if possible.void
setQuery(QueryImpl query)
String
toString()
-
Methods inherited from class org.apache.jackrabbit.oak.query.ast.ConstraintImpl
containsUnfilteredFullTextCondition, convertToUnion, evaluateStop, getFullTextConstraint, requiresFullTextIndex, simplify
-
-
-
-
Field Detail
-
query
protected QueryImpl query
-
-
Constructor Detail
-
PropertyExistenceImpl
public PropertyExistenceImpl(SelectorImpl selector, String selectorName, String propertyName)
-
-
Method Detail
-
evaluate
public boolean evaluate()
Description copied from class:ConstraintImpl
Evaluate the result using the currently set values.- Specified by:
evaluate
in classConstraintImpl
- Returns:
- true if the constraint matches
-
getPropertyExistenceConditions
public Set<PropertyExistenceImpl> getPropertyExistenceConditions()
Description copied from class:ConstraintImpl
Get the set of property existence conditions that can be derived for this condition. For example, for the condition "x=1 or x=2", the property existence condition is "x is not null". For the condition "x=1 or y=2", there is no such condition. For the condition "x=1 and y=1", there are two (x is not null, and y is not null).- Specified by:
getPropertyExistenceConditions
in classConstraintImpl
- Returns:
- the common property existence condition (possibly empty)
-
getSelectors
public Set<SelectorImpl> getSelectors()
Description copied from class:ConstraintImpl
Get the set of selectors for the given condition.- Specified by:
getSelectors
in classConstraintImpl
- Returns:
- the set of selectors (possibly empty)
-
bindSelector
public void bindSelector(SourceImpl source)
-
restrict
public void restrict(FilterImpl f)
Description copied from class:ConstraintImpl
Apply the condition to the filter, further restricting the filter if possible. This may also verify the data types are compatible, and that paths are valid.- Specified by:
restrict
in classConstraintImpl
- Parameters:
f
- the filter
-
restrictPushDown
public void restrictPushDown(SelectorImpl s)
Description copied from class:ConstraintImpl
Push as much of the condition down to this selector, further restricting the selector condition if possible. This is important for a join: for example, the query "select * from a inner join b on a.x=b.x where a.y=1 and b.y=1", the condition "a.y=1" can be pushed down to "a", and the condition "b.y=1" can be pushed down to "b". That means it is possible to use an index in this case.- Specified by:
restrictPushDown
in classConstraintImpl
- Parameters:
s
- the selector
-
hashCode
public int hashCode()
- Overrides:
hashCode
in classConstraintImpl
-
equals
public boolean equals(Object obj)
- Overrides:
equals
in classConstraintImpl
-
copyOf
public org.apache.jackrabbit.oak.query.ast.AstElement copyOf()
- Returns:
- a clone of self. Default implementation in
AstElement
returns same reference tothis
.
-
setQuery
public void setQuery(QueryImpl query)
-
normalizePropertyName
protected String normalizePropertyName(String propertyName)
Normalize the property name (including namespace remapping). Asterisks are kept.- Parameters:
propertyName
- the property name to normalize- Returns:
- the normalized (oak-) property name
-
normalizePath
protected String normalizePath(String path)
Validate and normalize the path.- Parameters:
path
- the path to validate- Returns:
- the validated and normalized path
-
convertValueToType
protected PropertyValue convertValueToType(PropertyValue v, PropertyValue targetType)
-
-