private void registerRequestSetChunkHandler(final PrintWriter out, final XMLChunkReader chunkReader) { chunkReader.addHandler(PDP_REQUESTSET_NAME, new XMLChunkHandlerAdapter() { public void handleChunkStart(final List<QName> currentXPath, final QName handlerQName) { out.write("<ResponseSet xmlns=\""); out.write(PDP_REQUESTSET_NAME.getNamespaceURI()); out.write("\">"); } public void handleChunkEnd(final List<QName> currentXPath, final QName handlerQName, final String xmlChunk) { out.write("</ResponseSet>"); } }); }
XMLChunkReader xmlChunkReader = new XMLChunkReader(); XMLChunkReader chunkParser = xmlChunkReader.addHandler( ResponseDocument.type.getDocumentElementName(), new XMLChunkHandlerAdapter() { public void handleChunkEnd(final List xpath, final QName handlerQName, chunkParser.addHandler(new QName("urn:oasis:names:tc:xacml:2.0:context:schema:os", "Response"), new XACML2ResponseChunkHandler(responseSet)); chunkParser.read(new InputSource(httpResponse.getContent())); } else {
/** * Initiates reading an XML source and invokes the registered handlers. * * @param source * the source. * @throws XMLStreamException * if error occurs. */ public void read(final InputSource source) { Set<QName> qnames = qnameToChunkHandler.keySet(); XMLChunkIterator chunkIterator = new XMLChunkIterator(source, qnames.toArray(new QName[qnames.size()])); while (chunkIterator.hasNext()) { XMLChunk chunk = chunkIterator.next(); if (chunk.isStart()) { handleChunkStart(chunk); } else { handleChunkEnd(chunk); } } }
final PrintWriter out = new PrintWriter(new OutputStreamWriter(chunkedOutStream, "UTF-8"), false); final XMLChunkReader chunkReader = new XMLChunkReader(); chunkReader.read(requestSource); } catch (Exception e) { LOG.error("Could not evaluate PDP response", e);
/** * Handles a chunk start. */ private void handleChunkStart(final XMLChunk chunk) { List<QName> xpath = Collections.unmodifiableList(chunk.getXpath()); XMLChunkHandler handler = getHandler(chunk.getStartElement()); if (chunk.hasParent()) { XMLChunk parentChunk = chunk.getParent(); XMLChunkHandler parentHandler = getHandler(parentChunk.getStartElement()); parentHandler.handleChunkBeforChildHandler( xpath, parentChunk.getStartElement(), parentChunk.getChunk(), chunk.getStartElement(), handler); } handler.handleChunkStart(xpath, chunk.getStartElement()); }
/** * Handler function of the end chunk event. */ private void handleChunkEnd(final XMLChunk chunk) { List<QName> xpath = Collections.unmodifiableList(chunk.getXpath()); XMLChunkHandler handler = getHandler(chunk.getStartElement()); handler.handleChunkEnd(xpath, chunk.getStartElement(), chunk.getChunk()); if (chunk.hasParent()) { XMLChunk parentChunk = chunk.getParent(); XMLChunkHandler parentHandler = getHandler(parentChunk.getStartElement()); parentHandler.handleChunkAfterChildHandler( xpath, parentChunk.getStartElement(), parentChunk.getChunk(), chunk.getStartElement(), handler); } }
private void registerSoapBodyChunkHandler(final PrintWriter out, final XMLChunkReader chunkReader) { chunkReader.addHandler(SOAP_BODY, new XMLChunkHandlerAdapter() { public void handleChunkStart(final List<QName> currentXPath, final QName handlerQName) { out.write("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"); out.write("<Envelope xmlns=\""); out.write(SOAP_BODY.getNamespaceURI()); out.write("\"><Body>"); } public void handleChunkEnd(final List<QName> currentXPath, final QName handlerQName, final String xmlChunk) { out.write("</Body></Envelope>"); } }); }
/** * Register handler which evaluates the special reset request. */ protected void registerResetChunkHandler(final PrintWriter out, final XMLChunkReader chunkReader) { chunkReader.addHandler(PDP_RESET_NAME, new XMLChunkHandlerAdapter() { public void handleChunkEnd(final List<QName> currentXPath, final QName handlerQName, final String xmlChunk) { getDecisionService().update(); out.write("<ResetResponse xmlns=\""); out.write(PDP_RESET_NAME.getNamespaceURI()); out.write("\" success=\"true\" />"); } }); }
chunkReader.addHandler(PDP_REQUEST_NAME_V1, requestChunkHandler); chunkReader.addHandler(PDP_REQUEST_NAME_V2, requestChunkHandler); chunkReader.addHandler(PDP_REQUEST_NAME_NO_NS, requestChunkHandler);