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

nl.topicus.plugins.maven.javassist.ClassNameDirectoryIterator Maven / Gradle / Ivy

package nl.topicus.plugins.maven.javassist;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;

import org.sonatype.plexus.build.incremental.BuildContext;

import com.google.common.base.Predicate;
import com.google.common.io.Files;

public class ClassNameDirectoryIterator implements ClassFileIterator {
	private final String classPath;
	private Iterator classFiles = new ArrayList().iterator();
	private File lastFile;

	public ClassNameDirectoryIterator(final String classPath,
			final BuildContext buildContext) {
		this.classPath = classPath;
		this.classFiles = Files.fileTreeTraverser()
				.preOrderTraversal(new File(classPath))
				.filter(new Predicate() {
					@Override
					public boolean apply(File input) {
						return "class".equals(Files.getFileExtension(input
								.getName())) && buildContext.hasDelta(input);
					}
				}).iterator();
	}

	@Override
	public boolean hasNext() {
		return classFiles.hasNext();
	}

	@Override
	public String next() {
		final File classFile = classFiles.next();
		lastFile = classFile;
		try {
			final String qualifiedFileName = classFile.getCanonicalPath()
					.substring(classPath.length() + 1);
			return Files.getNameWithoutExtension(qualifiedFileName.replace(
					File.separator, "."));
		} catch (final IOException e) {
			throw new RuntimeException(e.getMessage());
		}
	}

	@Override
	public File getLastFile() {
		return lastFile;
	}

	@Override
	public void remove() {
		classFiles.remove();
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy