You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@xalan.apache.org by Gary L Peskin <ga...@firstech.com> on 2000/10/06 22:10:46 UTC

XalanJ2 Extension mechanism upload ready

I'm ready to do something with my stuff on the new extension handling
mechanism.  This note gives a brief overview of what I've done and what
I have left to do.  I don't think any of the "to do" items should be a
problem for an alpha release.

First off, I've discarded ExtensionFunctionHandler, ExtensionNSHandler,
and XSLTJavaClassEngine.

Next I added five new classes in the following hierarchy:

ExtensionHandler (abstract)
  ExtensionHandlerGeneral -- Implements BSF-supported extensions
  ExtensionHandlerJava (abstract) -- Base class for extensions written
in java
    ExtensionHandlerJavaClass -- URI specifies a full class name
    ExtensionHandlerJavaPackage -- URI specifies a partial class name
       (including http://xml.apache.org/xslt/java)

I've also made changes to:
  ExtensionsTable
  MethodResolver
  ElemExtensionCall
  ElemExtensionDecl
  Compiler

Here is what is not yet working:
- function-available and element-available for java-based URIs.  The
previous implementation did nothing if the java namespace was implicitly
declared (ie without an lxslt:component).  I have chosen to ignore the
functions and elements if declared and use a consistent method
regardless of whether or not an lxslt:component was used.  This will use
java reflection.  It's not difficult but I'm sick of working on this for
now and need a break.
- extension elements written in java using a URI that contains less than
the whole package name.  (eg <java:fully.qualified.package.mynewlement
myattr="attr1">).  This was not supported in the old implmentation. 
Again, this is not difficult but I will save it for a few days.  The 
mynewlement method will have to be static in this release, at least for
now.

Everything else should be okay, I hope.  I'm eager to get this right and
am willing to give it high-priority time.  If you're having problems,
please let me know so that I can promptly fix them in harmony with the
design.

Scott, how do you want me to upload this?  It's a fairly big change. 
Should I place it on a branch, place it in the main branch, just copy
the diffs to an email or what.  I'm a CVS newbie (using WinCVS) so it
might take me a couple of whiles (as my kids say) to figure out the
branching stuff.

Gary