Пример #1
0
 private static Flow parseFlow(final XMLStreamReader reader) throws XMLStreamException {
   final Flow flow = new Flow(getAttributeValue(reader, XmlAttribute.ID, true));
   flow.setAttributeNext(getAttributeValue(reader, XmlAttribute.NEXT, 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 DECISION:
             flow.addJobElement(parseDecision(reader));
             break;
           case FLOW:
             flow.addJobElement(parseFlow(reader));
             break;
           case SPLIT:
             flow.addJobElement(parseSplit(reader));
             break;
           case STEP:
             flow.addJobElement(parseStep(reader));
             break;
           case NEXT:
             if (flow.getAttributeNext() != null) {
               throw BatchLogger.LOGGER.cannotHaveBothNextAttributeAndElement(
                   reader.getLocation(), flow.getAttributeNext());
             }
             flow.addTransitionElement(parseNext(reader));
             break;
           case FAIL:
             flow.addTransitionElement(parseFail(reader));
             break;
           case END:
             flow.addTransitionElement(parseEnd(reader));
             break;
           case STOP:
             flow.addTransitionElement(parseStop(reader));
             break;
           default:
             throw BatchLogger.LOGGER.unexpectedXmlElement(
                 reader.getLocalName(), reader.getLocation());
         }
         break;
       case END_ELEMENT:
         switch (element) {
           case FLOW:
             return flow;
           default:
             throw BatchLogger.LOGGER.unexpectedXmlElement(
                 reader.getLocalName(), reader.getLocation());
         }
     }
   }
   throw BatchLogger.LOGGER.unexpectedXmlElement(reader.getLocalName(), reader.getLocation());
 }