From bsf-devbradybrian@example.com Thu Sep 20 10:25:10 2007 Return-Path: <bsf-devbradybrian@example.com> Delivered-To: bradybrian@example.com Received: (qmail 79128 invoked from network); 20 Sep 2007 10:25:10 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (83.161.120.155) by minotaur.apache.org with SMTP; 20 Sep 2007 10:25:10 -0000 Received: (qmail 79370 invoked by uid 500); 20 Sep 2007 10:25:01 -0000 Delivered-To: bradybrian@example.com Received: (qmail 79281 invoked by uid 500); 20 Sep 2007 10:25:01 -0000 Mailing-List: contact bradybrian@example.com; run by ezmlm Precedence: bulk List-Unsubscribe: <mailto:bradybrian@example.com> List-Help: <mailto:bradybrian@example.com> List-Post: <mailto:bradybrian@example.com> List-Id: "Bean Scripting Framework developers" <bsf-dev.jakarta.apache.org> Reply-To: "Bean Scripting Framework developers" <bradybrian@example.com> Delivered-To: mailing list bradybrian@example.com Received: (qmail 79266 invoked by uid 99); 20 Sep 2007 10:25:01 -0000 Received: from athena.apache.org (HELO athena.apache.org) (83.161.120.155) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 20 Sep 2007 03:25:01 -0700 X-ASF-Spam-Status: No, hits=2.0 required=10.0 tests=HTML_MESSAGE,SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (athena.apache.org: local policy) Received: from [83.161.120.155] (HELO sslmail2.wu-wien.ac.at) (83.161.120.155) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 20 Sep 2007 10:25:00 +0000 Received: from [83.161.120.155] (abt-wi-024.wu-wien.ac.at [83.161.120.155]) (authenticated bits=0) by sslmail2.wu-wien.ac.at (8.13.3/8.13.1) with ESMTP id l8KAOUTu072558 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NOT) for <bradybrian@example.com>; Thu, 20 Sep 2007 12:24:34 +0200 (CEST) (envelope-from bradybrian@example.com) Message-ID: <bradybrian@example.com> Date: Thu, 20 Sep 2007 12:24:29 +0200 From: "Rony G. Flatscher" <bradybrian@example.com> User-Agent: Thunderbird 83.161.120.155 (Windows/20070728) MIME-Version: 1.0 To: Bean Scripting Framework developers <bradybrian@example.com> Subject: Issue with ClassLoaders ... X-Enigmail-Version: 0.95.3 OpenPGP: Content-Type: multipart/alternative; boundary="------------040602080305010708060504" X-Virus-Scanned: ClamAV 0.90.3/4349/Thu Sep 20 00:46:46 2007 on pocken.wu-wien.ac.at X-Virus-Status: Clean X-Virus-Checked: Checked by ClamAV on apache.org --------------040602080305010708060504 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Hi there, about two weeks ago I downloaded OpenOffice 2.3.0 (OOo), release candidate 2, to test BSF4Rexx, which enables the ooRexx scripting language to interface/script/remote-control OpenOffice via its Java APIs. OOo is mostly implemented in C++, but has a full set of Java APIs to it. Also, OOo has a Java written Scripting framework via which one can deploy any of the BSF supported scriping engines. It is in this area (allowing a scripting language to be deployed as a macro language by OOo itself), where a class loader problem has surfaced, now that OOo uses a customized class loader to load OOo extensions written in Java! The problem may be a general problem for the current implementation of BSF 2.x for the following reasons: 1. If the defining class loader which is used to load the BSFManager class is a customized one, then the current implementation of BSFManager may not be successful in getting at the properties file which contains the supported BSF engines, as at the moment the thread's context class loader is used, which may be different from the customized class loader! (That's where one of the problem has materialized with OOo 2.3.0 RC2.) 2. Loading classes via "Engine.loadClass()" currently uses the thread's context class loader to load the classes. As OpenOffice does not set the context class loader explicitly there are cases, where some classes cannot be loaded via "Engine.loadClass()", which would use by default the passed-in BSFManager instance (which might have been loaded with a yet different class loader!). To recollect the different possibilities a brief overview of class loaders (CL): * "Bootstrap" class loader (BCL): part of the JVM, a class being loaded by it would return "null" as its own class loader. * "Extension class loader" (ECL; "extension" now called "option" starting with Java 6): responsible for loading those classes that can be found in the java extension directories (cf. System property "java.ext.dirs"), supplied by the Java runtime * "System class loader", dubbed "Application class loader" (ACL): responsible for loading the classes that can be found in the Java classpath (cf. System property "java.class.path"), supplied by the Java runtime. * "Custom class loader" (CCL), usually a subclass of URLClassLoader or one of its subclasses; there can be any number of CCLs in the system. CCLs are supposed to delegate the class loading to their parent, if any, before attempting to load a class by themselves, but they are free to not do so! * "Context class loader" (CTXCL): each thread may have a so called "context class loader", which one is supposed to honor (and e.g. use for class loading); a programmer may freely get and set the thread's context class loader (e.g. "Thread.getCurrentThread().{get|set}ContextClassLoader()"). * "Defining class loader" (DCL): the class loader used to load a specific class (is stored with the class object). The class loaders create a hierarchy, typically BCL, ECL, ACL, and CCL are organized as: * BCL (bootstrap) * ECL (extensions) * ACL (system/application) o CCL1 o CCL2 + CCL21 + etc. o etc. As each CL may have a different environment set up, it may not be clear at runtime, which CL is able to load which classes. Originally, BSF used the BSFManager's DCL to load classes. In addition it allowed to set the class loader to use for loading classes. As the DCL may have been different to the CTXCL about two years ago I added the usage of CTXCL with the exception of "EngineUtils.loadClass()" which only would use the CTXCL, if the BSFManager stored class loader was null (which for all practical purposes never would be the case). Now, being confronted with the new OOo possible deployments, and the manyfold possibilities of CLs being used (ECL, ACL, CCLs) it may become a challenge to apply a strategy of deploying the possible CLs at runtime in a way which still keeps the system quick, and makes sure that all meaningful CL are excercised to load classes for the purpose of BSF. (Again, CCLs could adhere to the Java suggested convention of first using their parent to load classes - which would be great; however, we could not rely that CCLs truly implement that delegation, as they are not forced to.) Thinking and experimenting with different kind of possibilities and solutions, and trying to keep the implementation as simple as possible, I would like to propose the following approaches to the aforementioned two principle problems: 1. ad loading rexources (i.e. BSF's property file that defines the BSF engines available): * first use the CTXCL and if no properties can be retrieved via it, * then use BSFManager's DCL 2. ad class loading in "EngineUtils.loadClass8)": 1. first use the CTXCL and if the class cannot be loaded, 2. then use the CL that is stored with BSFManager (using "mgr.getClassLoader()" [as originally implemented]) and if the class cannot be loaded, 3. then use the DL of BSFManager, if that is different from CL returned by "mg.getClassLoader()" and if the class cannot be loaded, 4. then use the BSF-CL, which tries to load the class from the BSF temporary directory [as originally implemented]. So the rule would be simple: * first always use the CTXCL (which usually is the ACL), and only if a resource/class is not found extend the search, * next use the BSFManager's DCL ("EngineUtils.loadClass()" would honor the CL stored with the BSFManager instance and retrievable via its "getClassLoader()" first; but in most cases it can be expected that that CL would be BSFManager's DCL). --- Now, all my tests so far (also in different use cases) indicate that issues like the one encountered with the new OOo 2.3.0 would be solved by these changes. In most cases resolving via CTXCL will succeed (as it did in the past). However, before checking the changes in (after a few more tests in different use cases), I would like to get feedback from this list, such that we can discuss this further. Regards, ---rony P.S.: Please note, not getting any feedback on this will be interpreted by me that you concur with this assessment and changes to BSF 2.x! :) --------------040602080305010708060504-- From bsf-devbradybrian@example.com Sat Sep 22 19:18:51 2007 Return-Path: <bsf-devbradybrian@example.com> Delivered-To: bradybrian@example.com Received: (qmail 34487 invoked from network); 22 Sep 2007 19:18:51 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (83.161.120.155) by minotaur.apache.org with SMTP; 22 Sep 2007 19:18:51 -0000 Received: (qmail 87181 invoked by uid 500); 22 Sep 2007 19:18:42 -0000 Delivered-To: bradybrian@example.com Received: (qmail 87161 invoked by uid 500); 22 Sep 2007 19:18:41 -0000 Mailing-List: contact bradybrian@example.com; run by ezmlm Precedence: bulk List-Unsubscribe: <mailto:bradybrian@example.com> List-Help: <mailto:bradybrian@example.com> List-Post: <mailto:bradybrian@example.com> List-Id: "Bean Scripting Framework developers" <bsf-dev.jakarta.apache.org> Reply-To: "Bean Scripting Framework developers" <bradybrian@example.com> Delivered-To: mailing list bradybrian@example.com Received: (qmail 87150 invoked by uid 500); 22 Sep 2007 19:18:41 -0000 Received: (qmail 87147 invoked by uid 99); 22 Sep 2007 19:18:41 -0000 Received: from athena.apache.org (HELO athena.apache.org) (83.161.120.155) by apache.org (qpsmtpd/0.29) with ESMTP; Sat, 22 Sep 2007 12:18:41 -0700 X-ASF-Spam-Status: No, hits=-98.0 required=10.0 tests=ALL_TRUSTED,URIBL_BLACK X-Spam-Check-By: apache.org Received: from [83.161.120.155] (HELO eris.apache.org) (83.161.120.155) by apache.org (qpsmtpd/0.29) with ESMTP; Sat, 22 Sep 2007 19:18:38 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id 620631A9832; Sat, 22 Sep 2007 12:18:18 -0700 (PDT) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r578478 - in /jakarta/bsf/trunk/src/org/apache/bsf: BSFManager.java BSF_Log.java util/EngineUtils.java util/ReflectionUtils.java util/event/generator/EventAdapterGenerator.java Date: Sat, 22 Sep 2007 19:18:17 -0000 To: bradybrian@example.com From: bradybrian@example.com X-Mailer: svnmailer-1.0.8 Message-Id: <bradybrian@example.com> X-Virus-Checked: Checked by ClamAV on apache.org Author: rony Date: Sat Sep 22 12:18:16 2007 New Revision: 578478 URL: http://svn.apache.org/viewvc?rev=578478&view=rev Log: 20070922 2017GMT Preliminary fix for issue 'BSF-7'. Modified: jakarta/bsf/trunk/src/org/apache/bsf/BSFManager.java jakarta/bsf/trunk/src/org/apache/bsf/BSF_Log.java jakarta/bsf/trunk/src/org/apache/bsf/util/EngineUtils.java jakarta/bsf/trunk/src/org/apache/bsf/util/ReflectionUtils.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?rev=578478&r1=578477&r2=578478&view=diff ============================================================================== --- jakarta/bsf/trunk/src/org/apache/bsf/BSFManager.java (original) +++ jakarta/bsf/trunk/src/org/apache/bsf/BSFManager.java Sat Sep 22 12:18:16 2007 @@ -59,15 +59,23 @@ * @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 +// changed 2007-01-28: ---rgf, fixed Class.forName() to use the context class loader instead; oversaw this the last time +/* changed 2007-09-17: ---rgf, some Java hosts do not set the Thread's context class loader and + load BSF with a customized ClassLoader! + Resolution: + - use Thread context ClassLoader, if resource or class to + load not found, then + - use the BSFManager's defining ClassLoader instead, if it is + different to the context ClassLoader +*/ 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: "242.20070128" stands for: BSF version "2.4.2" as of "2007-01-28" - protected static String version="242.20070128"; + // Example: "242.20070921" stands for: BSF version "2.4.3" as of "2007-09-21" + protected static String version="243.20070921"; // table of registered scripting engines protected static Hashtable registeredEngines = new Hashtable(); @@ -75,6 +83,23 @@ // mapping of file extensions to languages protected static Hashtable extn2Lang = new Hashtable(); + // get the defined CL (ClassLoader which got used to define this class object) // rgf, 20070917 + protected static ClassLoader definedClassLoader; +/* + protected static ClassLoader appClassLoader; // application/system class loader + protected static ClassLoader extClassLoader; // extension (option) class loader +*/ + + /** Returns the defined ClassLoader (the ClassLoader that got used to define the + * org.apache.bsf.BSFManager class object). + * @return the defined ClassLoader instance + */ + public static ClassLoader getDefinedClassLoader() // rgf, 20070917 + { + return definedClassLoader; + } + + // table of scripting engine instances created by this manager. // only one instance of a given language engine is created by a single // manager instance. @@ -87,10 +112,15 @@ // of my interesting properties change protected PropertyChangeSupport pcs; +/* rgf (20070917): wrong assumption; context ClassLoader needs to be explicitly + requested before usage as BSF could be deployed with different + context ClassLoaders on different threads! +*/ + // the class loader to use if a class loader is needed. Default is // he who loaded me (which may be null in which case its Class.forName). - // protected ClassLoader classLoader = getClass().getClassLoader(); - protected ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); // rgf, 2006-01-05 + protected ClassLoader classLoader = getClass().getClassLoader(); + // rgf, 20070917, reset to original// protected ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); // rgf, 2006-01-05 // temporary directory to use to dump temporary files into. Note that // if class files are dropped here then unless this dir is in the @@ -115,10 +145,27 @@ ////////////////////////////////////////////////////////////////////// static { + String strInfo="org.apache.bsf.BSFManager.dumpEnvironment() [from static{}]"; try { + definedClassLoader=BSFManager.class.getClassLoader(); // get defining ClassLoader + +/* + RGFInfo.newSection(strInfo); + RGFInfo.dumpClassLoaderInfos(BSFManager.class, "org.apache.bsf.BSFManager"); + RGFInfo.append("BSFManager.staticBlock, registering BSF scripting engines:\n"); +*/ + // 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"); + String resourceName="org/apache/bsf/Languages.properties"; + Enumeration e = Thread.currentThread().getContextClassLoader().getResources(resourceName); + + if (!e.hasMoreElements()) // 20070917: if no resources (BSF engines!), then use defCL + { +// RGFInfo.append("==> no BSF engines found from context ClassLoader, now using defCL !\n"); + e=definedClassLoader.getResources(resourceName); + } + while (e.hasMoreElements()) { URL url = (URL)e.nextElement(); InputStream is = url.openStream(); @@ -133,14 +180,15 @@ String className = value.substring(0, value.indexOf(",")); - - // get the extensions for this language String exts = value.substring(value.indexOf(",")+1, value.length()); StringTokenizer st = new StringTokenizer(exts, "|"); String[] extensions = new String[st.countTokens()]; + +// RGFInfo.append("\tregistering BSF engine: key=["+key+"]\tclassName=["+className+"] nr. of extensions=["+extensions.length+"\n"); for (int i = 0; st.hasMoreTokens(); i++) { extensions[i] = ((String) st.nextToken()).trim(); +// RGFInfo.append("\t\t--->extension=["+extensions[i]+"]\n"); } registerScriptingEngine(key, className, extensions); @@ -150,14 +198,22 @@ ex.printStackTrace(); System.err.println("Error reading Languages file " + ex); +// RGFInfo.append("\t*ERROR* reading Language file ["+ex+"]\n"); } catch (NoSuchElementException nsee) { nsee.printStackTrace(); System.err.println("Syntax error in Languages resource bundle"); +// RGFInfo.append("\t*ERROR* Syntax error in Languages resourcebundle ["+nsee+"]\n"); } catch (MissingResourceException mre) { mre.printStackTrace(); System.err.println("Initialization error: " + mre.toString()); +// RGFInfo.append("\t*ERROR* initializing ["+mre+"]\n"); + } + finally + { +// RGFInfo.dumpEnvironment(); +// RGFInfo.endSection(strInfo); } } @@ -231,7 +287,7 @@ result = resultf; } catch (PrivilegedActionException prive) { - logger.error("Exception: ", prive); + logger.error("[BSFManager] Exception: ", prive); throw (BSFException) prive.getException(); } @@ -284,7 +340,7 @@ }); } catch (PrivilegedActionException prive) { - logger.error("Exception :", prive); + logger.error("[BSFManager] Exception :", prive); throw (BSFException) prive.getException(); } } @@ -327,7 +383,7 @@ }); } catch (PrivilegedActionException prive) { - logger.error("Exception :", prive); + logger.error("[BSFManager] Exception :", prive); throw (BSFException) prive.getException(); } } @@ -371,7 +427,7 @@ }); } catch (PrivilegedActionException prive) { - logger.error("Exception :", prive); + logger.error("[BSFManager] Exception :", prive); throw (BSFException) prive.getException(); } } @@ -460,7 +516,7 @@ result = resultf; } catch (PrivilegedActionException prive) { - logger.error("Exception: ", prive); + logger.error("[BSFManager] Exception: ", prive); throw (BSFException) prive.getException(); } @@ -508,7 +564,7 @@ }); } catch (PrivilegedActionException prive) { - logger.error("Exception :", prive); + logger.error("[BSFManager] Exception :", prive); throw (BSFException) prive.getException(); } } @@ -548,7 +604,7 @@ }); } catch (PrivilegedActionException prive) { - logger.error("Exception :", prive); + logger.error("[BSFManager] Exception :", prive); throw (BSFException) prive.getException(); } } @@ -571,7 +627,7 @@ classPath = System.getProperty("java.class.path"); } catch (Throwable t) { - logger.debug("Exception :", t); + logger.debug("[BSFManager] Exception :", t); // prolly a security exception .. so no can do } } @@ -610,16 +666,22 @@ loops++; // Test to see if in classpath + String engineName=null; try { - String engineName = + engineName = (String) registeredEngines.get(lang); // Class.forName(engineName); Thread.currentThread().getContextClassLoader().loadClass (engineName); // rgf, 2007-01-28 - } catch (ClassNotFoundException cnfe) { + } catch (ClassNotFoundException cnfe) { // 20070917: hmm, maybe defCL can load it ? + try { + definedClassLoader.loadClass(engineName); + } + catch (ClassNotFoundException cnfe2) { + // Bummer. + lang = langval; + continue; + } - // Bummer. - lang = langval; - continue; } // Got past that? Good. @@ -633,7 +695,7 @@ } } throw new BSFException(BSFException.REASON_OTHER_ERROR, - "file extension missing or unknown: " + "[BSFManager.getLangFromFilename] file extension missing or unknown: " + "unable to determine language for '" + fileName + "'"); @@ -695,15 +757,23 @@ // is it a registered language? String engineClassName = (String) registeredEngines.get(lang); if (engineClassName == null) { - logger.error("unsupported language: " + lang); + logger.error("[BSFManager] unsupported language: " + lang); throw new BSFException(BSFException.REASON_UNKNOWN_LANGUAGE, - "unsupported language: " + lang); + "[BSFManager.loadScriptingEngine()] unsupported language: " + lang); } // create the engine and initialize it. if anything goes wrong // except. try { - Class engineClass = Thread.currentThread().getContextClassLoader().loadClass (engineClassName); + + Class engineClass; + try { // 20070917 + engineClass = Thread.currentThread().getContextClassLoader().loadClass (engineClassName); + } + catch (ClassNotFoundException cnfe) { + engineClass = definedClassLoader.loadClass (engineClassName); + } + // (classLoader == null) // ? // Class.forName(engineClassName) // Thread.currentThread().getContextClassLoader().loadClass (engineClassName) // rgf, 2007-01-28 @@ -725,13 +795,13 @@ return eng; } catch (PrivilegedActionException prive) { - logger.error("Exception :", prive); + logger.error("[BSFManager] Exception :", prive); throw (BSFException) prive.getException(); } catch (Throwable t) { - logger.error("Exception :", t); + logger.error("[BSFManager] Exception :", t); throw new BSFException(BSFException.REASON_OTHER_ERROR, - "unable to load language: " + lang, + "[BSFManager.loadScriptingEngine()] unable to load language: " + lang, t); } } @@ -751,7 +821,7 @@ return ((BSFDeclaredBean)objectRegistry.lookup(beanName)).bean; } catch (IllegalArgumentException e) { - logger.debug("Exception :", e); + logger.debug("[BSFManager] Exception :", e); return null; } } @@ -800,6 +870,7 @@ } } + /** * Set the class loader for those that need to use it. Default is he * who loaded me or null (i.e., its Class.forName). @@ -923,4 +994,6 @@ objectRegistry.unregister(beanName); } + + } 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?rev=578478&r1=578477&r2=578478&view=diff ============================================================================== --- jakarta/bsf/trunk/src/org/apache/bsf/BSF_Log.java (original) +++ jakarta/bsf/trunk/src/org/apache/bsf/BSF_Log.java Sat Sep 22 12:18:16 2007 @@ -34,6 +34,7 @@ */ /* ---rgf, 2007-01-29, loading and invoking all methods via reflection + ---rgf, 2007-09-17, adjusted for using default class loader, if system class loader fails */ public class BSF_Log // implements org.apache.commons.logging.Log @@ -66,11 +67,21 @@ final private static int isWarnEnabled = 17 ; { // try to demand load the apache commons logging LogFactory - try + try // rgf, 20070917: o.k., if not found, try definedClassLoader instead { ClassLoader cl= Thread.currentThread().getContextClassLoader(); - oac_Log = cl.loadClass("org.apache.commons.logging.Log" ); + String str4Log="org.apache.commons.logging.Log"; + + try { + oac_Log = cl.loadClass(str4Log); + } + catch (ClassNotFoundException e1) // not found by contextClassLoader + { // try defined class loader instead + ClassLoader defCL=BSFManager.getDefinedClassLoader(); + oac_Log = defCL.loadClass(str4Log); + cl=defCL; // class found, hence we use the definedClassLoader here + } oac_LogFactory = cl.loadClass("org.apache.commons.logging.LogFactory"); Modified: jakarta/bsf/trunk/src/org/apache/bsf/util/EngineUtils.java URL: http://svn.apache.org/viewvc/jakarta/bsf/trunk/src/org/apache/bsf/util/EngineUtils.java?rev=578478&r1=578477&r2=578478&view=diff ============================================================================== --- jakarta/bsf/trunk/src/org/apache/bsf/util/EngineUtils.java (original) +++ jakarta/bsf/trunk/src/org/apache/bsf/util/EngineUtils.java Sat Sep 22 12:18:16 2007 @@ -1,12 +1,12 @@ /* - * 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. * 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. @@ -32,11 +32,22 @@ * @author Sam Ruby * @author Rony G. Flatscher (added addEventListenerReturningEventInfos) */ + + /* 2007-09-21: Rony G. Flatscher, new class loading sequence: + + - Thread's context class loader + - settable class loader stored with BSF manager + - BSFManager's defining class loader + - BSF-custom class loader (loads from temp dir) + */ public class EngineUtils { // the BSF class loader that knows how to load from the a specific // temp directory static BSFClassLoader bsfCL; + // rgf, 20070917: class loaders that we might need to load classes + static ClassLoader bsfManagerDefinedCL=BSFManager.getDefinedClassLoader(); + // ---rgf, 2003-02-13, determine whether changing accessibility of Methods is possible static boolean bMethodHasSetAccessible=false; static { @@ -86,7 +97,7 @@ } catch (Exception e) { e.printStackTrace (); throw new BSFException (BSFException.REASON_OTHER_ERROR, - "ouch while adding event listener: " + "[EngineUtils.addEventListener()] ouch while adding event listener: " + e, e); } } @@ -144,7 +155,7 @@ } catch (Exception e) { e.printStackTrace (); throw new BSFException (BSFException.REASON_OTHER_ERROR, - "ouch while adding event listener: " + "[EngineUtils.addEventListenerReturningEventInfos()] ouch while adding event listener: " + e, e); } } @@ -240,7 +251,7 @@ ((InvocationTargetException)e).getTargetException () : null; throw new BSFException (BSFException.REASON_OTHER_ERROR, - "method invocation failed: " + e + + "[EngineUtils.callBeanMethod()] method invocation failed: " + e + ((t==null) ? "" : (" target exception: " + t)), t); } @@ -302,7 +313,7 @@ } } catch (Exception e) { throw new BSFException (BSFException.REASON_OTHER_ERROR, - e.getMessage (), e); + "[EngineUtils.createBean()]" + e.getMessage (), e); } } @@ -343,8 +354,10 @@ } /** - * Load a class using the class loader of given manager. If that fails - * try using a class loader that loads from the tempdir of the manager. + * Loads a class using the following sequence of class loaders: + * Thread's context class loader, settable class loader stored with BSFManager, + * BSFManager's defining class loader, BSF customized class loader (from the + * BSFManager's temporary directory). * * @param mgr BSFManager who's classLoader and tempDir props are * consulted @@ -356,13 +369,45 @@ */ public static Class loadClass (BSFManager mgr, String name) throws BSFException { - ClassLoader classLoader = mgr.getClassLoader (); + + ClassLoader mgrCL = null; try { + // ------------------- + // TODO: final decision about the sequence of class loaders ! + // + // rgf, 20070917: class loader sequence: + // - Thread's context class loader + // - settable class loader stored with BSF manager + // - BSFManager's defining class loader + // - BSF-custom class loader (loads from temp dir) + try { // try the Thread's context loader first + return Thread.currentThread().getContextClassLoader().loadClass(name); + } + catch (ClassNotFoundException e01) { + } + + try { // try the class loader of the supplied BSFManager ("mgr") + mgrCL = mgr.getClassLoader (); + if (mgrCL != null) { + return mgrCL.loadClass(name); + } + } + catch (ClassNotFoundException e02) { + // o.k., now try the defined class loader + } + + // try the class loader stored with the BSF manager + if (mgrCL != bsfManagerDefinedCL) { + return bsfManagerDefinedCL.loadClass(name); + } + +/* return (classLoader == null) ? // Class.forName (name) Thread.currentThread().getContextClassLoader().loadClass (name) : classLoader.loadClass (name); +*/ } catch (ClassNotFoundException e) { // try to load it from the temp dir using my own class loader try { @@ -372,8 +417,9 @@ return bsfCL.loadClass (name); } catch (ClassNotFoundException e2) { throw new BSFException (BSFException.REASON_OTHER_ERROR, - "unable to load class '" + name + "':" + e, e); + "[EngineUtils.loadClass()] unable to load class '" + name + "':" + e, e); } } + return null; } } Modified: jakarta/bsf/trunk/src/org/apache/bsf/util/ReflectionUtils.java URL: http://svn.apache.org/viewvc/jakarta/bsf/trunk/src/org/apache/bsf/util/ReflectionUtils.java?rev=578478&r1=578477&r2=578478&view=diff ============================================================================== --- jakarta/bsf/trunk/src/org/apache/bsf/util/ReflectionUtils.java (original) +++ jakarta/bsf/trunk/src/org/apache/bsf/util/ReflectionUtils.java Sat Sep 22 12:18:16 2007 @@ -1,12 +1,12 @@ /* - * 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. * 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,6 +16,8 @@ package org.apache.bsf.util; +import org.apache.bsf.BSFManager; // rgf, 20070917 + import java.beans.BeanInfo; import java.beans.Beans; import java.beans.EventSetDescriptor; @@ -44,7 +46,16 @@ * @author Sanjiva Weerawarana * @author Joseph Kesselman */ + /* 2007-09-21: Rony G. Flatscher, new class loading sequence: + + - supplied class loader (given as an argument) + - Thread's context class loader + - BSFManager's defining class loader + */ public class ReflectionUtils { + // rgf, 20070921: class loaders that we might need to load classes + static ClassLoader bsfManagerDefinedCL=BSFManager.getDefinedClassLoader(); + ////////////////////////////////////////////////////////////////////////// @@ -67,7 +78,7 @@ * running add event listener method */ public static void addEventListener (Object source, String eventSetName, - EventProcessor processor) + EventProcessor processor) throws IntrospectionException, IllegalArgumentException, IllegalAccessException, InstantiationException, InvocationTargetException { @@ -142,16 +153,77 @@ * @exception IOException if I/O error in beans.instantiate */ public static Bean createBean (ClassLoader cld, String className, - Class[] argTypes, Object[] args) + Class[] argTypes, Object[] args) throws ClassNotFoundException, NoSuchMethodException, InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException, IOException { if (argTypes != null) { + +/* original (remarked 20070917, rgf) // find the right constructor and use that to create bean Class cl = (cld != null) ? cld.loadClass (className) : Thread.currentThread().getContextClassLoader().loadClass (className); // rgf, 2006-01-05 // : Class.forName (className); +*/ + // TODO: final decision about class loading strategy + // rgf, 20070917: if class loader given, use that one, else try + // the Thread's context class loader and then + // the BSFMananger defining class loader + Class cl=null; + ClassNotFoundException exCTX=null; + +// ----------------------------- + if (cld != null) { // class loader supplied as argument + try { // CL passed as argument + cl=cld.loadClass(className); + } + catch (ClassNotFoundException e02) { + exCTX=e02; + } + } + + if (cl==null) { + try { // CTXCL + cl=Thread.currentThread().getContextClassLoader().loadClass(className); + } + catch (ClassNotFoundException e01) { + } + } + + + if (cl==null) { // class not loaded yet + // defined CL + if (cld != bsfManagerDefinedCL) { // if not used already, attempt to load + cl=bsfManagerDefinedCL.loadClass(className); + } + else { // already , throw exception + throw exCTX; // re-throw very first exception + } + } +// ----------------------------- + +/* + try { // try supplied class loader + if (cld !=null) + cl=cld.loadClass(className); + } + catch (ClassNotFoundException e01) { + try { + cl=Thread.currentThread().getContextClassLoader().loadClass(className); + } + catch (ClassNotFoundException e02) { + ClassLoader defCL=BSFManager.getDefinedClassLoader(); + if (cld != defCL) { + cl=defCL.loadClass(className); + } + else + { + throw e01; // re-throw original class not found exception + } + } + } +*/ Constructor c = MethodUtils.getConstructor (cl, argTypes); return new Bean (cl, c.newInstance (args)); @@ -182,8 +254,7 @@ * @exception InvocationTargetException if constructor excepted * @exception IOException if I/O error in beans.instantiate */ - public static Bean createBean (ClassLoader cld, String className, - Object[] args) + public static Bean createBean (ClassLoader cld, String className, Object[] args) throws ClassNotFoundException, NoSuchMethodException, InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException, @@ -205,7 +276,7 @@ */ private static FeatureDescriptor findFeatureByName (String featureType, String name, - FeatureDescriptor[] fds) { + FeatureDescriptor[] fds) { for (int i = 0; i < fds.length; i++) { if (name.equals (fds[i].getName())) { return fds[i]; @@ -229,7 +300,7 @@ return new Bean (fieldType, value); } catch (NoSuchFieldException e) { throw new IllegalArgumentException ("field '" + fieldName + "' is " + - "unknown for '" + target + "'"); + "unknown for '" + target + "'"); } } ////////////////////////////////////////////////////////////////////////// @@ -250,7 +321,7 @@ * @exception InvocationTargetException if read method excepts */ public static Bean getProperty (Object target, String propName, - Integer index) + Integer index) throws IntrospectionException, IllegalArgumentException, IllegalAccessException, InvocationTargetException { // find the property descriptor @@ -259,7 +330,7 @@ findFeatureByName ("property", propName, bi.getPropertyDescriptors ()); if (pd == null) { throw new IllegalArgumentException ("property '" + propName + "' is " + - "unknown for '" + target + "'"); + "unknown for '" + target + "'"); } // get read method and type of property @@ -269,8 +340,8 @@ // if index != null, then property is indexed - pd better be so too if (!(pd instanceof IndexedPropertyDescriptor)) { throw new IllegalArgumentException ("attempt to get non-indexed " + - "property '" + propName + - "' as being indexed"); + "property '" + propName + + "' as being indexed"); } IndexedPropertyDescriptor ipd = (IndexedPropertyDescriptor) pd; rm = ipd.getIndexedReadMethod (); @@ -282,7 +353,7 @@ if (rm == null) { throw new IllegalArgumentException ("property '" + propName + - "' is not readable"); + "' is not readable"); } // now get the value @@ -295,7 +366,7 @@ return new Bean (propType, propVal); } public static void setField (Object target, String fieldName, Bean value, - TypeConvertorRegistry tcr) + TypeConvertorRegistry tcr) throws IllegalArgumentException, IllegalAccessException { // This is to handle how we do static fields. Class targetClass = (target instanceof Class) @@ -323,14 +394,14 @@ } if (!okeydokey) { throw new IllegalArgumentException ("unable to assign '" + value.value + - "' to field '" + fieldName + "'"); + "' to field '" + fieldName + "'"); } // now set the value f.set (target, fieldVal); } catch (NoSuchFieldException e) { throw new IllegalArgumentException ("field '" + fieldName + "' is " + - "unknown for '" + target + "'"); + "unknown for '" + target + "'"); } } ////////////////////////////////////////////////////////////////////////// @@ -355,8 +426,8 @@ * @exception InvocationTargetException if write method excepts */ public static void setProperty (Object target, String propName, - Integer index, Object value, - Class valueType, TypeConvertorRegistry tcr) + Integer index, Object value, + Class valueType, TypeConvertorRegistry tcr) throws IntrospectionException, IllegalArgumentException, IllegalAccessException, InvocationTargetException { // find the property descriptor @@ -365,7 +436,7 @@ findFeatureByName ("property", propName, bi.getPropertyDescriptors ()); if (pd == null) { throw new IllegalArgumentException ("property '" + propName + "' is " + - "unknown for '" + target + "'"); + "unknown for '" + target + "'"); } // get write method and type of property @@ -375,7 +446,7 @@ // if index != null, then property is indexed - pd better be so too if (!(pd instanceof IndexedPropertyDescriptor)) { throw new IllegalArgumentException ("attempt to set non-indexed " + - "property '" + propName + + "property '" + propName + "' as being indexed"); } IndexedPropertyDescriptor ipd = (IndexedPropertyDescriptor) pd; @@ -388,7 +459,7 @@ if (wm == null) { throw new IllegalArgumentException ("property '" + propName + - "' is not writeable"); + "' is not writeable"); } // type convert the value if necessary @@ -408,7 +479,7 @@ } if (!okeydokey) { throw new IllegalArgumentException ("unable to assign '" + value + - "' to property '" + propName + "'"); + "' to property '" + propName + "'"); } // now set the value 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?rev=578478&r1=578477&r2=578478&view=diff ============================================================================== --- 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 Sep 22 12:18:16 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. @@ -14,11 +14,23 @@ * limitations under the License. */ + + /* + 2007-01-29: Rony G. Flatscher: added BSF_Log[Factory] to allow BSF to run without org.apache.commons.logging present + + 2007-09-21: Rony G. Flatscher, new class loading sequence: + + - Thread's context class loader + - BSFManager's defining class loader + */ + package org.apache.bsf.util.event.generator; import org.apache.bsf.BSF_Log; import org.apache.bsf.BSF_LogFactory; +import org.apache.bsf.BSFManager; + import java.io.FileOutputStream; import java.io.IOException; @@ -27,7 +39,6 @@ * * 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 { @@ -77,7 +88,19 @@ } try // { EVENTLISTENER = Class.forName("java.util.EventListener"); } - { EVENTLISTENER = Thread.currentThread().getContextClassLoader().loadClass ("java.util.EventListener"); } // rgf, 2006-01-05 + { + // EVENTLISTENER = Thread.currentThread().getContextClassLoader().loadClass ("java.util.EventListener"); // rgf, 2006-01-05 + + // rgf, 20070917: first try context class loader, then BSFManager's defining class loader + try { + EVENTLISTENER = Thread.currentThread().getContextClassLoader().loadClass ("java.util.EventListener"); + } + catch(ClassNotFoundException ex01) + { + EVENTLISTENER = BSFManager.getDefinedClassLoader().loadClass ("java.util.EventListener"); + } + + } catch(ClassNotFoundException ex) { System.err.println(ex.getMessage()); @@ -176,7 +199,7 @@ /* methods that take an EventListener Class Type to create an EventAdapterClass */ public static Class makeEventAdapterClass(Class listenerType,boolean writeClassFile) { - logger.info("EventAdapterGenerator"); + logger.debug("EventAdapterGenerator"); if( EVENTLISTENER.isAssignableFrom(listenerType) ) { @@ -191,7 +214,7 @@ /* Derive Names */ String listenerTypeName = listenerType.getName(); - logger.info("ListenerTypeName: "+listenerTypeName); + logger.debug("ListenerTypeName: "+listenerTypeName); String adapterClassName = CLASSPACKAGE+ (listenerTypeName.endsWith("Listener") @@ -206,7 +229,7 @@ { if (null != (cached = ldr.getLoadedClass(finalAdapterClassName))) { - logger.info("cached: "+cached); + logger.debug("cached: "+cached); try { if (!listenerType.isAssignableFrom(cached)) --------------------------------------------------------------------- To unsubscribe, e-mail: bradybrian@example.com For additional commands, e-mail: bradybrian@example.com From bsf-devbradybrian@example.com Sat Sep 22 19:39:00 2007 Return-Path: <bsf-devbradybrian@example.com> Delivered-To: bradybrian@example.com Received: (qmail 48432 invoked from network); 22 Sep 2007 19:39:00 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (83.161.120.155) by minotaur.apache.org with SMTP; 22 Sep 2007 19:39:00 -0000 Received: (qmail 881 invoked by uid 500); 22 Sep 2007 19:38:51 -0000 Delivered-To: bradybrian@example.com Received: (qmail 852 invoked by uid 500); 22 Sep 2007 19:38:51 -0000 Mailing-List: contact bradybrian@example.com; run by ezmlm Precedence: bulk List-Unsubscribe: <mailto:bradybrian@example.com> List-Help: <mailto:bradybrian@example.com> List-Post: <mailto:bradybrian@example.com> List-Id: "Bean Scripting Framework developers" <bsf-dev.jakarta.apache.org> Reply-To: "Bean Scripting Framework developers" <bradybrian@example.com> Delivered-To: mailing list bradybrian@example.com Received: (qmail 841 invoked by uid 99); 22 Sep 2007 19:38:51 -0000 Received: from nike.apache.org (HELO nike.apache.org) (83.161.120.155) by apache.org (qpsmtpd/0.29) with ESMTP; Sat, 22 Sep 2007 12:38:51 -0700 X-ASF-Spam-Status: No, hits=-0.0 required=10.0 tests=SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (nike.apache.org: local policy) Received: from [83.161.120.155] (HELO sslmail1.wu-wien.ac.at) (83.161.120.155) by apache.org (qpsmtpd/0.29) with ESMTP; Sat, 22 Sep 2007 19:40:57 +0000 Received: from [83.161.120.155] (chello062178130228.6.13.wu-wien.teleweb.at [83.161.120.155]) (authenticated bits=0) by sslmail1.wu-wien.ac.at (8.13.6/8.13.6) with ESMTP id l8MJcR4O080101 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NOT) for <bradybrian@example.com>; Sat, 22 Sep 2007 21:38:29 +0200 (CEST) (envelope-from bradybrian@example.com) Message-ID: <bradybrian@example.com> Date: Sat, 22 Sep 2007 21:38:20 +0200 From: "Rony G. Flatscher" <bradybrian@example.com> User-Agent: Thunderbird 83.161.120.155 (Windows/20070728) MIME-Version: 1.0 To: Bean Scripting Framework developers <bradybrian@example.com> Subject: Re: Issue with ClassLoaders ... References: <bradybrian@example.com> In-Reply-To: <bradybrian@example.com> X-Enigmail-Version: 0.95.3 OpenPGP: Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: ClamAV 0.90.3/4360/Sat Sep 22 19:53:02 2007 on pocken.wu-wien.ac.at X-Virus-Status: Clean X-Virus-Checked: Checked by ClamAV on apache.org Hi there, today I filed an issue ("BSF-7") with jira to document this and also checked-in the changes for BSF 2.4 that fixes this issues for others to see and or to test. Cf. <https://issues.apache.org/jira/browse/BSF-7>. Regards, ---rony --------------------------------------------------------------------- To unsubscribe, e-mail: bradybrian@example.com For additional commands, e-mail: bradybrian@example.com From bsf-devbradybrian@example.com Sat Sep 22 20:03:58 2007 Return-Path: <bsf-devbradybrian@example.com> Delivered-To: bradybrian@example.com Received: (qmail 56458 invoked from network); 22 Sep 2007 20:03:58 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (83.161.120.155) by minotaur.apache.org with SMTP; 22 Sep 2007 20:03:58 -0000 Received: (qmail 10119 invoked by uid 500); 22 Sep 2007 20:03:49 -0000 Delivered-To: bradybrian@example.com Received: (qmail 10101 invoked by uid 500); 22 Sep 2007 20:03:49 -0000 Mailing-List: contact bradybrian@example.com; run by ezmlm Precedence: bulk List-Unsubscribe: <mailto:bradybrian@example.com> List-Help: <mailto:bradybrian@example.com> List-Post: <mailto:bradybrian@example.com> List-Id: "Bean Scripting Framework developers" <bsf-dev.jakarta.apache.org> Reply-To: "Bean Scripting Framework developers" <bradybrian@example.com> Delivered-To: mailing list bradybrian@example.com Received: (qmail 10090 invoked by uid 500); 22 Sep 2007 20:03:49 -0000 Received: (qmail 10085 invoked by uid 99); 22 Sep 2007 20:03:49 -0000 Received: from athena.apache.org (HELO athena.apache.org) (83.161.120.155) by apache.org (qpsmtpd/0.29) with ESMTP; Sat, 22 Sep 2007 13:03:49 -0700 X-ASF-Spam-Status: No, hits=-100.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [83.161.120.155] (HELO eris.apache.org) (83.161.120.155) by apache.org (qpsmtpd/0.29) with ESMTP; Sat, 22 Sep 2007 20:03:57 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id 119141A9832; Sat, 22 Sep 2007 13:03:37 -0700 (PDT) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r578484 - in /jakarta/bsf/trunk: docs/problems.html xdocs/problems.xml Date: Sat, 22 Sep 2007 20:03:36 -0000 To: bradybrian@example.com From: bradybrian@example.com X-Mailer: svnmailer-1.0.8 Message-Id: <bradybrian@example.com> X-Virus-Checked: Checked by ClamAV on apache.org Author: rony Date: Sat Sep 22 13:03:36 2007 New Revision: 578484 URL: http://svn.apache.org/viewvc?rev=578484&view=rev Log: 20070922 2102 GMT Fix for jira issue BSF-6. Modified: jakarta/bsf/trunk/docs/problems.html jakarta/bsf/trunk/xdocs/problems.xml Modified: jakarta/bsf/trunk/docs/problems.html URL: http://svn.apache.org/viewvc/jakarta/bsf/trunk/docs/problems.html?rev=578484&r1=578483&r2=578484&view=diff ============================================================================== --- jakarta/bsf/trunk/docs/problems.html (original) +++ jakarta/bsf/trunk/docs/problems.html Sat Sep 22 13:03:36 2007 @@ -193,9 +193,16 @@ <p> If the current nightly build doesn't resolve your problem, it is possible that someone else has reported the issue. It is time to - look at the <a href="http://issues.apache.org/bugzilla/"> - Apache Bug Database</a>. This system is easy to use, and it will - let you search the <a href="http://issues.apache.org/bugzilla/buglist.cgi?bug_status=UNCONFIRMED&amp;bug_status=NEW&amp;bug_status=ASSIGNED&amp;bug_status=REOPENED&amp;email1=&amp;emailtype1=substring&amp;emailassigned_to1=1&amp;email2=&amp;emailtype2=substring&amp;emailreporter2=1&amp;bugidtype=include&amp;bug_id=&amp;changedin=&amp;votes=&amp;chfieldfrom=&amp;chfieldto=Now&amp;chfieldvalue=&amp;product=BSF&amp;short_desc=&amp;short_desc_type=substring&amp;long_desc=&amp;long_desc_type=substring&amp;bug_file_loc=&amp;bug_file_loc_type=substring&amp;keywords=&amp;keywords_type=anywords&amp;field0-0-0=noop&amp;type0-0-0=noop&amp;value0-0-0=&amp;order=bugs.bug_id"> + look at the + + <!-- (old: http://issues.apache.org/bugzilla/) --> + + <a href="http://issues.apache.org/jira/browse/BSF"> + Apache Bug Database (jira)</a>. This system is easy to use, and it will + let you search the <a href="https://issues.apache.org/jira/secure/IssueNavigator.jspa?mode=hide&amp;requestId=12312131"> + + <!-- <a href="http://issues.apache.org/bugzilla/buglist.cgi?bug_status=UNCONFIRMED&amp;bug_status=NEW&amp;bug_status=ASSIGNED&amp;bug_status=REOPENED&amp;email1=&amp;emailtype1=substring&amp;emailassigned_to1=1&amp;email2=&amp;emailtype2=substring&amp;emailreporter2=1&amp;bugidtype=include&amp;bug_id=&amp;changedin=&amp;votes=&amp;chfieldfrom=&amp;chfieldto=Now&amp;chfieldvalue=&amp;product=BSF&amp;short_desc=&amp;short_desc_type=substring&amp;long_desc=&amp;long_desc_type=substring&amp;bug_file_loc=&amp;bug_file_loc_type=substring&amp;keywords=&amp;keywords_type=anywords&amp;field0-0-0=noop&amp;type0-0-0=noop&amp;value0-0-0=&amp;order=bugs.bug_id"> --> + currently open</a> and resolved bugs to see if your problem has already been reported. If your problem has been reported, you can see whether any of the developers have commented, suggesting Modified: jakarta/bsf/trunk/xdocs/problems.xml URL: http://svn.apache.org/viewvc/jakarta/bsf/trunk/xdocs/problems.xml?rev=578484&r1=578483&r2=578484&view=diff ============================================================================== --- jakarta/bsf/trunk/xdocs/problems.xml (original) +++ jakarta/bsf/trunk/xdocs/problems.xml Sat Sep 22 13:03:36 2007 @@ -70,9 +70,16 @@ <p> If the current nightly build doesn't resolve your problem, it is possible that someone else has reported the issue. It is time to - look at the <a href="http://issues.apache.org/bugzilla/"> - Apache Bug Database</a>. This system is easy to use, and it will - let you search the <a href="http://issues.apache.org/bugzilla/buglist.cgi?bug_status=UNCONFIRMED&amp;bug_status=NEW&amp;bug_status=ASSIGNED&amp;bug_status=REOPENED&amp;email1=&amp;emailtype1=substring&amp;emailassigned_to1=1&amp;email2=&amp;emailtype2=substring&amp;emailreporter2=1&amp;bugidtype=include&amp;bug_id=&amp;changedin=&amp;votes=&amp;chfieldfrom=&amp;chfieldto=Now&amp;chfieldvalue=&amp;product=BSF&amp;short_desc=&amp;short_desc_type=substring&amp;long_desc=&amp;long_desc_type=substring&amp;bug_file_loc=&amp;bug_file_loc_type=substring&amp;keywords=&amp;keywords_type=anywords&amp;field0-0-0=noop&amp;type0-0-0=noop&amp;value0-0-0=&amp;order=bugs.bug_id"> + look at the + + <!-- (old: http://issues.apache.org/bugzilla/) --> + + <a href="http://issues.apache.org/jira/browse/BSF"> + Apache Bug Database (jira)</a>. This system is easy to use, and it will + let you search the <a href="https://issues.apache.org/jira/secure/IssueNavigator.jspa?mode=hide&amp;requestId=12312131"> + + <!-- <a href="http://issues.apache.org/bugzilla/buglist.cgi?bug_status=UNCONFIRMED&amp;bug_status=NEW&amp;bug_status=ASSIGNED&amp;bug_status=REOPENED&amp;email1=&amp;emailtype1=substring&amp;emailassigned_to1=1&amp;email2=&amp;emailtype2=substring&amp;emailreporter2=1&amp;bugidtype=include&amp;bug_id=&amp;changedin=&amp;votes=&amp;chfieldfrom=&amp;chfieldto=Now&amp;chfieldvalue=&amp;product=BSF&amp;short_desc=&amp;short_desc_type=substring&amp;long_desc=&amp;long_desc_type=substring&amp;bug_file_loc=&amp;bug_file_loc_type=substring&amp;keywords=&amp;keywords_type=anywords&amp;field0-0-0=noop&amp;type0-0-0=noop&amp;value0-0-0=&amp;order=bugs.bug_id"> --> + currently open</a> and resolved bugs to see if your problem has already been reported. If your problem has been reported, you can see whether any of the developers have commented, suggesting --------------------------------------------------------------------- To unsubscribe, e-mail: bradybrian@example.com For additional commands, e-mail: bradybrian@example.com From bsf-devbradybrian@example.com Sat Sep 22 20:04:00 2007 Return-Path: <bsf-devbradybrian@example.com> Delivered-To: bradybrian@example.com Received: (qmail 56481 invoked from network); 22 Sep 2007 20:04:00 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (83.161.120.155) by minotaur.apache.org with SMTP; 22 Sep 2007 20:04:00 -0000 Received: (qmail 10234 invoked by uid 500); 22 Sep 2007 20:03:51 -0000 Delivered-To: bradybrian@example.com Received: (qmail 10221 invoked by uid 500); 22 Sep 2007 20:03:51 -0000 Mailing-List: contact bradybrian@example.com; run by ezmlm Precedence: bulk List-Unsubscribe: <mailto:bradybrian@example.com> List-Help: <mailto:bradybrian@example.com> List-Post: <mailto:bradybrian@example.com> List-Id: "Bean Scripting Framework developers" <bsf-dev.jakarta.apache.org> Reply-To: "Bean Scripting Framework developers" <bradybrian@example.com> Delivered-To: mailing list bradybrian@example.com Received: (qmail 10210 invoked by uid 99); 22 Sep 2007 20:03:51 -0000 Received: from nike.apache.org (HELO nike.apache.org) (83.161.120.155) by apache.org (qpsmtpd/0.29) with ESMTP; Sat, 22 Sep 2007 13:03:51 -0700 X-ASF-Spam-Status: No, hits=4.4 required=10.0 tests=HTML_MESSAGE,SPF_PASS,TVD_FW_GRAPHIC_NAME_LONG X-Spam-Check-By: apache.org Received-SPF: pass (nike.apache.org: local policy) Received: from [83.161.120.155] (HELO sslmail1.wu-wien.ac.at) (83.161.120.155) by apache.org (qpsmtpd/0.29) with ESMTP; Sat, 22 Sep 2007 20:05:52 +0000 Received: from [83.161.120.155] (chello062178130228.6.13.wu-wien.teleweb.at [83.161.120.155]) (authenticated bits=0) by sslmail1.wu-wien.ac.at (8.13.6/8.13.6) with ESMTP id l8MK3Lgk084966 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NOT) for <bradybrian@example.com>; Sat, 22 Sep 2007 22:03:23 +0200 (CEST) (envelope-from bradybrian@example.com) Message-ID: <bradybrian@example.com> Date: Sat, 22 Sep 2007 22:03:14 +0200 From: "Rony G. Flatscher" <bradybrian@example.com> User-Agent: Thunderbird 83.161.120.155 (Windows/20070728) MIME-Version: 1.0 To: Bean Scripting Framework developers <bradybrian@example.com> Subject: Ad [jira], Issues and Open (!) Issues ... X-Enigmail-Version: 0.95.3 OpenPGP: Content-Type: multipart/alternative; boundary="------------000702030202010007050701" X-Virus-Scanned: ClamAV 0.90.3/4360/Sat Sep 22 19:53:02 2007 on fsme.wu-wien.ac.at X-Virus-Status: Clean X-Virus-Checked: Checked by ClamAV on apache.org --------------000702030202010007050701 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Hi there, Unfortunately, I have not been able to figure out how to configure jira at all! :( Also, I have no idea where and how to configure jira to forward all new issues and changes to existing issues automatically to myself or (even better) the developer list. If any of you know the appropriate magic, please excercise it! :) Another little problem: the available "versions" are "Unreleased Versions" and indented underneath: "BSF-3". No "BSF-2.x" entry (and I cannot find a menu option to edit the versions). Also, assigning an issue to one of the committers (like myself) is something I would like to be able to do. Does anyone know how to do any of that and could share the knowhow (or links to howto-pages)? --- Please use this link for all the current (and open!) jira-issues against BSF 2.x and BSF 3.x-beta: <https://issues.apache.org/jira/secure/IssueNavigator.jspa?mode=hide&requestId=12312131>. --- Currently the following issues are filed: *Key* [Descending order - Click to sort in ascending order] *Summary* *Assignee* *Reporter* *Pr* *Status* *Res* *Created* *Updated* Bug <https://issues.apache.org/jira/browse/BSF-7> BSF-7 <https://issues.apache.org/jira/browse/BSF-7> BSF 2.4: ClassLoader Issue with OpenOffice.org 2.3.0 <https://issues.apache.org/jira/browse/BSF-7> Unassigned Rony G. Flatscher Critical Resolved Resolved Fixed 22/Sep/07 22/Sep/07 Bug <https://issues.apache.org/jira/browse/BSF-6> BSF-6 <https://issues.apache.org/jira/browse/BSF-6> update bug link on home page <https://issues.apache.org/jira/browse/BSF-6> Unassigned Scott Cytacki Major Open Open UNRESOLVED 16/Aug/07 16/Aug/07 Bug <https://issues.apache.org/jira/browse/BSF-5> BSF-5 <https://issues.apache.org/jira/browse/BSF-5> Few suggested bug fixes for BSF 3.0 b1 <https://issues.apache.org/jira/browse/BSF-5> Unassigned Sanka Samaranayake Major Open Open UNRESOLVED 15/Aug/07 15/Aug/07 Bug <https://issues.apache.org/jira/browse/BSF-4> BSF-4 <https://issues.apache.org/jira/browse/BSF-4> The invokeMethod and invokeFunction methods of javax.script.Invocable should declare java.lang.NoSuchMethodExcept as a checked exception <https://issues.apache.org/jira/browse/BSF-4> Unassigned Sanka Samaranayake Major Open Open UNRESOLVED 15/Aug/07 15/Aug/07 Bug <https://issues.apache.org/jira/browse/BSF-3> BSF-3 <https://issues.apache.org/jira/browse/BSF-3> ScriptEngineManager.getFactories() NOT compliant with JSR223 API <https://issues.apache.org/jira/browse/BSF-3> Unassigned Ivan Martinez-Ortiz Blocker Open Open UNRESOLVED 03/May/07 03/May/07 Improvement <https://issues.apache.org/jira/browse/BSF-2> BSF-2 <https://issues.apache.org/jira/browse/BSF-2> Add Maven2 build and copy API classes into a seperate API module <https://issues.apache.org/jira/browse/BSF-2> Unassigned ant elder Major Closed Closed Fixed 17/Feb/07 13/Mar/07 Improvement <https://issues.apache.org/jira/browse/BSF-1> BSF-1 <https://issues.apache.org/jira/browse/BSF-1> Initial patch to start updating the BSF 3.0 <https://issues.apache.org/jira/browse/BSF-1> Unassigned ant elder Major Closed Closed Fixed 15/Feb/07 13/Mar/07 We should try to resolve/fix the open issues. Regards, ---rony --------------000702030202010007050701 Content-Type: multipart/related; boundary="------------070608080007050500080809" --------------070608080007050500080809 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> </head> <body bgcolor="#ffffff" text="#000000"> Hi there,<br> <br> Unfortunately, I have not been able to figure out how to configure jira at all! :(<br> <br> Also, I have no idea where and how to configure jira to forward all new issues and changes to existing issues automatically to myself or (even better) the developer list. If any of you know the appropriate magic, please excercise it! <br> :)<br> <br> Another little problem: the available "versions" are "Unreleased Versions" and indented underneath: "BSF-3". No "BSF-2.x" entry (and I cannot find a menu option to edit the versions). <br> <br> Also, assigning an issue to one of the committers (like myself) is something I would like to be able to do. <br> <br> Does anyone know how to do any of that and could share the knowhow (or links to howto-pages)?<br> <br> ---<br> <br> Please use this link for all the current (and open!) jira-issues against BSF 2.x and BSF 3.x-beta: <a class="moz-txt-link-rfc2396E" href="https://issues.apache.org/jira/secure/IssueNavigator.jspa?mode=hide&requestId=12312131">&lt;https://issues.apache.org/jira/secure/IssueNavigator.jspa?mode=hide&amp;requestId=12312131&gt;</a>.<br> <br> ---<br> <br> Currently the following issues are filed: <br> <br> <table id="issuetable" border="0" cellpadding="3" cellspacing="1" width="100%"> <tbody> <tr bgcolor="#f0f0f0"> <td class="colHeaderLink" onmouseover="this.className='colHeaderOver'" onmouseout="this.className='colHeaderLink'" onclick="window.document.location='/jira/secure/IssueNavigator.jspa?sorter/field=issuetype&sorter/order=DESC'" nowrap="nowrap" width="1%"><span title="Sort By T"></span><br> </td> <td class="colHeaderOver" onclick="window.document.location='/jira/secure/IssueNavigator.jspa?sorter/field=issuekey&sorter/order=ASC'" nowrap="nowrap" width="1%"> <span title="Sort By Key"><b>Key</b></span> <img class="sortArrow" src="cid:bradybrian@example.com" title="Descending order - Click to sort in ascending order"></td> <td class="colHeaderLink" onmouseover="this.className='colHeaderOver'" onmouseout="this.className='colHeaderLink'" onclick="window.document.location='/jira/secure/IssueNavigator.jspa?sorter/field=summary&sorter/order=ASC'" nowrap="nowrap" width="1%"> <span title="Sort By Summary"><b>Summary</b></span></td> <td class="colHeaderLink" onmouseover="this.className='colHeaderOver'" onmouseout="this.className='colHeaderLink'" onclick="window.document.location='/jira/secure/IssueNavigator.jspa?sorter/field=assignee&sorter/order=ASC'" nowrap="nowrap" width="1%"> <span title="Sort By Assignee"><b>Assignee</b></span></td> <td class="colHeaderLink" onmouseover="this.className='colHeaderOver'" onmouseout="this.className='colHeaderLink'" onclick="window.document.location='/jira/secure/IssueNavigator.jspa?sorter/field=reporter&sorter/order=ASC'" nowrap="nowrap" width="1%"> <span title="Sort By Reporter"><b>Reporter</b></span></td> <td class="colHeaderLink" onmouseover="this.className='colHeaderOver'" onmouseout="this.className='colHeaderLink'" onclick="window.document.location='/jira/secure/IssueNavigator.jspa?sorter/field=priority&sorter/order=DESC'" nowrap="nowrap" width="1%"> <span title="Sort By Pr"><b>Pr</b></span></td> <td class="colHeaderLink" onmouseover="this.className='colHeaderOver'" onmouseout="this.className='colHeaderLink'" onclick="window.document.location='/jira/secure/IssueNavigator.jspa?sorter/field=status&sorter/order=DESC'" nowrap="nowrap" width="1%"> <span title="Sort By Status"><b>Status</b></span></td> <td class="colHeaderLink" onmouseover="this.className='colHeaderOver'" onmouseout="this.className='colHeaderLink'" onclick="window.document.location='/jira/secure/IssueNavigator.jspa?sorter/field=resolution&sorter/order=ASC'" nowrap="nowrap" width="1%"> <span title="Sort By Res"><b>Res</b></span></td> <td class="colHeaderLink" onmouseover="this.className='colHeaderOver'" onmouseout="this.className='colHeaderLink'" onclick="window.document.location='/jira/secure/IssueNavigator.jspa?sorter/field=created&sorter/order=DESC'" nowrap="nowrap" width="1%"> <span title="Sort By Created"><b>Created</b></span></td> <td class="colHeaderLink" onmouseover="this.className='colHeaderOver'" onmouseout="this.className='colHeaderLink'" onclick="window.document.location='/jira/secure/IssueNavigator.jspa?sorter/field=updated&sorter/order=DESC'" nowrap="nowrap" width="1%"> <span title="Sort By Updated"><b>Updated</b></span></td> </tr> <tr id="issuerow12378931" class="rowNormal"> <td class="nav issuetype"> <a linkindex="32" href="https://issues.apache.org/jira/browse/BSF-7"> <img src="cid:bradybrian@example.com" alt="Bug" title="Bug - A problem which impairs or prevents the functions of the product." align="absmiddle" border="0" height="16" width="16"></a></td> <td class="nav issuekey"> <a linkindex="33" href="https://issues.apache.org/jira/browse/BSF-7">BSF-7</a> </td> <td class="nav summary"> <a set="yes" linkindex="34" href="https://issues.apache.org/jira/browse/BSF-7" style="text-decoration: none;">BSF 2.4: ClassLoader Issue with OpenOffice.org 2.3.0</a> </td> <td class="nav assignee"> Unassigned </td> <td class="nav reporter">Rony G. Flatscher</td> <td class="nav priority"> <img src="cid:bradybrian@example.com" alt="Critical" title="Critical - Crashes, loss of data, severe memory leak." align="absmiddle" border="0" height="16" width="16"> </td> <td class="nav status"> <img src="cid:bradybrian@example.com" alt="Resolved" title="Resolved - A resolution has been taken, and it is awaiting verification by reporter. From here issues are either reopened, or are closed." height="16" width="16"> Resolved </td> <td class="nav resolution"> Fixed </td> <td class="nav created"> 22/Sep/07 </td> <td class="nav updated"> 22/Sep/07 </td> </tr> <tr id="issuerow12376196" class="rowAlternate"> <td class="nav issuetype"> <a linkindex="35" href="https://issues.apache.org/jira/browse/BSF-6"> <img src="cid:bradybrian@example.com" alt="Bug" title="Bug - A problem which impairs or prevents the functions of the product." align="absmiddle" border="0" height="16" width="16"></a></td> <td class="nav issuekey"> <a set="yes" linkindex="36" href="https://issues.apache.org/jira/browse/BSF-6">BSF-6</a> </td> <td class="nav summary"> <a set="yes" linkindex="37" href="https://issues.apache.org/jira/browse/BSF-6" style="text-decoration: none;">update bug link on home page</a> </td> <td class="nav assignee"> Unassigned </td> <td class="nav reporter">Scott Cytacki</td> <td class="nav priority"> <img src="cid:bradybrian@example.com" alt="Major" title="Major - Major loss of function." align="absmiddle" border="0" height="16" width="16"> </td> <td class="nav status"> <img src="cid:bradybrian@example.com" alt="Open" title="Open - The issue is open and ready for the assignee to start work on it." height="16" width="16"> Open </td> <td class="nav resolution"> <span class="redText">UNRESOLVED</span> </td> <td class="nav created"> 16/Aug/07 </td> <td class="nav updated"> 16/Aug/07 </td> </tr> <tr id="issuerow12376118" class="rowNormal"> <td class="nav issuetype"> <a linkindex="38" href="https://issues.apache.org/jira/browse/BSF-5"> <img src="cid:bradybrian@example.com" alt="Bug" title="Bug - A problem which impairs or prevents the functions of the product." align="absmiddle" border="0" height="16" width="16"></a></td> <td class="nav issuekey"> <a set="yes" linkindex="39" href="https://issues.apache.org/jira/browse/BSF-5">BSF-5</a> </td> <td class="nav summary"> <a linkindex="40" href="https://issues.apache.org/jira/browse/BSF-5" style="text-decoration: none;">Few suggested bug fixes for BSF 3.0 b1</a> </td> <td class="nav assignee"> Unassigned </td> <td class="nav reporter">Sanka Samaranayake</td> <td class="nav priority"> <img src="cid:bradybrian@example.com" alt="Major" title="Major - Major loss of function." align="absmiddle" border="0" height="16" width="16"> </td> <td class="nav status"> <img src="cid:bradybrian@example.com" alt="Open" title="Open - The issue is open and ready for the assignee to start work on it." height="16" width="16"> Open </td> <td class="nav resolution"> <span class="redText">UNRESOLVED</span> </td> <td class="nav created"> 15/Aug/07 </td> <td class="nav updated"> 15/Aug/07 </td> </tr> <tr id="issuerow12376117" class="rowAlternate"> <td class="nav issuetype"> <a linkindex="41" href="https://issues.apache.org/jira/browse/BSF-4"> <img src="cid:bradybrian@example.com" alt="Bug" title="Bug - A problem which impairs or prevents the functions of the product." align="absmiddle" border="0" height="16" width="16"></a></td> <td class="nav issuekey"> <a set="yes" linkindex="42" href="https://issues.apache.org/jira/browse/BSF-4">BSF-4</a> </td> <td class="nav summary"> <a set="yes" linkindex="43" href="https://issues.apache.org/jira/browse/BSF-4" style="text-decoration: none;">The invokeMethod and invokeFunction methods of javax.script.Invocable should declare java.lang.NoSuchMethodExcept as a checked exception</a> </td> <td class="nav assignee"> Unassigned </td> <td class="nav reporter">Sanka Samaranayake</td> <td class="nav priority"> <img src="cid:bradybrian@example.com" alt="Major" title="Major - Major loss of function." align="absmiddle" border="0" height="16" width="16"> </td> <td class="nav status"> <img src="cid:bradybrian@example.com" alt="Open" title="Open - The issue is open and ready for the assignee to start work on it." height="16" width="16"> Open </td> <td class="nav resolution"> <span class="redText">UNRESOLVED</span> </td> <td class="nav created"> 15/Aug/07 </td> <td class="nav updated"> 15/Aug/07 </td> </tr> <tr id="issuerow12368556" class="rowNormal"> <td class="nav issuetype"> <a linkindex="44" href="https://issues.apache.org/jira/browse/BSF-3"> <img src="cid:bradybrian@example.com" alt="Bug" title="Bug - A problem which impairs or prevents the functions of the product." align="absmiddle" border="0" height="16" width="16"></a></td> <td class="nav issuekey"> <a linkindex="45" href="https://issues.apache.org/jira/browse/BSF-3">BSF-3</a> </td> <td class="nav summary"> <a linkindex="46" href="https://issues.apache.org/jira/browse/BSF-3" style="text-decoration: none;">ScriptEngineManager.getFactories() NOT compliant with JSR223 API</a> </td> <td class="nav assignee"> Unassigned </td> <td class="nav reporter">Ivan Martinez-Ortiz</td> <td class="nav priority"> <img src="cid:bradybrian@example.com" alt="Blocker" title="Blocker - Blocks development and/or testing work, production could not run" align="absmiddle" border="0" height="16" width="16"> </td> <td class="nav status"> <img src="cid:bradybrian@example.com" alt="Open" title="Open - The issue is open and ready for the assignee to start work on it." height="16" width="16"> Open </td> <td class="nav resolution"> <span class="redText">UNRESOLVED</span> </td> <td class="nav created"> 03/May/07 </td> <td class="nav updated"> 03/May/07 </td> </tr> <tr id="issuerow12363083" class="rowAlternate"> <td class="nav issuetype"> <a linkindex="47" href="https://issues.apache.org/jira/browse/BSF-2"> <img src="cid:bradybrian@example.com" alt="Improvement" title="Improvement - An improvement or enhancement to an existing feature or task." align="absmiddle" border="0" height="16" width="16"></a></td> <td class="nav issuekey"> <a linkindex="48" href="https://issues.apache.org/jira/browse/BSF-2">BSF-2</a> </td> <td class="nav summary"> <a linkindex="49" href="https://issues.apache.org/jira/browse/BSF-2" style="text-decoration: none;">Add Maven2 build and copy API classes into a seperate API module</a> </td> <td class="nav assignee"> Unassigned </td> <td class="nav reporter">ant elder</td> <td class="nav priority"> <img src="cid:bradybrian@example.com" alt="Major" title="Major - Major loss of function." align="absmiddle" border="0" height="16" width="16"> </td> <td class="nav status"> <img src="cid:bradybrian@example.com" alt="Closed" title="Closed - The issue is considered finished, the resolution is correct. Issues which are not closed can be reopened." height="16" width="16"> Closed </td> <td class="nav resolution"> Fixed </td> <td class="nav created"> 17/Feb/07 </td> <td class="nav updated"> 13/Mar/07 </td> </tr> <tr id="issuerow12362947" class="rowNormal"> <td class="nav issuetype"> <a linkindex="50" href="https://issues.apache.org/jira/browse/BSF-1"> <img src="cid:bradybrian@example.com" alt="Improvement" title="Improvement - An improvement or enhancement to an existing feature or task." align="absmiddle" border="0" height="16" width="16"></a></td> <td class="nav issuekey"> <a linkindex="51" href="https://issues.apache.org/jira/browse/BSF-1">BSF-1</a> </td> <td class="nav summary"> <a linkindex="52" href="https://issues.apache.org/jira/browse/BSF-1" style="text-decoration: none;">Initial patch to start updating the BSF 3.0</a> </td> <td class="nav assignee"> Unassigned </td> <td class="nav reporter">ant elder</td> <td class="nav priority"> <img src="cid:bradybrian@example.com" alt="Major" title="Major - Major loss of function." align="absmiddle" border="0" height="16" width="16"> </td> <td class="nav status"> <img src="cid:bradybrian@example.com" alt="Closed" title="Closed - The issue is considered finished, the resolution is correct. Issues which are not closed can be reopened." height="16" width="16"> Closed </td> <td class="nav resolution"> Fixed </td> <td class="nav created"> 15/Feb/07 </td> <td class="nav updated"> 13/Mar/07</td> </tr> </tbody> </table> <br> <br> We should try to resolve/fix the open issues.<br> <br> Regards,<br> <br> ---rony<br> <br> </body> </html> --------------070608080007050500080809 Content-Type: image/gif; name="down.gif" Content-Transfer-Encoding: base64 Content-ID: <bradybrian@example.com> Content-Disposition: inline; filename="down.gif" R0lGODlhCwAOALMAAAAAAJ272szMzPX4+7LK4sra67fN5KfC3r7S5sPJz6TA3f///8PV6KzF 4LzQ5gAAACH5BAUUAAIALAAAAAALAA4AAAQyUEhAqbwCrDUAnpX3jV8oYkBRIOcFMIjRTo5B zJndtFXTKBVX43AIBGYA45GUxLkSmAgAOw== --------------070608080007050500080809 Content-Type: image/gif; name="bug.gif" Content-Transfer-Encoding: base64 Content-ID: <bradybrian@example.com> Content-Disposition: inline; filename="bug.gif" R0lGODlhEAAQANUCAP///wAAAK7/vZkAAPf6/M/e7cnZ6+zy+OXt9cPV6Nfk8DMzM9zn8rzQ 5vD1+bA6OsRra7XM4+W/v6UfH+zPz67H4LhNTdidnefDw82CgszMzNnZ49zO1btUVJwICOTO 0qfC3uvh5LxYWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAIALAAA AAAQABAAAAZ5QEFgSCwGBEhkAMBsNhfH5NLpXGiiQmp1AVVqmwTHITplUiQYTPiAIDcpg/jg w2a4mQPP5CEaIBgKdxcDex0QAxwKBXcSAw8WEBkDGwUGdwADkBmDlQl3BCFyA50NbgQEdYoG CQ0RZKeppBEVZGJ/qqyzIGRGvUMCQQA7 --------------070608080007050500080809 Content-Type: image/gif; name="priority_critical.gif" Content-Transfer-Encoding: base64 Content-ID: <bradybrian@example.com> Content-Disposition: inline; filename="priority_critical.gif" R0lGODlhEAAQAMQAAAAAAMwAAONycttJSfjZ2dc2NuBiYuiLi95ZWeV7e/ro6OFra+qUlNxP T9lDQ+aBgf///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ACH5BAUUABAALAAAAAAQABAAAAU7ICSOZGmKAHGaAAMo69geDxBDcyIs9gn8Ot4vBhAYED3i sZFcARADR9MXLUxZv+FtW8pqiYHwtevl3kIAOw== --------------070608080007050500080809 Content-Type: image/gif; name="status_resolved.gif" Content-Transfer-Encoding: base64 Content-ID: <bradybrian@example.com> Content-Disposition: inline; filename="status_resolved.gif" R0lGODlhEAAQANUAAAAAAF/fXwAzmQBeAGKBwMXK3DphsAURT43ojRtJpCEnWnbkdihTqVBz uQAAM+j66KTtpG+MxYHmgR5Aj0RptEBcnRMfWyguXn6Yywk6ndTX4icyaZjqmFZ4u2vhaxcg Vk1tsDMzZhAaUzpjtczQ3klttiMsYlN1unKOxyoxZFh5vBklXv///wAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAUUACwALAAA AAAQABAAAAZxQJZwSCwaNSFHimQsXjYVy6dJdIAMEwd1qLBMDqKtkGRyrAqswaPpaLsdg4ER gEERVPE4Ql6NEDolAxAcCBILfEIOBCcUBgOEhh4BiA4NjQwDhQuSiCxuDAl5A5NsCRkCWnFU DqeoaVsOArJaYm+0REEAOw== --------------070608080007050500080809 Content-Type: image/gif; name="priority_major.gif" Content-Transfer-Encoding: base64 Content-ID: <bradybrian@example.com> Content-Disposition: inline; filename="priority_major.gif" R0lGODlhEAAQALMAAAAAANc2NuV7e/jZ2eBiYtxPT+qUlONycuiLi9tJSfro6OFra95ZWdlD Q+aBgf///yH5BAUUAA8ALAAAAAAQABAAAAQy8MlJq5VgXAsMUNvUIQ4QPqNwLOYFvCr7hsBB MC19F/kGMIlGzxUMDDmv2WnJbDqfpwgAOw== --------------070608080007050500080809 Content-Type: image/gif; name="status_open.gif" Content-Transfer-Encoding: base64 Content-ID: <bradybrian@example.com> Content-Disposition: inline; filename="status_open.gif" R0lGODlhEAAQANUAAH9/mf9mAP+/Xn+ZzOLl7f+0RJar1YKIp//JeY+exKa2142k0f/05JOW rv/Ph5qcs//EbKu83Z+tzv+5UX+AmYmPrf/UlIyl1oSczunr8J2x2IySrpOYtICAmoyczv+/ X+bo76W325Gn04SMrbLB4P///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAUUACUALAAA AAAQABAAAAZwwJJwSCwaM48Oh2AsNjiSSqVJpCg0CQp1uKkkDqNtgAFqUDZMaiAAaLuL6zUi QIqENAYAMWBxICAfAXcGInpDAX4QAhMFAYQLhkIBf4uNBgsYGJElcQGNIphvRmsAmAObcCUA GAOnW0IAra6vbm1GQQA7 --------------070608080007050500080809 Content-Type: image/gif; name="priority_blocker.gif" Content-Transfer-Encoding: base64 Content-ID: <bradybrian@example.com> Content-Disposition: inline; filename="priority_blocker.gif" R0lGODlhEAAQAMQAAAAAANMjI8wAAOV7e9pEROucnOBlZdxPT9c5OemSku2np9EYGNYyMuJw cPCyss8SEt5aWueGhv///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ACH5BAUUABIALAAAAAAQABAAAAVaoCSOZGkCaGqOgKMUSTQAa/uiQ2PQpA2jOsiBJ/HFUAYh AcEDvGIzgBLBaMJkDdRhyQg0oToUN7BoYpNbKvnRzKHHi0eV9Uat2SVAGhUXEHtqfX95KSgr hyYhADs= --------------070608080007050500080809 Content-Type: image/gif; name="improvement.gif" Content-Transfer-Encoding: base64 Content-ID: <bradybrian@example.com> Content-Disposition: inline; filename="improvement.gif" R0lGODlhEAAQAMQCAAAAAP///67/vc/e7d7o8rXM48PV6DMzM9fk8AAXqOzy+LzQ5gAKoOXt 9cna6/f6/AAAmQBl3dbi7wAxugB/7vP2+snZ6wBLywAksczMzABy5QBY1KfC3gA+w7TU8vD1 +SH5BAEAAAIALAAAAAAQABAAAAVuoACMZAkIKAoEbNseZ7q67pHFIl0fsKq3j48iNguYRooG 0QVIMCAQQIOwZDqjBEmVBZhgnADJYAu4dCZNwMBSBUQ2FwAVYDEsARRNRI4YGxZLD3h8Aw5/ BUQPFUMefYYLBYgqi1OOhwUcREebAiEAOw== --------------070608080007050500080809 Content-Type: image/gif; name="status_closed.gif" Content-Transfer-Encoding: base64 Content-ID: <bradybrian@example.com> Content-Disposition: inline; filename="status_closed.gif" R0lGODlhEAAQANUAAAAAAB2sRAAzmQBeAGuiqgURTz1ksVPcU8XK3CcyaTHWMVK+cCEnWlBz uUBcnQAAMzPMMxlHo2vha0LZQn6YyxMfWx5Aj0PRTE1tsFneWSguXlh5vHjeftTX4jrYOkBt rBcgVkLeQjMzZgk6nRAaU0xwt2XgZWCAv8zQ3iOtSSMsYioxZBklXv///wAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAUUAC0ALAAA AAAQABAAAAZxwJZwSCwaO6LHCmUsahKOCqhJfGAMlsdwwC0yKpYCSTiYDIwo1YOFaJUl5+pj Ph8cPPEhgDIgbEofA3hGDwMcXIETEHlDDycDJhllg4QNAwsHEx4pjI11Fx4KA1pUDxEDolSN IwMBnYQCAqOqQnRzRkEAOw== --------------070608080007050500080809-- --------------000702030202010007050701-- From bsf-devbradybrian@example.com Sat Sep 22 20:09:38 2007 Return-Path: <bsf-devbradybrian@example.com> Delivered-To: bradybrian@example.com Received: (qmail 57778 invoked from network); 22 Sep 2007 20:09:38 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (83.161.120.155) by minotaur.apache.org with SMTP; 22 Sep 2007 20:09:38 -0000 Received: (qmail 12629 invoked by uid 500); 22 Sep 2007 20:09:29 -0000 Delivered-To: bradybrian@example.com Received: (qmail 12611 invoked by uid 500); 22 Sep 2007 20:09:29 -0000 Mailing-List: contact bradybrian@example.com; run by ezmlm Precedence: bulk List-Unsubscribe: <mailto:bradybrian@example.com> List-Help: <mailto:bradybrian@example.com> List-Post: <mailto:bradybrian@example.com> List-Id: "Bean Scripting Framework developers" <bsf-dev.jakarta.apache.org> Reply-To: "Bean Scripting Framework developers" <bradybrian@example.com> Delivered-To: mailing list bradybrian@example.com Received: (qmail 12600 invoked by uid 99); 22 Sep 2007 20:09:29 -0000 Received: from nike.apache.org (HELO nike.apache.org) (83.161.120.155) by apache.org (qpsmtpd/0.29) with ESMTP; Sat, 22 Sep 2007 13:09:29 -0700 X-ASF-Spam-Status: No, hits=2.0 required=10.0 tests=HTML_MESSAGE,SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (nike.apache.org: local policy) Received: from [83.161.120.155] (HELO sslmail1.wu-wien.ac.at) (83.161.120.155) by apache.org (qpsmtpd/0.29) with ESMTP; Sat, 22 Sep 2007 20:11:32 +0000 Received: from [83.161.120.155] (chello062178130228.6.13.wu-wien.teleweb.at [83.161.120.155]) (authenticated bits=0) by sslmail1.wu-wien.ac.at (8.13.6/8.13.6) with ESMTP id l8MK91ic086032 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NOT) for <bradybrian@example.com>; Sat, 22 Sep 2007 22:09:03 +0200 (CEST) (envelope-from bradybrian@example.com) Message-ID: <bradybrian@example.com>
{'source': 'Apache Software Foundation Public Mail Archives'}