1
22
23
41
42 package com.liferay.portal.servlet.taglib.portlet;
43
44 import com.liferay.portal.kernel.portlet.LiferayPortletURL;
45 import com.liferay.portal.kernel.util.JavaConstants;
46 import com.liferay.portal.model.LayoutConstants;
47 import com.liferay.portal.portletcontainer.LiferayPortletURLImpl;
48 import com.liferay.portal.theme.ThemeDisplay;
49 import com.liferay.portal.util.PropsValues;
50 import com.liferay.portal.util.WebKeys;
51 import com.liferay.portlet.PortletConfigImpl;
52 import com.liferay.portlet.PortletResponseImpl;
53
54 import javax.portlet.PortletRequest;
55
56 import javax.servlet.http.HttpServletRequest;
57
58
64 public class TagUtil {
65
66 public static LiferayPortletURL getLiferayPortletURL(
67 HttpServletRequest request, long plid, String portletName,
68 String lifecycle) {
69
70 PortletRequest portletRequest = (PortletRequest)request.getAttribute(
71 JavaConstants.JAVAX_PORTLET_REQUEST);
72
73 if (portletRequest == null) {
74 return null;
75 }
76
77 LiferayPortletURL portletURL = null;
78
79 if (PropsValues.PORTLET_CONTAINER_IMPL_SUN &&
80 _isWARFile(portletRequest)) {
81
82 portletURL = new LiferayPortletURLImpl(
83 request, portletName, portletRequest.getWindowState(),
84 portletRequest.getPortletMode(), _getPlid(request, plid),
85 lifecycle);
86 }
87 else {
88 PortletResponseImpl portletResponse =
89 (PortletResponseImpl)request.getAttribute(
90 JavaConstants.JAVAX_PORTLET_RESPONSE);
91
92 portletURL = portletResponse.createPortletURLImpl(
93 plid, portletName, lifecycle);
94 }
95
96 return portletURL;
97 }
98
99 public static String getPortletName(HttpServletRequest request) {
100 PortletRequest portletRequest = (PortletRequest)request.getAttribute(
101 JavaConstants.JAVAX_PORTLET_REQUEST);
102
103 if (portletRequest == null) {
104 return null;
105 }
106
107 String portletName = null;
108
109 if (PropsValues.PORTLET_CONTAINER_IMPL_SUN &&
110 _isWARFile(portletRequest)) {
111
112 portletName = (String)portletRequest.getAttribute(
113 _PORTLET_CONTAINER_WINDOW_NAME);
114 }
115 else {
116 PortletConfigImpl portletConfig =
117 (PortletConfigImpl)request.getAttribute(
118 JavaConstants.JAVAX_PORTLET_CONFIG);
119
120 portletName = portletConfig.getPortletId();
121 }
122
123 return portletName;
124 }
125
126 private static long _getPlid(HttpServletRequest request, long plid) {
127 if (plid == LayoutConstants.DEFAULT_PLID) {
128 ThemeDisplay themeDisplay = (ThemeDisplay)request.getAttribute(
129 WebKeys.THEME_DISPLAY);
130
131 plid = themeDisplay.getPlid();
132 }
133
134 return plid;
135 }
136
137 private static boolean _isWARFile(PortletRequest portletRequest) {
138 Object portletWindowName = portletRequest.getAttribute(
139 _PORTLET_CONTAINER_WINDOW_NAME);
140
141 if (portletWindowName == null) {
142 return false;
143 }
144 else {
145 return true;
146 }
147 }
148
149 private static final String _PORTLET_CONTAINER_WINDOW_NAME =
150 "javax.portlet.portletc.portletWindowName";
151
152 }