Search in sources :

Example 1 with Location

use of javax.xml.stream.Location in project spring-framework by spring-projects.

the class StaxStreamXMLReader method handleStartDocument.

private void handleStartDocument() throws SAXException {
    if (XMLStreamConstants.START_DOCUMENT == this.reader.getEventType()) {
        String xmlVersion = this.reader.getVersion();
        if (StringUtils.hasLength(xmlVersion)) {
            this.xmlVersion = xmlVersion;
        }
        this.encoding = this.reader.getCharacterEncodingScheme();
    }
    if (getContentHandler() != null) {
        final Location location = this.reader.getLocation();
        getContentHandler().setDocumentLocator(new Locator2() {

            @Override
            public int getColumnNumber() {
                return (location != null ? location.getColumnNumber() : -1);
            }

            @Override
            public int getLineNumber() {
                return (location != null ? location.getLineNumber() : -1);
            }

            @Override
            public String getPublicId() {
                return (location != null ? location.getPublicId() : null);
            }

            @Override
            public String getSystemId() {
                return (location != null ? location.getSystemId() : null);
            }

            @Override
            public String getXMLVersion() {
                return xmlVersion;
            }

            @Override
            public String getEncoding() {
                return encoding;
            }
        });
        getContentHandler().startDocument();
        if (this.reader.standaloneSet()) {
            setStandalone(this.reader.isStandalone());
        }
    }
}
Also used : Locator2(org.xml.sax.ext.Locator2) Location(javax.xml.stream.Location)

Example 2 with Location

use of javax.xml.stream.Location in project gephi by gephi.

the class LoadTask method readProject.

private ProjectImpl readProject(ZipFile zipFile) throws Exception {
    ZipEntry entry = zipFile.getEntry("Project_xml");
    if (entry == null) {
        // Try legacy
        entry = zipFile.getEntry("Project");
    }
    if (entry != null) {
        InputStream is = null;
        try {
            is = zipFile.getInputStream(entry);
            InputStreamReader isReader = null;
            Xml10FilterReader filterReader = null;
            XMLStreamReader reader = null;
            try {
                XMLInputFactory inputFactory = XMLInputFactory.newInstance();
                if (inputFactory.isPropertySupported("javax.xml.stream.isValidating")) {
                    inputFactory.setProperty("javax.xml.stream.isValidating", Boolean.FALSE);
                }
                inputFactory.setXMLReporter(new XMLReporter() {

                    @Override
                    public void report(String message, String errorType, Object relatedInformation, Location location) throws XMLStreamException {
                    }
                });
                isReader = new InputStreamReader(is, "UTF-8");
                filterReader = new Xml10FilterReader(isReader);
                reader = inputFactory.createXMLStreamReader(filterReader);
                ProjectControllerImpl projectController = Lookup.getDefault().lookup(ProjectControllerImpl.class);
                ProjectsImpl projects = projectController.getProjects();
                ProjectImpl project = GephiReader.readProject(reader, projects);
                project.getLookup().lookup(ProjectInformationImpl.class).setFile(file);
                return project;
            } finally {
                if (reader != null) {
                    reader.close();
                }
                if (filterReader != null) {
                    filterReader.close();
                }
            }
        } finally {
            if (is != null) {
                is.close();
            }
        }
    }
    return null;
}
Also used : ProjectControllerImpl(org.gephi.project.impl.ProjectControllerImpl) XMLStreamReader(javax.xml.stream.XMLStreamReader) InputStreamReader(java.io.InputStreamReader) DataInputStream(java.io.DataInputStream) InputStream(java.io.InputStream) ProjectImpl(org.gephi.project.impl.ProjectImpl) ZipEntry(java.util.zip.ZipEntry) ProjectsImpl(org.gephi.project.impl.ProjectsImpl) XMLReporter(javax.xml.stream.XMLReporter) XMLStreamException(javax.xml.stream.XMLStreamException) XMLInputFactory(javax.xml.stream.XMLInputFactory) ProjectInformationImpl(org.gephi.project.impl.ProjectInformationImpl) Location(javax.xml.stream.Location)

Example 3 with Location

use of javax.xml.stream.Location in project gephi by gephi.

the class LoadTask method readWorkspaceChildrenXML.

