[
https://issues.apache.org/jira/browse/LUCENE-2154?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Uwe Schindler updated LUCENE-2154:
----------------------------------
Attachment: LUCENE-2154-javassist.patch
LUCENE-2154-cglib.patch
Here the last CGLIB patch for reference.
Now the real cool class created using JAVASSIST [http://www.javassist.org/]:
You have to place the latest javassist.jar (Mozilla/LGPL licensed) in the lib/
folder and apply the patch. What it does is the fastest proxy we can think of:
It creates a subclass of ProxyAttributeImpl that implements all methods of the
interface natively in bytecode using JAVASSIST's bytecode generation tools (a
subset of the Java language spec).
The micro-benchmark shows, no difference between proxied and native method - as
hotspot removes the extra method call.
With Javassist it would even be possible to create classes that implement our
interfaces around simple fields that are set by get/setters. Just like
Eclipse's create get/set around a private field. That would be really cool. Or
we could create combining attributes on the fly, Michael Busch would be
excited. All *Impl classes we currently have would be almost obsolete (except
TermAttributeImpl, which is rather complex). We could also create dynamic State
classes for capturing state...
Nice, but a little bit hackish. Maybe we put this first into contrib and supply
a ConcenatingTokenStream as demo impl and also other Solr TokenStreams that are
no longer easy with the Attributes without proxies (Robert listed some).
> Need a clean way for Dir/MultiReader to "merge" the AttributeSources of the
> sub-readers
> ---------------------------------------------------------------------------------------
>
> Key: LUCENE-2154
> URL: https://issues.apache.org/jira/browse/LUCENE-2154
> Project: Lucene - Java
> Issue Type: Bug
> Components: Index
> Affects Versions: Flex Branch
> Reporter: Michael McCandless
> Fix For: Flex Branch
>
> Attachments: LUCENE-2154-cglib.patch, LUCENE-2154-javassist.patch,
> LUCENE-2154.patch, LUCENE-2154.patch
>
>
> The flex API allows extensibility at the Fields/Terms/Docs/PositionsEnum
> levels, for a codec to set custom attrs.
> But, it's currently broken for Dir/MultiReader, which must somehow share
> attrs across all the sub-readers. Somehow we must make a single attr source,
> and tell each sub-reader's enum to use that instead of creating its own.
> Hopefully Uwe can work some magic here :)
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]