static public XMLEventReaderHandle XMLEventReaderToHandle(XMLEventReader value) { return (value == null) ? null : new XMLEventReaderHandle(value); } static public Stream<XMLEventReaderHandle> XMLEventReaderToHandle(Stream<? extends XMLEventReader> values) {
/** * Initializes the handle with a StAX event reader for the content. * @param content a StAX event reader */ public XMLEventReaderHandle(XMLEventReader content) { this(); set(content); }
/** * Returns the factory for parsing StAX events. * @return the StAX factory */ public XMLInputFactory getFactory() { if (factory == null) factory = makeXMLInputFactory(); return factory; } /**
assertXMLEqual("Failed to write StAX stream", docIn, docOut); XMLEventReaderHandle eventHandle = new XMLEventReaderHandle(); eventHandle.set( eventHandle.getFactory().createXMLEventReader( new StringReader(docIn)
assertXMLEqual("String buffering",beforeStr,new String(after)); XMLEventReaderHandle eventReaderH = new XMLEventReaderHandle(); eventReaderH.fromBuffer(before); after = eventReaderH.toBuffer(); assertNotNull("EventReader after",after); assertXMLEqual("EventReader buffering",beforeStr,new String(after));
@Override public ExtensionLibraryDescriptor[] list(String directory) throws ResourceNotFoundException, ForbiddenUserException, FailedRequestException { XMLEventReaderHandle handle = services.getResource(requestLogger, directory, null, new XMLEventReaderHandle()); XMLEventReader reader = handle.get(); List<ExtensionLibraryDescriptor> modules = new ArrayList<ExtensionLibraryDescriptor>(); while (reader.hasNext()) { XMLEvent event; try { event = reader.nextEvent(); if (event.isCharacters()) { String modulePath = event.asCharacters().getData(); ExtensionLibraryDescriptor module = new ExtensionLibraryDescriptor(); module.setPath(modulePath); modules.add(module); } } catch (XMLStreamException e) { throw new MarkLogicIOException(e); } } return modules.toArray(new ExtensionLibraryDescriptor[] {}); }
@Override public byte[] toBuffer() { try { if (content == null) return null; ByteArrayOutputStream buffer = new ByteArrayOutputStream(); write(buffer); byte[] b = buffer.toByteArray(); fromBuffer(b); return b; } catch (IOException e) { throw new MarkLogicIOException(e); } } /**
/** * Buffers the StAX event source and returns the buffer * as an XML string. */ @Override public String toString() { try { return new String(toBuffer(),"UTF-8"); } catch (UnsupportedEncodingException e) { throw new MarkLogicIOException(e); } }
@Override protected void receiveContent(InputStream content) { if (content == null) { this.content = null; return; } try { if (logger.isInfoEnabled()) logger.info("Parsing StAX events from input stream"); XMLInputFactory factory = getFactory(); if (factory == null) { throw new MarkLogicInternalException("Failed to make StAX input factory"); } if (resolver != null) factory.setXMLResolver(resolver); this.content = factory.createXMLEventReader(content, "UTF-8"); } catch (XMLStreamException e) { logger.error("Failed to parse StAX events from input stream",e); throw new MarkLogicInternalException(e); } catch (FactoryConfigurationError e) { logger.error("Failed to parse StAX events from input stream",e); throw new MarkLogicInternalException(e); } } @Override
/** * Specifies the mime type of the content and returns the handle * as a fluent convenience. * @param mimetype the mime type of the content * @return this handle */ public XMLEventReaderHandle withMimetype(String mimetype) { setMimetype(mimetype); return this; }
@Override public void fromBuffer(byte[] buffer) { if (buffer == null || buffer.length == 0) content = null; else receiveContent(new ByteArrayInputStream(buffer)); } @Override
public static HandleFactoryRegistry registerDefaults(HandleFactoryRegistry registry) { registry.register(BytesHandle.newFactory()); registry.register(DOMHandle.newFactory()); registry.register(FileHandle.newFactory()); registry.register(InputSourceHandle.newFactory()); registry.register(InputStreamHandle.newFactory()); registry.register(ReaderHandle.newFactory()); registry.register(SourceHandle.newFactory()); registry.register(StringHandle.newFactory()); registry.register(XMLEventReaderHandle.newFactory()); registry.register(XMLStreamReaderHandle.newFactory()); return registry; }
@Override public ExtensionLibraryDescriptor[] list(String directory) throws ResourceNotFoundException, ForbiddenUserException, FailedRequestException { XMLEventReaderHandle handle = services.getResource(requestLogger, directory, null, null, new XMLEventReaderHandle()); XMLEventReader reader = handle.get(); List<ExtensionLibraryDescriptor> modules = new ArrayList<>(); while (reader.hasNext()) { XMLEvent event; try { event = reader.nextEvent(); if (event.isCharacters()) { String modulePath = event.asCharacters().getData(); ExtensionLibraryDescriptor module = new ExtensionLibraryDescriptor(); module.setPath(modulePath); modules.add(module); } } catch (XMLStreamException e) { throw new MarkLogicIOException(e); } } return modules.toArray(new ExtensionLibraryDescriptor[] {}); }
@Override public byte[] toBuffer() { try { if (content == null) return null; ByteArrayOutputStream buffer = new ByteArrayOutputStream(); write(buffer); byte[] b = buffer.toByteArray(); fromBuffer(b); return b; } catch (IOException e) { throw new MarkLogicIOException(e); } } /**
/** * Buffers the StAX event source and returns the buffer * as an XML string. */ @Override public String toString() { try { return new String(toBuffer(),"UTF-8"); } catch (UnsupportedEncodingException e) { throw new MarkLogicIOException(e); } }
@Override protected void receiveContent(InputStream content) { if (content == null) { this.content = null; return; } this.underlyingStream = content; try { if (logger.isInfoEnabled()) logger.info("Parsing StAX events from input stream"); XMLInputFactory factory = getFactory(); if (factory == null) { throw new MarkLogicInternalException("Failed to make StAX input factory"); } if (resolver != null) factory.setXMLResolver(resolver); this.content = factory.createXMLEventReader(content, "UTF-8"); } catch (XMLStreamException e) { logger.error("Failed to parse StAX events from input stream",e); throw new MarkLogicInternalException(e); } catch (FactoryConfigurationError e) { logger.error("Failed to parse StAX events from input stream",e); throw new MarkLogicInternalException(e); } } @Override
/** * Specifies the mime type of the content and returns the handle * as a fluent convenience. * @param mimetype the mime type of the content * @return this handle */ public XMLEventReaderHandle withMimetype(String mimetype) { setMimetype(mimetype); return this; }
@Override public void fromBuffer(byte[] buffer) { if (buffer == null || buffer.length == 0) content = null; else receiveContent(new ByteArrayInputStream(buffer)); } @Override
public static HandleFactoryRegistry registerDefaults(HandleFactoryRegistry registry) { registry.register(BytesHandle.newFactory()); registry.register(DOMHandle.newFactory()); registry.register(FileHandle.newFactory()); registry.register(InputSourceHandle.newFactory()); registry.register(InputStreamHandle.newFactory()); registry.register(JacksonHandle.newFactory()); registry.register(JacksonParserHandle.newFactory()); registry.register(ReaderHandle.newFactory()); registry.register(SourceHandle.newFactory()); registry.register(StringHandle.newFactory()); registry.register(XMLEventReaderHandle.newFactory()); registry.register(XMLStreamReaderHandle.newFactory()); return registry; }
elementCount == 2 && attributeCount == 2); XMLEventReader eventReader = docMgr.read(docId, new XMLEventReaderHandle()).get(); elementCount = 0; attributeCount = 0;