| 
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectgroovy.lang.GroovyObjectSupport
groovyx.gpars.dataflow.DataFlows
public final class DataFlows
Convenience class that makes working with DataFlowVariables more comfortable.
See the implementation of groovyx.gpars.samples.dataflow.DemoDataFlows for a full example. A DataFlows instance is a bean with properties of type DataFlowVariable. Property access is relayed to the access methods of DataFlowVariable. Each property is initialized lazily the first time it is accessed. Non-String named properties can be also accessed using array-like indexing syntax This allows a rather compact usage of DataFlowVariables like
 final df = new DataFlows()
 start { df[0] = df.x + df.y }
 start { df.x = 10 }
 start { df.y = 5 }
 assert 15 == df[0]
 
| Field Summary | |
|---|---|
(package private) static int | 
DEFAULT_CONCURRENCY_LEVEL
 | 
(package private) static int | 
DEFAULT_INITIAL_CAPACITY
 | 
(package private) static float | 
DEFAULT_LOAD_FACTOR
 | 
private static DataFlowVariable<java.lang.Object> | 
DUMMY
 | 
private  java.lang.Object | 
lock
 | 
private  java.util.concurrent.ConcurrentMap<java.lang.Object,DataFlowVariable<java.lang.Object>> | 
variables
 | 
| Constructor Summary | |
|---|---|
DataFlows()
Constructor with default values for building the underlying ConcurrentHashMap  | 
|
DataFlows(int initialCapacity,
          float loadFactor,
          int concurrencyLevel)
Constructor that supports the various constructors of the underlying ConcurrentHashMap (unless the one with Map parameter).  | 
|
| Method Summary | |
|---|---|
 boolean | 
contains(java.lang.Object name)
Checks whether a certain key is contained in the map.  | 
private  DataFlowVariable<java.lang.Object> | 
ensureToContainVariable(java.lang.Object name)
The idea is following: - we try to putIfAbsent dummy DFV in to map - if something real already there we are done - if not we obtain lock and put new DFV with double check Unfortunately we have to sync on this as there is no better option (God forbid to sync on name)  | 
(package private)  java.lang.Object | 
getAt(int index)
Retrieves the DFV associated with the given index  | 
 java.lang.Object | 
getProperty(java.lang.String property)
 | 
 java.lang.Object | 
invokeMethod(java.lang.String name,
             java.lang.Object args)
Invokes the given method.  | 
 java.util.Iterator<java.util.Map.Entry<java.lang.Object,DataFlowVariable<java.lang.Object>>> | 
iterator()
Convenience method to play nicely with Groovy object iteration methods.  | 
(package private)  void | 
putAt(java.lang.Object index,
      java.lang.Object value)
Binds the value to the DataFlowVariable that is associated with the property "index".  | 
private  DataFlowVariable<java.lang.Object> | 
putNewUnderLock(java.lang.Object name)
Utility method extracted just to help JIT  | 
 DataFlowVariable<java.lang.Object> | 
remove(java.lang.Object name)
Removes a DFV from the map and binds it to null, if it has not been bound yet  | 
 void | 
setProperty(java.lang.String property,
            java.lang.Object newValue)
Binds the value to the DataFlowVariable that is associated with the property "name".  | 
| Methods inherited from class groovy.lang.GroovyObjectSupport | 
|---|
getMetaClass, setMetaClass | 
| Methods inherited from class java.lang.Object | 
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait | 
| Field Detail | 
|---|
private static final DataFlowVariable<java.lang.Object> DUMMY
private final java.lang.Object lock
private java.util.concurrent.ConcurrentMap<java.lang.Object,DataFlowVariable<java.lang.Object>> variables
static final int DEFAULT_INITIAL_CAPACITY
static final float DEFAULT_LOAD_FACTOR
static final int DEFAULT_CONCURRENCY_LEVEL
| Constructor Detail | 
|---|
public DataFlows(int initialCapacity,
                 float loadFactor,
                 int concurrencyLevel)
initialCapacity - the initial capacity. The implementation
                         performs internal sizing to accommodate this many elements.loadFactor - the load factor threshold, used to control resizing.
                         Resizing may be performed when the average number of elements per
                         bin exceeds this threshold.concurrencyLevel - the estimated number of concurrently
                         updating threads. The implementation performs internal sizing
                         to try to accommodate this many threads.
java.lang.IllegalArgumentException - if the initial capacity is
                                  negative or the load factor or concurrencyLevel are
                                  non-positive.ConcurrentHashMappublic DataFlows()
ConcurrentHashMap| Method Detail | 
|---|
public void setProperty(java.lang.String property,
                        java.lang.Object newValue)
setProperty in interface groovy.lang.GroovyObjectsetProperty in class groovy.lang.GroovyObjectSupportnewValue - a scalar or a DataFlowVariable that may block on value accessDataFlowExpression.bind(T)public java.lang.Object getProperty(java.lang.String property)
getProperty in interface groovy.lang.GroovyObjectgetProperty in class groovy.lang.GroovyObjectSupportDataFlowExpression.getVal()
public java.lang.Object invokeMethod(java.lang.String name,
                                     java.lang.Object args)
 def df = new DataFlows()
 df.var {*     println "Variable bound to $it"
 }* 
invokeMethod in interface groovy.lang.GroovyObjectinvokeMethod in class groovy.lang.GroovyObjectSupportname - the name of the method to call (the variable name)args - the arguments to use for the method call (a closure to invoke when a value is bound)
java.lang.Object getAt(int index)
                 throws java.lang.InterruptedException
index - The index to find a match for
java.lang.InterruptedException - If the thread gets interruptedDataFlowExpression.getVal()
void putAt(java.lang.Object index,
           java.lang.Object value)
index - The index to associate the value withvalue - a scalar or a DataFlowVariable that may block on value accessDataFlowExpression.bind(T)private DataFlowVariable<java.lang.Object> ensureToContainVariable(java.lang.Object name)
name - The key to ensure has a DFV bound to it
private DataFlowVariable<java.lang.Object> putNewUnderLock(java.lang.Object name)
name - The key to ensure has a DFV bound to it
public DataFlowVariable<java.lang.Object> remove(java.lang.Object name)
name - The name of the DFV to remove.
public boolean contains(java.lang.Object name)
name - The name of the DFV to check.
public java.util.Iterator<java.util.Map.Entry<java.lang.Object,DataFlowVariable<java.lang.Object>>> iterator()
  | 
Copyright © 2008–2010 Václav Pech. All Rights Reserved. | |||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||