1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 package info.magnolia.module.admininterface;
35
36 import info.magnolia.cms.servlets.MVCServlet;
37 import info.magnolia.cms.servlets.MVCServletHandler;
38 import info.magnolia.cms.util.RequestFormUtil;
39
40 import javax.servlet.ServletConfig;
41 import javax.servlet.ServletException;
42 import javax.servlet.http.HttpServletRequest;
43 import javax.servlet.http.HttpServletResponse;
44
45 import info.magnolia.context.MgnlContext;
46 import org.apache.commons.lang.StringUtils;
47 import org.slf4j.Logger;
48 import org.slf4j.LoggerFactory;
49
50
51
52
53
54
55 public class PageMVCServlet extends MVCServlet {
56
57
58
59
60 private static final long serialVersionUID = 222L;
61
62
63
64
65 private static Logger log = LoggerFactory.getLogger(PageMVCServlet.class);
66
67 private static final String HANDLE_PREFIX_PARAMETER = "handlePrefix";
68
69 private static final String DEFAULT_HANDLE_PREFIX = ".magnolia/pages/";
70
71 private String handlePrefix;
72
73 @Override
74 public void init(ServletConfig config) throws ServletException {
75 super.init(config);
76 String handlePrefix = this.getInitParameter(HANDLE_PREFIX_PARAMETER);
77 this.handlePrefix = StringUtils.isEmpty(handlePrefix) ? DEFAULT_HANDLE_PREFIX : handlePrefix;
78 }
79
80
81
82
83 @Override
84 protected MVCServletHandler getHandler(HttpServletRequest request, HttpServletResponse response) {
85
86 String pageName = MgnlContext.getAggregationState().getCurrentURI();
87 pageName = StringUtils.substringAfter(pageName, handlePrefix);
88
89 pageName = StringUtils.substringBeforeLast(pageName, ".");
90
91 PageMVCHandler handler = null;
92
93 if (StringUtils.isNotEmpty(pageName)) {
94
95 try {
96 handler = PageHandlerManager.getInstance().getPageHandler(pageName, request, response);
97 }
98 catch (InvalidDialogPageHandlerException e) {
99 log.error("Could not instantiate page handler with name " + pageName, e);
100 }
101 }
102 else {
103 log.warn("No dialog page name passed for url {}", request.getRequestURI());
104 }
105
106 return handler;
107 }
108
109 }