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