Uploaded image for project: 'Lucene - Core'
  1. Lucene - Core
  2. LUCENE-2374

Add reflection API to AttributeSource/AttributeImpl



    • Type: Improvement
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 3.1, 4.0-ALPHA
    • Component/s: modules/analysis
    • Labels:
    • Lucene Fields:
      New, Patch Available


      AttributeSource/TokenStream inspection in Solr needs to have some insight into the contents of AttributeImpls. As LUCENE-2302 has some problems with toString() [which is not structured and conflicts with CharSequence's definition for CharTermAttribute], I propose an simple API that get a default implementation in AttributeImpl (just like toString() current):

      • Iterator<Map.Entry<String,?>> AttributeImpl.contentsIterator() returns an iterator (for most attributes its a singleton) of a key-value pair, e.g. "term">"foobar","startOffset">Integer.valueOf(0),...
      • AttributeSource gets the same method, it just concat the iterators of each getAttributeImplsIterator() AttributeImpl

      No backwards problems occur, as the default toString() method will work like before (it just gets iterator and lists), but we simply remove the documentation for the format. (Char)TermAttribute gets a special impl fo toString() according to CharSequence and a corresponding iterator.

      I also want to remove the abstract hashCode() and equals() methods from AttributeImpl, as they are not needed and just create work for the implementor.


        1. shot4.png
          137 kB
          Uwe Schindler
        2. shot3.png
          134 kB
          Uwe Schindler
        3. shot2.png
          141 kB
          Uwe Schindler
        4. shot1.png
          163 kB
          Uwe Schindler
        5. LUCENE-2374-3x.patch
          18 kB
          Uwe Schindler
        6. LUCENE-2374-3x.patch
          33 kB
          Uwe Schindler
        7. LUCENE-2374-3x.patch
          52 kB
          Uwe Schindler
        8. LUCENE-2374-3x.patch
          62 kB
          Uwe Schindler
        9. LUCENE-2374-3x.patch
          79 kB
          Uwe Schindler
        10. LUCENE-2374-3x.patch
          81 kB
          Uwe Schindler
        11. LUCENE-2374.patch
          77 kB
          Uwe Schindler
        12. LUCENE-2374.patch
          78 kB
          Uwe Schindler
        13. LUCENE-2374.patch
          78 kB
          Uwe Schindler

          Issue Links



              • Assignee:
                uschindler Uwe Schindler
                uschindler Uwe Schindler
              • Votes:
                0 Vote for this issue
                0 Start watching this issue


                • Created: