else {
MultipleObjectsBundle parsingResult = parser.parse(inputStream);
// normalize objects and transform labels
source = new StreamFromBundle(parsingResult);
}
BundleMeta meta = null; // NullPointerException on invalid streams
loop: for(Event e = source.nextEvent();; e = source.nextEvent()) {
switch(e){
case END_OF_STREAM:
break loop;
case META_CHANGED:
meta = source.getMeta();
for(int i = 0; i < meta.size(); i++) {
if(i + 1 >= objects.metaLength()) {
objects.appendColumn(meta.get(i), new ArrayList<Object>());
}
else {
// Ensure compatibility:
if(!objects.meta(i + 1).isAssignableFromType(meta.get(i))) {
throw new AbortException("Incompatible files loaded. Cannot concatenate with unaligned columns, please preprocess manually.");
}
}
}
break;
case NEXT_OBJECT:
Object[] o = new Object[objects.metaLength()];
o[0] = filestr;
for(int i = 0; i < meta.size(); i++) {
o[i + 1] = source.data(i);
}
objects.appendSimple(o);
}
}