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()));
+ }
}
}