diff --git a/lucene/src/java/org/apache/lucene/store/InputStreamDataInput.java b/lucene/src/java/org/apache/lucene/store/InputStreamDataInput.java new file mode 100644 index 00000000000..7516065f51f --- /dev/null +++ b/lucene/src/java/org/apache/lucene/store/InputStreamDataInput.java @@ -0,0 +1,58 @@ +package org.apache.lucene.store; + +/** + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import java.io.*; + +import org.apache.lucene.store.DataInput; + +/** + * A {@link DataInput} wrapping a plain {@link InputStream}. + */ +public class InputStreamDataInput extends DataInput implements Closeable { + private final InputStream is; + + public InputStreamDataInput(InputStream is) { + this.is = is; + } + + @Override + public byte readByte() throws IOException { + int v = is.read(); + if (v == -1) throw new EOFException(); + return (byte) v; + } + + @Override + public void readBytes(byte[] b, int offset, int len) throws IOException { + while (len > 0) { + final int cnt = is.read(b, offset, len); + if (cnt < 0) { + // Partially read the input, but no more data available in the stream. + throw new EOFException(); + } + len -= cnt; + offset += cnt; + } + } + + @Override + public void close() throws IOException { + is.close(); + } +} diff --git a/lucene/src/java/org/apache/lucene/store/OutputStreamDataOutput.java b/lucene/src/java/org/apache/lucene/store/OutputStreamDataOutput.java new file mode 100644 index 00000000000..6b405bcc2d6 --- /dev/null +++ b/lucene/src/java/org/apache/lucene/store/OutputStreamDataOutput.java @@ -0,0 +1,45 @@ +package org.apache.lucene.store; + +/** + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import java.io.*; + +/** + * A {@link DataOutput} wrapping a plain {@link OutputStream}. + */ +public class OutputStreamDataOutput extends DataOutput implements Closeable { + private final OutputStream os; + + public OutputStreamDataOutput(OutputStream os) { + this.os = os; + } + + @Override + public void writeByte(byte b) throws IOException { + os.write(b); + } + + @Override + public void writeBytes(byte[] b, int offset, int length) throws IOException { + os.write(b, offset, length); + } + + public void close() throws IOException { + os.close(); + } +} diff --git a/modules/suggest/src/java/org/apache/lucene/search/suggest/fst/FSTLookup.java b/modules/suggest/src/java/org/apache/lucene/search/suggest/fst/FSTLookup.java index 22f81b090c8..48b5d251d85 100644 --- a/modules/suggest/src/java/org/apache/lucene/search/suggest/fst/FSTLookup.java +++ b/modules/suggest/src/java/org/apache/lucene/search/suggest/fst/FSTLookup.java @@ -24,6 +24,8 @@ import org.apache.lucene.util.fst.Outputs; import org.apache.lucene.search.suggest.Lookup; import org.apache.lucene.search.suggest.tst.TSTLookup; import org.apache.lucene.search.spell.TermFreqIterator; +import org.apache.lucene.store.InputStreamDataInput; +import org.apache.lucene.store.OutputStreamDataOutput; /** * Finite state automata based implementation of {@link Lookup} query diff --git a/modules/suggest/src/java/org/apache/lucene/search/suggest/fst/InputStreamDataInput.java b/modules/suggest/src/java/org/apache/lucene/search/suggest/fst/InputStreamDataInput.java deleted file mode 100644 index 0bd272b3b65..00000000000 --- a/modules/suggest/src/java/org/apache/lucene/search/suggest/fst/InputStreamDataInput.java +++ /dev/null @@ -1,32 +0,0 @@ -package org.apache.lucene.search.suggest.fst; - -import java.io.EOFException; -import java.io.IOException; -import java.io.InputStream; -import org.apache.lucene.store.DataInput; - -/** - * A {@link DataInput} wrapping a plain {@link InputStream}. - */ -public class InputStreamDataInput extends DataInput { - - private final InputStream is; - - public InputStreamDataInput(InputStream is) { - this.is = is; - } - - @Override - public byte readByte() throws IOException { - int v = is.read(); - if (v == -1) throw new EOFException(); - return (byte) v; - } - - @Override - public void readBytes(byte[] b, int offset, int len) throws IOException { - if (is.read(b, offset, len) != len) { - throw new EOFException(); - } - } -} diff --git a/modules/suggest/src/java/org/apache/lucene/search/suggest/fst/OutputStreamDataOutput.java b/modules/suggest/src/java/org/apache/lucene/search/suggest/fst/OutputStreamDataOutput.java deleted file mode 100644 index 12542633c3e..00000000000 --- a/modules/suggest/src/java/org/apache/lucene/search/suggest/fst/OutputStreamDataOutput.java +++ /dev/null @@ -1,28 +0,0 @@ -package org.apache.lucene.search.suggest.fst; - -import java.io.IOException; -import java.io.OutputStream; - -import org.apache.lucene.store.DataOutput; - -/** - * A {@link DataOutput} wrapping a plain {@link OutputStream}. - */ -public class OutputStreamDataOutput extends DataOutput { - - private final OutputStream os; - - public OutputStreamDataOutput(OutputStream os) { - this.os = os; - } - - @Override - public void writeByte(byte b) throws IOException { - os.write(b); - } - - @Override - public void writeBytes(byte[] b, int offset, int length) throws IOException { - os.write(b, offset, length); - } -}