1
22
23 package com.liferay.portlet.webproxy;
24
25 import com.liferay.portal.kernel.log.Log;
26 import com.liferay.portal.kernel.log.LogFactoryUtil;
27 import com.liferay.portal.kernel.servlet.StringServletResponse;
28 import com.liferay.portal.kernel.util.ContentTypes;
29 import com.liferay.portal.kernel.util.ServerDetector;
30 import com.liferay.portal.kernel.util.StringPool;
31 import com.liferay.portal.kernel.util.StringUtil;
32 import com.liferay.portal.kernel.util.Validator;
33 import com.liferay.portal.struts.StrutsUtil;
34 import com.liferay.portlet.RenderResponseImpl;
35
36 import java.io.IOException;
37 import java.io.PrintWriter;
38
39 import javax.portlet.PortletException;
40 import javax.portlet.PortletPreferences;
41 import javax.portlet.PortletRequestDispatcher;
42 import javax.portlet.RenderRequest;
43 import javax.portlet.RenderResponse;
44
45 import org.portletbridge.portlet.PortletBridgePortlet;
46
47
53 public class WebProxyPortlet extends PortletBridgePortlet {
54
55 public void init() {
56 try {
57 super.init();
58
59 _enabled = true;
60 }
61 catch (Exception e) {
62 if (_log.isWarnEnabled()) {
63 _log.warn(e.getMessage());
64 }
65 }
66
67 if (!_enabled && ServerDetector.isWebLogic() && _log.isInfoEnabled()) {
68 _log.info(
69 "WebProxyPortlet will not be enabled unless Liferay's " +
70 "serializer.jar and xalan.jar files are copied to the " +
71 "JDK's endorsed directory");
72 }
73 }
74
75 public void doView(
76 RenderRequest renderRequest, RenderResponse renderResponse)
77 throws IOException, PortletException {
78
79 if (!_enabled) {
80 printError(renderResponse);
81
82 return;
83 }
84
85 PortletPreferences preferences = renderRequest.getPreferences();
86
87 String initUrl = preferences.getValue("initUrl", StringPool.BLANK);
88
89 if (Validator.isNull(initUrl)) {
90 PortletRequestDispatcher portletRequestDispatcher =
91 getPortletContext().getRequestDispatcher(
92 StrutsUtil.TEXT_HTML_DIR + "/portal/portlet_not_setup.jsp");
93
94 portletRequestDispatcher.include(renderRequest, renderResponse);
95 }
96 else {
97 super.doView(renderRequest, renderResponse);
98
99 RenderResponseImpl renderResponseImpl =
100 (RenderResponseImpl)renderResponse;
101
102 StringServletResponse stringResponse = (StringServletResponse)
103 renderResponseImpl.getHttpServletResponse();
104
105 String output = stringResponse.getString();
106
107 output = StringUtil.replace(output, "//pbhs/", "/pbhs/");
108
109 stringResponse.setString(output);
110 }
111 }
112
113 protected void printError(RenderResponse renderResponse)
114 throws IOException {
115
116 renderResponse.setContentType(ContentTypes.TEXT_HTML_UTF8);
117
118 PrintWriter writer = renderResponse.getWriter();
119
120 writer.print(
121 "WebProxyPortlet will not be enabled unless Liferay's " +
122 "serializer.jar and xalan.jar files are copied to the " +
123 "JDK's endorsed directory");
124
125 writer.close();
126 }
127
128 private static Log _log = LogFactoryUtil.getLog(WebProxyPortlet.class);
129
130 private boolean _enabled;
131
132 }