⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 filterchainimpl.java.svn-base

📁 portal越来越流行了
💻 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 + -