Author: rony Date: Tue Mar 28 12:15:21 2006 New Revision: 389598 URL: http://svn.apache.org/viewcvs?rev=389598&view=rev Log: 2006-03-28 Removes the special OpenOffice.org support code needed for creating BSF event adapters for OOo versions <= 2.0.2; that special support code got added with revision 389218 (BSF should only contain generic code, hence removing it again). If you need to get at that code then do a svn merge with the diff of this version with revision 389218.
Modified: 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/util/ReflectionUtils.java URL: http://svn.apache.org/viewcvs/jakarta/bsf/trunk/src/org/apache/bsf/util/ReflectionUtils.java?rev=389598&r1=389597&r2=389598&view=diff ============================================================================== --- jakarta/bsf/trunk/src/org/apache/bsf/util/ReflectionUtils.java (original) +++ jakarta/bsf/trunk/src/org/apache/bsf/util/ReflectionUtils.java Tue Mar 28 12:15:21 2006 @@ -70,7 +70,6 @@ * * @author Sanjiva Weerawarana * @author Joseph Kesselman - * @author Rony G. Flatscher (added Proxy-handling needed for OpenOffice.org 1.1.x and 2.0.x as of 2006-02-03) */ public class ReflectionUtils { @@ -104,55 +103,14 @@ EventSetDescriptor esd = (EventSetDescriptor) findFeatureByName ("event", eventSetName, bi.getEventSetDescriptors ()); - - // get the class object for the event - Class listenerType = null; - int idx2mmm=0; - java.lang.reflect.Method mmm[]=null; // array object to store methods from Proxy-class reflected methods - if (esd == null) // no events found, maybe a proxy from OpenOffice.org? { - if (java.lang.reflect.Proxy.class.isInstance(source)==true) // a Proxy class, hence reflect "manually" - { - mmm=source.getClass().getMethods(); // get all methods - for (idx2mmm=0; idx2mmm<mmm.length; idx2mmm++) - { - String methName=mmm[idx2mmm].getName(); - // looking for a method "add_XYZ_Listener(someEventClass) - if (methName.endsWith("Listener")==true) - { - String un=getUnqualifiedName(methName); - - if (un.startsWith("add")) // get first argument, which must be an Event class - { - String tmpName=un.substring(3, un.length()-8); // -lengthOf(("add"=3)+("Listener"=8)) - if (eventSetName.equalsIgnoreCase(tmpName)) - { - java.lang.Class params[]=mmm[idx2mmm].getParameterTypes(); - if (params.length>0) - { - listenerType=params[0]; // o.k. found ListenerClass - break; - } - } - } - } - } - } - - if (listenerType==null) // o.k. no listenerType found, throw up ... - { - throw new IllegalArgumentException ("event set '" + eventSetName + - "' unknown for source type '" + source.getClass () + "'"); - } - + throw new IllegalArgumentException ("event set '" + eventSetName + + "' unknown for source type '" + source.getClass () + "'"); } - else // ListenerType from EventSetDescriptor - { - listenerType=esd.getListenerType(); // get ListenerType class object from EventSetDescriptor - } - + // get the class object for the event + Class listenerType=esd.getListenerType(); // get ListenerType class object from EventSetDescriptor // find an event adapter class of the right type Class adapterClass = EventAdapterRegistry.lookup (listenerType); @@ -178,73 +136,15 @@ // in this case to support the source-side filtering. // // ** TBD **: the following two lines need to change appropriately - if (mmm==null) - { - addListenerMethod = esd.getAddListenerMethod (); - } - else - { - addListenerMethod = mmm[idx2mmm]; - } + addListenerMethod = esd.getAddListenerMethod (); args = new Object[] {adapter}; } else { - if (mmm==null) { - addListenerMethod = esd.getAddListenerMethod (); - } - else - { - addListenerMethod = mmm[idx2mmm]; - } + addListenerMethod = esd.getAddListenerMethod (); args = new Object[] {adapter}; } addListenerMethod.invoke (source, args); - } - ////////////////////////////////////////////////////////////////////////// - - - /** Compares two strings in a "relaxed" manner, i.e. - * tests case-insensitively, whether the second argument - * <code>haystack</code> ends with the first argument <code>endName</code> - * string. - * - * @param endName the string which should end <code>haystack</code> - * @param haystack the string to test <code>endName</code> against - * - * @return <code>true</code>, if <code>haystack</code> ends with the - * string <code>endName</code> (comparison carried out case-insensitively), - * <code>false</code> else - */ - static boolean compareRelaxed(String endName, String haystack) - { - int endNameLength=endName.length(), - tmpLength =haystack.length(); - - if (endNameLength>tmpLength) // interface endName is shorter than the sought of one - { - return false; - } - else if (endNameLength!=tmpLength) // cut off haystack from the right to match length of received endName - { - // 012345678 - // abc=3 x.y.z.abc=9 9-3=6 - haystack=haystack.substring(tmpLength-endNameLength); // cut off from the right - } - - return endName.equalsIgnoreCase(haystack); - } - ////////////////////////////////////////////////////////////////////////// - - /** Returns unqualified name (string after the last dot) from dotted string or string itself, if no dot in string. - * - * @param s String to extract unqualified name - * @return returns unqualified name or s, if no dot in string - */ - static String getUnqualifiedName(String s) - { - int lastPos=s.lastIndexOf('.'); // get position of last dot - return lastPos==-1 ? s : s.substring(lastPos+1) ; } ////////////////////////////////////////////////////////////////////////// Modified: jakarta/bsf/trunk/src/org/apache/bsf/util/event/generator/EventAdapterGenerator.java URL: http://svn.apache.org/viewcvs/jakarta/bsf/trunk/src/org/apache/bsf/util/event/generator/EventAdapterGenerator.java?rev=389598&r1=389597&r2=389598&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 Tue Mar 28 12:15:21 2006 @@ -53,14 +53,6 @@ * please see <http://www.apache.org/>. */ - /* changes: - 2006-02-03, Rony G. Flatscher: added OpenOffice.org support (versions 1.1.x and 2.0.1) - which need special handling due to their omission to tagt heir event - listeners as implementing "java.util.EventListener" inhibiting standard - introspection to identify events; therefore a "manual" branch got introduced - to identify OpenOffice.org event listeners - */ - package org.apache.bsf.util.event.generator; import java.io.*; @@ -77,7 +69,6 @@ { public static AdapterClassLoader ldr = new AdapterClassLoader(); static Class EVENTLISTENER = null; - static Class OPENOFFICE_XEVENTLISTENER = null; static String CLASSPACKAGE = "org/apache/bsf/util/event/adapters/"; static String WRITEDIRECTORY = null; @@ -130,17 +121,6 @@ } - // try to load the OpenOffice.org (OOo) counterpart of EventListener; unfortunately as of 2006 - // OOo's XEventListener does not report to have 'java.util.EventListener' implemented, hence - // Introspector cannot identify events ! - try - { - OPENOFFICE_XEVENTLISTENER = Thread.currentThread().getContextClassLoader().loadClass ("com.sun.star.lang.XEventListener"); - } - catch (Exception e) - { - } - // start of the Java Class File CLASSHEADER = ByteUtility.addBytes(CLASSHEADER,(byte)0xCA); // magic CLASSHEADER = ByteUtility.addBytes(CLASSHEADER,(byte)0xFE); // magic @@ -234,11 +214,7 @@ { logger.info("EventAdapterGenerator"); - if( EVENTLISTENER.isAssignableFrom(listenerType) || - // test explicitly OpenOffice.org listener types; as of 2006-02-03 neither 1.1.5 nor - // OOo 2.0.1 do indicate that they implement 'java.lang.EventListener' - ( OPENOFFICE_XEVENTLISTENER!=null && OPENOFFICE_XEVENTLISTENER.isAssignableFrom(listenerType) ) - ) + if( EVENTLISTENER.isAssignableFrom(listenerType) ) { boolean exceptionable = false; boolean nonExceptionable = false; --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]