1
22
23 package com.liferay.portal.servlet;
24
25 import com.liferay.portal.NoSuchLayoutException;
26 import com.liferay.portal.kernel.log.Log;
27 import com.liferay.portal.kernel.log.LogFactoryUtil;
28 import com.liferay.portal.kernel.util.GetterUtil;
29 import com.liferay.portal.kernel.util.ParamUtil;
30 import com.liferay.portal.kernel.util.Validator;
31 import com.liferay.portal.util.Portal;
32 import com.liferay.portal.util.PortalUtil;
33 import com.liferay.portal.util.WebKeys;
34
35 import java.io.IOException;
36
37 import javax.servlet.RequestDispatcher;
38 import javax.servlet.ServletContext;
39 import javax.servlet.ServletException;
40 import javax.servlet.http.HttpServlet;
41 import javax.servlet.http.HttpServletRequest;
42 import javax.servlet.http.HttpServletResponse;
43
44
50 public class WidgetServlet extends HttpServlet {
51
52 public void service(
53 HttpServletRequest request, HttpServletResponse response)
54 throws IOException, ServletException {
55
56 try {
57 String redirect = getRedirect(request);
58
59 if (redirect == null) {
60 PortalUtil.sendError(
61 HttpServletResponse.SC_NOT_FOUND,
62 new NoSuchLayoutException(), request, response);
63 }
64 else {
65 request.setAttribute(WebKeys.WIDGET, Boolean.TRUE);
66
67 ServletContext servletContext = getServletContext();
68
69 RequestDispatcher requestDispatcher =
70 servletContext.getRequestDispatcher(redirect);
71
72 requestDispatcher.forward(request, response);
73 }
74 }
75 catch (Exception e) {
76 _log.error(e, e);
77
78 PortalUtil.sendError(
79 HttpServletResponse.SC_INTERNAL_SERVER_ERROR, e, request,
80 response);
81 }
82 }
83
84 protected String getRedirect(HttpServletRequest request) {
85 String path = GetterUtil.getString(request.getPathInfo());
86
87 if (Validator.isNull(path)) {
88 return null;
89 }
90
91 String ppid = ParamUtil.getString(request, "p_p_id");
92
93 int pos = path.indexOf(Portal.FRIENDLY_URL_SEPARATOR);
94
95 if (Validator.isNull(ppid) && (pos == -1)) {
96 return null;
97 }
98
99 return path;
100 }
101
102 private static Log _log = LogFactoryUtil.getLog(WidgetServlet.class);
103
104 }