📄 filterchainimpl.java.svn-base
字号:
/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */package org.apache.pluto.driver.services.container;import java.io.IOException;import java.util.ArrayList;import java.util.List;import javax.portlet.ActionRequest;import javax.portlet.ActionResponse;import javax.portlet.EventPortlet;import javax.portlet.EventRequest;import javax.portlet.EventResponse;import javax.portlet.Portlet;import javax.portlet.PortletContext;import javax.portlet.PortletException;import javax.portlet.PortletRequest;import javax.portlet.PortletResponse;import javax.portlet.RenderRequest;import javax.portlet.RenderResponse;import javax.portlet.ResourceRequest;import javax.portlet.ResourceResponse;import javax.portlet.ResourceServingPortlet;import javax.portlet.filter.ActionFilter;import javax.portlet.filter.EventFilter;import javax.portlet.filter.FilterChain;import javax.portlet.filter.RenderFilter;import javax.portlet.filter.ResourceFilter;import org.apache.pluto.om.portlet.Filter;/** * A <code>FilterChain</code> is an object provided by the portlet container * to the developer giving a view into the invocation chain of a * filtered request for a portlet. Filters use the <code>FilterChain</code> * to invoke the next filter in the chain, or if the calling filter is the * last filter in the chain, to invoke the portlet at the end of the chain. *@since 29/05/2007 *@version 2.0 */public class FilterChainImpl implements FilterChain { private List<Filter> filterList = new ArrayList<Filter>(); private String lifeCycle; Portlet portlet; EventPortlet eventPortlet; ResourceServingPortlet resourceServingPortlet; ClassLoader loader; PortletContext portletContext; int filterListIndex = 0; public FilterChainImpl(String lifeCycle){ this.lifeCycle = lifeCycle; } public void processFilter(PortletRequest req, PortletResponse res, ClassLoader loader, EventPortlet eventPortlet, PortletContext portletContext) throws IOException, PortletException{ this.eventPortlet = eventPortlet; this.loader = loader; this.portletContext = portletContext; doFilter((EventRequest)req,(EventResponse) res); } public void processFilter(PortletRequest req, PortletResponse res, ClassLoader loader, ResourceServingPortlet resourceServingPortlet, PortletContext portletContext) throws IOException, PortletException{ this.resourceServingPortlet = resourceServingPortlet; this.loader = loader; this.portletContext = portletContext; doFilter((ResourceRequest)req,(ResourceResponse) res); } public void processFilter(PortletRequest req, PortletResponse res, ClassLoader loader, Portlet portlet, PortletContext portletContext) throws IOException, PortletException{ this.portlet = portlet; this.loader = loader; this.portletContext = portletContext; if (lifeCycle.equals(PortletRequest.ACTION_PHASE)){ doFilter((ActionRequest)req,(ActionResponse) res); } else if (lifeCycle.equals(PortletRequest.RENDER_PHASE)){ doFilter((RenderRequest)req, (RenderResponse)res); } } public void addFilter(Filter filter){ filterList.add(filter); } public void doFilter(ActionRequest request, ActionResponse response) throws IOException, PortletException { if (filterListIndex <filterList.size()){ Filter filter = filterList.get(filterListIndex); filterListIndex++; try { ActionFilter actionFilter = (ActionFilter) loader.loadClass(filter.getFilterClass()).newInstance(); FilterConfigImpl filterConfig = new FilterConfigImpl(filter.getFilterName(),filter.getInitParams(),portletContext); actionFilter.init(filterConfig); actionFilter.doFilter(request, response, this); actionFilter.destroy(); } catch (InstantiationException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } } else{ portlet.processAction(request, response); } } public void doFilter(EventRequest request, EventResponse response) throws IOException, PortletException { if (filterListIndex <filterList.size()){ Filter filter = filterList.get(filterListIndex); filterListIndex++; try { EventFilter eventFilter = (EventFilter) loader.loadClass(filter.getFilterClass()).newInstance(); FilterConfigImpl filterConfig = new FilterConfigImpl(filter.getFilterName(),filter.getInitParams(),portletContext); eventFilter.init(filterConfig); eventFilter.doFilter(request, response, this); eventFilter.destroy(); } catch (InstantiationException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } } else{ eventPortlet.processEvent(request, response); } } public void doFilter(RenderRequest request, RenderResponse response) throws IOException, PortletException { if (filterListIndex <filterList.size()){ Filter filter = filterList.get(filterListIndex); filterListIndex++; try { RenderFilter renderFilter = (RenderFilter) loader.loadClass(filter.getFilterClass()).newInstance(); FilterConfigImpl filterConfig = new FilterConfigImpl(filter.getFilterName(),filter.getInitParams(),portletContext); renderFilter.init(filterConfig); renderFilter.doFilter(request, response, this); renderFilter.destroy(); } catch (InstantiationException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } } else{ portlet.render(request, response); } } public void doFilter(ResourceRequest request, ResourceResponse response) throws IOException, PortletException { if (filterListIndex <filterList.size()){ Filter filter = filterList.get(filterListIndex); filterListIndex++; try { ResourceFilter resourceFilter = (ResourceFilter) loader.loadClass(filter.getFilterClass()).newInstance(); FilterConfigImpl filterConfig = new FilterConfigImpl(filter.getFilterName(),filter.getInitParams(),portletContext); resourceFilter.init(filterConfig); resourceFilter.doFilter(request, response, this); resourceFilter.destroy(); } catch (InstantiationException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } } else{ resourceServingPortlet.serveResource(request, response); } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -