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

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

package nl.topicus.plugins.maven.javassist;

import java.io.File;
import java.io.FileInputStream;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import java.util.jar.JarEntry;
import java.util.jar.JarInputStream;

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

import com.google.common.io.Files;

public class ClassNameJarIterator implements ClassFileIterator {
	private Iterator classFiles = new ArrayList().iterator();
	private File jarFile;

	public ClassNameJarIterator(final String classPath,
			final BuildContext buildContext) {

		jarFile = new File(classPath);
		if (buildContext.hasDelta(classPath)) {
			List classNames = new ArrayList<>();
			try {
				JarInputStream jarFileStream = new JarInputStream(
						new FileInputStream(jarFile));
				JarEntry jarEntry;

				while (true) {
					jarEntry = jarFileStream.getNextJarEntry();
					if (jarEntry == null)
						break;

					if (jarEntry.getName().endsWith(".class"))
						classNames.add(jarEntry.getName()
								.replaceAll("/", "\\."));

				}

				jarFileStream.close();
			} catch (Exception e) {
				e.printStackTrace();
			}
			classFiles = classNames.iterator();
		} else {
			classFiles = Collections.emptyIterator();
		}
	}

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

	@Override
	public String next() {
		return Files.getNameWithoutExtension(classFiles.next()).replace(
				File.separator, ".");
	}

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

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




© 2015 - 2025 Weber Informatics LLC | Privacy Policy