|
33 | 33 | @Builder
|
34 | 34 | @AllArgsConstructor
|
35 | 35 |
|
36 |
| -public class ConfigurableModule implements Module{ |
| 36 | +public class ConfigurableModule implements Module { |
37 | 37 |
|
38 |
| - @Wither |
39 |
| - private final Set<Object> jaxRsResourceObjects; |
40 | 38 | @Wither
|
41 |
| - private final Set<Class<?>> restResourceClasses; |
| 39 | + private final Set<Object> jaxRsResourceObjects; |
42 | 40 | @Wither
|
43 |
| - private final Set<Class<? extends Annotation>> restAnnotationClasses; |
| 41 | + private final Set<Class<?>> restResourceClasses; |
44 | 42 | @Wither
|
45 |
| - private final List<Class<?>> defaultResources; |
| 43 | + private final Set<Class<? extends Annotation>> restAnnotationClasses; |
46 | 44 | @Wither
|
47 |
| - private final List<ServletContextListener> listeners; |
| 45 | + private final List<Class<?>> defaultResources; |
48 | 46 | @Wither
|
49 |
| - private final List<ServletRequestListener> requestListeners; |
| 47 | + private final List<ServletContextListener> listeners; |
50 | 48 | @Wither
|
51 |
| - private final Map<String, Filter> filters; |
| 49 | + private final List<ServletRequestListener> requestListeners; |
52 | 50 | @Wither
|
53 |
| - private final Map<String, Servlet> servlets; |
| 51 | + private final Map<String, Filter> filters; |
54 | 52 | @Wither
|
55 |
| - private final String jaxWsRsApplication; |
| 53 | + private final Map<String, Servlet> servlets; |
56 | 54 | @Wither
|
57 |
| - private final String providers; |
| 55 | + private final String jaxWsRsApplication; |
58 | 56 | @Wither
|
59 |
| - private final String context; |
| 57 | + private final String providers; |
60 | 58 | @Wither
|
61 |
| - private final Set<Class<?>> springConfigurationClasses; |
| 59 | + private final String context; |
62 | 60 | @Wither
|
63 |
| - private final Map<String,String> propertyOverrides; |
| 61 | + private final Set<Class<?>> springConfigurationClasses; |
64 | 62 | @Wither
|
65 |
| - private final List<String> defaultJaxRsPackages; |
| 63 | + private final Map<String, String> propertyOverrides; |
| 64 | + @Wither |
| 65 | + private final List<String> defaultJaxRsPackages; |
66 | 66 |
|
67 |
| - private final Consumer<WebServerProvider<?>> serverConfigManager; |
68 |
| - private final Consumer<JaxRsProvider<?>> resourceConfigManager; |
| 67 | + private final Consumer<WebServerProvider<?>> serverConfigManager; |
| 68 | + private final Consumer<JaxRsProvider<?>> resourceConfigManager; |
69 | 69 | @Wither
|
70 |
| - private final Map<String, Object> serverProperties; |
| 70 | + private final Map<String, Object> serverProperties; |
71 | 71 | @Wither
|
72 |
| - final boolean resetAll; |
73 |
| - |
74 |
| - |
75 |
| - public <T> ConfigurableModule withResourceConfigManager(Consumer<JaxRsProvider<T>> resourceConfigManager){ |
76 |
| - return new ConfigurableModule(jaxRsResourceObjects,restResourceClasses,restAnnotationClasses, defaultResources, |
77 |
| - listeners, requestListeners,filters,servlets, jaxWsRsApplication,providers, |
78 |
| - context, springConfigurationClasses, propertyOverrides,defaultJaxRsPackages,serverConfigManager, |
79 |
| - (Consumer)resourceConfigManager,serverProperties, resetAll); |
80 |
| - } |
81 |
| - public <T> ConfigurableModule withServerConfigManager(Consumer<WebServerProvider<?>> serverConfigManager){ |
82 |
| - return new ConfigurableModule(jaxRsResourceObjects,restResourceClasses,restAnnotationClasses, defaultResources, |
83 |
| - listeners, requestListeners,filters,servlets, jaxWsRsApplication,providers, |
84 |
| - context, springConfigurationClasses, propertyOverrides,defaultJaxRsPackages, |
85 |
| - (Consumer)serverConfigManager,resourceConfigManager, serverProperties, resetAll); |
86 |
| - } |
87 |
| - @Override |
88 |
| - public Set<Object> getJaxRsResourceObjects(){ |
89 |
| - if(this.jaxRsResourceObjects!=null) |
90 |
| - return PSetX.fromCollection(concat(this.jaxRsResourceObjects, extract(() -> Module.super.getJaxRsResourceObjects()))); |
91 |
| - return Module.super.getJaxRsResourceObjects(); |
92 |
| - } |
93 |
| - @Override |
94 |
| - public <T> Consumer<WebServerProvider<T>> getServerConfigManager(){ |
95 |
| - if(serverConfigManager!=null) |
96 |
| - return (Consumer)serverConfigManager; |
97 |
| - |
98 |
| - return Module.super.getServerConfigManager(); |
99 |
| - } |
100 |
| - @Override |
101 |
| - public <T> Consumer<JaxRsProvider<T>> getResourceConfigManager(){ |
102 |
| - if(resourceConfigManager!=null) |
103 |
| - return (Consumer)resourceConfigManager; |
104 |
| - |
105 |
| - return Module.super.getResourceConfigManager(); |
106 |
| - } |
107 |
| - |
108 |
| - @Override |
109 |
| - public List<String> getDefaultJaxRsPackages() { |
110 |
| - if(defaultJaxRsPackages!=null) |
111 |
| - return PStackX.fromCollection(concat(defaultJaxRsPackages,extract(()->Module.super.getDefaultJaxRsPackages()))); |
112 |
| - |
113 |
| - return PStackX.fromCollection(Module.super.getDefaultJaxRsPackages()); |
114 |
| - } |
115 |
| - private <T> Collection<T> extract(Supplier<Collection<T>> s) { |
116 |
| - if(!resetAll) |
117 |
| - return s.get(); |
118 |
| - return Arrays.asList(); |
119 |
| - } |
120 |
| - private <K,V> Map<K,V> extractMap(Supplier<Map<K,V>> s) { |
121 |
| - if(!resetAll) |
122 |
| - return s.get(); |
123 |
| - return HashMapBuilder.of(); |
124 |
| - } |
125 |
| - @Override |
126 |
| - public Set<Class<?>> getRestResourceClasses() { |
127 |
| - if(restResourceClasses!=null) |
128 |
| - return PSetX.fromCollection(concat(restResourceClasses, extract(() -> Collections.singletonList(CommonRestResource.class)))); |
129 |
| - |
130 |
| - return Module.super.getRestResourceClasses(); |
131 |
| - } |
132 |
| - |
133 |
| - @Override |
134 |
| - public Set<Class<? extends Annotation>> getRestAnnotationClasses() { |
135 |
| - if(restAnnotationClasses!=null) |
136 |
| - return PSetX.fromCollection(concat(restAnnotationClasses, extract(() -> Module.super.getRestAnnotationClasses()))); |
137 |
| - |
138 |
| - return Module.super.getRestAnnotationClasses(); |
139 |
| - } |
140 |
| - |
141 |
| - @Override |
142 |
| - public List<Class<?>> getDefaultResources() { |
143 |
| - if(this.defaultResources!=null){ |
144 |
| - return PStackX.fromCollection((concat(this.defaultResources,extract(()->Module.super.getDefaultResources())))); |
145 |
| - } |
146 |
| - |
147 |
| - return Module.super.getDefaultResources(); |
148 |
| - } |
149 |
| - |
150 |
| - @Override |
151 |
| - public List<ServletContextListener> getListeners(ServerData data) { |
152 |
| - if(listeners!=null) |
153 |
| - return PStackX.fromCollection((concat(this.listeners, extract(()->Module.super.getListeners(data))))); |
154 |
| - |
155 |
| - return Module.super.getListeners(data); |
156 |
| - } |
157 |
| - |
158 |
| - @Override |
159 |
| - public List<ServletRequestListener> getRequestListeners(ServerData data) { |
160 |
| - if(requestListeners!=null) |
161 |
| - return PStackX.fromCollection(concat(this.requestListeners, |
162 |
| - extract(()->Module.super.getRequestListeners(data)))); |
163 |
| - |
164 |
| - return Module.super.getRequestListeners(data); |
165 |
| - } |
166 |
| - |
167 |
| - @Override |
168 |
| - public Map<String, Filter> getFilters(ServerData data) { |
169 |
| - if(filters!=null) |
170 |
| - return PMapX.fromMap(filters).plusAll(extractMap(()->Module.super.getFilters(data))); |
171 |
| - |
172 |
| - return Module.super.getFilters(data); |
173 |
| - } |
174 |
| - |
175 |
| - @Override |
176 |
| - public Map<String, Servlet> getServlets(ServerData data) { |
177 |
| - if(servlets!=null) |
178 |
| - return PMapX.fromMap(servlets).plusAll(extractMap(()->Module.super.getServlets(data))); |
179 |
| - |
180 |
| - return Module.super.getServlets(data); |
181 |
| - } |
182 |
| - |
183 |
| - @Override |
184 |
| - public String getJaxWsRsApplication() { |
185 |
| - if(this.jaxWsRsApplication!=null) |
186 |
| - return jaxWsRsApplication; |
187 |
| - return Module.super.getJaxWsRsApplication(); |
188 |
| - } |
189 |
| - |
190 |
| - @Override |
191 |
| - public String getProviders() { |
192 |
| - if(providers!=null) |
193 |
| - return providers; |
194 |
| - return Module.super.getProviders(); |
195 |
| - } |
196 |
| - |
197 |
| - @Override |
198 |
| - public String getContext() { |
199 |
| - |
200 |
| - return context; |
201 |
| - } |
202 |
| - |
203 |
| - @Override |
204 |
| - public Set<Class<?>> getSpringConfigurationClasses() { |
205 |
| - if(this.springConfigurationClasses!=null) |
206 |
| - return PSetX.fromCollection(concat(this.springConfigurationClasses, extract(()->Module.super.getSpringConfigurationClasses()))); |
207 |
| - |
208 |
| - return Module.super.getSpringConfigurationClasses(); |
209 |
| - } |
210 |
| - |
211 |
| - @Override |
212 |
| - public Map<String, Object> getServerProperties() { |
213 |
| - if(serverProperties != null) { |
214 |
| - return PMapX.fromMap(serverProperties).plusAll(extractMap(() -> Module.super.getServerProperties())); |
215 |
| - } else { |
216 |
| - return Module.super.getServerProperties(); |
217 |
| - } |
218 |
| - } |
| 72 | + final boolean resetAll; |
| 73 | + |
| 74 | + |
| 75 | + public <T> ConfigurableModule withResourceConfigManager(Consumer<JaxRsProvider<T>> resourceConfigManager) { |
| 76 | + return new ConfigurableModule(jaxRsResourceObjects, restResourceClasses, restAnnotationClasses, defaultResources, |
| 77 | + listeners, requestListeners, filters, servlets, jaxWsRsApplication, providers, |
| 78 | + context, springConfigurationClasses, propertyOverrides, defaultJaxRsPackages, serverConfigManager, |
| 79 | + (Consumer) resourceConfigManager, serverProperties, resetAll); |
| 80 | + } |
| 81 | + |
| 82 | + public <T> ConfigurableModule withServerConfigManager(Consumer<WebServerProvider<?>> serverConfigManager) { |
| 83 | + return new ConfigurableModule(jaxRsResourceObjects, restResourceClasses, restAnnotationClasses, defaultResources, |
| 84 | + listeners, requestListeners, filters, servlets, jaxWsRsApplication, providers, |
| 85 | + context, springConfigurationClasses, propertyOverrides, defaultJaxRsPackages, |
| 86 | + (Consumer) serverConfigManager, resourceConfigManager, serverProperties, resetAll); |
| 87 | + } |
| 88 | + |
| 89 | + @Override |
| 90 | + public Set<Object> getJaxRsResourceObjects() { |
| 91 | + if (this.jaxRsResourceObjects != null) |
| 92 | + return PSetX.fromCollection(concat(this.jaxRsResourceObjects, extract(() -> Module.super.getJaxRsResourceObjects()))); |
| 93 | + return Module.super.getJaxRsResourceObjects(); |
| 94 | + } |
| 95 | + |
| 96 | + @Override |
| 97 | + public <T> Consumer<WebServerProvider<T>> getServerConfigManager() { |
| 98 | + if (serverConfigManager != null) |
| 99 | + return (Consumer) serverConfigManager; |
| 100 | + |
| 101 | + return Module.super.getServerConfigManager(); |
| 102 | + } |
| 103 | + |
| 104 | + @Override |
| 105 | + public <T> Consumer<JaxRsProvider<T>> getResourceConfigManager() { |
| 106 | + if (resourceConfigManager != null) |
| 107 | + return (Consumer) resourceConfigManager; |
| 108 | + |
| 109 | + return Module.super.getResourceConfigManager(); |
| 110 | + } |
| 111 | + |
| 112 | + @Override |
| 113 | + public List<String> getDefaultJaxRsPackages() { |
| 114 | + if (defaultJaxRsPackages != null) |
| 115 | + return PStackX.fromCollection(concat(defaultJaxRsPackages, extract(() -> Module.super.getDefaultJaxRsPackages()))); |
| 116 | + |
| 117 | + return PStackX.fromCollection(Module.super.getDefaultJaxRsPackages()); |
| 118 | + } |
| 119 | + |
| 120 | + private <T> Collection<T> extract(Supplier<Collection<T>> s) { |
| 121 | + if (!resetAll) |
| 122 | + return s.get(); |
| 123 | + return Arrays.asList(); |
| 124 | + } |
| 125 | + |
| 126 | + private <K, V> Map<K, V> extractMap(Supplier<Map<K, V>> s) { |
| 127 | + if (!resetAll) |
| 128 | + return s.get(); |
| 129 | + return HashMapBuilder.of(); |
| 130 | + } |
| 131 | + |
| 132 | + @Override |
| 133 | + public Set<Class<?>> getRestResourceClasses() { |
| 134 | + if (restResourceClasses != null) |
| 135 | + return PSetX.fromCollection(concat(restResourceClasses, extract(() -> Collections.singletonList(CommonRestResource.class)))); |
| 136 | + |
| 137 | + return Module.super.getRestResourceClasses(); |
| 138 | + } |
| 139 | + |
| 140 | + @Override |
| 141 | + public Set<Class<? extends Annotation>> getRestAnnotationClasses() { |
| 142 | + if (restAnnotationClasses != null) |
| 143 | + return PSetX.fromCollection(concat(restAnnotationClasses, extract(() -> Module.super.getRestAnnotationClasses()))); |
| 144 | + |
| 145 | + return Module.super.getRestAnnotationClasses(); |
| 146 | + } |
| 147 | + |
| 148 | + @Override |
| 149 | + public List<Class<?>> getDefaultResources() { |
| 150 | + if (this.defaultResources != null) { |
| 151 | + return PStackX.fromCollection((concat(this.defaultResources, extract(() -> Module.super.getDefaultResources())))); |
| 152 | + } |
| 153 | + |
| 154 | + return Module.super.getDefaultResources(); |
| 155 | + } |
| 156 | + |
| 157 | + @Override |
| 158 | + public List<ServletContextListener> getListeners(ServerData data) { |
| 159 | + if (listeners != null) |
| 160 | + return PStackX.fromCollection((concat(this.listeners, extract(() -> Module.super.getListeners(data))))); |
| 161 | + |
| 162 | + return Module.super.getListeners(data); |
| 163 | + } |
| 164 | + |
| 165 | + @Override |
| 166 | + public List<ServletRequestListener> getRequestListeners(ServerData data) { |
| 167 | + if (requestListeners != null) |
| 168 | + return PStackX.fromCollection(concat(this.requestListeners, |
| 169 | + extract(() -> Module.super.getRequestListeners(data)))); |
| 170 | + |
| 171 | + return Module.super.getRequestListeners(data); |
| 172 | + } |
| 173 | + |
| 174 | + @Override |
| 175 | + public Map<String, Filter> getFilters(ServerData data) { |
| 176 | + if (filters != null) |
| 177 | + return PMapX.fromMap(filters).plusAll(extractMap(() -> Module.super.getFilters(data))); |
| 178 | + |
| 179 | + return Module.super.getFilters(data); |
| 180 | + } |
| 181 | + |
| 182 | + @Override |
| 183 | + public Map<String, Servlet> getServlets(ServerData data) { |
| 184 | + if (servlets != null) |
| 185 | + return PMapX.fromMap(servlets).plusAll(extractMap(() -> Module.super.getServlets(data))); |
| 186 | + |
| 187 | + return Module.super.getServlets(data); |
| 188 | + } |
| 189 | + |
| 190 | + @Override |
| 191 | + public String getJaxWsRsApplication() { |
| 192 | + if (this.jaxWsRsApplication != null) |
| 193 | + return jaxWsRsApplication; |
| 194 | + return Module.super.getJaxWsRsApplication(); |
| 195 | + } |
| 196 | + |
| 197 | + @Override |
| 198 | + public String getProviders() { |
| 199 | + if (providers != null) |
| 200 | + return providers; |
| 201 | + return Module.super.getProviders(); |
| 202 | + } |
| 203 | + |
| 204 | + @Override |
| 205 | + public String getContext() { |
| 206 | + |
| 207 | + return context; |
| 208 | + } |
| 209 | + |
| 210 | + @Override |
| 211 | + public Set<Class<?>> getSpringConfigurationClasses() { |
| 212 | + if (this.springConfigurationClasses != null) |
| 213 | + return PSetX.fromCollection(concat(this.springConfigurationClasses, extract(() -> Module.super.getSpringConfigurationClasses()))); |
| 214 | + |
| 215 | + return Module.super.getSpringConfigurationClasses(); |
| 216 | + } |
| 217 | + |
| 218 | + @Override |
| 219 | + public Map<String, Object> getServerProperties() { |
| 220 | + if (serverProperties != null) { |
| 221 | + return PMapX.fromMap(serverProperties).plusAll(extractMap(() -> Module.super.getServerProperties())); |
| 222 | + } else { |
| 223 | + return Module.super.getServerProperties(); |
| 224 | + } |
| 225 | + } |
219 | 226 |
|
220 | 227 |
|
221 | 228 | }
|
0 commit comments