private ODataError error()

in lib/client-core/src/main/java/org/apache/olingo/client/core/serialization/AtomDeserializer.java [847:919]


  private ODataError error(final XMLEventReader reader, final StartElement start) throws XMLStreamException {
    final ODataError error = new ODataError();
    error.setDetails(new ArrayList<ODataErrorDetail>(0));
    ODataErrorDetail errorDetail = null;
    
    boolean setCode = false;
    boolean codeSet = false;
    boolean setMessage = false;
    boolean messageSet = false;
    boolean setTarget = false;
    boolean targetSet = false;
    boolean isDetails = false;

    boolean foundEndElement = false;
    while (reader.hasNext() && !foundEndElement) {
      final XMLEvent event = reader.nextEvent();
      
      if (event.isStartElement()) {
        if (errorCodeQName.equals(event.asStartElement().getName())) {
          setCode = true;
        } else if (errorMessageQName.equals(event.asStartElement().getName())) {
          setMessage = true;
        } else if (errorTargetQName.equals(event.asStartElement().getName())) {
          setTarget = true;
        } else if (errorDetailQName.equals(event.asStartElement().getName())){
          isDetails = true;
          errorDetail = new ODataErrorDetail();
        }
      }

      if (event.isCharacters() && !event.asCharacters().isWhiteSpace()) {
        if (setCode && !codeSet) {
          error.setCode(event.asCharacters().getData());
          setCode = false;
          codeSet = true;
        }
        if (setMessage && !messageSet) {
          error.setMessage(event.asCharacters().getData());
          setMessage = false;
          messageSet = true;
        }
        if (setTarget && !targetSet) {
          error.setTarget(event.asCharacters().getData());
          setTarget = false;
          targetSet = true;
        }
        // DETAIL Error
        if(setCode && isDetails){
          errorDetail.setCode(event.asCharacters().getData());
          setCode = false;
        }
        if(setMessage && isDetails){
          errorDetail.setMessage(event.asCharacters().getData());
          setMessage = false;
        }
        if(setTarget && isDetails){
          errorDetail.setTarget(event.asCharacters().getData());
          setTarget = false;
        }        
      }
      
      if(event.isEndElement() && errorDetailQName.equals(event.asEndElement().getName())){
          isDetails = false;
          error.getDetails().add(errorDetail);
      }
      
      if (event.isEndElement() && start.getName().equals(event.asEndElement().getName())) {
        foundEndElement = true;
      }
    }

    return error;
  }