All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.dellroad.stuff.pobj.UpdatesXMLStreamReader Maven / Gradle / Ivy


/*
 * Copyright (C) 2012 Archie L. Cobbs. All rights reserved.
 */

package org.dellroad.stuff.pobj;

import java.util.ArrayList;
import java.util.List;

import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamReader;

import org.dellroad.stuff.xml.AnnotatedXMLStreamReader;

/**
 * {@link AnnotatedXMLStreamReader} that reads the nested schema update list. Used by {@link PersistentObjectSchemaUpdater}.
 */
public class UpdatesXMLStreamReader extends AnnotatedXMLStreamReader {

    private ArrayList updates;

    public UpdatesXMLStreamReader(XMLStreamReader inner) {
        super(inner);
    }

    /**
     * Get the updates gleaned from the scan.
     *
     * @return list of updates, or null if the document didn't contain an updates element
     */
    public List getUpdates() {
        return this.updates;
    }

    @Override
    protected boolean readAnnotationElement(XMLStreamReader reader) throws XMLStreamException {

        // Check element name
        if (reader.getEventType() != START_ELEMENT || !reader.getName().equals(PersistentObjectSchemaUpdater.UPDATES_ELEMENT_NAME))
            return false;

        // Read updates
        this.updates = new ArrayList();
        while (true) {

            // Ignore leading whitespace, comments, and PI's
            int eventType = reader.next();
            while (reader.isWhiteSpace() || eventType == COMMENT || eventType == PROCESSING_INSTRUCTION)
                eventType = reader.next();

            // Done with updates?
            if (reader.isEndElement())
                return true;

            // Read text
            reader.require(START_ELEMENT, PersistentObjectSchemaUpdater.UPDATE_ELEMENT_NAME.getNamespaceURI(),
              PersistentObjectSchemaUpdater.UPDATE_ELEMENT_NAME.getLocalPart());
            this.updates.add(reader.getElementText());
        }
    }
}





© 2015 - 2025 Weber Informatics LLC | Privacy Policy