EMMA Coverage Report (generated Thu Jan 20 11:39:44 EST 2011)
[all classes][com.hammurapi.eventbus.local]

COVERAGE SUMMARY FOR SOURCE FILE [LocalPredicatedInferenceNode.java]

nameclass, %method, %block, %line, %
LocalPredicatedInferenceNode.java100% (2/2)100% (15/15)100% (184/184)100% (28/28)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
class LocalPredicatedInferenceNode100% (1/1)100% (12/12)100% (77/77)100% (13/13)
LocalPredicatedInferenceNode (LocalPredicatedInferenceNode, LocalPredicateCha... 100% (1/1)100% (28/28)100% (6/6)
access$0 (LocalPredicatedInferenceNode): PredicateChainingMatcher 100% (1/1)100% (3/3)100% (1/1)
access$1 (LocalPredicatedInferenceNode): List 100% (1/1)100% (3/3)100% (1/1)
access$2 (LocalPredicatedInferenceNode): List 100% (1/1)100% (3/3)100% (1/1)
access$3 (LocalPredicatedInferenceNode): List 100% (1/1)100% (3/3)100% (1/1)
access$4 (LocalPredicatedInferenceNode): List 100% (1/1)100% (3/3)100% (1/1)
createCollectorTask (Map, ExecutorService, AtomicReference, Object): Callable 100% (1/1)100% (10/10)100% (1/1)
getFalseChildren (): List 100% (1/1)100% (3/3)100% (1/1)
getFalseHandlers (): List 100% (1/1)100% (3/3)100% (1/1)
getTrueChildren (): List 100% (1/1)100% (3/3)100% (1/1)
getTrueHandlers (): List 100% (1/1)100% (3/3)100% (1/1)
toString (): String 100% (1/1)100% (12/12)100% (1/1)
     
class LocalPredicatedInferenceNode$CollectorTask100% (1/1)100% (3/3)100% (107/107)100% (15/15)
LocalPredicatedInferenceNode$CollectorTask (LocalPredicatedInferenceNode, Obj... 100% (1/1)100% (18/18)100% (6/6)
LocalPredicatedInferenceNode$CollectorTask (LocalPredicatedInferenceNode, Obj... 100% (1/1)100% (8/8)100% (1/1)
call (): Collection 100% (1/1)100% (81/81)100% (9/9)

1package com.hammurapi.eventbus.local;
2 
3import java.lang.reflect.Array;
4import java.util.ArrayList;
5import java.util.Collection;
6import java.util.List;
7import java.util.Map;
8import java.util.concurrent.Callable;
9import java.util.concurrent.ExecutorService;
10import java.util.concurrent.Future;
11import java.util.concurrent.atomic.AtomicReference;
12 
13import com.hammurapi.eventbus.AbstractEventBus;
14import com.hammurapi.eventbus.AbstractEventBus.Handle;
15import com.hammurapi.eventbus.EventHandlerWrapper;
16import com.hammurapi.eventbus.EventStore;
17import com.hammurapi.eventbus.PredicatedInferenceNode;
18import com.hammurapi.extract.Extractor;
19import com.hammurapi.extract.Predicate;
20 
21class LocalPredicatedInferenceNode<E, P extends Comparable<P>, C, S extends EventStore<E, P, C, AbstractEventBus.Handle<E, P, C, Long>, S>> extends PredicatedInferenceNode<E, P, C, Long, AbstractEventBus.Handle<E, P, C, Long>, S> {
22 
23        private final class CollectorTask implements Callable<Collection<EventHandlerWrapper<E, P, C, Long, AbstractEventBus.Handle<E, P, C, Long>, S>>> {
24                private final E event;
25                private final AtomicReference<Collection<Future<Collection<EventHandlerWrapper<E, P, C, Long, Handle<E, P, C, Long>, S>>>>> collector;
26                private final ExecutorService executor;
27                private final Map<C, Map<Extractor<E, ? super Boolean, C>, ? super Boolean>> cache;
28 
29                private CollectorTask(
30                                E event,
31                                AtomicReference<Collection<Future<Collection<EventHandlerWrapper<E, P, C, Long, Handle<E, P, C, Long>, S>>>>> collector,
32                                ExecutorService executor,
33                                Map<C, Map<Extractor<E, ? super Boolean, C>, ? super Boolean>> cache) {
34                        this.event = event;
35                        this.collector = collector;
36                        this.executor = executor;
37                        this.cache = cache;
38                }
39 
40                @Override
41                public Collection<EventHandlerWrapper<E, P, C, Long, AbstractEventBus.Handle<E, P, C, Long>, S>> call() throws Exception {
42                        @SuppressWarnings("unchecked")
43                        E[] events = (E[]) Array.newInstance(matcher.getEventBus().getEventType(), 1);
44                        events[0] = event;
45                        
46                        if (getPredicate().extract(getContext(), cache, events)) {
47                                for (PredicatedInferenceNode<E, P, C, Long, AbstractEventBus.Handle<E, P, C, Long>, S> trueChild: trueChildren) {
48                                        trueChild.collectHandlers(cache, executor, collector, event);
49                                }
50                                return trueHandlers;
51                        } else {
52                                for (PredicatedInferenceNode<E, P, C, Long, AbstractEventBus.Handle<E, P, C, Long>, S> falseChild: falseChildren) {
53                                        falseChild.collectHandlers(cache, executor, collector, event);
54                                }
55                                return falseHandlers;                                        
56                        }                                
57                }
58        }
59 
60        public LocalPredicatedInferenceNode(
61                        LocalPredicatedInferenceNode<E, P, C, S> parent, 
62                        LocalPredicateChainingMatcher<E,P,C,S> matcher, 
63                        Predicate<E, C> predicate, 
64                        C context, 
65                        Long id) {
66                super(parent, matcher, predicate, context, id);
67        }
68 
69        private List<PredicatedInferenceNode<E, P, C, Long, AbstractEventBus.Handle<E, P, C, Long>, S>> falseChildren = new ArrayList<PredicatedInferenceNode<E,P,C,Long, AbstractEventBus.Handle<E, P, C, Long>, S>>();
70        private List<EventHandlerWrapper<E, P, C, Long, AbstractEventBus.Handle<E, P, C, Long>, S>> falseHandlers = new ArrayList<EventHandlerWrapper<E,P,C, Long, AbstractEventBus.Handle<E, P, C, Long>, S>>(); 
71        private List<PredicatedInferenceNode<E, P, C, Long, AbstractEventBus.Handle<E, P, C, Long>, S>> trueChildren = new ArrayList<PredicatedInferenceNode<E,P,C,Long, AbstractEventBus.Handle<E, P, C, Long>, S>>();
72        private List<EventHandlerWrapper<E, P, C, Long, AbstractEventBus.Handle<E, P, C, Long>, S>> trueHandlers = new ArrayList<EventHandlerWrapper<E,P,C, Long, AbstractEventBus.Handle<E, P, C, Long>, S>>();
73 
74        @Override
75        protected Callable<Collection<EventHandlerWrapper<E, P, C, Long, AbstractEventBus.Handle<E, P, C, Long>, S>>> createCollectorTask(
76                        Map<C, Map<Extractor<E, ? super Boolean, C>, ? super Boolean>> cache,
77                        ExecutorService executor,
78                        AtomicReference<Collection<Future<Collection<EventHandlerWrapper<E, P, C, Long, AbstractEventBus.Handle<E, P, C, Long>, S>>>>> collector,
79                        E event) {
80                
81                return new CollectorTask(event, collector, executor, cache);
82        }
83 
84        @Override
85        protected List<PredicatedInferenceNode<E, P, C, Long, AbstractEventBus.Handle<E, P, C, Long>, S>> getFalseChildren() {
86                return falseChildren;
87        }
88 
89        @Override
90        protected List<EventHandlerWrapper<E, P, C, Long, AbstractEventBus.Handle<E, P, C, Long>, S>> getFalseHandlers() {
91                return falseHandlers;
92        }
93 
94        @Override
95        protected List<PredicatedInferenceNode<E, P, C, Long, AbstractEventBus.Handle<E, P, C, Long>, S>> getTrueChildren() {
96                return trueChildren;
97        }
98 
99        @Override
100        protected List<EventHandlerWrapper<E, P, C, Long, AbstractEventBus.Handle<E, P, C, Long>, S>> getTrueHandlers() {
101                return trueHandlers;
102        }
103 
104        @Override
105        public String toString() {
106                return "LocalPredicatedInferenceNode [hashCode()=" +Integer.toHexString(hashCode())+"]"; //+ " getPredicate()=" + getPredicate()        + "]";
107        }
108 
109        
110}

[all classes][com.hammurapi.eventbus.local]
EMMA 2.0.5312 EclEmma Fix 2 (C) Vladimir Roubtsov