Class EmptyTraversalSideEffects
- java.lang.Object
 - 
- org.apache.tinkerpop.gremlin.process.traversal.util.EmptyTraversalSideEffects
 
 
- 
- All Implemented Interfaces:
 Serializable,AutoCloseable,Cloneable,TraversalSideEffects
public final class EmptyTraversalSideEffects extends Object implements TraversalSideEffects
- Author:
 - Marko A. Rodriguez (http://markorodriguez.com)
 - See Also:
 - Serialized Form
 
 
- 
- 
Nested Class Summary
- 
Nested classes/interfaces inherited from interface org.apache.tinkerpop.gremlin.process.traversal.TraversalSideEffects
TraversalSideEffects.Exceptions 
 - 
 
- 
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description voidadd(String key, Object value)Add a value to the global side-effect value.TraversalSideEffectsclone()Cloning is used to duplicate the sideEffects typically in distributed execution environments.<V> Vget(String key)Get the sideEffect associated with the provided key.<V> BinaryOperator<V>getReducer(String key)Get the reducer associated with the side-effect key.<S> Supplier<S>getSackInitialValue()If sacks are enabled, get the initial value of theTraversersack.<S> BinaryOperator<S>getSackMerger()If sacks are enabled and a merge function has been specified, then get it (else getnull).<S> UnaryOperator<S>getSackSplitter()If sacks are enabled and a split operator has been specified, then get it (else getnull).<V> Supplier<V>getSupplier(String key)Get the supplier associated with the side-effect key.static EmptyTraversalSideEffectsinstance()Set<String>keys()The keys of the sideEffect which includes registeredSupplierkeys.voidmergeInto(TraversalSideEffects sideEffects)Add the currentTraversalSideEffectsvalues, suppliers, and reducers to the providedTraversalSideEffects.<V> voidregister(String key, Supplier<V> initialValue, BinaryOperator<V> reducer)<V> voidregisterIfAbsent(String key, Supplier<V> initialValue, BinaryOperator<V> reducer)voidremove(String key)Remove both the value and registeredSupplierassociated with provided key.voidset(String key, Object value)Set the specified key to the specified value.<S> voidsetSack(Supplier<S> initialValue, UnaryOperator<S> splitOperator, BinaryOperator<S> mergeOperator)Set the initial value of eachTraverser"sack" along with the operators for splitting and merging sacks.- 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait 
- 
Methods inherited from interface org.apache.tinkerpop.gremlin.process.traversal.TraversalSideEffects
close, exists, forEach, isEmpty 
 - 
 
 - 
 
- 
- 
Method Detail
- 
set
public void set(String key, Object value) throws IllegalArgumentException
Description copied from interface:TraversalSideEffectsSet the specified key to the specified value. This method should not be used in a distributed environment. Instead, useTraversalSideEffects.add(String, Object). This method is only safe when there is only one representation of the side-effect and thus, not distributed across threads or machines.- Specified by:
 setin interfaceTraversalSideEffects- Parameters:
 key- the key they key of the side-effectvalue- the value the new value for the side-effect- Throws:
 IllegalArgumentException- if the key does not reference a registered side-effect.
 
- 
get
public <V> V get(String key) throws IllegalArgumentException
Description copied from interface:TraversalSideEffectsGet the sideEffect associated with the provided key. If the sideEffect contains an object for the key, return it. Else if the sideEffect has a registeredSupplierfor that key, generate the object, store the object in the sideEffects, and return it.- Specified by:
 getin interfaceTraversalSideEffects- Type Parameters:
 V- the type of the value to retrieve- Parameters:
 key- the key to get the value for- Returns:
 - the value associated with key
 - Throws:
 IllegalArgumentException- if the key does not reference an object or a registered supplier.
 
- 
remove
public void remove(String key) throws IllegalArgumentException
Description copied from interface:TraversalSideEffectsRemove both the value and registeredSupplierassociated with provided key.- Specified by:
 removein interfaceTraversalSideEffects- Parameters:
 key- the key of the value and registered supplier to remove- Throws:
 IllegalArgumentException
 
- 
keys
public Set<String> keys()
Description copied from interface:TraversalSideEffectsThe keys of the sideEffect which includes registeredSupplierkeys. In essence, that which is possible toTraversalSideEffects.get(String).- Specified by:
 keysin interfaceTraversalSideEffects- Returns:
 - the keys of the sideEffect
 
 
- 
add
public void add(String key, Object value) throws IllegalArgumentException
Description copied from interface:TraversalSideEffectsAdd a value to the global side-effect value. This should be used by steps to ensure that side-effects are merged properly in a distributed environment.TraversalSideEffects.set(String, Object)should only be used in single-threaded systems or by a master traversal in a distributed environment.- Specified by:
 addin interfaceTraversalSideEffects- Parameters:
 key- the key of the side-effect.value- the partital value (to be merged) of the side-effect.- Throws:
 IllegalArgumentException- if no side-effect exists for the provided key
 
- 
register
public <V> void register(String key, Supplier<V> initialValue, BinaryOperator<V> reducer)
Description copied from interface:TraversalSideEffectsRegister a side-effect with theTraversalSideEffectsproviding aSupplierand aBinaryOperator. If a null value is provided for the supplier or reducer, then it no supplier or reducer is registered.- Specified by:
 registerin interfaceTraversalSideEffects- Type Parameters:
 V- the type of the side-effect value- Parameters:
 key- the key of the side-effect valueinitialValue- the initial value supplierreducer- the reducer to use for merging a distributed side-effect value into a single value
 
- 
registerIfAbsent
public <V> void registerIfAbsent(String key, Supplier<V> initialValue, BinaryOperator<V> reducer)
Description copied from interface:TraversalSideEffectsRegister a side-effect with theTraversalSideEffectsproviding aSupplierand aBinaryOperator. The registration will only overwrite a supplier or reducer if no supplier or reducer existed prior. If a null value is provided for the supplier or reducer, then it no supplier or reducer is registered.- Specified by:
 registerIfAbsentin interfaceTraversalSideEffects- Type Parameters:
 V- the type of the side-effect value- Parameters:
 key- the key of the side-effect valueinitialValue- the initial value supplierreducer- the reducer to use for merging a distributed side-effect value into a single value
 
- 
getReducer
public <V> BinaryOperator<V> getReducer(String key) throws IllegalArgumentException
Description copied from interface:TraversalSideEffectsGet the reducer associated with the side-effect key. If no reducer was registered, thenOperator.assignis provided.- Specified by:
 getReducerin interfaceTraversalSideEffects- Type Parameters:
 V- the type of the side-effect value- Parameters:
 key- the key of the side-effect- Returns:
 - the registered reducer
 - Throws:
 IllegalArgumentException- if no side-effect exists for the provided key
 
- 
getSupplier
public <V> Supplier<V> getSupplier(String key) throws IllegalArgumentException
Description copied from interface:TraversalSideEffectsGet the supplier associated with the side-effect key. If no supplier was registered, thenConstantSupplieris provided.- Specified by:
 getSupplierin interfaceTraversalSideEffects- Type Parameters:
 V- the type of the side-effect value- Parameters:
 key- the key of the side-effect- Returns:
 - the registered supplier
 - Throws:
 IllegalArgumentException- if no side-effect exists for the provided key
 
- 
setSack
public <S> void setSack(Supplier<S> initialValue, UnaryOperator<S> splitOperator, BinaryOperator<S> mergeOperator)
Description copied from interface:TraversalSideEffectsSet the initial value of eachTraverser"sack" along with the operators for splitting and merging sacks. If no split operator is provided, then a direct memory copy is assumed (this is typically good for primitive types and strings). If no merge operator is provided, then traversers with sacks will not be merged.- Specified by:
 setSackin interfaceTraversalSideEffects- Type Parameters:
 S- the sack type- Parameters:
 initialValue- the initial value supplier of the traverser sacksplitOperator- the split operator for splitting traverser sacksmergeOperator- the merge operator for merging traverser sacks
 
- 
getSackInitialValue
public <S> Supplier<S> getSackInitialValue()
Description copied from interface:TraversalSideEffectsIf sacks are enabled, get the initial value of theTraversersack. If its not enabled, thennullis returned.- Specified by:
 getSackInitialValuein interfaceTraversalSideEffects- Type Parameters:
 S- the sack type- Returns:
 - the supplier of the initial value of the traverser sack
 
 
- 
getSackSplitter
public <S> UnaryOperator<S> getSackSplitter()
Description copied from interface:TraversalSideEffectsIf sacks are enabled and a split operator has been specified, then get it (else getnull). The split operator is used to split a sack when a bifurcation in aTraverserhappens.- Specified by:
 getSackSplitterin interfaceTraversalSideEffects- Type Parameters:
 S- the sack type- Returns:
 - the operator for splitting a traverser sack
 
 
- 
getSackMerger
public <S> BinaryOperator<S> getSackMerger()
Description copied from interface:TraversalSideEffectsIf sacks are enabled and a merge function has been specified, then get it (else getnull). The merge function is used to merge two sacks when twoTraversers converge.- Specified by:
 getSackMergerin interfaceTraversalSideEffects- Type Parameters:
 S- the sack type- Returns:
 - the operator for merging two traverser sacks
 
 
- 
clone
public TraversalSideEffects clone()
Description copied from interface:TraversalSideEffectsCloning is used to duplicate the sideEffects typically in distributed execution environments.- Specified by:
 clonein interfaceTraversalSideEffects- Overrides:
 clonein classObject- Returns:
 - The cloned sideEffects
 
 
- 
mergeInto
public void mergeInto(TraversalSideEffects sideEffects)
Description copied from interface:TraversalSideEffectsAdd the currentTraversalSideEffectsvalues, suppliers, and reducers to the providedTraversalSideEffects. The implementation should (under the hood), useTraversalSideEffects.registerIfAbsent(String, Supplier, BinaryOperator)so that if the argumentTraversalSideEffectsalready has a registered supplier or binary operator, then don't overwrite it.- Specified by:
 mergeIntoin interfaceTraversalSideEffects- Parameters:
 sideEffects- the sideEffects to add this traversal's sideEffect data to.
 
- 
instance
public static EmptyTraversalSideEffects instance()
 
 - 
 
 -