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

COVERAGE SUMMARY FOR SOURCE FILE [MappingEventHandler.java]

nameclass, %method, %block, %line, %
MappingEventHandler.java100% (2/2)47%  (7/15)74%  (143/192)67%  (22.8/34)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
class MappingEventHandler100% (1/1)33%  (4/12)55%  (54/99)57%  (12/21)
consumes (): boolean 0%   (0/1)0%   (0/4)0%   (0/1)
getContext (): Object 0%   (0/1)0%   (0/4)0%   (0/1)
getMode (): EventHandlerBase$Mode 0%   (0/1)0%   (0/4)0%   (0/1)
getPredicate (): Predicate 0%   (0/1)0%   (0/4)0%   (0/1)
getPriority (): Comparable 0%   (0/1)0%   (0/4)0%   (0/1)
isOneOff (): boolean 0%   (0/1)0%   (0/4)0%   (0/1)
reset (): void 0%   (0/1)0%   (0/4)0%   (0/2)
toString (): String 0%   (0/1)0%   (0/17)0%   (0/1)
MappingEventHandler (EventHandlerWrapper, Mapper []): void 100% (1/1)100% (9/9)100% (4/4)
access$0 (MappingEventHandler): Mapper [] 100% (1/1)100% (3/3)100% (1/1)
getCardinality (): int 100% (1/1)100% (4/4)100% (1/1)
post (EventDispatchContext, InferenceContext, AbstractEventBus$Handle [][]): ... 100% (1/1)100% (38/38)100% (6/6)
     
class MappingEventHandler$1100% (1/1)100% (3/3)96%  (89/93)84%  (11.8/14)
consumeJoin (Object): void 100% (1/1)92%  (36/39)80%  (4.8/6)
consumeJoin (int): void 100% (1/1)98%  (40/41)83%  (5/6)
MappingEventHandler$1 (MappingEventHandler, EventDispatchContext, AbstractEve... 100% (1/1)100% (13/13)100% (2/2)

1package com.hammurapi.eventbus;
2 
3import java.io.Serializable;
4import java.util.Arrays;
5 
6import com.hammurapi.eventbus.AbstractEventBus.Handle;
7import com.hammurapi.extract.Predicate;
8 
9/**
10 * Handler which maps input tuples like {{E1, E2, E5}, {E4, E3}} to {E1, E2, E3, E4, E5} 
11 * @author Pavel Vlasov
12 *
13 * @param <E>
14 * @param <P>
15 * @param <C>
16 */
17public class MappingEventHandler<E, P extends Comparable<P>, C, K, H extends EventBus.Handle<E, P, C>, S extends EventStore<E,P,C,H,S>> implements JoinEventHandler<E, P, C, K, H, S>, Serializable {
18        
19        private EventHandlerWrapper<E, P, C, K, H, S> target;
20        private Mapper<Handle<E,P,C,K>>[] mappers;
21 
22        public MappingEventHandler(EventHandlerWrapper<E, P, C, K, H, S> target, Mapper<Handle<E,P,C,K>>[] mappers) {
23                this.target = target;
24                this.mappers = mappers;
25        }
26 
27        @Override
28        public boolean consumes() {
29                return target.consumes();
30        }
31 
32        @Override
33        public int getCardinality() {
34                return mappers.length;
35        }
36 
37        @Override
38        public C getContext() {
39                return target.getContext();
40        }
41 
42        @Override
43        public P getPriority() {
44                return target.getPriority();
45        }
46 
47        @SuppressWarnings("unchecked")
48        @Override
49        public void post(
50                        final EventDispatchContext<E,P,C,H,S> context, 
51                        InferenceContext<E,P,C,K,H,S> inferenceContext, 
52                        final Handle<E,P,C,K>[]... handles) {
53                
54                Handle<E,P,C,K>[] targetInput = new Handle[target.getCardinality()];
55                for (int i=0; i<mappers.length; ++i) {
56                        mappers[i].map(handles[i], targetInput);
57                }
58                
59                EventDispatchJoinContext<E,P,C,H,S> mappingContext = new EventDispatchJoinContextFilter<E,P,C,H,S>(context) {
60                        
61                        public void consumeJoin(E event) {
62                                for (int i=0; i<handles.length; ++i) {
63                                        for (Handle<E,P,C,K> h: handles[i]) {
64                                                if (event==h.getEvent()) {
65                                                        ((EventDispatchJoinContext<E, P, C, H, S>) context).consumeJoin(i);
66                                                        return;
67                                                }
68                                        }
69                                }
70                        };
71                        
72                        @Override
73                        public void consumeJoin(int index) {
74                                for (int i=0; i<mappers.length; ++i) {
75                                        for (int idx: mappers[i].getIndexMap()) {
76                                                if (idx==index) {
77                                                        ((EventDispatchJoinContext<E, P, C, H, S>) context).consumeJoin(i);
78                                                        return;
79                                                }
80                                        }
81                                }
82                        }
83                        
84                };
85                
86                target.post(mappingContext, inferenceContext, targetInput);
87        }
88 
89        @Override
90        public void reset() {
91                target.reset();                
92        }
93 
94        @Override
95        public String toString() {
96                return "MappingEventHandler [target=" + target + ", mappers=" + Arrays.toString(mappers) + "]";
97        }
98 
99        @Override
100        public boolean isOneOff() {
101                return target.isOneOff();
102        }
103 
104        @Override
105        public Mode getMode() {
106                return target.getMode();
107        }
108 
109        @Override
110        public Predicate<E, C> getPredicate() {
111                throw new UnsupportedOperationException(); // TODO - Map target predicate if needed.
112        }
113 
114        
115}

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