import org.clapper.util.classutil.*;
import java.io.*;
import java.util.*;


public class FindApps {
	public static void main(String[] args) throws Throwable {
		// Arguments are a series of classpaths
		ClassFinder finder = new ClassFinder();

		for (String arg : args)
			finder.add(new File(arg));

		ClassFilter filter = new ApplicationFilter();
		Collection<ClassInfo> foundClasses = new ArrayList<ClassInfo>();
		finder.findClasses(foundClasses, filter);

		for (ClassInfo classInfo : foundClasses)
			System.out.println("Found " + classInfo.getClassName());
	}

	// Accept classes that have main methods
	static class ApplicationFilter implements ClassFilter {
		public boolean accept(ClassInfo info, ClassFinder finder) {
			boolean found = false;
			Iterator<MethodInfo> i = info.getMethods().iterator();

			while (i.hasNext() && !found) {
				found = "main".equals(i.next().getName());
			}

			return found;
		}
	}
}

