private void addPortalWarpFilterToDeployment(Archive<?> applicationArchive) { if (applicationArchive instanceof WebArchive) { WebArchive webArchive = (WebArchive) applicationArchive; PortletDescriptor portletXml; try { portletXml = Descriptors.importAs(PortletDescriptor.class).fromStream( applicationArchive.get("WEB-INF/portlet.xml").getAsset().openStream()); if (null != portletXml) { webArchive.addClass(PortalWarpFilter.class); portletXml.createFilter() .filterName("PortalWarpFilter") .filterClass(PortalWarpFilter.class.getName()) .lifecycle("ACTION_PHASE", "EVENT_PHASE", "RENDER_PHASE", "RESOURCE_PHASE") .up() .createFilterMapping() .filterName("PortalWarpFilter") .portletName("*") .up(); webArchive.addAsWebInfResource(new StringAsset(portletXml.exportAsString()), "portlet.xml"); } } catch (Exception e) { throw new IllegalArgumentException("Unable to retrieve portlet.xml from Deployment", e); } } }