1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.rribbit.processing;
17
18 import java.util.Collection;
19
20 import org.rribbit.ListenerObject;
21 import org.rribbit.Request;
22 import org.rribbit.Response;
23 import org.rribbit.dispatching.LocalRequestDispatcher;
24 import org.rribbit.execution.ListenerObjectExecutor;
25 import org.rribbit.retrieval.ListenerObjectRetriever;
26 import org.slf4j.Logger;
27 import org.slf4j.LoggerFactory;
28
29
30
31
32
33
34
35
36 public class LocalRequestProcessor implements RequestProcessor {
37
38 private static final Logger log = LoggerFactory.getLogger(LocalRequestProcessor.class);
39
40 protected ListenerObjectRetriever listenerObjectRetriever;
41 protected ListenerObjectExecutor listenerObjectExecutor;
42
43
44
45
46
47 public LocalRequestProcessor() {}
48
49
50
51
52
53
54
55
56 public LocalRequestProcessor(ListenerObjectRetriever listenerObjectRetriever, ListenerObjectExecutor listenerObjectExecutor) {
57 this.listenerObjectRetriever = listenerObjectRetriever;
58 this.listenerObjectExecutor = listenerObjectExecutor;
59 }
60
61 @Override
62 public <T> Response<T> processRequest(Request request) {
63
64 log.info("Processing Request");
65
66 log.debug("Getting ListenerObjects");
67 Collection<ListenerObject> listenerObjects;
68 if(request.getDesiredReturnType() == null) {
69 if(request.getHint() == null) {
70 listenerObjects = listenerObjectRetriever.getListenerObjects();
71 } else {
72 listenerObjects = listenerObjectRetriever.getListenerObjects(request.getHint());
73 }
74 } else {
75 if(request.getHint() == null) {
76 listenerObjects = listenerObjectRetriever.getListenerObjects(request.getDesiredReturnType());
77 } else {
78 listenerObjects = listenerObjectRetriever.getListenerObjects(request.getDesiredReturnType(), request.getHint());
79 }
80 }
81
82 log.debug("Executing ListenerObjects");
83 Response<T> response = listenerObjectExecutor.executeListeners(listenerObjects, request.getParameters());
84 log.info("Returning Response");
85 return response;
86 }
87
88 public ListenerObjectRetriever getListenerObjectRetriever() {
89 return listenerObjectRetriever;
90 }
91
92 public void setListenerObjectRetriever(ListenerObjectRetriever listenerObjectRetriever) {
93 this.listenerObjectRetriever = listenerObjectRetriever;
94 }
95
96 public ListenerObjectExecutor getListenerObjectExecutor() {
97 return listenerObjectExecutor;
98 }
99
100 public void setListenerObjectExecutor(ListenerObjectExecutor listenerObjectExecutor) {
101 this.listenerObjectExecutor = listenerObjectExecutor;
102 }
103 }