1
2
3
4
5
6
7
8
9
10
11 package psiprobe;
12
13 import java.util.ArrayList;
14 import java.util.Collections;
15 import java.util.HashMap;
16 import java.util.List;
17 import java.util.Locale;
18 import java.util.Map;
19 import java.util.Properties;
20
21 import org.slf4j.Logger;
22 import org.slf4j.LoggerFactory;
23 import org.springframework.beans.factory.FactoryBean;
24 import org.springframework.beans.factory.annotation.Autowired;
25 import org.springframework.beans.factory.config.PropertiesFactoryBean;
26 import org.springframework.context.MessageSource;
27 import org.springframework.context.annotation.Bean;
28 import org.springframework.context.annotation.ComponentScan;
29 import org.springframework.context.annotation.Configuration;
30 import org.springframework.context.support.PropertySourcesPlaceholderConfigurer;
31 import org.springframework.context.support.ReloadableResourceBundleMessageSource;
32 import org.springframework.core.io.ClassPathResource;
33 import org.springframework.web.multipart.support.StandardServletMultipartResolver;
34 import org.springframework.web.servlet.HandlerMapping;
35 import org.springframework.web.servlet.LocaleResolver;
36 import org.springframework.web.servlet.ThemeResolver;
37 import org.springframework.web.servlet.ViewResolver;
38 import org.springframework.web.servlet.config.annotation.EnableWebMvc;
39 import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
40 import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
41 import org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping;
42 import org.springframework.web.servlet.i18n.CookieLocaleResolver;
43 import org.springframework.web.servlet.i18n.LocaleChangeInterceptor;
44 import org.springframework.web.servlet.theme.FixedThemeResolver;
45 import org.springframework.web.servlet.view.InternalResourceViewResolver;
46 import org.springframework.web.servlet.view.JstlView;
47
48 import psiprobe.beans.ClusterWrapperBean;
49 import psiprobe.beans.ContainerListenerBean;
50 import psiprobe.beans.ContainerWrapperBean;
51 import psiprobe.beans.JBossResourceResolverBean;
52 import psiprobe.beans.JvmMemoryInfoAccessorBean;
53 import psiprobe.beans.LogResolverBean;
54 import psiprobe.beans.ResourceResolver;
55 import psiprobe.beans.ResourceResolverBean;
56 import psiprobe.beans.RuntimeInfoAccessorBean;
57 import psiprobe.tools.Mailer;
58
59
60
61
62 @EnableWebMvc
63 @Configuration
64 @ComponentScan(basePackages = {"psiprobe"})
65 public class ProbeConfig implements WebMvcConfigurer {
66
67
68 private static final Logger logger = LoggerFactory.getLogger(ProbeConfig.class);
69
70
71
72
73
74
75 @Bean(name = "containerListener")
76 public ContainerListenerBean getContainerListenerBean() {
77 logger.debug("Instantiated containerListener");
78 return new ContainerListenerBean();
79 }
80
81
82
83
84
85
86 @Bean(name = "containerWrapper")
87 public ContainerWrapperBean getContainerWrapperBean() {
88 logger.debug("Instantiated containerWrapper");
89 return new ContainerWrapperBean();
90 }
91
92
93
94
95
96
97 @Bean(name = "clusterWrapper")
98 public ClusterWrapperBean getClusterWrapperBean() {
99 logger.debug("Instantiated clusterWrapper");
100 return new ClusterWrapperBean();
101 }
102
103
104
105
106
107
108 @Bean(name = "mailer")
109 public Mailer getMailer() {
110 logger.debug("Instantiated mailer");
111 return new Mailer();
112 }
113
114
115
116
117
118
119 @Bean(name = "datasourceMappers")
120 public List<String> getDefaultRes() {
121 logger.debug("Instantiated datasourceMappers");
122 List<String> list = new ArrayList<>();
123 list.add("psiprobe.beans.accessors.C3P0DatasourceAccessor");
124 list.add("psiprobe.beans.accessors.Dbcp2DatasourceAccessor");
125 list.add("psiprobe.beans.accessors.HikariCpDatasourceAccessor");
126 list.add("psiprobe.beans.accessors.OracleDatasourceAccessor");
127 list.add("psiprobe.beans.accessors.OracleUcpDatasourceAccessor");
128 list.add("psiprobe.beans.accessors.OpenEjbBasicDatasourceAccessor");
129 list.add("psiprobe.beans.accessors.OpenEjbManagedDatasourceAccessor");
130 list.add("psiprobe.beans.accessors.Tomcat10DbcpDatasourceAccessor");
131 list.add("psiprobe.beans.accessors.Tomcat11DbcpDatasourceAccessor");
132 list.add("psiprobe.beans.accessors.TomcatJdbcPoolDatasourceAccessor");
133 list.add("psiprobe.beans.accessors.TomEeJdbcPoolDatasourceAccessor");
134 list.add("psiprobe.beans.accessors.ViburCpDatasourceAccessor");
135 return list;
136 }
137
138
139
140
141
142
143 @Bean(name = "default")
144 public ResourceResolverBean getResourceResolverBean() {
145 logger.debug("Instantiated default resourceResolverBean");
146 return new ResourceResolverBean();
147 }
148
149
150
151
152
153
154 @Bean(name = "jboss")
155 public JBossResourceResolverBean getJBossResourceResolverBean() {
156 logger.debug("Instantiated jbossResourceResolverBean");
157 return new JBossResourceResolverBean();
158 }
159
160
161
162
163
164
165
166
167
168 @Bean(name = "resourceResolvers")
169 public Map<String, ResourceResolver> getResourceResolvers(
170 @Autowired JBossResourceResolverBean jbossResourceResolverBean,
171 @Autowired ResourceResolverBean resourceResolverBean) {
172 logger.debug("Instantiated resourceResolvers");
173 Map<String, ResourceResolver> map = new HashMap<>();
174 map.put("jboss", jbossResourceResolverBean);
175 map.put("default", resourceResolverBean);
176 return map;
177 }
178
179
180
181
182
183
184 @Bean(name = "adapterClasses")
185 public List<String> getAdapterClasses() {
186 logger.debug("Instantiated adapterClasses");
187 List<String> list = new ArrayList<>();
188 try {
189 Properties properties = adapters().getObject();
190 if (properties == null) {
191 return Collections.emptyList();
192 }
193 for (Object adapter : properties.values()) {
194 list.add((String) adapter);
195 }
196 } catch (Exception e) {
197 logger.error("", e);
198 }
199 return list;
200 }
201
202
203
204
205
206
207 @Bean(name = "stdoutFiles")
208 public List<String> getStdoutFiles() {
209 logger.debug("Instantiated stdoutFiles");
210 List<String> list = new ArrayList<>();
211 try {
212 Properties properties = stdout().getObject();
213 if (properties == null) {
214 return Collections.emptyList();
215 }
216 for (Object stdout : properties.values()) {
217 list.add((String) stdout);
218 }
219 } catch (Exception e) {
220 logger.error("", e);
221 }
222 return list;
223 }
224
225
226
227
228
229
230 @Bean(name = "stdout")
231 public FactoryBean<Properties> stdout() {
232 logger.debug("Instantiated stdout");
233 PropertiesFactoryBean bean = new PropertiesFactoryBean();
234 bean.setLocation(new ClassPathResource("stdout.properties"));
235 return bean;
236 }
237
238
239
240
241
242
243 @Bean(name = "adapters")
244 public FactoryBean<Properties> adapters() {
245 logger.debug("Instantiated adapters");
246 PropertiesFactoryBean bean = new PropertiesFactoryBean();
247 bean.setLocation(new ClassPathResource("adapters.properties"));
248 return bean;
249 }
250
251
252
253
254
255
256 @Bean(name = "logResolver")
257 public LogResolverBean getLogResolverBean() {
258 logger.debug("Instantiated logResolver");
259 return new LogResolverBean();
260 }
261
262
263
264
265
266
267 @Bean(name = "jvmMemoryInfoAccessor")
268 public JvmMemoryInfoAccessorBean getJvmMemoryInfoAccessorBean() {
269 logger.debug("Instantiated jvmMemoryInfoAccessorBean");
270 return new JvmMemoryInfoAccessorBean();
271 }
272
273
274
275
276
277
278 @Bean(name = "runtimeInfoAccessor")
279 public RuntimeInfoAccessorBean getRuntimeInfoAccessorBean() {
280 logger.debug("Instantiated runtimeInfoAccessorBean");
281 return new RuntimeInfoAccessorBean();
282 }
283
284
285
286
287
288
289 @Bean(name = "jspViewResolver")
290 public ViewResolver getViewResolver() {
291 logger.debug("Instantiated internalResourceViewResolver");
292 InternalResourceViewResolver resolver = new InternalResourceViewResolver();
293 resolver.setViewClass(JstlView.class);
294 resolver.setPrefix("/WEB-INF/jsp/");
295 resolver.setSuffix(".jsp");
296 return resolver;
297 }
298
299
300
301
302
303
304 @Bean(name = "themeResolver")
305 public ThemeResolver getThemeResolver() {
306 logger.debug("Instantiated fixedThemeResolver");
307 FixedThemeResolver resolver = new FixedThemeResolver();
308 resolver.setDefaultThemeName("theme-classic");
309 return resolver;
310 }
311
312
313
314
315
316
317 @Bean(name = "messageSource")
318 public MessageSource getMessageSource() {
319 logger.debug("Instantiated reloadableResourceBundleMessageSource");
320 ReloadableResourceBundleMessageSource source = new ReloadableResourceBundleMessageSource();
321 source.setBasename("/WEB-INF/messages");
322 source.setCacheSeconds(1);
323 source.setFallbackToSystemLocale(false);
324 return source;
325 }
326
327
328
329
330
331
332 @Bean(name = "localeResolver")
333 public LocaleResolver getLocaleResolver() {
334 logger.debug("Instantiated cookieLocaleResolver");
335 CookieLocaleResolver resolver = new CookieLocaleResolver();
336 resolver.setDefaultLocale(Locale.ENGLISH);
337 resolver.setCookieSecure(true);
338 resolver.setCookieHttpOnly(true);
339 return resolver;
340 }
341
342
343
344
345
346
347
348
349 @Bean(name = "handlerMapping")
350 public HandlerMapping getHandlerMapping(@Autowired LocaleChangeInterceptor interceptor) {
351 logger.debug("Instantiated beanNameUrlHandlerMapping");
352 BeanNameUrlHandlerMapping mapping = new BeanNameUrlHandlerMapping();
353 mapping.setAlwaysUseFullPath(true);
354 mapping.setInterceptors(interceptor);
355 return mapping;
356 }
357
358 @Override
359 public void addInterceptors(InterceptorRegistry registry) {
360 logger.debug("Registering localeChangeInterceptor");
361 registry.addInterceptor(getLocaleChangeInterceptor());
362 }
363
364
365
366
367
368
369 @Bean(name = "localeChangeInterceptor")
370 public LocaleChangeInterceptor getLocaleChangeInterceptor() {
371 logger.debug("Instantiated localeChangeInterceptor");
372 LocaleChangeInterceptor interceptor = new LocaleChangeInterceptor();
373 interceptor.setParamName("lang");
374 return interceptor;
375 }
376
377
378
379
380
381
382 @Bean(name = "propertySourcesPlaceholderConfigurer")
383 public static PropertySourcesPlaceholderConfigurer getPropertySourcesPlaceholderConfigurer() {
384 logger.debug("Instantiated propertySourcesPlaceholderConfigurer");
385 PropertySourcesPlaceholderConfigurer configurer = new PropertySourcesPlaceholderConfigurer();
386 configurer.setLocation(new ClassPathResource("stats.properties"));
387 configurer.setNullValue("NULL");
388
389 Properties properties = new Properties();
390 properties.put("psiprobe.tools.mail.to", "NULL");
391 properties.put("psiprobe.tools.mail.subjectPrefix", "[PSI Probe]");
392 configurer.setProperties(properties);
393 return configurer;
394 }
395
396
397
398
399
400
401 @Bean(name = "version")
402 public PropertiesFactoryBean version() {
403 logger.debug("Instantiated version");
404 PropertiesFactoryBean bean = new PropertiesFactoryBean();
405 bean.setLocation(new ClassPathResource("version.properties"));
406 return bean;
407 }
408
409
410
411
412
413
414 @Bean(name = "multipartResolver")
415 public StandardServletMultipartResolver multipartResolver() {
416 return new StandardServletMultipartResolver();
417 }
418
419 }