1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.codelibs.fess.api;
17
18 import java.util.ArrayList;
19 import java.util.Collections;
20 import java.util.List;
21
22 import org.apache.logging.log4j.LogManager;
23 import org.apache.logging.log4j.Logger;
24
25 import jakarta.servlet.http.HttpServletRequest;
26
27
28
29
30
31
32 public class WebApiManagerFactory {
33
34 private static final Logger logger = LogManager.getLogger(WebApiManagerFactory.class);
35
36
37
38
39 public WebApiManagerFactory() {
40
41 }
42
43
44
45
46 protected WebApiManager[] webApiManagers = {};
47
48
49
50
51
52
53 public void add(final WebApiManager webApiManager) {
54 if (logger.isDebugEnabled()) {
55 logger.debug("Adding WebApiManager. class={}", webApiManager.getClass().getSimpleName());
56 }
57 final List<WebApiManager> list = new ArrayList<>();
58 Collections.addAll(list, webApiManagers);
59 list.add(webApiManager);
60 webApiManagers = list.toArray(new WebApiManager[list.size()]);
61 if (logger.isDebugEnabled()) {
62 logger.debug("WebApiManager added. totalManagers={}", webApiManagers.length);
63 }
64 }
65
66
67
68
69
70
71
72 public WebApiManager get(final HttpServletRequest request) {
73 final String servletPath = request.getServletPath();
74 if (logger.isDebugEnabled()) {
75 logger.debug("Looking for WebApiManager. servletPath={}, registeredManagers={}", servletPath, webApiManagers.length);
76 }
77 for (final WebApiManager webApiManager : webApiManagers) {
78 if (webApiManager.matches(request)) {
79 if (logger.isDebugEnabled()) {
80 logger.debug("WebApiManager matched. servletPath={}, manager={}", servletPath,
81 webApiManager.getClass().getSimpleName());
82 }
83 return webApiManager;
84 }
85 }
86 if (logger.isDebugEnabled()) {
87 logger.debug("No WebApiManager matched. servletPath={}", servletPath);
88 }
89 return null;
90 }
91
92 }