1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.openehealth.ipf.platform.camel.core.adapter;
17
18 import static org.openehealth.ipf.platform.camel.core.util.Exchanges.prepareResult;
19
20 import java.io.InputStream;
21 import java.io.Reader;
22
23 import javax.xml.transform.Source;
24
25 import org.apache.camel.Exchange;
26 import org.openehealth.ipf.commons.core.modules.api.Renderer;
27
28
29
30
31
32
33 public class RendererAdapter extends ProcessorAdapter {
34
35 private final Renderer renderer;
36
37
38
39
40
41
42
43
44 public RendererAdapter(Renderer renderer) {
45 this.renderer = renderer;
46 }
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63 @Override
64 protected void doProcess(Exchange exchange, Object inputData,
65 Object... inputParams) throws Exception {
66
67 if (inputData instanceof InputStream) {
68 throw new IllegalArgumentException(errorMessage(inputData));
69 } else if (inputData instanceof Reader) {
70 throw new IllegalArgumentException(errorMessage(inputData));
71 } else if (inputData instanceof Source) {
72 throw new IllegalArgumentException(errorMessage(inputData));
73 } else {
74 prepareResult(exchange).setBody(renderer.render(inputData, inputParams));
75 }
76
77 }
78
79 private static String errorMessage(Object inputData) {
80 return "invalid input data type for renderer: " + inputData.getClass()
81 + ". Use a parser or converter instead.";
82 }
83
84 }