private void readWorkspaceChildrenXML(WorkspaceXMLPersistenceProvider persistenceProvider, Workspace workspace, ZipFile zipFile) throws Exception {
    String identifier = persistenceProvider.getIdentifier();
    ZipEntry entry = zipFile.getEntry("Workspace_" + workspace.getId() + "_" + identifier + "_xml");
    if (entry != null) {
        InputStream is = null;
        try {
            is = zipFile.getInputStream(entry);
            InputStreamReader isReader = null;
            Xml10FilterReader filterReader = null;
            XMLStreamReader reader = null;
            try {
                XMLInputFactory inputFactory = XMLInputFactory.newInstance();
                if (inputFactory.isPropertySupported("javax.xml.stream.isValidating")) {
                    inputFactory.setProperty("javax.xml.stream.isValidating", Boolean.FALSE);
                }
                inputFactory.setXMLReporter(new XMLReporter() {

                    @Override
                    public void report(String message, String errorType, Object relatedInformation, Location location) throws XMLStreamException {
                    }
                });
                isReader = new InputStreamReader(is, "UTF-8");
                filterReader = new Xml10FilterReader(isReader);
                reader = inputFactory.createXMLStreamReader(filterReader);
                persistenceProvider.readXML(reader, workspace);
            } finally {
                if (reader != null) {
                    reader.close();
                }
                if (filterReader != null) {
                    filterReader.close();
                }
                if (isReader != null) {
                    isReader.close();
                }
            }
        } finally {
            if (is != null) {
                is.close();
            }
        }
    }
}
Also used : XMLStreamReader(javax.xml.stream.XMLStreamReader) XMLReporter(javax.xml.stream.XMLReporter) InputStreamReader(java.io.InputStreamReader) XMLStreamException(javax.xml.stream.XMLStreamException) DataInputStream(java.io.DataInputStream) InputStream(java.io.InputStream) ZipEntry(java.util.zip.ZipEntry) XMLInputFactory(javax.xml.stream.XMLInputFactory) Location(javax.xml.stream.Location)

Example 4 with Location

use of javax.xml.stream.Location in project gephi by gephi.

the class ImportUtils method getXMLReader.

public static XMLStreamReader getXMLReader(Reader reader) {
    try {
        XMLInputFactory inputFactory = XMLInputFactory.newInstance();
        if (inputFactory.isPropertySupported("javax.xml.stream.isValidating")) {
            inputFactory.setProperty("javax.xml.stream.isValidating", Boolean.FALSE);
        }
        inputFactory.setXMLReporter(new XMLReporter() {

            @Override
            public void report(String message, String errorType, Object relatedInformation, Location location) throws XMLStreamException {
                throw new RuntimeException("Error:" + errorType + ", message : " + message);
            //System.out.println("Error:" + errorType + ", message : " + message);
            }
        });
        return inputFactory.createXMLStreamReader(reader);
    } catch (XMLStreamException ex) {
        throw new RuntimeException(NbBundle.getMessage(ImportUtils.class, "ImportUtils.error_io"));
    }
}
Also used : XMLReporter(javax.xml.stream.XMLReporter) XMLStreamException(javax.xml.stream.XMLStreamException) FileObject(org.openide.filesystems.FileObject) XMLInputFactory(javax.xml.stream.XMLInputFactory) Location(javax.xml.stream.Location)

Example 5 with Location

use of javax.xml.stream.Location in project incubator-juneau by apache.

the class XmlParser method parseIntoBean.

