xapi.dev.scanner.impl.ClassFileIterator Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of xapi-dev Show documentation
Show all versions of xapi-dev Show documentation
Everything needed to run a comprehensive dev environment.
Just type X_ and pick a service from autocomplete;
new dev modules will be added as they are built.
The only dev service not included in the uber jar is xapi-dev-maven,
as it includes all runtime dependencies of maven, adding ~4 seconds to build time,
and 6 megabytes to the final output jar size (without xapi-dev-maven, it's ~1MB).
The newest version!
package xapi.dev.scanner.impl;
import java.util.Iterator;
import xapi.bytecode.ClassFile;
import xapi.collect.api.HasPrefixed;
import xapi.dev.resource.impl.ByteCodeResource;
import xapi.util.api.MatchesValue;
class ClassFileIterator implements Iterable {
private final MatchesValue matcher;
private final HasPrefixed bytecode;
private final class Itr implements Iterator {
private Iterator iter = bytecode.findPrefixed("").iterator();
private ClassFile cls;
@Override
public boolean hasNext() {
while(iter.hasNext()) {
cls = iter.next().getClassData();
if (matcher.matches(cls)) {
return true;
}
}
return false;
}
@Override
public ClassFile next() {
return cls;
}
@Override
public void remove() {
throw new UnsupportedOperationException();
}
}
ClassFileIterator(MatchesValue matcher, HasPrefixed bytecode) {
assert matcher != null;
this.matcher = matcher;
this.bytecode = bytecode;
}
@Override
public Iterator iterator() {
return new Itr();
}
}