FileDocCategorySizeDatePackage
EjbVerifier.javaAPI DocGlassfish v2 API6868Fri May 04 22:33:26 BST 2007com.sun.enterprise.tools.verifier.ejb

EjbVerifier

public class EjbVerifier extends com.sun.enterprise.tools.verifier.BaseVerifier
The class handles the EJB Verification.
author
Vikas Awasthi

Fields Summary
private com.sun.enterprise.deployment.EjbBundleDescriptor
ejbd
private String
classPath
private boolean
isASMode
Constructors Summary
public EjbVerifier(com.sun.enterprise.tools.verifier.FrameworkContext frameworkContext, com.sun.enterprise.deployment.EjbBundleDescriptor ejbd)


      
                         
        this.frameworkContext = frameworkContext;
        this.ejbd = ejbd;
        this.isASMode = !frameworkContext.isPortabilityMode();
    
Methods Summary
protected java.lang.ClassLoadercreateClassLoader()
Create the classloader from the extracted directory

        return ejbd.getClassLoader();
    
protected voidcreateClosureCompiler()
creates the ClosureCompiler for the ejb module and sets it to the verifier context. This is used to compute the closure on the classes used in the ejb archive.

throws
IOException

        String specVer = SpecVersionMapper.getEJBVersion(
                frameworkContext.getJavaEEVersion());
        Object arg = (isASMode)?ejbd.getClassLoader():(Object)getClassPath();
        EjbClosureCompiler cc = new EjbClosureCompiler(specVer,
                ClassFileLoaderFactory.newInstance(new Object[]{arg}));
        context.setClosureCompiler(cc);
    
protected java.lang.StringgetArchiveUri()

        return FileUtils.makeFriendlyFileName(ejbd.getModuleDescriptor().getArchiveUri());
    
protected java.lang.StringgetClassPath()
Creates and returns the class path associated with the ejb archive. Uses the exploded location of the archive for generating the classpath.

return
entire classpath string
throws
IOException

        if (classPath != null) return classPath;

        if(isASMode)
            return (classPath = getClassPath(frameworkContext.getClassPath()));

        String cp;
        if (!ejbd.getModuleDescriptor().isStandalone()) {
            //take the cp from the enclosing ear file
            String ear_uri = frameworkContext.getExplodedArchivePath();
            File ear = new File(ear_uri);
            assert(ear.isDirectory());
            String earCP = ClassPathBuilder.buildClassPathForEar(ear);
            String libdir = ejbd.getApplication().getLibraryDirectory();
            if (libdir!=null) {
                earCP = getLibdirClasspath(ear_uri, libdir) + earCP;
            }
            String module_uri = ejbd.getModuleDescriptor().getArchiveUri();//this is a relative path
            File module = new File(module_uri);
            assert(module.isFile() && !module.isAbsolute());
            // exploder creates the directory replacing all dots by '_'
            File explodedModuleDir = new File(ear_uri,
                    FileUtils.makeFriendlyFileName(module_uri));
            String moduleCP = ClassPathBuilder.buildClassPathForJar(
                    explodedModuleDir);
            cp = moduleCP + File.pathSeparator + earCP;
        } else {
            String module_uri = frameworkContext.getExplodedArchivePath();//this is an absolute path
            File module = new File(module_uri);
            assert(module.isDirectory() && module.isAbsolute());
            cp = ClassPathBuilder.buildClassPathForJar(module);
        }
        return (classPath = cp);
    
protected java.lang.String[]getDDString()

        String dd[] = {"META-INF/sun-ejb-jar.xml", "META-INF/ejb-jar.xml", // NOI18N
                       "META-INF/webservices.xml"}; // NOI18N
        return dd;
    
public com.sun.enterprise.deployment.DescriptorgetDescriptor()

        return ejbd;
    
public voidverify()

        if (areTestsNotRequired(frameworkContext.isEjb()) &&
                areTestsNotRequired(frameworkContext.isWebServices()) &&
                areTestsNotRequired(frameworkContext.isWebServicesClient()) &&
                areTestsNotRequired(frameworkContext.isPersistenceUnits()))
            return;

        preVerification();
        createClosureCompiler();//this can be moved up to base verifier in future.
        verify(ejbd, new EjbCheckMgrImpl(frameworkContext));