import java.util.Map;
import be.nikiroo.utils.IOUtils;
+import be.nikiroo.utils.StringUtils;
import be.nikiroo.utils.streams.NextableInputStream;
import be.nikiroo.utils.streams.NextableInputStreamStep;
-import be.nikiroo.utils.StringUtils;
/**
* A simple class that can accept the output of {@link Exporter} to recreate
* content, or a number of lines of it (any given line <b>MUST</b> be
* complete though) and accumulate it with the already present data.
*
- * @param data
+ * @param in
* the data to parse
*
* @return itself so it can be chained
if (in == null) {
throw new NullPointerException("InputStream is null");
}
- if (stream.eof()) {
- throw new NullPointerException("InputStream is empty");
- }
+ boolean first = true;
while (stream.next()) {
+ if (stream.eof()) {
+ if (first) {
+ throw new NullPointerException(
+ "InputStream empty, normal termination");
+ }
+ return this;
+ }
+ first = false;
+
boolean zip = stream.startsWiths("ZIP:");
boolean b64 = stream.startsWiths("B64:");
* Read a single (whole) line of serialised data into this {@link Importer}
* and accumulate it with the already present data.
*
- * @param line
+ * @param in
* the line to parse
*
* @return TRUE if we are just done with one object or sub-object
// TODO use the stream, Luke
String line = IOUtils.readSmallStream(in);
+ if (line.isEmpty()) {
+ return false;
+ }
+
if (line.equals("{")) { // START: new child if needed
if (link != null) {
child = new Importer(map);