예제 #1
0
파일: JobParser.java 프로젝트: knrc/jsr352
 private static Chunk parseChunk(final XMLStreamReader reader) throws XMLStreamException {
   final Chunk chunk = new Chunk();
   chunk.setCheckpointPolicy(getAttributeValue(reader, XmlAttribute.CHECKPOINT_POLICY, false));
   chunk.setItemCount(getAttributeValue(reader, XmlAttribute.ITEM_COUNT, false));
   chunk.setTimeLimit(getAttributeValue(reader, XmlAttribute.TIME_LIMIT, false));
   chunk.setSkipLimit(getAttributeValue(reader, XmlAttribute.SKIP_LIMIT, false));
   chunk.setRetryLimit(getAttributeValue(reader, XmlAttribute.RETRY_LIMIT, false));
   while (reader.hasNext()) {
     final int eventType = reader.next();
     if (eventType != START_ELEMENT && eventType != END_ELEMENT) {
       continue;
     }
     final XmlElement element = XmlElement.forName(reader.getLocalName());
     switch (eventType) {
       case START_ELEMENT:
         switch (element) {
           case READER:
             chunk.setReader(parseRefArtifact(reader, XmlElement.READER));
             break;
           case PROCESSOR:
             chunk.setProcessor(parseRefArtifact(reader, XmlElement.PROCESSOR));
             break;
           case WRITER:
             chunk.setWriter(parseRefArtifact(reader, XmlElement.WRITER));
             break;
           case CHECKPOINT_ALGORITHM:
             chunk.setCheckpointAlgorithm(
                 parseRefArtifact(reader, XmlElement.CHECKPOINT_ALGORITHM));
             break;
           case SKIPPABLE_EXCEPTION_CLASSES:
             chunk.setSkippableExceptionClasses(
                 parseExceptionClassFilter(reader, XmlElement.SKIPPABLE_EXCEPTION_CLASSES));
             break;
           case RETRYABLE_EXCEPTION_CLASSES:
             chunk.setRetryableExceptionClasses(
                 parseExceptionClassFilter(reader, XmlElement.RETRYABLE_EXCEPTION_CLASSES));
             break;
           case NO_ROLLBACK_EXCEPTION_CLASSES:
             chunk.setNoRollbackExceptionClasses(
                 parseExceptionClassFilter(reader, XmlElement.NO_ROLLBACK_EXCEPTION_CLASSES));
             break;
           default:
             throw BatchLogger.LOGGER.unexpectedXmlElement(
                 reader.getLocalName(), reader.getLocation());
         }
         break;
       case END_ELEMENT:
         if (element == XmlElement.CHUNK) {
           return chunk;
         } else {
           throw BatchLogger.LOGGER.unexpectedXmlElement(
               reader.getLocalName(), reader.getLocation());
         }
     }
   }
   throw BatchLogger.LOGGER.unexpectedXmlElement(reader.getLocalName(), reader.getLocation());
 }