Remove FlowState and use a proxy pattern for that state

This is a pretty big change as it causes all read taps to be wrapped by a proxy, but it does remove a big wart: the global static FlowState map.

Thoughts on this one?

@cwensel Note the ProxyTap here. I had to resort to reflection to make this work due to the .id in Taps being private. It would be nice to have this ProxyTap idea supporting in cascading so that we can attach extra information to Taps we get at runtime.
> 
> is the purpose of this to make idF available internallyk, or to somehow change/manipulate it? This matters because any change to the id won't be represented in the underlying Tap. We can just surface the info
> 
> 

you cannot change the value of ID in a Tap. the field 'id' has been made final starting in 2.5.6 and is no longer lazily initialized. 

Cascading relies heavily on these IDs for planning and resolving resources cluster side. An id changing on a Tap could cause silent failures during processing that would be very hard to detect. This is especially true in the 3.0 planner.

we are happy to address adding user meta-data to the Tap object itself and ship it in 2.6. 

probably best you provide and example of what you think would be the minimum level of functionality.

fwiw, access to the value is through the static method Tap.id( tap )

ckw


Chris K Wensel
chris@concurrentinc.com
http://concurrentinc.com