dblevins    2005/08/16 00:18:56

  Modified:    modules/core/src/java/org/openejb/alt/config/rules
                        CheckClasses.java CheckMethods.java
  Log:

  Killed the temp codebase functionality from SafeToolkit.  Added new class
  TempCodebase which is not static.  Refactored nearly all code using the
  SafeToolkit.loadTempClass to use just a classloader instead.  Code for 
creating
  "temp" jars for validation and other deployment related classloading is now in
  one spot (instead of everywhere a class is loaded) and can now be safely 
avoided
  for unpacked ejb jars--we don't want to copy entire directories when we 
validate
  an unpacked ejb jar.
  
  Revision  Changes    Path
  1.4       +22 -12    
openejb1/modules/core/src/java/org/openejb/alt/config/rules/CheckClasses.java
  
  Index: CheckClasses.java
  ===================================================================
  RCS file: 
/home/projects/openejb/scm/openejb1/modules/core/src/java/org/openejb/alt/config/rules/CheckClasses.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- CheckClasses.java 16 Jun 2005 22:29:50 -0000      1.3
  +++ CheckClasses.java 16 Aug 2005 04:18:56 -0000      1.4
  @@ -44,9 +44,6 @@
    */
   package org.openejb.alt.config.rules;
   
  -import javax.ejb.EJBLocalHome;
  -import javax.ejb.EJBLocalObject;
  -
   import org.openejb.OpenEJBException;
   import org.openejb.alt.config.Bean;
   import org.openejb.alt.config.EjbSet;
  @@ -54,6 +51,9 @@
   import org.openejb.alt.config.ValidationRule;
   import org.openejb.util.SafeToolkit;
   
  +import javax.ejb.EJBLocalHome;
  +import javax.ejb.EJBLocalObject;
  +
   
   
   /**
  @@ -64,8 +64,8 @@
   
   public class CheckClasses implements ValidationRule {
   
  -    EjbSet set;
  -
  +    private EjbSet set;
  +    private ClassLoader classLoader;
       public void validate( EjbSet set ) {
           this.set = set;
   
  @@ -92,8 +92,6 @@
                } catch (RuntimeException e) {
                        throw new RuntimeException(b.getEjbName(),e);
                }
  -
  -        SafeToolkit.unloadTempCodebase( set.getJarPath() );
       }
   
        private void check_hasLocalClass(Bean b) {
  @@ -172,8 +170,8 @@
   
       private void lookForClass(Bean b, String clazz, String type){
        try {
  -         SafeToolkit.loadTempClass( clazz, set.getJarPath() );
  -        } catch ( OpenEJBException e ) {
  +        loadClass(clazz);
  +    } catch ( OpenEJBException e ) {
               /*
               # 0 - Class name
               # 1 - Element (home, ejb-class, remote)
  @@ -207,8 +205,10 @@
       private void compareTypes(Bean b, String clazz1, Class class2 ){
           Class class1 = null;
           try {
  -            class1 = SafeToolkit.loadTempClass( clazz1 , set.getJarPath() );
  -        } catch ( OpenEJBException e ) { }
  +            class1 = loadClass(clazz1);
  +        } catch (OpenEJBException e) {
  +            return;
  +        }
   
           if ( class1 != null && !class2.isAssignableFrom( class1 ) ) {
               ValidationFailure failure = new 
ValidationFailure("wrong.class.type");
  @@ -219,6 +219,16 @@
               //set.addFailure( new ValidationFailure("wrong.class.type", 
clazz1, class2.getName()) );
           }
       }
  +
  +    private Class loadClass(String clazz) throws OpenEJBException {
  +        ClassLoader cl = set.getClassLoader();
  +        try {
  +            return cl.loadClass(clazz);
  +        } catch (ClassNotFoundException cnfe) {
  +            throw new OpenEJBException(SafeToolkit.messages.format("cl0007", 
clazz, set.getJarPath()));
  +        }
  +    }
  +
   }
   
   
  
  
  
  1.6       +21 -15    
openejb1/modules/core/src/java/org/openejb/alt/config/rules/CheckMethods.java
  
  Index: CheckMethods.java
  ===================================================================
  RCS file: 
/home/projects/openejb/scm/openejb1/modules/core/src/java/org/openejb/alt/config/rules/CheckMethods.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- CheckMethods.java 19 Jun 2005 22:40:29 -0000      1.5
  +++ CheckMethods.java 16 Aug 2005 04:18:56 -0000      1.6
  @@ -44,10 +44,6 @@
    */
   package org.openejb.alt.config.rules;
   
  -import java.lang.reflect.Method;
  -
  -import javax.ejb.EJBLocalObject;
  -
   import org.openejb.OpenEJBException;
   import org.openejb.alt.config.Bean;
   import org.openejb.alt.config.EjbSet;
  @@ -58,6 +54,9 @@
   import org.openejb.alt.config.ValidationWarning;
   import org.openejb.util.SafeToolkit;
   
  +import javax.ejb.EJBLocalObject;
  +import java.lang.reflect.Method;
  +
   
   
   /**
  @@ -87,8 +86,6 @@
                    check_localHomeInterfaceMethods( b );
                    }
           }
  -
  -        SafeToolkit.unloadTempCodebase( set.getJarPath() );
       }
   
   
  @@ -96,8 +93,8 @@
           Class home  = null;
           Class bean = null;
           try {
  -            home = SafeToolkit.loadTempClass( b.getLocalHome() , 
set.getJarPath() );
  -            bean = SafeToolkit.loadTempClass( b.getEjbClass() , 
set.getJarPath() );
  +            home = loadClass(b.getLocalHome());
  +            bean = loadClass(b.getEjbClass());
           } catch ( OpenEJBException e ) {
               return;
           }
  @@ -114,8 +111,8 @@
           Class intrface  = null;
           Class beanClass = null;
           try {
  -            intrface  = SafeToolkit.loadTempClass( b.getLocal() , 
set.getJarPath() );
  -            beanClass = SafeToolkit.loadTempClass( b.getEjbClass() , 
set.getJarPath() );
  +            intrface  = loadClass(b.getLocal());
  +            beanClass = loadClass(b.getEjbClass());
           } catch ( OpenEJBException e ) {
               return;
           }
  @@ -154,8 +151,8 @@
           Class intrface  = null;
           Class beanClass = null;
           try {
  -            intrface  = SafeToolkit.loadTempClass( b.getRemote() , 
set.getJarPath() );
  -            beanClass = SafeToolkit.loadTempClass( b.getEjbClass() , 
set.getJarPath() );
  +            intrface  = loadClass(b.getRemote());
  +            beanClass = loadClass(b.getEjbClass());
           } catch ( OpenEJBException e ) {
               return;
           }
  @@ -190,8 +187,8 @@
           Class home  = null;
           Class bean = null;
           try {
  -            home = SafeToolkit.loadTempClass( b.getHome() , set.getJarPath() 
);
  -            bean = SafeToolkit.loadTempClass( b.getEjbClass() , 
set.getJarPath() );
  +            home = loadClass(b.getHome());
  +            bean = loadClass(b.getEjbClass());
           } catch ( OpenEJBException e ) {
               return;
           }
  @@ -401,6 +398,15 @@
           }
   
           return paramString.toString();
  +    }
  +
  +    private Class loadClass(String clazz) throws OpenEJBException {
  +        ClassLoader cl = set.getClassLoader();
  +        try {
  +            return cl.loadClass(clazz);
  +        } catch (ClassNotFoundException cnfe) {
  +            throw new OpenEJBException(SafeToolkit.messages.format("cl0007", 
clazz, set.getJarPath()));
  +        }
       }
   }
   
  
  
  

Reply via email to