FileDocCategorySizeDatePackage
AppClientArchiveClassesLoadable.javaAPI DocGlassfish v2 API5453Fri May 04 22:33:28 BST 2007com.sun.enterprise.tools.verifier.tests.appclient

AppClientArchiveClassesLoadable

public class AppClientArchiveClassesLoadable extends AppClientTest implements AppClientCheck
A j2ee archive should be self sufficient and should not depend on any classes to be available at runtime. The test checks whether all the classes found in the appclient archive are loadable and the classes that are referenced inside their code are also loadable within the jar.
author
Vikas Awasthi

Fields Summary
Constructors Summary
Methods Summary
public com.sun.enterprise.tools.verifier.Resultcheck(com.sun.enterprise.deployment.ApplicationClientDescriptor descriptor)

        Result result = getInitializedResult();
        ComponentNameConstructor compName = getVerifierContext().getComponentNameConstructor();
        String archiveUri = getAbstractArchiveUri(descriptor);
        
        boolean allPassed = true;
        FileArchive arch = null;
        Enumeration entries= null;
        ClosureCompiler closureCompiler=getVerifierContext().getClosureCompiler();

        try {
                String uri = getAbstractArchiveUri(descriptor);
                arch = new FileArchive();
                arch.open(uri);
                entries = arch.entries();
                arch.close();
        } catch(Exception e) {
            e.printStackTrace();
            result.failed(smh.getLocalString(getClass().getName() + ".exception",
                                             "Error: [ {0} ] exception while loading the archive [ {1} ].",
                                              new Object[] {e, descriptor.getName()}));
            return result;
        }
        Object entry;
        while (entries.hasMoreElements()) {
            String name=null;
            entry  = entries.nextElement();
               name = (String)entry;
            // look for entries with .class extension
            if (name.endsWith(".class")) {
                String className = name.substring(0, name.length()-".class".length()).replace('/",'.");
                boolean status=closureCompiler.buildClosure(className);
                allPassed=status && allPassed;
            }
        }
        if (allPassed) {
            result.setStatus(Result.PASSED);
            addGoodDetails(result, compName);
            result.passed(smh.getLocalString
                (getClass().getName() + ".passed",
                "All the classes are loadable within [ {0} ] without any linkage error.",
                new Object[] {archiveUri}));
//            result.addGoodDetails(closureCompiler.toString());
        } else {
            result.setStatus(Result.FAILED);
            addErrorDetails(result, compName);
            result.addErrorDetails(ArchiveClassesLoadableHelper.
                    getFailedResult(closureCompiler));
            result.addErrorDetails(smh.getLocalString
                    ("com.sun.enterprise.tools.verifier.tests.loadableError",
                            "Please either bundle the above mentioned classes in the application " +
                            "or use optional packaging support for them."));
        }
        return result;