private <T> BeanMap<T> parseIntoBean(XmlParserSession session, XMLStreamReader r, BeanMap<T> m) throws Exception {
    BeanMeta<?> bMeta = m.getMeta();
    XmlBeanMeta xmlMeta = bMeta.getExtendedMeta(XmlBeanMeta.class);
    for (int i = 0; i < r.getAttributeCount(); i++) {
        String key = session.getAttributeName(r, i);
        String val = r.getAttributeValue(i);
        BeanPropertyMeta bpm = xmlMeta.getPropertyMeta(key);
        if (bpm == null) {
            if (xmlMeta.getAttrsProperty() != null) {
                xmlMeta.getAttrsProperty().add(m, key, key, val);
            } else {
                Location l = r.getLocation();
                session.onUnknownProperty(key, m, l.getLineNumber(), l.getColumnNumber());
            }
        } else {
            bpm.set(m, key, val);
        }
    }
    BeanPropertyMeta cp = xmlMeta.getContentProperty();
    XmlFormat cpf = xmlMeta.getContentFormat();
    boolean trim = cp == null || !cpf.isOneOf(MIXED_PWS, TEXT_PWS);
    ClassMeta<?> cpcm = (cp == null ? session.object() : cp.getClassMeta());
    StringBuilder sb = null;
    BeanRegistry breg = cp == null ? null : cp.getBeanRegistry();
    LinkedList<Object> l = null;
    int depth = 0;
    do {
        int event = r.next();
        String currAttr;
        // Ignore if in ELEMENTS mode.
        if (event == CHARACTERS) {
            if (cp != null && cpf.isOneOf(MIXED, MIXED_PWS)) {
                if (cpcm.isCollectionOrArray()) {
                    if (l == null)
                        l = new LinkedList<Object>();
                    l.add(session.getText(r, false));
                } else {
                    cp.set(m, null, session.getText(r, trim));
                }
            } else if (cpf != ELEMENTS) {
                String s = session.getText(r, trim);
                if (s != null) {
                    if (sb == null)
                        sb = session.getStringBuilder();
                    sb.append(s);
                }
            } else {
            // Do nothing...we're in ELEMENTS mode.
            }
        } else if (event == START_ELEMENT) {
            if (cp != null && cpf.isOneOf(TEXT, TEXT_PWS)) {
                String s = session.parseText(r);
                if (s != null) {
                    if (sb == null)
                        sb = session.getStringBuilder();
                    sb.append(s);
                }
                depth--;
            } else if (cpf == XMLTEXT) {
                if (sb == null)
                    sb = session.getStringBuilder();
                sb.append(session.getElementAsString(r));
                depth++;
            } else if (cp != null && cpf.isOneOf(MIXED, MIXED_PWS)) {
                if (session.isWhitespaceElement(r) && (breg == null || !breg.hasName(r.getLocalName()))) {
                    if (cpcm.isCollectionOrArray()) {
                        if (l == null)
                            l = new LinkedList<Object>();
                        l.add(session.parseWhitespaceElement(r));
                    } else {
                        cp.set(m, null, session.parseWhitespaceElement(r));
                    }
                } else {
                    if (cpcm.isCollectionOrArray()) {
                        if (l == null)
                            l = new LinkedList<Object>();
                        l.add(parseAnything(session, cpcm.getElementType(), cp.getName(), r, m.getBean(false), false, cp));
                    } else {
                        cp.set(m, null, parseAnything(session, cpcm, cp.getName(), r, m.getBean(false), false, cp));
                    }
                }
            } else if (cp != null && cpf == ELEMENTS) {
                cp.add(m, null, parseAnything(session, cpcm.getElementType(), cp.getName(), r, m.getBean(false), false, cp));
            } else {
                currAttr = session.getElementName(r);
                BeanPropertyMeta pMeta = xmlMeta.getPropertyMeta(currAttr);
                if (pMeta == null) {
                    Location loc = r.getLocation();
                    session.onUnknownProperty(currAttr, m, loc.getLineNumber(), loc.getColumnNumber());
                    skipCurrentTag(r);
                } else {
                    session.setCurrentProperty(pMeta);
                    XmlFormat xf = pMeta.getExtendedMeta(XmlBeanPropertyMeta.class).getXmlFormat();
                    if (xf == COLLAPSED) {
                        ClassMeta<?> et = pMeta.getClassMeta().getElementType();
                        Object value = parseAnything(session, et, currAttr, r, m.getBean(false), false, pMeta);
                        setName(et, value, currAttr);
                        pMeta.add(m, currAttr, value);
                    } else if (xf == ATTR) {
                        pMeta.set(m, currAttr, session.getAttributeValue(r, 0));
                        r.nextTag();
                    } else {
                        ClassMeta<?> cm = pMeta.getClassMeta();
                        Object value = parseAnything(session, cm, currAttr, r, m.getBean(false), false, pMeta);
                        setName(cm, value, currAttr);
                        pMeta.set(m, currAttr, value);
                    }
                    session.setCurrentProperty(null);
                }
            }
        } else if (event == END_ELEMENT) {
            if (depth > 0) {
                if (cpf == XMLTEXT) {
                    if (sb == null)
                        sb = session.getStringBuilder();
                    sb.append(session.getElementAsString(r));
                } else
                    throw new ParseException("End element found where one was not expected.  {0}", XmlUtils.toReadableEvent(r));
            }
            depth--;
        } else {
            throw new ParseException("Unexpected event type: {0}", XmlUtils.toReadableEvent(r));
        }
    } while (depth >= 0);
    if (sb != null && cp != null)
        cp.set(m, null, sb.toString());
    else if (l != null && cp != null)
        cp.set(m, null, XmlUtils.collapseTextNodes(l));
    session.returnStringBuilder(sb);
    return m;
}
Also used : XmlFormat(org.apache.juneau.xml.annotation.XmlFormat) Location(javax.xml.stream.Location)

Aggregations

Location (javax.xml.stream.Location)15 XMLStreamException (javax.xml.stream.XMLStreamException)6 XMLInputFactory (javax.xml.stream.XMLInputFactory)5 XMLReporter (javax.xml.stream.XMLReporter)5 DataInputStream (java.io.DataInputStream)3 InputStream (java.io.InputStream)3 InputStreamReader (java.io.InputStreamReader)3 ZipEntry (java.util.zip.ZipEntry)3 XMLStreamReader (javax.xml.stream.XMLStreamReader)3 Locator2 (org.xml.sax.ext.Locator2)3 BigInteger (java.math.BigInteger)1 StartDocument (javax.xml.stream.events.StartDocument)1 XmlFormat (org.apache.juneau.xml.annotation.XmlFormat)1 CapabilityImpl (org.apache.karaf.features.internal.resolver.CapabilityImpl)1 ResourceImpl (org.apache.karaf.features.internal.resolver.ResourceImpl)1 Report (org.gephi.io.importer.api.Report)1 ProjectControllerImpl (org.gephi.project.impl.ProjectControllerImpl)1 ProjectImpl (org.gephi.project.impl.ProjectImpl)1 ProjectInformationImpl (org.gephi.project.impl.ProjectInformationImpl)1 ProjectsImpl (org.gephi.project.impl.ProjectsImpl)1