Search in sources :

Example 1 with ClosureCompiler

use of com.sun.enterprise.tools.verifier.apiscan.classfile.ClosureCompiler in project Payara by payara.

the class AppClientArchiveClassesLoadable method check.

public Result check(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;
}
Also used : Enumeration(java.util.Enumeration) FileArchive(com.sun.enterprise.deploy.shared.FileArchive) ClosureCompiler(com.sun.enterprise.tools.verifier.apiscan.classfile.ClosureCompiler) ComponentNameConstructor(com.sun.enterprise.tools.verifier.tests.ComponentNameConstructor) Result(com.sun.enterprise.tools.verifier.Result)

Example 2 with ClosureCompiler

use of com.sun.enterprise.tools.verifier.apiscan.classfile.ClosureCompiler in project Payara by payara.

the class WebArchiveClassesLoadable method check.

public Result check(WebBundleDescriptor descriptor) {
    Result result = getInitializedResult();
    ComponentNameConstructor compName = getVerifierContext().getComponentNameConstructor();
    String archiveUri = getAbstractArchiveUri(descriptor);
    Iterator entries;
    try {
        entries = getClassNames(descriptor).iterator();
    } 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;
    }
    boolean allPassed = true;
    ClosureCompiler closureCompiler = getVerifierContext().getClosureCompiler();
    // org.apache.jasper takes care of internal JSP stuff
    ((ClosureCompilerImpl) closureCompiler).addExcludedPattern("org.apache.jasper");
    // DefaultServlet takes care of the default servlet in GlassFish.
    // For some reason, for every web app, this is returned as a component
    ((ClosureCompilerImpl) closureCompiler).addExcludedClass("org.apache.catalina.servlets.DefaultServlet");
    if (getVerifierContext().isAppserverMode())
        ((ClosureCompilerImpl) closureCompiler).addExcludedPattern("com.sun.enterprise");
    while (entries.hasNext()) {
        String className = (String) entries.next();
        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 }));
    } else {
        result.setStatus(Result.FAILED);
        addErrorDetails(result, compName);
        result.addErrorDetails(WebArchiveLoadableHelper.getFailedResults(closureCompiler, getVerifierContext().getOutDir()));
        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;
}
Also used : ClosureCompilerImpl(com.sun.enterprise.tools.verifier.apiscan.classfile.ClosureCompilerImpl) ClosureCompiler(com.sun.enterprise.tools.verifier.apiscan.classfile.ClosureCompiler) ComponentNameConstructor(com.sun.enterprise.tools.verifier.tests.ComponentNameConstructor) Result(com.sun.enterprise.tools.verifier.Result)

Example 3 with ClosureCompiler

use of com.sun.enterprise.tools.verifier.apiscan.classfile.ClosureCompiler in project Payara by payara.

the class EjbArchiveClassesLoadable method check.

public Result check(EjbDescriptor descriptor) {
    Result result = getInitializedResult();
    ComponentNameConstructor compName = getVerifierContext().getComponentNameConstructor();
    // String archiveUri = getAbstractArchiveUri(descriptor);
    ClosureCompiler closureCompiler = getVerifierContext().getClosureCompiler();
    boolean allPassed = closureCompiler.buildClosure(descriptor.getEjbClassName());
    if (allPassed) {
        result.setStatus(Result.PASSED);
        addGoodDetails(result, compName);
        result.passed(smh.getLocalString(getClass().getName() + ".passed", "All the classes are loadable."));
    } 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;
}
Also used : ClosureCompiler(com.sun.enterprise.tools.verifier.apiscan.classfile.ClosureCompiler) ComponentNameConstructor(com.sun.enterprise.tools.verifier.tests.ComponentNameConstructor) Result(com.sun.enterprise.tools.verifier.Result)

Example 4 with ClosureCompiler

use of com.sun.enterprise.tools.verifier.apiscan.classfile.ClosureCompiler in project Payara by payara.

the class ConnectorArchiveClassesLoadable method check.

public Result check(ConnectorDescriptor descriptor) {
    Result result = getInitializedResult();
    ComponentNameConstructor compName = getVerifierContext().getComponentNameConstructor();
    String archiveUri = getAbstractArchiveUri(descriptor);
    boolean allPassed = true;
    Enumeration entries = null;
    ClosureCompiler closureCompiler = getVerifierContext().getClosureCompiler();
    ;
    try {
        String uri = getAbstractArchiveUri(descriptor);
        FileArchive 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;
        if (name.endsWith(".class")) {
            String classEntryName = name.substring(0, name.length() - ".class".length()).replace('/', '.');
            boolean status = closureCompiler.buildClosure(classEntryName);
            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;
}
Also used : Enumeration(java.util.Enumeration) ClosureCompiler(com.sun.enterprise.tools.verifier.apiscan.classfile.ClosureCompiler) FileArchive(com.sun.enterprise.deploy.shared.FileArchive) ComponentNameConstructor(com.sun.enterprise.tools.verifier.tests.ComponentNameConstructor) Result(com.sun.enterprise.tools.verifier.Result)

Aggregations

Result (com.sun.enterprise.tools.verifier.Result)4 ClosureCompiler (com.sun.enterprise.tools.verifier.apiscan.classfile.ClosureCompiler)4 ComponentNameConstructor (com.sun.enterprise.tools.verifier.tests.ComponentNameConstructor)4 FileArchive (com.sun.enterprise.deploy.shared.FileArchive)2 Enumeration (java.util.Enumeration)2 ClosureCompilerImpl (com.sun.enterprise.tools.verifier.apiscan.classfile.ClosureCompilerImpl)1