You are viewing a plain text version of this content. The canonical link for it is here.
Posted to bsf-dev@jakarta.apache.org by ro...@apache.org on 2006/12/16 13:15:47 UTC

svn commit: r487795 - in /jakarta/bsf/trunk/src/org/apache/bsf: ./ engines/java/ engines/netrexx/ engines/xslt/ util/ util/event/generator/

Author: rony
Date: Sat Dec 16 04:15:45 2006
New Revision: 487795

URL: http://svn.apache.org/viewvc?view=rev&rev=487795
Log:
20061216 1214 This solution creates a BSF_LogFactory and BSF_Log class which will by default behave as an no-op logger. In case commons-logging LogFactory and Log is available, it will be used. Hence the functionality remains the same, but the change will allow BSF to run without commons-logging present (possibly easying installation issues considerably). A build of BSF incorporating all these changes can be downloaded from <http://wi.wu-wien.ac.at/rgf/tmp/bsf.tmp/>

Added:
    jakarta/bsf/trunk/src/org/apache/bsf/BSF_Log.java   (with props)
    jakarta/bsf/trunk/src/org/apache/bsf/BSF_LogFactory.java   (with props)
Modified:
    jakarta/bsf/trunk/src/org/apache/bsf/BSFManager.java
    jakarta/bsf/trunk/src/org/apache/bsf/engines/java/JavaEngine.java
    jakarta/bsf/trunk/src/org/apache/bsf/engines/netrexx/NetRexxEngine.java
    jakarta/bsf/trunk/src/org/apache/bsf/engines/xslt/XSLTEngine.java
    jakarta/bsf/trunk/src/org/apache/bsf/util/JavaUtils.java
    jakarta/bsf/trunk/src/org/apache/bsf/util/event/generator/AdapterClassLoader.java
    jakarta/bsf/trunk/src/org/apache/bsf/util/event/generator/EventAdapterGenerator.java

Modified: jakarta/bsf/trunk/src/org/apache/bsf/BSFManager.java
URL: http://svn.apache.org/viewvc/jakarta/bsf/trunk/src/org/apache/bsf/BSFManager.java?view=diff&rev=487795&r1=487794&r2=487795
==============================================================================
--- jakarta/bsf/trunk/src/org/apache/bsf/BSFManager.java (original)
+++ jakarta/bsf/trunk/src/org/apache/bsf/BSFManager.java Sat Dec 16 04:15:45 2006
@@ -34,8 +34,10 @@
 
 import org.apache.bsf.util.CodeBuffer;
 import org.apache.bsf.util.ObjectRegistry;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
+
+    // org.apache.commons.logging is delegated to "org.apache.bsf.BSF_Log[Factory]"
+// import org.apache.commons.logging.Log;
+// import org.apache.commons.logging.LogFactory;
 
 /**
  * This class is the entry point to the bean scripting framework. An
@@ -54,14 +56,15 @@
  * @author   Sam Ruby
  * @author   Olivier Gruber (added original debugging support)
  * @author   Don Schwarz (added support for registering languages dynamically)
+ * @author   Rony G. Flatscher (added BSF_Log[Factory] to allow BSF to run without org.apache.commons.logging present)
  */
 public class BSFManager {
     // version string is in the form "abc.yyyymmdd" where
     // "abc" represents a dewey decimal number (three levels, each between 0 and 9),
     // and "yyyy" a four digit year, "mm" a two digit month, "dd" a two digit day.
     //
-    // Example: "240.20060925" stands for: BSF version "2.4.0" as of "2006-09-25"
-    protected static String version="240.20061006";
+    // Example: "241.20061208" stands for: BSF version "2.4.1" as of "2006-12-08"
+    protected static String version="241.20061208";
 
     // table of registered scripting engines
     protected static Hashtable registeredEngines = new Hashtable();
@@ -99,7 +102,8 @@
     // introduced by a client of BSFManager
     protected Vector declaredBeans = new Vector();
 
-    private Log logger = LogFactory.getLog(this.getClass().getName());
+    // private Log logger = LogFactory.getLog(this.getClass().getName());
+    private BSF_Log logger = null;
 
     //////////////////////////////////////////////////////////////////////
     //
@@ -154,6 +158,9 @@
 
     public BSFManager() {
         pcs = new PropertyChangeSupport(this);
+            // handle logger
+        // logger = LogFactory.getLog(this.getClass().getName());
+        logger = BSF_LogFactory.getLog(this.getClass().getName());
     }
 
 
@@ -164,8 +171,8 @@
        &quot;yyyy&quot; a four digit year, &quot;mm&quot; a two digit month,
        &quot;dd&quot; a two digit day.
     *
-       <br>Example: &quot;<code>240.20061006</code>&quot;
-       stands for: BSF version <code>2.4.0</code> as of <code>2006-10-06</code>.
+       <br>Example: &quot;<code>241.20061208</code>&quot;
+       stands for: BSF version <code>2.4.1</code> as of <code>2006-12-08</code>.
     *
     *
      * @since 2006-01-17

Added: jakarta/bsf/trunk/src/org/apache/bsf/BSF_Log.java
URL: http://svn.apache.org/viewvc/jakarta/bsf/trunk/src/org/apache/bsf/BSF_Log.java?view=auto&rev=487795
==============================================================================
--- jakarta/bsf/trunk/src/org/apache/bsf/BSF_Log.java (added)
+++ jakarta/bsf/trunk/src/org/apache/bsf/BSF_Log.java Sat Dec 16 04:15:45 2006
@@ -0,0 +1,358 @@
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.bsf;
+import  java.lang.reflect.*;
+
+/** This class is used in BSF for logging (a delegator for <em>org.apache.commons.logging</em>,
+ *  which is needed for compilation) using the <code>org.apache.commons.logging.Log</code>
+ *  methods.
+
+ Therefore this class implements all the  <code>org.apache.commons.logging.Log</code>
+ methods. If <code>org.apache.commons.logging.LogFactory</code> is available, then this
+ * class is used to get an <code>org.apache.commons.logging.Log</code> instance to which to
+ * forward the message.
+
+ *  Therefore, if Apache's common logging is available, then it is employed.
+ * If Apache's commons logging is <em>not</em> available then a <em>no-op</em> behaviour
+ is employed, modelled after <code>org.apache.commons.logging.impl.NoOpLog</code>.
+
+   @author Rony G. Flatscher, 2006-12-08
+*/
+
+public class BSF_Log // implements org.apache.commons.logging.Log
+{
+    static private Class       oac_LogFactory              = null;
+    static private Method      oac_LogFactoryGetLog_Clazz  = null;
+    static private Method      oac_LogFactoryGetLog_String = null;
+
+    {           // try to demand load the apache commons logging LogFactory
+        try
+        {
+            ClassLoader cl= Thread.currentThread().getContextClassLoader();
+            oac_LogFactory = cl.loadClass("org.apache.commons.logging.LogFactory");
+
+                // get method with Class object argument
+            oac_LogFactoryGetLog_Clazz = oac_LogFactory.getMethod("getLog", new Class[] {Class.class});
+
+                // get method with String object argument
+            oac_LogFactoryGetLog_String = oac_LogFactory.getMethod("getLog", new Class[] {String.class});
+        }
+
+        catch (ClassNotFoundException e) { ; }  // o.k., so we do not use org.apache.commons.logging in this run
+        catch (NoSuchMethodException  e) { ; }  // o.k., so we do not use org.apache.commons.logging in this run
+    }
+
+
+    /** Name of the BSF_Log instance. */
+    String name=null;
+
+    /** Proxy object for <em>org.apache.commons.logging.Log</em>, if available. */
+    private Object oac_logger=null;
+
+
+    public BSF_Log()
+    {
+        this.name="<?>";
+        if (oac_LogFactory!=null)
+        {
+            try     // try to get an org.apache.commons.logging.Log object from the LogFactory
+            {
+                oac_logger=oac_LogFactoryGetLog_String.invoke(oac_LogFactory, new Object[] {this.name});
+            }
+            catch (Exception e) { e.printStackTrace(); }
+        }
+    };
+
+    public BSF_Log(String name)
+    {
+        this.name=name;
+        if (oac_LogFactory!=null)
+        {
+            try     // try to get an org.apache.commons.logging.Log object from the LogFactory
+            {
+                oac_logger=oac_LogFactoryGetLog_String.invoke(oac_LogFactory, new Object[] {name});
+            }
+            catch (Exception e) { e.printStackTrace(); }
+        }
+    };
+
+    public BSF_Log(Class clazz)
+    {
+        this.name=clazz.getName();
+        if (oac_LogFactory!=null)
+        {
+            try     // try to get an org.apache.commons.logging.Log object from the LogFactory
+            {
+                oac_logger=oac_LogFactoryGetLog_Clazz.invoke(oac_LogFactory, new Object[] {clazz});
+            }
+            catch (Exception e) { e.printStackTrace(); }
+        }
+    };
+
+    // --------------------------------------------------------------------
+    public void debug(Object msg)
+    {
+        if (oac_logger==null) return;   // no org.apache.commons.logging.Log object ?
+
+        try
+        {
+            ((org.apache.commons.logging.Log) oac_logger).debug(msg);
+        }
+        catch (Exception e) { e.printStackTrace(); }
+    };
+
+    public void debug(Object msg, Throwable t)
+    {
+        if (oac_logger==null) return;   // no org.apache.commons.logging.Log object ?
+
+        try
+        {
+            ((org.apache.commons.logging.Log) oac_logger).debug(msg, t);
+        }
+        catch (Exception e) { e.printStackTrace(); }
+    };
+
+    // --------------------------------------------------------------------
+    public void error(Object msg)
+    {
+        if (oac_logger==null) return;   // no org.apache.commons.logging.Log object ?
+
+        try
+        {
+            ((org.apache.commons.logging.Log) oac_logger).error(msg);
+        }
+        catch (Exception e) { e.printStackTrace(); }
+    };
+
+    public void error(Object msg, Throwable t)
+    {
+        if (oac_logger==null) return;   // no org.apache.commons.logging.Log object ?
+
+        try
+        {
+            ((org.apache.commons.logging.Log) oac_logger).error(msg, t);
+        }
+        catch (Exception e) { e.printStackTrace(); }
+    };
+
+
+    // --------------------------------------------------------------------
+    public void fatal(Object msg)
+    {
+        if (oac_logger==null) return;   // no org.apache.commons.logging.Log object ?
+
+        try
+        {
+            ((org.apache.commons.logging.Log) oac_logger).fatal(msg);
+        }
+        catch (Exception e) { e.printStackTrace(); }
+    };
+
+    public void fatal(Object msg, Throwable t)
+    {
+        if (oac_logger==null) return;   // no org.apache.commons.logging.Log object ?
+        try
+        {
+            ((org.apache.commons.logging.Log) oac_logger).fatal(msg, t);
+        }
+        catch (Exception e) { e.printStackTrace(); }
+    };
+
+
+    // --------------------------------------------------------------------
+    public void info (Object msg)
+    {
+        if (oac_logger==null) return;   // no org.apache.commons.logging.Log object ?
+
+        try
+        {
+            ((org.apache.commons.logging.Log) oac_logger).info(msg);
+        }
+        catch (Exception e) { e.printStackTrace(); }
+    };
+
+    public void info (Object msg, Throwable t)
+    {
+        if (oac_logger==null) return;   // no org.apache.commons.logging.Log object ?
+
+        try
+        {
+            ((org.apache.commons.logging.Log) oac_logger).info(msg, t);
+        }
+        catch (Exception e) { e.printStackTrace(); }
+    };
+
+
+    // --------------------------------------------------------------------
+    public void trace(Object msg)
+    {
+        if (oac_logger==null) return;   // no org.apache.commons.logging.Log object ?
+
+        try
+        {
+            ((org.apache.commons.logging.Log) oac_logger).trace(msg);
+        }
+        catch (Exception e) { e.printStackTrace(); }
+    };
+
+    public void trace(Object msg, Throwable t)
+    {
+        if (oac_logger==null) return;   // no org.apache.commons.logging.Log object ?
+
+        try
+        {
+            ((org.apache.commons.logging.Log) oac_logger).trace(msg, t);
+        }
+        catch (Exception e) { e.printStackTrace(); }
+    };
+
+
+    // --------------------------------------------------------------------
+    public void warn (Object msg)
+    {
+        if (oac_logger==null) return;   // no org.apache.commons.logging.Log object ?
+
+        try
+        {
+            ((org.apache.commons.logging.Log) oac_logger).warn(msg);
+        }
+        catch (Exception e) { e.printStackTrace(); }
+    };
+
+    public void warn (Object msg, Throwable t)
+    {
+        if (oac_logger==null) return;   // no org.apache.commons.logging.Log object ?
+
+        try
+        {
+            ((org.apache.commons.logging.Log) oac_logger).warn(msg, t);
+        }
+        catch (Exception e) { e.printStackTrace(); }
+    };
+
+
+    // --------------------------------------------------------------------
+    // --------------------------------------------------------------------
+    public boolean isDebugEnabled()
+    {
+        if (oac_logger==null) {return false;}   // no org.apache.commons.logging.Log object ?
+
+        try
+            {
+            return ((org.apache.commons.logging.Log) oac_logger).isDebugEnabled();
+        }
+        catch (Exception e) { ; }
+        finally             { return false; }
+    }
+
+    public boolean isErrorEnabled()
+    {
+        if (oac_logger==null) return false;     // no org.apache.commons.logging.Log object ?
+
+        try
+        {
+            return ((org.apache.commons.logging.Log) oac_logger).isErrorEnabled();
+        }
+        catch (Exception e) { ; }
+        finally             { return false; }
+    }
+
+    public boolean isFatalEnabled()
+    {
+        if (oac_logger==null) return false;     // no org.apache.commons.logging.Log object ?
+
+        try
+        {
+            return ((org.apache.commons.logging.Log) oac_logger).isFatalEnabled();
+        }
+        catch (Exception e) { ; }
+        finally             { return false; }
+    }
+
+    public boolean isInfoEnabled ()
+    {
+        if (oac_logger==null) return false;     // no org.apache.commons.logging.Log object ?
+
+        try
+        {
+            return ((org.apache.commons.logging.Log) oac_logger).isInfoEnabled();
+        }
+        catch (Exception e) { ; }
+        finally             { return false; }
+    }
+
+    public boolean isTraceEnabled()
+    {
+        if (oac_logger==null) return false;     // no org.apache.commons.logging.Log object ?
+
+        try
+        {
+            return ((org.apache.commons.logging.Log) oac_logger).isTraceEnabled();
+        }
+        catch (Exception e) { ; }
+        finally             { return false; }
+    }
+
+    public boolean isWarnEnabled ()
+    {
+        if (oac_logger==null) return false;     // no org.apache.commons.logging.Log object ?
+
+        try
+        {
+            return ((org.apache.commons.logging.Log) oac_logger).isWarnEnabled();
+        }
+        catch (Exception e) { ; }
+        finally             { return false; }
+    }
+
+
+        // for development purposes only (to debug this class on its own)
+    public static void main (String args[]) {
+        System.out.println("in BSF_Log ...");
+        System.out.println("--------------------------------------------------------");
+        System.out.println("--------------------------------------------------------");
+        BSF_Log bl=new BSF_Log();
+        dump(bl);
+        bl=new BSF_Log(Class.class);
+        dump(bl);
+        bl=new BSF_Log("Rony was here...");
+        dump(bl);
+
+    }
+
+    static void dump(BSF_Log bl)
+    {
+        System.out.println("\n\tbl=["+bl+"] <<<---   <<<---   <<<---");
+        bl.debug("debug message. ");
+        bl.error("error message. ");
+        bl.fatal("fatal message. ");
+        bl.info ("info  message. ");
+        bl.trace("trace message. ");
+        bl.warn ("warn  message. ");
+
+        System.out.println("\tisDebugEnabled: "+bl.isDebugEnabled());
+        System.out.println("\tisErrorEnabled: "+bl.isErrorEnabled());
+        System.out.println("\tisFatalEnabled: "+bl.isFatalEnabled());
+        System.out.println("\tisInfo Enabled: "+bl.isInfoEnabled());
+        System.out.println("\tisTraceEnabled: "+bl.isTraceEnabled());
+        System.out.println("\tisWarn Enabled: "+bl.isWarnEnabled());
+
+        System.out.println("\tbl=["+bl+"] --->>>   --->>>   --->>>");
+        System.out.println("--------------------------------------------------------");
+    }
+}
+

Propchange: jakarta/bsf/trunk/src/org/apache/bsf/BSF_Log.java
------------------------------------------------------------------------------
    svn:executable = *

Propchange: jakarta/bsf/trunk/src/org/apache/bsf/BSF_Log.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Rev Id URL

Added: jakarta/bsf/trunk/src/org/apache/bsf/BSF_LogFactory.java
URL: http://svn.apache.org/viewvc/jakarta/bsf/trunk/src/org/apache/bsf/BSF_LogFactory.java?view=auto&rev=487795
==============================================================================
--- jakarta/bsf/trunk/src/org/apache/bsf/BSF_LogFactory.java (added)
+++ jakarta/bsf/trunk/src/org/apache/bsf/BSF_LogFactory.java Sat Dec 16 04:15:45 2006
@@ -0,0 +1,44 @@
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.bsf;
+
+/** This class is used in BSF as BSF_LogFactory returning a BSF_Log instance, which is
+ * a delegator for an <code>org.apache.commons.logging.Log</code> object.
+ *
+ It implements the static <code>org.apache.commons.logging.LogFactory.getLog({String|Class} object)</code>
+ * methods which return an instance of the class <code>org.apache.bsf.BSF_Log</code>, which in
+ * turn implements all the methods of the <code>org.apache.commons.logging.Log</code> interface class.
+ *
+
+   @author Rony G. Flatscher, 2006-12-08
+*/
+
+public class BSF_LogFactory
+{
+    protected BSF_LogFactory() {};              // mimickries org.apache.commons.logging.LogFactory
+
+    static public BSF_Log getLog (String name)
+    {
+        return new BSF_Log(name);
+    }
+
+    static public BSF_Log getLog (Class clz)
+    {
+        return new BSF_Log(clz);
+    }
+}
+

Propchange: jakarta/bsf/trunk/src/org/apache/bsf/BSF_LogFactory.java
------------------------------------------------------------------------------
    svn:executable = *

Propchange: jakarta/bsf/trunk/src/org/apache/bsf/BSF_LogFactory.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Rev Id URL

Modified: jakarta/bsf/trunk/src/org/apache/bsf/engines/java/JavaEngine.java
URL: http://svn.apache.org/viewvc/jakarta/bsf/trunk/src/org/apache/bsf/engines/java/JavaEngine.java?view=diff&rev=487795&r1=487794&r2=487795
==============================================================================
--- jakarta/bsf/trunk/src/org/apache/bsf/engines/java/JavaEngine.java (original)
+++ jakarta/bsf/trunk/src/org/apache/bsf/engines/java/JavaEngine.java Sat Dec 16 04:15:45 2006
@@ -1,12 +1,12 @@
 /*
  * Copyright 2004,2004 The Apache Software Foundation.
- * 
+ *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
- * 
+ *
  *      http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -25,14 +25,15 @@
 
 import org.apache.bsf.BSFException;
 import org.apache.bsf.BSFManager;
+import org.apache.bsf.BSF_Log;
+import org.apache.bsf.BSF_LogFactory;
+
 import org.apache.bsf.util.BSFEngineImpl;
 import org.apache.bsf.util.CodeBuffer;
 import org.apache.bsf.util.EngineUtils;
 import org.apache.bsf.util.JavaUtils;
 import org.apache.bsf.util.MethodUtils;
 import org.apache.bsf.util.ObjInfo;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
 
 /**
  * This is the interface to Java from the
@@ -80,6 +81,7 @@
  * provide better control over when and how much overhead occurs.
  * <p>
  * @author Joe Kesselman
+ * @author   Rony G. Flatscher (added BSF_Log[Factory] to allow BSF to run without org.apache.commons.logging present)
  */
 public class JavaEngine extends BSFEngineImpl {
     Class javaclass = null;
@@ -87,9 +89,10 @@
     static String serializeCompilation = "";
     static String placeholder = "$$CLASSNAME$$";
     String minorPrefix;
-        
-    private Log logger = LogFactory.getLog(this.getClass().getName());
-    
+
+    // private Log logger = LogFactory.getLog(this.getClass().getName());
+    private BSF_Log logger = null;
+
     /**
      * Create a scratchfile, open it for writing, return its name.
      * Relies on the filesystem to provide us with uniqueness testing.
@@ -98,7 +101,7 @@
      * even if the classfile has been deleted.
      */
     private int uniqueFileOffset = -1;
-    
+
     private class GeneratedFile {
         File file = null;
         FileOutputStream fos = null;
@@ -109,33 +112,35 @@
             this.className = className;
         }
     }
-    
+
     /**
      * Constructor.
      */
     public JavaEngine () {
+            // handle logger
+        logger = BSF_LogFactory.getLog(this.getClass().getName());
         // Do compilation-possible check here??????????????
     }
-    
-    public Object call (Object object, String method, Object[] args) 
+
+    public Object call (Object object, String method, Object[] args)
     throws BSFException
     {
         throw new BSFException (BSFException.REASON_UNSUPPORTED_FEATURE,
         "call() is not currently supported by JavaEngine");
     }
-    
+
     public void compileScript (String source, int lineNo, int columnNo,
             Object script, CodeBuffer cb) throws BSFException {
         ObjInfo oldRet = cb.getFinalServiceMethodStatement ();
-        
+
         if (oldRet != null && oldRet.isExecutable ()) {
             cb.addServiceMethodStatement (oldRet.objName + ";");
         }
-        
+
         cb.addServiceMethodStatement (script.toString ());
         cb.setFinalServiceMethodStatement (null);
     }
-    
+
     /**
      * This is used by an application to evaluate a string containing
      * some expression. It should store the "bsf" handle where the
@@ -153,20 +158,20 @@
      * We will attempt to use it, then if necessary fall back on invoking
      * javac via the command line.
      */
-    public Object eval (String source, int lineNo, int columnNo, 
+    public Object eval (String source, int lineNo, int columnNo,
             Object oscript) throws BSFException
             {
         Object retval = null;
         String classname = null;
         GeneratedFile gf = null;
-        
+
         String basescript = oscript.toString();
         String script = basescript;	// May be altered by $$CLASSNAME$$ expansion
-        
+
         try {
             // Do we already have a class exactly matching this code?
             javaclass = (Class)codeToClass.get(basescript);
-            
+
             if(javaclass != null) {
                 classname=javaclass.getName();
             } else {
@@ -176,14 +181,14 @@
                 }
                 // Obtain classname
                 classname = gf.className;
-                
+
                 // Write the kluge header to the file.
                 gf.fos.write(("import java.lang.*;"+
                         "import java.util.*;"+
                         "public class "+classname+" {\n" +
                 "  static public Object BSFJavaEngineEntry(org.apache.bsf.BSFManager bsf) {\n")
                 .getBytes());
-                
+
                 // Edit the script to replace placeholder with the generated
                 // classname. Note that this occurs _after_ the cache was checked!
                 int startpoint = script.indexOf(placeholder);
@@ -203,63 +208,63 @@
                         script = changed.toString();
                     }
                 }
-                
+
                 // MJD - debug
 //              BSFDeclaredBean tempBean;
 //              String          className;
-//              
+//
 //              for (int i = 0; i < declaredBeans.size (); i++) {
 //              tempBean  = (BSFDeclaredBean) declaredBeans.elementAt (i);
 //              className = StringUtils.getClassName (tempBean.bean.getClass ());
-//              
+//
 //              gf.fos.write ((className + " " +
 //              tempBean.name + " = (" + className +
 //              ")bsf.lookupBean(\"" +
 //              tempBean.name + "\");").getBytes ());
 //              }
                 // MJD - debug
-                
+
                 // Copy the input to the file.
                 // Assumes all available -- probably mistake, but same as other engines.
                 gf.fos.write(script.getBytes());
                 // Close the method and class
                 gf.fos.write(("\n  }\n}\n").getBytes());
                 gf.fos.close();
-                
+
                 // Compile through Java to .class file
                 // May not be threadsafe. Serialize access on static object:
                 synchronized(serializeCompilation) {
                     JavaUtils.JDKcompile(gf.file.getPath(), classPath);
                 }
-                
+
                 // Load class.
                 javaclass = EngineUtils.loadClass(mgr, classname);
-                
+
                 // Stash class for reuse
                 codeToClass.put(basescript, javaclass);
             }
-            
-            Object[] callArgs = {mgr};      
+
+            Object[] callArgs = {mgr};
             retval = internalCall(this,"BSFJavaEngineEntry",callArgs);
         }
