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 2007/02/04 15:09:05 UTC
svn commit: r503411 - in /jakarta/bsf/trunk/src/org/apache/bsf:
BSFManager.java BSF_Log.java
Author: rony
Date: Sun Feb 4 06:09:04 2007
New Revision: 503411
URL: http://svn.apache.org/viewvc?view=rev&rev=503411
Log:
20070204 14:00 'BSFManager.java': now also using the context Thread's ClassLoader; 'BSF_Log.java': changed the remainder (invoking the individual methods) to reflective invocation.
Modified:
jakarta/bsf/trunk/src/org/apache/bsf/BSFManager.java
jakarta/bsf/trunk/src/org/apache/bsf/BSF_Log.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=503411&r1=503410&r2=503411
==============================================================================
--- jakarta/bsf/trunk/src/org/apache/bsf/BSFManager.java (original)
+++ jakarta/bsf/trunk/src/org/apache/bsf/BSFManager.java Sun Feb 4 06:09:04 2007
@@ -1,5 +1,5 @@
/*
- * Copyright 2004,2004 The Apache Software Foundation.
+ * Copyright 2004,2007 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.
@@ -58,13 +58,16 @@
* @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)
*/
+
+// changed 2007-01-28: fixed Class.forName() to use the context class loader instead; oversaw this the last time
+
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: "241.20061208" stands for: BSF version "2.4.1" as of "2006-12-08"
- protected static String version="241.20061208";
+ // Example: "242.20070128" stands for: BSF version "2.4.2" as of "2007-01-28"
+ protected static String version="242.20070128";
// table of registered scripting engines
protected static Hashtable registeredEngines = new Hashtable();
@@ -113,7 +116,9 @@
static {
try {
- Enumeration e = BSFManager.class.getClassLoader().getResources("org/apache/bsf/Languages.properties");
+ // Enumeration e = BSFManager.class.getClassLoader().getResources("org/apache/bsf/Languages.properties");
+ // use the Thread's context class loader to locate the resources
+ Enumeration e = Thread.currentThread().getContextClassLoader().getResources("org/apache/bsf/Languages.properties");
while (e.hasMoreElements()) {
URL url = (URL)e.nextElement();
InputStream is = url.openStream();
@@ -172,7 +177,7 @@
"dd" a two digit day.
*
<br>Example: "<code>241.20061208</code>"
- stands for: BSF version <code>2.4.1</code> as of <code>2006-12-08</code>.
+ stands for: BSF version <code>2.4.2</code> as of <code>2007-01-28</code>.
*
*
* @since 2006-01-17
@@ -608,7 +613,8 @@
try {
String engineName =
(String) registeredEngines.get(lang);
- Class.forName(engineName);
+ // Class.forName(engineName);
+ Thread.currentThread().getContextClassLoader().loadClass (engineName); // rgf, 2007-01-28
} catch (ClassNotFoundException cnfe) {
// Bummer.
@@ -697,10 +703,12 @@
// create the engine and initialize it. if anything goes wrong
// except.
try {
- Class engineClass =
- (classLoader == null)
- ? Class.forName(engineClassName)
- : classLoader.loadClass(engineClassName);
+ Class engineClass = Thread.currentThread().getContextClassLoader().loadClass (engineClassName);
+ // (classLoader == null)
+ // ? // Class.forName(engineClassName)
+ // Thread.currentThread().getContextClassLoader().loadClass (engineClassName) // rgf, 2007-01-28
+ // : classLoader.loadClass(engineClassName);
+
final BSFEngine engf = (BSFEngine) engineClass.newInstance();
final BSFManager thisf = this;
final String langf = lang;
Modified: 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=diff&rev=503411&r1=503410&r2=503411
==============================================================================
--- jakarta/bsf/trunk/src/org/apache/bsf/BSF_Log.java (original)
+++ jakarta/bsf/trunk/src/org/apache/bsf/BSF_Log.java Sun Feb 4 06:09:04 2007
@@ -1,5 +1,5 @@
/*
- * Copyright 2006 The Apache Software Foundation.
+ * Copyright 2006-2007 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.
@@ -33,16 +33,45 @@
@author Rony G. Flatscher, 2006-12-08
*/
+/* ---rgf, 2007-01-29, loading and invoking all methods via reflection
+*/
+
public class BSF_Log // implements org.apache.commons.logging.Log
{
+ final private static int iDebug=0; // don't show any debug-info
+ static private Class oac_Log = null;
static private Class oac_LogFactory = null;
static private Method oac_LogFactoryGetLog_Clazz = null;
static private Method oac_LogFactoryGetLog_String = null;
+ static private Method meths[] = new Method [18]; // store the Log methods
+ // define the slots in the array
+ final private static int debug1 = 0 ;
+ final private static int debug2 = 1 ;
+ final private static int isDebugEnabled = 2 ;
+ final private static int error1 = 3 ;
+ final private static int error2 = 4 ;
+ final private static int isErrorEnabled = 5 ;
+ final private static int fatal1 = 6 ;
+ final private static int fatal2 = 7 ;
+ final private static int isFatalEnabled = 8 ;
+ final private static int info1 = 9 ;
+ final private static int info2 = 10 ;
+ final private static int isInfoEnabled = 11 ;
+ final private static int trace1 = 12 ;
+ final private static int trace2 = 13 ;
+ final private static int isTraceEnabled = 14 ;
+ final private static int warn1 = 15 ;
+ final private static int warn2 = 16 ;
+ final private static int isWarnEnabled = 17 ;
+
{ // try to demand load the apache commons logging LogFactory
try
{
ClassLoader cl= Thread.currentThread().getContextClassLoader();
+
+ oac_Log = cl.loadClass("org.apache.commons.logging.Log" );
+
oac_LogFactory = cl.loadClass("org.apache.commons.logging.LogFactory");
// get method with Class object argument
@@ -50,10 +79,35 @@
// get method with String object argument
oac_LogFactoryGetLog_String = oac_LogFactory.getMethod("getLog", new Class[] {String.class});
+
+ // get the Log methods
+ String str[][]={{"debug", "isDebugEnabled"},
+ {"error", "isErrorEnabled"},
+ {"fatal", "isFatalEnabled"},
+ {"info", "isInfoEnabled" },
+ {"trace", "isTraceEnabled"},
+ {"warn", "isWarnEnabled" }};
+ int i=0;
+ for ( ; i<6; i++)
+ {
+ int j=i*3;
+ meths[j ]=oac_Log.getMethod(str[i][0], new Class[] {Object.class});
+
+ meths[j+1]=oac_Log.getMethod(str[i][0], new Class[] {Object.class, Throwable.class});
+
+ meths[j+2]=oac_Log.getMethod(str[i][1], new 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
+ catch (ClassNotFoundException e)// o.k., so we do not use org.apache.commons.logging in this run
+ {
+ if (iDebug>1) e.printStackTrace();
+ }
+ catch (NoSuchMethodException e)// o.k., so we do not use org.apache.commons.logging in this run
+ {
+ if (iDebug>1) e.printStackTrace();
+ }
}
@@ -110,7 +164,9 @@
try
{
- ((org.apache.commons.logging.Log) oac_logger).debug(msg);
+ // ((org.apache.commons.logging.Log) oac_logger).debug(msg);
+ meths[debug1].invoke(oac_logger, new Object [] {msg});
+
}
catch (Exception e) { e.printStackTrace(); }
};
@@ -121,7 +177,8 @@
try
{
- ((org.apache.commons.logging.Log) oac_logger).debug(msg, t);
+ // ((org.apache.commons.logging.Log) oac_logger).debug(msg, t);
+ meths[debug2].invoke(oac_logger, new Object [] {msg, t});
}
catch (Exception e) { e.printStackTrace(); }
};
@@ -133,7 +190,8 @@
try
{
- ((org.apache.commons.logging.Log) oac_logger).error(msg);
+ // ((org.apache.commons.logging.Log) oac_logger).error(msg);
+ meths[error1].invoke(oac_logger, new Object [] {msg});
}
catch (Exception e) { e.printStackTrace(); }
};
@@ -144,7 +202,8 @@
try
{
- ((org.apache.commons.logging.Log) oac_logger).error(msg, t);
+ // ((org.apache.commons.logging.Log) oac_logger).error(msg, t);
+ meths[error2].invoke(oac_logger, new Object [] {msg, t});
}
catch (Exception e) { e.printStackTrace(); }
};
@@ -157,7 +216,8 @@
try
{
- ((org.apache.commons.logging.Log) oac_logger).fatal(msg);
+ // ((org.apache.commons.logging.Log) oac_logger).fatal(msg);
+ meths[fatal1].invoke(oac_logger, new Object [] {msg});
}
catch (Exception e) { e.printStackTrace(); }
};
@@ -167,7 +227,8 @@
if (oac_logger==null) return; // no org.apache.commons.logging.Log object ?
try
{
- ((org.apache.commons.logging.Log) oac_logger).fatal(msg, t);
+ // ((org.apache.commons.logging.Log) oac_logger).fatal(msg, t);
+ meths[fatal2].invoke(oac_logger, new Object [] {msg, t});
}
catch (Exception e) { e.printStackTrace(); }
};
@@ -180,7 +241,8 @@
try
{
- ((org.apache.commons.logging.Log) oac_logger).info(msg);
+ // ((org.apache.commons.logging.Log) oac_logger).info(msg);
+ meths[info1].invoke(oac_logger, new Object [] {msg});
}
catch (Exception e) { e.printStackTrace(); }
};
@@ -191,7 +253,8 @@
try
{
- ((org.apache.commons.logging.Log) oac_logger).info(msg, t);
+ // ((org.apache.commons.logging.Log) oac_logger).info(msg, t);
+ meths[info2].invoke(oac_logger, new Object [] {msg, t});
}
catch (Exception e) { e.printStackTrace(); }
};
@@ -204,7 +267,8 @@
try
{
- ((org.apache.commons.logging.Log) oac_logger).trace(msg);
+ // ((org.apache.commons.logging.Log) oac_logger).trace(msg);
+ meths[trace1].invoke(oac_logger, new Object [] {msg});
}
catch (Exception e) { e.printStackTrace(); }
};
@@ -215,7 +279,8 @@
try
{
- ((org.apache.commons.logging.Log) oac_logger).trace(msg, t);
+ // ((org.apache.commons.logging.Log) oac_logger).trace(msg, t);
+ meths[trace2].invoke(oac_logger, new Object [] {msg, t});
}
catch (Exception e) { e.printStackTrace(); }
};
@@ -228,7 +293,8 @@
try
{
- ((org.apache.commons.logging.Log) oac_logger).warn(msg);
+ // ((org.apache.commons.logging.Log) oac_logger).warn(msg);
+ meths[warn1].invoke(oac_logger, new Object [] {msg});
}
catch (Exception e) { e.printStackTrace(); }
};
@@ -239,7 +305,8 @@
try
{
- ((org.apache.commons.logging.Log) oac_logger).warn(msg, t);
+ // ((org.apache.commons.logging.Log) oac_logger).warn(msg, t);
+ meths[warn2].invoke(oac_logger, new Object [] {msg, t});
}
catch (Exception e) { e.printStackTrace(); }
};
@@ -252,8 +319,9 @@
if (oac_logger==null) {return false;} // no org.apache.commons.logging.Log object ?
try
- {
- return ((org.apache.commons.logging.Log) oac_logger).isDebugEnabled();
+ {
+ // return ((org.apache.commons.logging.Log) oac_logger).isDebugEnabled();
+ return ((Boolean) meths[isDebugEnabled].invoke(oac_logger, new Object [] {})).booleanValue();
}
catch (Exception e) { ; }
finally { return false; }
@@ -265,7 +333,8 @@
try
{
- return ((org.apache.commons.logging.Log) oac_logger).isErrorEnabled();
+ // return ((org.apache.commons.logging.Log) oac_logger).isErrorEnabled();
+ return ((Boolean) meths[isErrorEnabled].invoke(oac_logger, new Object [] {})).booleanValue();
}
catch (Exception e) { ; }
finally { return false; }
@@ -277,7 +346,8 @@
try
{
- return ((org.apache.commons.logging.Log) oac_logger).isFatalEnabled();
+ // return ((org.apache.commons.logging.Log) oac_logger).isFatalEnabled();
+ return ((Boolean) meths[isFatalEnabled].invoke(oac_logger, new Object [] {})).booleanValue();
}
catch (Exception e) { ; }
finally { return false; }
@@ -289,7 +359,8 @@
try
{
- return ((org.apache.commons.logging.Log) oac_logger).isInfoEnabled();
+ // return ((org.apache.commons.logging.Log) oac_logger).isInfoEnabled();
+ return ((Boolean) meths[isInfoEnabled].invoke(oac_logger, new Object [] {})).booleanValue();
}
catch (Exception e) { ; }
finally { return false; }
@@ -301,7 +372,8 @@
try
{
- return ((org.apache.commons.logging.Log) oac_logger).isTraceEnabled();
+ // return ((org.apache.commons.logging.Log) oac_logger).isTraceEnabled();
+ return ((Boolean) meths[isTraceEnabled].invoke(oac_logger, new Object [] {})).booleanValue();
}
catch (Exception e) { ; }
finally { return false; }
@@ -313,7 +385,8 @@
try
{
- return ((org.apache.commons.logging.Log) oac_logger).isWarnEnabled();
+ // return ((org.apache.commons.logging.Log) oac_logger).isWarnEnabled();
+ return ((Boolean) meths[isWarnEnabled].invoke(oac_logger, new Object [] {})).booleanValue();
}
catch (Exception e) { ; }
finally { return false; }
@@ -336,13 +409,23 @@
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("\n\tbl=["+bl+"] --->>> --->>> --->>>");
+ System.err.print("/debug **/"); bl.debug("debug message. "); System.err.println("\\** debug.\\");
+ System.err.print("/error **/"); bl.error("error message. "); System.err.println("\\** error.\\");
+ System.err.print("/fatal **/"); bl.fatal("fatal message. "); System.err.println("\\** fatal.\\");
+ System.err.print("/info **/"); bl.info ("info message. "); System.err.println("\\** info .\\");
+ System.err.print("/trace **/"); bl.trace("trace message. "); System.err.println("\\** trace.\\");
+ System.err.print("/warn **/"); bl.warn ("warn message. "); System.err.println("\\** warn .\\");
+ System.err.println();
+
+ Throwable t=new Throwable ("Test from Rony for: "+bl);
+ System.err.print("/debug **/"); bl.debug("debug message. ", t); System.err.println("\\** debug.\\");
+ System.err.print("/error **/"); bl.error("error message. ", t); System.err.println("\\** error.\\");
+ System.err.print("/fatal **/"); bl.fatal("fatal message. ", t); System.err.println("\\** fatal.\\");
+ System.err.print("/info **/"); bl.info ("info message. ", t); System.err.println("\\** info .\\");
+ System.err.print("/trace **/"); bl.trace("trace message. ", t); System.err.println("\\** trace.\\");
+ System.err.print("/warn **/"); bl.warn ("warn message. ", t); System.err.println("\\** warn .\\");
+ System.err.println();
System.out.println("\tisDebugEnabled: "+bl.isDebugEnabled());
System.out.println("\tisErrorEnabled: "+bl.isErrorEnabled());
@@ -351,7 +434,7 @@
System.out.println("\tisTraceEnabled: "+bl.isTraceEnabled());
System.out.println("\tisWarn Enabled: "+bl.isWarnEnabled());
- System.out.println("\tbl=["+bl+"] --->>> --->>> --->>>");
+ System.out.println("\tbl=["+bl+"] <<<--- <<<--- <<<---");
System.out.println("--------------------------------------------------------");
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: bsf-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: bsf-dev-help@jakarta.apache.org