FileDocCategorySizeDatePackage
EjbClosureCompiler.javaAPI DocGlassfish v2 API6198Fri May 04 22:33:26 BST 2007com.sun.enterprise.tools.verifier.apiscan.stdapis

EjbClosureCompiler

public class EjbClosureCompiler extends com.sun.enterprise.tools.verifier.apiscan.classfile.ClosureCompilerImpl
author
Sanjeeb.Sahoo@Sun.COM

Fields Summary
private static Logger
logger
private static final String
myClassName
private String
specVersion
Constructors Summary
public EjbClosureCompiler(String specVersion, com.sun.enterprise.tools.verifier.apiscan.classfile.ClassFileLoader cfl)
Creates a new instance of EjbClosure


               
         
        super(cfl);
        logger.entering(myClassName, "init<>", specVersion); // NOI18N
        this.specVersion = specVersion;
        addStandardAPIs();
    
Methods Summary
protected voidaddStandardAPIs()

        String apiName = "ejb_jar_" + specVersion; // NOI18N
        Collection classes = APIRepository.Instance().getClassesFor(apiName);
        for (Iterator i = classes.iterator(); i.hasNext();) {
            addExcludedClass((String) i.next());
        }
        Collection pkgs = APIRepository.Instance().getPackagesFor(apiName);
        for (Iterator i = pkgs.iterator(); i.hasNext();) {
            addExcludedPackage((String) i.next());
        }
        Collection patterns = APIRepository.Instance().getPatternsFor(apiName);
        for (Iterator i = patterns.iterator(); i.hasNext();) {
            addExcludedPattern((String) i.next());
        }
    
public static voidmain(java.lang.String[] args)

        Handler h = new ConsoleHandler();
        h.setLevel(Level.ALL);
        Logger.getLogger("apiscan").addHandler(h); // NOI18N
        Logger.getLogger("apiscan").setLevel(Level.ALL); // NOI18N

        int j = 0;
        String pcp = "";
        String specVer = "";
        for (j = 0; j < args.length; ++j) {
            if (args[j].equals("-prefixClassPath")) { // NOI18N
                pcp = args[++j];
                continue;
            } else if (args[j].equals("-specVer")) { // NOI18N
                specVer = args[++j];
                continue;
            }
        }
        if (args.length < 5) {
            System.out.println(
                    "Usage: " + EjbClosureCompiler.class.getName() + // NOI18N
                    " <-prefixClassPath> <prefix classpath> <-specVer> <something like ejb_2.1> <jar file name(s)>"); // NOI18N
            return;
        }

        for (int i = 4; i < args.length; ++i) {
            try {
                JarFile jar = new JarFile(args[i]);
                String cp = pcp + File.pathSeparator +
                        ClassPathBuilder.buildClassPathForJar(jar);
                System.out.println("Using CLASSPATH " + cp); // NOI18N
                ClassFileLoader cfl = ClassFileLoaderFactory.newInstance(
                        new Object[]{cp});
                EjbClosureCompiler ejbClosureCompiler = new EjbClosureCompiler(
                        specVer, cfl);
                boolean result = ejbClosureCompiler.buildClosure(jar);
                jar.close();
                System.out.println("The closure is [\n"); // NOI18N
                System.out.println(ejbClosureCompiler);
                if (result) {
                    System.out.println("Did not find any non-standard APIs "); // NOI18N
                } else {
                    System.out.println("Found non-standard APIs for " + // NOI18N
                            args[i]);
                }
            } catch (IOException e) {
                e.printStackTrace();
                continue;
            }
            System.out.println("\n]"); // NOI18N
        }//args[i]