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

📄 subsetiteratorfilter.java

📁 struts 2 核心包 的源码 有错误是难免的
💻 JAVA
字号:
// Decompiled by Jad v1.5.8e2. Copyright 2001 Pavel Kouznetsov.
// Jad home page: http://kpdus.tripod.com/jad.html
// Decompiler options: packimports(3) fieldsfirst ansi space 
// Source File Name:   SubsetIteratorFilter.java

package org.apache.struts2.util;

import com.opensymphony.xwork2.Action;
import java.util.*;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

// Referenced classes of package org.apache.struts2.util:
//			IteratorFilterSupport

public class SubsetIteratorFilter extends IteratorFilterSupport
	implements Iterator, Action
{
	public static interface Decider
	{

		public abstract boolean decide(Object obj)
			throws Exception;
	}


	private static final Log _log = LogFactory.getLog(org/apache/struts2/util/SubsetIteratorFilter);
	Iterator iterator;
	Object source;
	int count;
	int currentCount;
	Decider decider;
	int start;

	public SubsetIteratorFilter()
	{
		count = -1;
		currentCount = 0;
		start = 0;
	}

	public void setCount(int aCount)
	{
		count = aCount;
	}

	public void setSource(Object anIterator)
	{
		source = anIterator;
	}

	public void setStart(int aStart)
	{
		start = aStart;
	}

	public void setDecider(Decider aDecider)
	{
		decider = aDecider;
	}

	public String execute()
	{
		if (source == null)
		{
			LogFactory.getLog(org/apache/struts2/util/SubsetIteratorFilter.getName()).warn("Source is null returning empty set.");
			return "error";
		}
		source = getIterator(source);
		if (source instanceof Iterator)
		{
			iterator = (Iterator)source;
			for (int i = 0; i < start && iterator.hasNext(); i++)
				iterator.next();

			if (decider != null)
			{
				List list = new ArrayList();
				do
				{
					if (!iterator.hasNext())
						break;
					Object currentElement = iterator.next();
					if (decide(currentElement))
						list.add(currentElement);
				} while (true);
				iterator = list.iterator();
			}
		} else
		if (source.getClass().isArray())
		{
			ArrayList list = new ArrayList(((Object[])(Object[])source).length);
			Object objects[] = (Object[])(Object[])source;
			int len = objects.length;
			if (count >= 0)
			{
				len = start + count;
				if (len > objects.length)
					len = objects.length;
			}
			for (int j = start; j < len; j++)
				if (decide(objects[j]))
					list.add(objects[j]);

			count = -1;
			iterator = list.iterator();
		}
		if (iterator == null)
			throw new IllegalArgumentException((new StringBuilder()).append("Source is not an iterator:").append(source).toString());
		else
			return "success";
	}

	public boolean hasNext()
	{
		return iterator != null ? iterator.hasNext() && (count < 0 || currentCount < count) : false;
	}

	public Object next()
	{
		currentCount++;
		return iterator.next();
	}

	public void remove()
	{
		iterator.remove();
	}

	protected boolean decide(Object element)
	{
		if (decider == null)
			break MISSING_BLOCK_LABEL_68;
		boolean okToAdd = decider.decide(element);
		return okToAdd;
		Exception e;
		e;
		_log.warn((new StringBuilder()).append("decider [").append(decider).append("] encountered an error while decide adding element [").append(element).append("], element will be ignored, it will not appeared in subseted iterator").toString(), e);
		return false;
		return true;
	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -