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());
}
}
}
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;
}
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();
}
}
}
}
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"));
}
}
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;
}
Aggregations