/* * Hibernate Search, full-text search for your domain model * * License: GNU Lesser General Public License (LGPL), version 2.1 or later * See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>. */ package org.hibernate.search.test.analyzer.definition; import java.io.IOException; import org.apache.lucene.analysis.TokenFilter; import org.apache.lucene.analysis.TokenStream; import org.apache.lucene.analysis.tokenattributes.CharTermAttribute; /** * A filter which will actually insert spaces. Most filters/tokenizers remove them, but for testing it is * sometimes better to insert them again ;-) * * @author Hardy Ferentschik * @author Sanne Grinovero */ public final class InsertWhitespaceFilter extends TokenFilter { private final CharTermAttribute termAtt = addAttribute( CharTermAttribute.class ); public InsertWhitespaceFilter(TokenStream in) { super( in ); } @Override public boolean incrementToken() throws IOException { if ( input.incrementToken() ) { final char[] termBuffer = termAtt.buffer(); final int termBufferLength = termAtt.length(); final char[] newBuffer = new char[termBufferLength + 2]; System.arraycopy( termBuffer, 0, newBuffer, 1, termBufferLength ); newBuffer[0] = ' '; newBuffer[newBuffer.length - 1] = ' '; termAtt.resizeBuffer( newBuffer.length ); termAtt.copyBuffer( newBuffer, 0, newBuffer.length ); return true; } else { return false; } } }