/** * Copyright (c) 2000-present Liferay, Inc. All rights reserved. * * This library is free software; you can redistribute it and/or modify it under * the terms of the GNU Lesser General Public License as published by the Free * Software Foundation; either version 2.1 of the License, or (at your option) * any later version. * * This library is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more * details. */ package com.liferay.cdi.portlet.bridge; import java.io.IOException; import javax.portlet.ActionRequest; import javax.portlet.ActionResponse; import javax.portlet.EventRequest; import javax.portlet.EventResponse; import javax.portlet.PortletException; import javax.portlet.RenderRequest; import javax.portlet.RenderResponse; import javax.portlet.ResourceRequest; import javax.portlet.ResourceResponse; import javax.portlet.filter.ActionFilter; import javax.portlet.filter.EventFilter; import javax.portlet.filter.FilterChain; import javax.portlet.filter.FilterConfig; import javax.portlet.filter.RenderFilter; import javax.portlet.filter.ResourceFilter; /** * @author Neil Griffin */ public class CDIPortletFilter implements ActionFilter, EventFilter, RenderFilter, ResourceFilter { @Override public void destroy() { } @Override public void doFilter( ActionRequest actionRequest, ActionResponse actionResponse, FilterChain filterChain) throws IOException, PortletException { CDIRequestFactory cdiRequestFactory = getCDIRequestFactory(); actionRequest = cdiRequestFactory.getCDIActionRequest(actionRequest); CDIResponseFactory cdiResponseFactory = getCDIResponseFactory(); actionResponse = cdiResponseFactory.getCDIActionResponse( actionResponse, actionRequest.getLocale()); filterChain.doFilter(actionRequest, actionResponse); } @Override public void doFilter( EventRequest eventRequest, EventResponse eventResponse, FilterChain filterChain) throws IOException, PortletException { CDIRequestFactory cdiRequestFactory = getCDIRequestFactory(); eventRequest = cdiRequestFactory.getCDIEventRequest(eventRequest); CDIResponseFactory cdiResponseFactory = getCDIResponseFactory(); eventResponse = cdiResponseFactory.getCDIEventResponse( eventResponse, eventRequest.getLocale()); filterChain.doFilter(eventRequest, eventResponse); } @Override public void doFilter( RenderRequest renderRequest, RenderResponse renderResponse, FilterChain filterChain) throws IOException, PortletException { CDIRequestFactory cdiRequestFactory = getCDIRequestFactory(); renderRequest = cdiRequestFactory.getCDIRenderRequest(renderRequest); CDIResponseFactory cdiResponseFactory = getCDIResponseFactory(); renderResponse = cdiResponseFactory.getCDIRenderResponse( renderResponse, renderRequest.getLocale()); filterChain.doFilter(renderRequest, renderResponse); } @Override public void doFilter( ResourceRequest resourceRequest, ResourceResponse resourceResponse, FilterChain filterChain) throws IOException, PortletException { CDIRequestFactory cdiRequestFactory = getCDIRequestFactory(); resourceRequest = cdiRequestFactory.getCDIResourceRequest( resourceRequest); CDIResponseFactory cdiResponseFactory = getCDIResponseFactory(); resourceResponse = cdiResponseFactory.getCDIResourceResponse( resourceResponse, resourceRequest.getLocale()); filterChain.doFilter(resourceRequest, resourceResponse); } @Override public void init(FilterConfig filterConfig) { } protected CDIRequestFactory getCDIRequestFactory() { if (_cdiRequestFactory == null) { _cdiRequestFactory = (CDIRequestFactory)CDIBeanManagerUtil.getManagedBeanReference( CDIRequestFactory.class); } return _cdiRequestFactory; } protected CDIResponseFactory getCDIResponseFactory() { if (_cdiResponseFactory == null) { _cdiResponseFactory = (CDIResponseFactory)CDIBeanManagerUtil.getManagedBeanReference( CDIResponseFactory.class); } return _cdiResponseFactory; } private CDIRequestFactory _cdiRequestFactory; private CDIResponseFactory _cdiResponseFactory; }