Description
The following tests attempt to invoke a ResourceURL that was written to the response with the BaseURL.write(Writer writer, boolean escapeXML) method when passing escapeXML=true:
- V2URLTests_BaseURL_ApiRenderResurl_writeB1
- V2URLTests_PortletURLGenerationListener_ApiRenderResurl_filterResourceURL3
These tests pass on Pluto since it generates URLs that do not contain the ampersand (&) character. However, on Liferay Portal these tests fail since it generates URLs that use the ampersand character to separate URL name=value pairs. This results in URLs that look like the following:
http://localhost:8080/web/guest/v2urltests8 ?p_p_id=URLTests_PortletURLGenerationListener_ApiRenderResurl_WAR_tckV2URLTests &p_p_lifecycle=2 &p_p_state=normal &p_p_mode=view &p_p_cacheability=cacheLevelPage &_URLTests_PortletURLGenerationListener_ApiRenderResurl_WAR_tckV2URLTests_tc=V2URLTests_PortletURLGenerationListener_ApiRenderResurl_filterResourceURL3 &_URLTests_PortletURLGenerationListener_ApiRenderResurl_WAR_tckV2URLTests_PUGL=Resource &_URLTests_PortletURLGenerationListener_ApiRenderResurl_WAR_tckV2URLTests_PUGL2=Resource
Since the ampersand character is encoded as & the URL name=value pairs are not processed correctly by the underlying servlet container.
The proposed solution is to add a Liferay "Friendly URL" to the WEB-INF/liferay-portlet.xml descriptor. This will only be enabled with the "liferay" profile is activated on the Maven command line. The friendly URL will be more not contain any ampersand characters.