📄 subsetiteratorfilter.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 + -