Class IndexUtils
- java.lang.Object
-
- org.apache.jackrabbit.oak.plugins.index.IndexUtils
-
public final class IndexUtils extends java.lang.Object
TODO document
-
-
Field Summary
Fields Modifier and Type Field Description static Logger
INDEXING_PHASE_LOGGER
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static Tree
createIndexDefinition(@NotNull Tree indexNode, @NotNull java.lang.String indexDefName, boolean unique, @NotNull java.lang.String[] propertyNames, @NotNull java.lang.String... declaringNodeTypeNames)
Create a new property2 index definition below the givenindexNode
.static Tree
createIndexDefinition(@NotNull Tree indexNode, @NotNull java.lang.String indexDefName, boolean unique, @NotNull java.util.Collection<java.lang.String> propertyNames, @Nullable java.util.Collection<java.lang.String> declaringNodeTypeNames, @NotNull java.lang.String propertyIndexType, @Nullable java.util.Map<java.lang.String,java.lang.String> properties)
Create a new property index definition below the givenindexNode
of the providedpropertyIndexType
.static NodeBuilder
createIndexDefinition(@NotNull NodeBuilder index, @NotNull java.lang.String indexDefName, boolean reindex, boolean unique, @NotNull java.util.Collection<java.lang.String> propertyNames, @Nullable java.util.Collection<java.lang.String> declaringNodeTypeNames)
Create a new property index definition below the givenindexNode
.static NodeBuilder
createIndexDefinition(@NotNull NodeBuilder indexNode, @NotNull java.lang.String indexDefName, boolean unique, @NotNull java.lang.Iterable<java.lang.String> propertyNames, @Nullable java.lang.String[] declaringNodeTypeNames, @NotNull java.lang.String propertyIndexType, java.util.Map<java.lang.String,java.lang.String> properties)
Create a new property index definition below the givenindexNode
of the providedpropertyIndexType
.static void
createReferenceIndex(@NotNull NodeBuilder index)
static @Nullable java.lang.String
getAsyncLaneName(NodeState idxState, java.lang.String indexPath)
static @Nullable java.lang.String
getAsyncLaneName(NodeState idxState, java.lang.String indexPath, PropertyState async)
static @NotNull java.lang.String
getCaller(@Nullable java.lang.String[] ignoredJavaPackages)
Retrieves the calling class and method from the call stack; this is determined by unwinding the stack until it finds a combination of full qualified classname + method (separated by ".") which do not start with any of the values provided by the ignoredJavaPackages parameters.static java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.String>>
getFilteredCheckpoints(NodeStore store, java.util.function.Predicate<java.util.Map.Entry<java.lang.String,java.util.Map<java.lang.String,java.lang.String>>> predicate)
Returns a Map consisting of checkpoints and checkpointInfoMap filtered based on a given predicate which can utilise checkpoint info map for filteringstatic NodeBuilder
getOrCreateOakIndex(NodeBuilder root)
static java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.String>>
getSortedCheckpointMap(java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.String>> checkpointMap, java.lang.String keyForComparator)
Returns a map with checkpoint name as key and checkpoint metadata map as value, sorted on the basis of particular key in the metadata map.static boolean
isIndexNodeType(NodeState state)
static boolean
isIndexNodeType(NodeState state, java.lang.String typeIn)
-
-
-
Field Detail
-
INDEXING_PHASE_LOGGER
public static final Logger INDEXING_PHASE_LOGGER
-
-
Method Detail
-
getOrCreateOakIndex
public static NodeBuilder getOrCreateOakIndex(NodeBuilder root)
-
createIndexDefinition
public static NodeBuilder createIndexDefinition(@NotNull @NotNull NodeBuilder index, @NotNull @NotNull java.lang.String indexDefName, boolean reindex, boolean unique, @NotNull @NotNull java.util.Collection<java.lang.String> propertyNames, @Nullable @Nullable java.util.Collection<java.lang.String> declaringNodeTypeNames)
Create a new property index definition below the givenindexNode
.- Parameters:
index
- The oak:index node builderindexDefName
- The name of the new property index.reindex
-true
if the the reindex flag should be turned on.unique
-true
if the index is expected the assert property uniqueness.propertyNames
- The property names that should be indexed.declaringNodeTypeNames
- The declaring node type names ornull
.- Returns:
- the NodeBuilder of the new index definition.
-
createIndexDefinition
public static Tree createIndexDefinition(@NotNull @NotNull Tree indexNode, @NotNull @NotNull java.lang.String indexDefName, boolean unique, @NotNull @NotNull java.lang.String[] propertyNames, @NotNull @NotNull java.lang.String... declaringNodeTypeNames) throws javax.jcr.RepositoryException
Create a new property2 index definition below the givenindexNode
.- Parameters:
indexNode
-indexDefName
-unique
-propertyNames
-declaringNodeTypeNames
-- Throws:
javax.jcr.RepositoryException
-
createIndexDefinition
public static Tree createIndexDefinition(@NotNull @NotNull Tree indexNode, @NotNull @NotNull java.lang.String indexDefName, boolean unique, @NotNull @NotNull java.util.Collection<java.lang.String> propertyNames, @Nullable @Nullable java.util.Collection<java.lang.String> declaringNodeTypeNames, @NotNull @NotNull java.lang.String propertyIndexType, @Nullable @Nullable java.util.Map<java.lang.String,java.lang.String> properties) throws javax.jcr.RepositoryException
Create a new property index definition below the givenindexNode
of the providedpropertyIndexType
.- Parameters:
indexNode
-indexDefName
-unique
-propertyNames
-declaringNodeTypeNames
-propertyIndexType
-properties
- any additional property to be added to the index definition.- Throws:
javax.jcr.RepositoryException
-
createReferenceIndex
public static void createReferenceIndex(@NotNull @NotNull NodeBuilder index)
-
isIndexNodeType
public static boolean isIndexNodeType(NodeState state)
-
isIndexNodeType
public static boolean isIndexNodeType(NodeState state, java.lang.String typeIn)
-
createIndexDefinition
public static NodeBuilder createIndexDefinition(@NotNull @NotNull NodeBuilder indexNode, @NotNull @NotNull java.lang.String indexDefName, boolean unique, @NotNull @NotNull java.lang.Iterable<java.lang.String> propertyNames, @Nullable @Nullable java.lang.String[] declaringNodeTypeNames, @NotNull @NotNull java.lang.String propertyIndexType, java.util.Map<java.lang.String,java.lang.String> properties) throws javax.jcr.RepositoryException
Create a new property index definition below the givenindexNode
of the providedpropertyIndexType
.- Parameters:
indexNode
- the oak:indexindexDefName
- the node for the index definitionunique
- true if uniquenesspropertyNames
- the list of properties to be indexeddeclaringNodeTypeNames
-propertyIndexType
- the type of the PropertyIndexproperties
- any additional property to be added to the index definition.- Throws:
javax.jcr.RepositoryException
-
getAsyncLaneName
@Nullable public static @Nullable java.lang.String getAsyncLaneName(NodeState idxState, java.lang.String indexPath)
-
getAsyncLaneName
@Nullable public static @Nullable java.lang.String getAsyncLaneName(NodeState idxState, java.lang.String indexPath, PropertyState async)
-
getCaller
@NotNull public static @NotNull java.lang.String getCaller(@Nullable @Nullable java.lang.String[] ignoredJavaPackages)
Retrieves the calling class and method from the call stack; this is determined by unwinding the stack until it finds a combination of full qualified classname + method (separated by ".") which do not start with any of the values provided by the ignoredJavaPackages parameters. If the provided parameters cover all stack frames, the whole query is considered to be internal, where the actual caller doesn't matter (or cannot be determined clearly). In this case a short message indicating this is returned. If the ignoredJavaPackages parameter is null or empty, the caller is not looked up, but instead it is assumed, that the feature is not configured; in that case a short messages is returned indicating that the feature is not configured.- Parameters:
ignoredJavaPackages
- the java packages or class names- Returns:
- the calling class or another non-null value
-
getFilteredCheckpoints
public static java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.String>> getFilteredCheckpoints(NodeStore store, java.util.function.Predicate<java.util.Map.Entry<java.lang.String,java.util.Map<java.lang.String,java.lang.String>>> predicate)
Returns a Map consisting of checkpoints and checkpointInfoMap filtered based on a given predicate which can utilise checkpoint info map for filtering- Parameters:
store
-predicate
- predicate used for filtering of checkpoints- Returns:
- Map
> filteredCheckpoint Map
-
getSortedCheckpointMap
public static java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.String>> getSortedCheckpointMap(java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.String>> checkpointMap, java.lang.String keyForComparator)
Returns a map with checkpoint name as key and checkpoint metadata map as value, sorted on the basis of particular key in the metadata map. For example - given the following checkpoints in the system along with their associated metadata maps - checkpoint3 - {created-epoch=123458, creator=creator1} checkpoint1 - {created-epoch=123456, creator=creator2} checkpoint2 - {created-epoch=123457, creator=creator3} This method should return - {checkpoint1={created-epoch=123456, creator=creator2}, checkpoint2={created-epoch=123457, creator=creator3}, checkpoint3={created-epoch=123458, creator=creator1}}- Parameters:
checkpointMap
- - the map consisting of checkpoints as keys and checkpoint metadata map as valueskeyForComparator
- - key in the metadata map of the checkpoint that can be used as comparator to sort on checkpoint creation time.- Returns:
- Map
> sorted checkpoint map
-
-