-        
-        
+
+
         catch(Exception e) {
             e.printStackTrace ();
             throw new BSFException (BSFException.REASON_IO_ERROR, e.getMessage ());
         } finally {
             // Cleanup: delete the .java and .class files
-            
+
 //          if(gf!=null && gf.file!=null && gf.file.exists())
 //          gf.file.delete();  // .java file
-            
-            
+
+
             if(classname!=null) {
                 // Generated class
                 File file = new File(tempDir+File.separatorChar+classname+".class");
 //              if(file.exists())
 //              file.delete();
-                
+
                 // Search for and clean up minor classes, classname$xxx.class
                 file = new File(tempDir);  // ***** Is this required?
                 minorPrefix = classname+"$"; // Indirect arg to filter
@@ -281,7 +286,7 @@
         }
         return retval;
     }
-    
+
     public void initialize (BSFManager mgr, String lang,
             Vector declaredBeans) throws BSFException {
         super.initialize (mgr, lang, declaredBeans);
@@ -294,7 +299,7 @@
      * passed to the extension, which may be either
      * Vectors of Nodes, or Strings.
      */
-    Object internalCall (Object object, String method, Object[] args) 
+    Object internalCall (Object object, String method, Object[] args)
     throws BSFException
     {
         //***** ISSUE: Only static methods are currently supported
@@ -315,7 +320,7 @@
         }
         return retval;
     }
