java - Why isn't my PrintWriter writing out to by ByteArrayOutputStream? -
i have httpservletresponsewrapper
overrides getoutputstream()
simple bytearrayoutputstream
. whenever pass wrapped response, nothing ever gets written bytearrayoutputstream
.
what doing wrong?
the wrapper
private static class responsewrapper extends httpservletresponsewrapper { private bytearrayoutputstream responsebytes; public responsewrapper(httpservletresponse response) { super(response); responsebytes = new bytearrayoutputstream(); } public byte[] getbytes() { return responsebytes.tobytearray(); } @override public servletoutputstream getoutputstream() { return new servletoutputstream() { private writelistener writelistener; @override public boolean isready() { return true; } @override public void setwritelistener(writelistener writelistener) { this.writelistener = writelistener; } @override public void write(int b) throws ioexception { responsebytes.write(b); optional.ofnullable(writelistener).ifpresent(writelistener::notify); } };} @override public printwriter getwriter() { return new printwriter(getoutputstream()); } }
passing around wrapped response
@override public void render(map<string, ?> model, httpservletrequest request, httpservletresponse response) throws exception { // create new byte array outputstream , writer uses outputstream // create new response wrapper , 'hi-jack' outputstream responsewrapper responsewrapper = new responsewrapper(response); view.render(model, request, responsewrapper); byte[] htmlbytes = responsewrapper.getbytes(); if (htmlbytes.length == 0) { throw new phantompdfexception( "the rendered html response template empty. " // empty ); } // more code...
any ideas?
thanks!
Comments
Post a Comment