add --shared
[pylucene.git] / lucene-java-3.4.0 / lucene / contrib / analyzers / common / src / java / org / apache / lucene / analysis / miscellaneous / SingleTokenTokenStream.java
1 package org.apache.lucene.analysis.miscellaneous;
2
3 /**
4  * Licensed to the Apache Software Foundation (ASF) under one or more
5  * contributor license agreements.  See the NOTICE file distributed with
6  * this work for additional information regarding copyright ownership.
7  * The ASF licenses this file to You under the Apache License, Version 2.0
8  * (the "License"); you may not use this file except in compliance with
9  * the License.  You may obtain a copy of the License at
10  *
11  *     http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  */
19
20 import java.io.IOException;
21
22 import org.apache.lucene.util.AttributeImpl;
23 import org.apache.lucene.analysis.Token;
24 import org.apache.lucene.analysis.TokenStream;
25 import org.apache.lucene.analysis.tokenattributes.CharTermAttribute;
26
27 /**
28  * A {@link TokenStream} containing a single token.
29  */
30 public final class SingleTokenTokenStream extends TokenStream {
31
32   private boolean exhausted = false;
33   
34   // The token needs to be immutable, so work with clones!
35   private Token singleToken;
36   private final AttributeImpl tokenAtt;
37
38   public SingleTokenTokenStream(Token token) {
39     super(Token.TOKEN_ATTRIBUTE_FACTORY);
40     
41     assert token != null;
42     this.singleToken = (Token) token.clone();
43     
44     tokenAtt = (AttributeImpl) addAttribute(CharTermAttribute.class);
45     assert (tokenAtt instanceof Token);
46   }
47
48   @Override
49   public final boolean incrementToken() throws IOException {
50     if (exhausted) {
51       return false;
52     } else {
53       clearAttributes();
54       singleToken.copyTo(tokenAtt);
55       exhausted = true;
56       return true;
57     }
58   }
59
60   @Override
61   public void reset() throws IOException {
62     exhausted = false;
63   }
64
65   public Token getToken() {
66     return (Token) singleToken.clone();
67   }
68
69   public void setToken(Token token) {
70     this.singleToken = (Token) token.clone();
71   }
72 }