-    
+
     private GeneratedFile openUniqueFile(String directory,String prefix,String suffix) {
         File file = null;
         FileOutputStream fos = null;

Modified: jakarta/bsf/trunk/src/org/apache/bsf/engines/netrexx/NetRexxEngine.java
URL: http://svn.apache.org/viewvc/jakarta/bsf/trunk/src/org/apache/bsf/engines/netrexx/NetRexxEngine.java?view=diff&rev=487795&r1=487794&r2=487795
==============================================================================
--- jakarta/bsf/trunk/src/org/apache/bsf/engines/netrexx/NetRexxEngine.java (original)
+++ jakarta/bsf/trunk/src/org/apache/bsf/engines/netrexx/NetRexxEngine.java Sat Dec 16 04:15:45 2006
@@ -1,12 +1,12 @@
 /*
  * Copyright 2004,2004 The Apache Software Foundation.
- * 
+ *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
- * 
+ *
  *      http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -28,13 +28,13 @@
 import org.apache.bsf.BSFDeclaredBean;
 import org.apache.bsf.BSFException;
 import org.apache.bsf.BSFManager;
+import org.apache.bsf.BSF_Log;
+import org.apache.bsf.BSF_LogFactory;
 import org.apache.bsf.util.BSFEngineImpl;
 import org.apache.bsf.util.BSFFunctions;
 import org.apache.bsf.util.EngineUtils;
 import org.apache.bsf.util.MethodUtils;
 import org.apache.bsf.util.StringUtils;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
 
 /**
  * This is the interface to NetRexx from the
@@ -78,6 +78,7 @@
  *
  * @author  Joe Kesselman
  * @author  Sanjiva Weerawarana
+ * @author   Rony G. Flatscher (added BSF_Log[Factory] to allow BSF to run without org.apache.commons.logging present)
  */
 public class NetRexxEngine extends BSFEngineImpl
 {
@@ -86,9 +87,10 @@
 	static String serializeCompilation="";
 	static String placeholder="$$CLASSNAME$$";
 	String minorPrefix;
-	
-	private Log logger = LogFactory.getLog(this.getClass().getName());
-	  
+
+	// private Log logger = LogFactory.getLog(this.getClass().getName());
+	private BSF_Log logger = null;
+
 	/**
 	 * Create a scratchfile, open it for writing, return its name.
 	 * Relies on the filesystem to provide us with uniqueness testing.
@@ -100,41 +102,43 @@
 	 * of the NetRexx engine.
 	 */
   private static int uniqueFileOffset=0;
-  private class GeneratedFile 
+  private class GeneratedFile
   {
 	File file=null;
 	FileOutputStream fos=null;
 	String className=null;
-	GeneratedFile(File file,FileOutputStream fos,String className) 
+	GeneratedFile(File file,FileOutputStream fos,String className)
 	  {
 		  this.file=file;
 		  this.fos=fos;
 		  this.className=className;
 	  }
   }
-	
+
 	// rexxclass used to be an instance variable, on the theory that
 	// each NetRexxEngine was an instance of a specific script.
 	// BSF is currently reusing Engines, so caching the class
 	// no longer makes sense.
 	// Class rexxclass;
-	
+
 	/**
 	 * Constructor.
 	 */
 	public NetRexxEngine ()
 	{
+                    // handle logger
+                logger = BSF_LogFactory.getLog(this.getClass().getName());
 		/*
 		  The following line is intended to cause the constructor to
 		  throw a NoClassDefFoundError if the NetRexxC.zip dependency
 		  is not resolved.
-		  
+
 		  If this line was not here, the problem would not surface until
 		  the actual processing of a script. We want to know all is well
 		  at the time the engine is instantiated, not when we attempt to
 		  process a script.
 		  */
-		
+
 		new netrexx.lang.BadArgumentException();
 	}
 	/**
@@ -145,7 +149,7 @@
 	 * passed to the extension, which may be either
 	 * Vectors of Nodes, or Strings.
 	 */
-	public Object call (Object object, String method, Object[] args) 
+	public Object call (Object object, String method, Object[] args)
 	throws BSFException
 	{
 		throw new BSFException(BSFException.REASON_UNSUPPORTED_FEATURE,
@@ -160,7 +164,7 @@
 	 * passed to the extension, which may be either
 	 * Vectors of Nodes, or Strings.
 	 */
-	Object callStatic(Class rexxclass, String method, Object[] args) 
+	Object callStatic(Class rexxclass, String method, Object[] args)
 	throws BSFException
 	{
 		//***** ISSUE: Currently supports only static methods
@@ -173,7 +177,7 @@
 				Class[] argtypes=new Class[args.length];
 				for(int i=0;i<args.length;++i)
 					argtypes[i]=args[i].getClass();
-				
+
 				Method m=MethodUtils.getMethod(rexxclass, method, argtypes);
 				retval=m.invoke(null,args);
 			}
@@ -243,26 +247,26 @@
 	 * Nobody knows whether javac is threadsafe.
 	 * I'm going to serialize access to the compilers to protect it.
 	 */
-	public Object execEvalShared (String source, int lineNo, int columnNo, 
+	public Object execEvalShared (String source, int lineNo, int columnNo,
 							  Object oscript,boolean returnsObject)
 	throws BSFException
 	{
 		Object retval=null;
 		String classname=null;
 		GeneratedFile gf=null;
-		
+
 		// Moved into the exec process; see comment above.
 		Class rexxclass=null;
-		
+
 		String basescript=oscript.toString();
 		String script=basescript; // May be altered by $$CLASSNAME$$ expansion
-		
+
 		try {
                     // Do we already have a class exactly matching this code?
                     rexxclass=(Class)codeToClass.get(basescript);
-                    
+
                     if(rexxclass!=null)
-                    	
+
 			{
                             logger.debug("NetRexxEngine: Found pre-compiled class" +
                                                    " for script '" + basescript + "'");
@@ -273,15 +277,15 @@
                             gf=openUniqueFile(tempDir,"BSFNetRexx",".nrx");
                             if(gf==null)
                                 throw new BSFException("couldn't create NetRexx scratchfile");
-                            
+
                             // Obtain classname
                             classname=gf.className;
-                            
+
                             // Decide whether to declare a return type
                             String returnsDecl="";
                             if(returnsObject)
                                 returnsDecl="returns java.lang.Object";
-                            
+
                             // Write the kluge header to the file.
                             // ***** By doing so we give up the ability to use Property blocks.
                             gf.fos.write(("class "+classname+";\n")
@@ -290,7 +294,7 @@
                                          ("method BSFNetRexxEngineEntry(bsf=org.apache.bsf.util.BSFFunctions) "+
                                           " public static "+returnsDecl+";\n")
 								 .getBytes());
-				
+
                             // Edit the script to replace placeholder with the generated
                             // classname. Note that this occurs _after_ the cache was
                             // checked!
@@ -312,50 +316,50 @@
                                             script=changed.toString();
 					}
 				}
-                            
+
                             BSFDeclaredBean tempBean;
                             String          className;
-                            
+
                             for (int i = 0; i < declaredBeans.size (); i++)
 				{
                                     tempBean  = (BSFDeclaredBean) declaredBeans.elementAt (i);
                                     className = StringUtils.getClassName (tempBean.type);
-                                    
+
                                     gf.fos.write ((tempBean.name + " =" + className + "   bsf.lookupBean(\"" +
                                                    tempBean.name + "\");").getBytes());
 				}
-                            
+
                             if(returnsObject)
                                 gf.fos.write("return ".getBytes());
-                            
+
                             // Copy the input to the file.
                             // Assumes all available -- probably mistake, but same as
                             // other engines.
                             gf.fos.write(script.getBytes());
                             gf.fos.close();
-                            
-                            logger.debug("NetRexxEngine: wrote temp file " + 
+
+                            logger.debug("NetRexxEngine: wrote temp file " +
                                                    gf.file.getPath () + ", now compiling");
-                            
+
                             // Compile through Java to .class file
                     String command=gf.file.getPath(); //classname;
-                    if (logger.isDebugEnabled()) {  
+                    if (logger.isDebugEnabled()) {
                     	command += " -verbose4";
                     } else {
                         command += " -noverbose";
                         command += " -noconsole";
                     }
-                    
+
                     netrexx.lang.Rexx cmdline= new netrexx.lang.Rexx(command);
                     int retValue;
-                    
+
                     // May not be threadsafe. Serialize access on static object:
                     synchronized(serializeCompilation)
                         {
                             // compile to a .java file
                             retValue =
                                 COM.ibm.netrexx.process.NetRexxC.main(cmdline,
-                                                                      new PrintWriter(System.err)); 
+                                                                      new PrintWriter(System.err));
                         }
 
 				// Check if there were errors while compiling the Rexx code.
@@ -396,27 +400,27 @@
 		{
 			// Cleanup: delete the .nrx and .class files
 			// (if any) generated by NetRexx Trace requests.
-			
+
 			if(gf!=null && gf.file!=null && gf.file.exists())
 				gf.file.delete();  // .nrx file
-			
+
 			if(classname!=null)
 			{
 				// Generated src
 				File file=new File(tempDir+File.separatorChar+classname+".java");
 				if(file.exists())
 					file.delete();
-				
+
 				// Generated class
 				file=new File(classname+".class");
 				if(file.exists())
 					file.delete();
-				
+
 				// Can this be done without disrupting trace?
 				file=new File(tempDir+File.separatorChar+classname+".crossref");
 				if(file.exists())
 					file.delete();
-				
+
 				// Search for and clean up minor classes, classname$xxx.class
 				file=new File(tempDir);
 				minorPrefix=classname+"$"; // Indirect arg to filter
@@ -444,7 +448,7 @@
 					}
 			}
 		}
-		
+
 		return retval;
 	}
 	public void initialize(BSFManager mgr, String lang,Vector declaredBeans)
@@ -463,7 +467,7 @@
 		String className = null;
 		for(i=max,++uniqueFileOffset;
 			fos==null && i>0;
-			--i,++uniqueFileOffset)     
+			--i,++uniqueFileOffset)
 		{
 			// Probably a timing hazard here... ***************
 			try

Modified: jakarta/bsf/trunk/src/org/apache/bsf/engines/xslt/XSLTEngine.java
URL: http://svn.apache.org/viewvc/jakarta/bsf/trunk/src/org/apache/bsf/engines/xslt/XSLTEngine.java?view=diff&rev=487795&r1=487794&r2=487795
==============================================================================
--- jakarta/bsf/trunk/src/org/apache/bsf/engines/xslt/XSLTEngine.java (original)
+++ jakarta/bsf/trunk/src/org/apache/bsf/engines/xslt/XSLTEngine.java Sat Dec 16 04:15:45 2006
@@ -1,12 +1,12 @@
 /*
  * Copyright 2004,2004 The Apache Software Foundation.
- * 
+ *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
- * 
+ *
  *      http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -31,36 +31,45 @@
 import org.apache.bsf.BSFDeclaredBean;
 import org.apache.bsf.BSFException;
 import org.apache.bsf.BSFManager;
+import org.apache.bsf.BSF_Log;
+import org.apache.bsf.BSF_LogFactory;
 import org.apache.bsf.util.BSFEngineImpl;
 import org.apache.bsf.util.BSFFunctions;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
 import org.apache.xpath.objects.XObject;
 import org.w3c.dom.Node;
 
 /**
  * Xerces XSLT interface to BSF. Requires Xalan and Xerces from Apache.
- * 
+ *
  * This integration uses the BSF registry to pass in any src document
- * and stylesheet base URI that the user may wish to set. 
+ * and stylesheet base URI that the user may wish to set.
  *
  * @author   Sanjiva Weerawarana
  * @author   Sam Ruby
  *
  * Re-implemented for the Xalan 2 codebase
- * 
+ *
  * @author   Victor J. Orlikowski
+ * @author   Rony G. Flatscher (added BSF_Log[Factory] to allow BSF to run without org.apache.commons.logging present)
  */
 public class XSLTEngine extends BSFEngineImpl {
     TransformerFactory tFactory;
     Transformer transformer;
-    
-    Log logger = LogFactory.getLog(this.getClass().getName());
+
+    // Log logger = LogFactory.getLog(this.getClass().getName());
+    BSF_Log logger = null;
+
+    public XSLTEngine ()
+    {
+            // handle logger
+        logger = BSF_LogFactory.getLog(this.getClass().getName());
+    }
+
 
     /**
      * call the named method of the given object.
      */
-    public Object call (Object object, String method, Object[] args) 
+    public Object call (Object object, String method, Object[] args)
         throws BSFException {
 	throw new BSFException (BSFException.REASON_UNSUPPORTED_FEATURE,
                                 "BSF:XSLTEngine can't call methods");
@@ -77,7 +86,7 @@
      * Evaluate an expression. In this case, an expression is assumed
      * to be a stylesheet of the template style (see the XSLT spec).
      */
-    public Object eval (String source, int lineNo, int columnNo, 
+    public Object eval (String source, int lineNo, int columnNo,
                         Object oscript) throws BSFException {
 	// get the style base URI (the place from where Xerces XSLT will
 	// look for imported/included files and referenced docs): if a
@@ -90,7 +99,7 @@
 	// Locate the stylesheet.
 	StreamSource styleSource;
 
-        styleSource = 
+        styleSource =
             new StreamSource(new StringReader(oscript.toString ()));
         styleSource.setSystemId(styleBaseURI);
 
@@ -143,21 +152,21 @@
 		}
             }
 	} else {
-            // create an empty document - real src must come into the 
+            // create an empty document - real src must come into the
             // stylesheet using "doc(...)" [see XSLT spec] or the stylesheet
             // must be of literal result element type
             xis = new StreamSource();
 	}
-	
+
 	// set all declared beans as parameters.
 	for (int i = 0; i < declaredBeans.size (); i++) {
             BSFDeclaredBean b = (BSFDeclaredBean) declaredBeans.elementAt (i);
             transformer.setParameter (b.name, new XObject (b.bean));
 	}
 
-	// declare a "bsf" parameter which is the BSF handle so that 
+	// declare a "bsf" parameter which is the BSF handle so that
 	// the script can do BSF stuff if it wants to
-	transformer.setParameter ("bsf", 
+	transformer.setParameter ("bsf",
                                   new XObject (new BSFFunctions (mgr, this)));
 
 	// do it

Modified: jakarta/bsf/trunk/src/org/apache/bsf/util/JavaUtils.java
URL: http://svn.apache.org/viewvc/jakarta/bsf/trunk/src/org/apache/bsf/util/JavaUtils.java?view=diff&rev=487795&r1=487794&r2=487795
==============================================================================
--- jakarta/bsf/trunk/src/org/apache/bsf/util/JavaUtils.java (original)
+++ jakarta/bsf/trunk/src/org/apache/bsf/util/JavaUtils.java Sat Dec 16 04:15:45 2006
@@ -1,34 +1,36 @@
 /*
  * Copyright 2004,2004 The Apache Software Foundation.
- * 
+ *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
- * 
+ *
  *      http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
+ *
+ * @author   Rony G. Flatscher (added BSF_Log[Factory] to allow BSF to run without org.apache.commons.logging present)
  */
 
 package org.apache.bsf.util;
 
-import java.io.IOException;
+import org.apache.bsf.BSF_Log;
+import org.apache.bsf.BSF_LogFactory;
 
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
+import java.io.IOException;
 
 public class JavaUtils {
 	// Temporarily copied from JavaEngine...
 
-	private static Log logger;
+	private static BSF_Log logger=null;
 
 	static {
-		logger = LogFactory.getLog((org.apache.bsf.util.JavaUtils.class)
-				.getName());
+                    // handle logger
+                logger = BSF_LogFactory.getLog((org.apache.bsf.util.JavaUtils.class).getName());
 	}
 
 	public static boolean JDKcompile(String fileName, String classPath) {

Modified: jakarta/bsf/trunk/src/org/apache/bsf/util/event/generator/AdapterClassLoader.java
URL: http://svn.apache.org/viewvc/jakarta/bsf/trunk/src/org/apache/bsf/util/event/generator/AdapterClassLoader.java?view=diff&rev=487795&r1=487794&r2=487795
==============================================================================
--- jakarta/bsf/trunk/src/org/apache/bsf/util/event/generator/AdapterClassLoader.java (original)
+++ jakarta/bsf/trunk/src/org/apache/bsf/util/event/generator/AdapterClassLoader.java Sat Dec 16 04:15:45 2006
@@ -1,36 +1,41 @@
 /*
  * Copyright 2004,2004 The Apache Software Foundation.
- * 
+ *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
- * 
+ *
  *      http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
+ *
+ * @author   Rony G. Flatscher (added BSF_Log[Factory] to allow BSF to run without org.apache.commons.logging present)
  */
 
 package org.apache.bsf.util.event.generator;
 
+import org.apache.bsf.BSF_Log;
+import org.apache.bsf.BSF_LogFactory;
+
 import java.util.Hashtable;
 
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
 
 public class AdapterClassLoader extends ClassLoader
 {
   private static Hashtable classCache = new Hashtable();
   private Class c;
 
-  private Log logger = LogFactory.getLog(this.getClass().getName());
+  // private Log logger = LogFactory.getLog(this.getClass().getName());
+  private BSF_Log logger = null;
 
   public AdapterClassLoader()
   {
 	super();
+        logger = BSF_LogFactory.getLog(this.getClass().getName());
   }
   public synchronized Class defineClass(String name, byte[] b)
   {

Modified: jakarta/bsf/trunk/src/org/apache/bsf/util/event/generator/EventAdapterGenerator.java
URL: http://svn.apache.org/viewvc/jakarta/bsf/trunk/src/org/apache/bsf/util/event/generator/EventAdapterGenerator.java?view=diff&rev=487795&r1=487794&r2=487795
==============================================================================
--- jakarta/bsf/trunk/src/org/apache/bsf/util/event/generator/EventAdapterGenerator.java (original)
+++ jakarta/bsf/trunk/src/org/apache/bsf/util/event/generator/EventAdapterGenerator.java Sat Dec 16 04:15:45 2006
@@ -1,12 +1,12 @@
 /*
  * Copyright 2004,2004 The Apache Software Foundation.
- * 
+ *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
- * 
+ *
  *      http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -16,16 +16,18 @@
 
 package org.apache.bsf.util.event.generator;
 
+import org.apache.bsf.BSF_Log;
+import org.apache.bsf.BSF_LogFactory;
+
 import java.io.FileOutputStream;
 import java.io.IOException;
 
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
 
 /** EventAdapterGenerator
   *
   * Generate an "Event Adapter" dynamically during program execution
   *
+ * @author   Rony G. Flatscher (added BSF_Log[Factory] to allow BSF to run without org.apache.commons.logging present)
   **/
 public class EventAdapterGenerator
 {
@@ -44,13 +46,13 @@
   // the initialization method, noargs constructor
   static byte   INITMETHOD[];
 
-  private static Log logger;
+  private static BSF_Log logger=null;
 
   /* The static initializer */
   static
   {
-	logger = LogFactory.getLog(
-				(org.apache.bsf.util.event.generator.EventAdapterGenerator.class).getName());
+	// logger = LogFactory.getLog((org.apache.bsf.util.event.generator.EventAdapterGenerator.class).getName());
+        logger = BSF_LogFactory.getLog((org.apache.bsf.util.event.generator.EventAdapterGenerator.class).getName());
 
 	String USERCLASSPACKAGE = System.getProperty("DynamicEventClassPackage",
 												 "");



---------------------------------------------------------------------
To unsubscribe, e-mail: bsf-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: bsf-dev-help@jakarta.apache.org