All Downloads are FREE. Search and download functionalities are using the official Maven repository.

xapi.dev.scanner.impl.ClassFileIterator Maven / Gradle / Ivy

Go to download

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();
  }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy