public void process(InterchangeContext interchangeContext) throws IOException, SAXException {
BufferedSegmentReader segmentReader = interchangeContext.getSegmentReader();
interchangeContext.getControlSegmentParser().startElement("group", ungSegment.getNamespace(), true);
segmentReader.moveToNextSegment(false);
interchangeContext.mapControlSegment(ungSegment, true);
while(true) {
String segCode = segmentReader.peek(3, true);
if(segCode.equals("UNE")) {
segmentReader.moveToNextSegment(false);
interchangeContext.mapControlSegment(uneSegment, true);
break;
} else if(segCode.length() > 0) {
ControlBlockHandler handler = interchangeContext.getControlBlockHandler(segCode);
handler.process(interchangeContext);
} else {
throw new EDIParseException("Unexpected end of UN/EDIFACT data stream. If stream was reset (e.g. after read charset was changed), please make sure underlying stream was properly reset.");
}
}
interchangeContext.getControlSegmentParser().endElement("group", ungSegment.getNamespace(), true);
}
}