Have updated from Lucene 3.0 to lucene 3.1 an dnow getting various deprecations that Im trying to move

I change this filter class and now my test are failing, anybody able to see what Im missing please

Paul

package org.musicbrainz.search.analysis;

import org.apache.lucene.analysis.TokenFilter;
import org.apache.lucene.analysis.TokenStream;
import org.apache.lucene.analysis.tokenattributes.TermAttribute;

import java.io.IOException;

/**
* A filter that replaces accented characters by their unaccented equivalents.
 */
public class AccentFilter extends TokenFilter {

    private char[] output = new char[256];
    private int outputPos;

    private TermAttribute termAttr;

    public AccentFilter(TokenStream input) {
        super(input);
        termAttr = (TermAttribute) addAttribute(TermAttribute.class);
    }

    @Override
    public boolean incrementToken() throws IOException {
        if (!input.incrementToken())
            return false;

        final char[] buffer = termAttr.termBuffer();
        final int length    = termAttr.termLength();
        if (removeAccents(buffer, length))  {
            termAttr.setTermBuffer(output, 0, outputPos);
        }
        return true;
    }

    protected final boolean removeAccents(char[] input, int length) {
        final int maxSizeNeeded = 2 * length;
        int size = output.length;
        while (size < maxSizeNeeded)
            size *= 2;

        int inputPos = 0;
        outputPos = 0;

        for (int i = 0; i < length; i++) {
            int c = (int) input[i];

int block = UnaccentIndexes.indexes[c >> UnaccentData.BLOCK_SHIFT];
            int position = c & UnaccentData.BLOCK_MASK;

            short[] positions = UnaccentPositions.positions[block];
            int unacPosition = positions[position];
            int unacLength = positions[position + 1] - unacPosition;

            if (unacLength > 0) {
                // allocate a new char array, if necessary
                if (size != output.length)
                    output = new char[size];
                // copy front of the input
                if (inputPos < i) {
System.arraycopy(input, inputPos, output, outputPos, i - inputPos);
                    outputPos += i - inputPos;
                }
                // copy unaccented data
                System.arraycopy(UnaccentData.data[block], unacPosition,
                        output, outputPos, unacLength);
                outputPos += unacLength;
                inputPos = i + 1;
            }
        }

        // no conversion needed...
        if (inputPos == 0)
            return false;

        // copy rest of the input
        int copyLength = length - inputPos;
        if (copyLength > 0) {
System.arraycopy(input, inputPos, output, outputPos, copyLength);
            outputPos += copyLength;
        }

        return true;
    }

}

to

package org.musicbrainz.search.analysis;

import org.apache.lucene.analysis.TokenFilter;
import org.apache.lucene.analysis.TokenStream;
import org.apache.lucene.analysis.tokenattributes.CharTermAttribute;

import java.io.IOException;

/**
* A filter that replaces accented characters by their unaccented equivalents.
 */
public class AccentFilter extends TokenFilter {

    private char[] output = new char[256];
    private int outputPos;

    private CharTermAttribute termAttr;

    public AccentFilter(TokenStream input) {
        super(input);
termAttr = (CharTermAttribute) addAttribute(CharTermAttribute.class);
    }

    @Override
    public boolean incrementToken() throws IOException {
        if (!input.incrementToken())
            return false;

        final char[] buffer = termAttr.buffer();
        final int length    = termAttr.length();
        if (removeAccents(buffer, length))  {
            termAttr.resizeBuffer(outputPos);
        }
        return true;
    }

    protected final boolean removeAccents(char[] input, int length) {
        final int maxSizeNeeded = 2 * length;
        int size = output.length;
        while (size < maxSizeNeeded)
            size *= 2;

        int inputPos = 0;
        outputPos = 0;

        for (int i = 0; i < length; i++) {
            int c = (int) input[i];

int block = UnaccentIndexes.indexes[c >> UnaccentData.BLOCK_SHIFT];
            int position = c & UnaccentData.BLOCK_MASK;

            short[] positions = UnaccentPositions.positions[block];
            int unacPosition = positions[position];
            int unacLength = positions[position + 1] - unacPosition;

            if (unacLength > 0) {
                // allocate a new char array, if necessary
                if (size != output.length)
                    output = new char[size];
                // copy front of the input
                if (inputPos < i) {
System.arraycopy(input, inputPos, output, outputPos, i - inputPos);
                    outputPos += i - inputPos;
                }
                // copy unaccented data
                System.arraycopy(UnaccentData.data[block], unacPosition,
                        output, outputPos, unacLength);
                outputPos += unacLength;
                inputPos = i + 1;
            }
        }

        // no conversion needed...
        if (inputPos == 0)
            return false;

        // copy rest of the input
        int copyLength = length - inputPos;
        if (copyLength > 0) {
System.arraycopy(input, inputPos, output, outputPos, copyLength);
            outputPos += copyLength;
        }

        return true;
    }

}




---------------------------------------------------------------------
To unsubscribe, e-mail: java-user-unsubscr...@lucene.apache.org
For additional commands, e-mail: java-user-h...@lucene.apache.org

Reply via email to