package org.infinispan.objectfilter.impl.syntax;
/**
* @author anistor@redhat.com
* @since 9.0
*/
@FunctionalInterface
public interface IndexedFieldProvider<TypeMetadata> {
FieldIndexingMetadata get(TypeMetadata typeMetadata);
interface FieldIndexingMetadata {
/**
* Checks if the property of the indexed entity is indexed.
*
* @param propertyPath the path of the property
* @return {@code true} if the property is indexed, {@code false} otherwise.
*/
boolean isIndexed(String[] propertyPath);
/**
* Checks if the property of the indexed entity is analyzed.
*
* @param propertyPath the path of the property
* @return {@code true} if the property is analyzed, {@code false} otherwise.
*/
boolean isAnalyzed(String[] propertyPath);
/**
* Checks if the property of the indexed entity is stored.
*
* @param propertyPath the path of the property
* @return {@code true} if the property is stored, {@code false} otherwise.
*/
boolean isStored(String[] propertyPath);
}
FieldIndexingMetadata NO_INDEXING = new FieldIndexingMetadata() {
@Override
public boolean isIndexed(String[] propertyPath) {
return false;
}
@Override
public boolean isAnalyzed(String[] propertyPath) {
return false;
}
@Override
public boolean isStored(String[] propertyPath) {
return false;
}
};
}