Passing something that allows you to produce the byte []?
Sent from Samsung Mobile -------- Original message -------- From: Bruce Lombardi <[email protected]> Date:13/03/2015 20:20 (GMT+01:00) To: [email protected] Subject: RE: PDF viewed in panel via ResourceReference works in 6.12 but not in 6.13 Thanks Ernesto, I don't know how to pass a byte[] as a parameter. Bruce -----Original Message----- From: Ernesto Reinaldo Barreiro [mailto:[email protected]] Sent: Friday, March 13, 2015 2:20 PM To: [email protected] Subject: Re: PDF viewed in panel via ResourceReference works in 6.12 but not in 6.13 Pass the info as parameters on the request to the mounted resource? On Fri, Mar 13, 2015 at 7:15 PM, Bruce Lombardi <[email protected]> wrote: > Martin, > > I'm looking into mounting the resource but there is something that I > don't understand. > Currently I am creating the resource in my panel and passing the pdf I > want to display into the constructor of the resource. If I mount the > resource, how do I provide it with the dynamically generated pdf? I > don't even see a way of getting a hold of the resourceReference object > created and mounted in the WebApplication init() method. Perhaps I > need to also register it as an application-shared resource, then > access it in my panel constructor and add the pdf there? > > Bruce > > -----Original Message----- > From: Martin Grigorov [mailto:[email protected]] > Sent: Friday, March 13, 2015 12:53 PM > To: [email protected] > Subject: Re: PDF viewed in panel via ResourceReference works in 6.12 > but not in 6.13 > > Hi, > > I think I see what happens. > The ResRef is created as a local variable to create the url and then > discarded. > Wicket has something called ResourceReferenceRegistry. When a ResRef > is used to create an url to it it is automatically registered in the registry. > It seems after 6.13 there is no such auto-registration for your ResRef > for some reason. > You should have some WARNs in the logs. > > I see nothing component specific in your ResRef so I'd #mountResource() it. > This way it will be always available. > > > Martin Grigorov > Freelancer, available for hire! > Wicket Training and Consulting > https://twitter.com/mtgrigorov > > On Fri, Mar 13, 2015 at 6:40 PM, Bruce Lombardi <[email protected]> > wrote: > > > I have a PdfViewer page that contains a panel that displays a > > dynamically generated PDF using a resource reference. This works > > fine in Wicket 6.12.0, but when I upgrade to 6.13.0 it stops working > > (just changed Maven dependency > > - no code changes). No errors are displayed and the html is > > generated exactly as it is with 6.12, but the pdf does not show up in the > > page. > > > > By setting a breakpoint in Eclipse I have determined that code in > > the resource that produces the response (newResourceResponse) is > > never called in 6.13. After migrating to the latest version (6.19) I > > still get the problem. > > I've looked at the release notes for version 6.13 and see some > > changes related to IResource but nothing that looks related to this problem. > > > > I'm hoping someone has seen something similar. Here is some of the > > relevant > > code: > > > > PdfViewer .html - just has reference to panel > > > > <div wicket:id="pdfPanel"></div> > > > > > > > > PdfPane.html - just has object reference > > > > Raw HTML > > > > <object wicket:id="pdf" data="" border="1" width="80%" > > height="80%"></object> > > > > > > > > Generated HTML - seen with view source in browser > > > > <object > data="./resource/org.apache.wicket.Application/pdfProducer" > > > > border="1" width="80%" height="80%"></object> > > > > > > > > PdfPanel.java - has setup for resource reference > > > > public class PdfPanel extends Panel { > > > > > > > > private static final long serialVersionUID = 1L; > > > > > > > > public PdfPanel(String id) { > > > > super(id); > > > > > > > > ResourceReference resourceReference = new > > ResourceReference( > > > > "pdfProducer") { > > > > private static final long serialVersionUID = > > 1L; > > > > > > > > @Override > > > > public IResource getResource() { > > > > WebDocsSession session = > > (WebDocsSession)getSession(); > > > > > > > > final byte[] pdf = session.getPdf(); > > > > > > > > if(pdf == null) > > > > System.out.println("PdfPanel session.getPdf returned null"); > > > > > > > > PdfResourceProducer pdfResourceProducer = > > > > new PdfResourceProducer(pdf); > > > > > > > > return pdfResourceProducer; > > > > } > > > > }; > > > > > > > > String url = > > (String)RequestCycle.get().urlFor(resourceReference, > > null); > > > > > > > > MarkupContainer wmc = new WebMarkupContainer("pdf"); > > > > wmc.add(new AttributeModifier("data", url)); > > > > add(wmc); > > > > } > > > > > > > > PdfProducer.java - implements the Resource > > > > public class PdfResourceProducer extends > > AbstractResource { > > > > > > > > private static final long serialVersionUID = > > -2245331056747467763L; > > > > final byte[] pdfByteArray; > > > > > > > > > > > > public PdfResourceProducer(byte[] pdfByteArray) { > > > > super(); > > > > this.pdfByteArray = pdfByteArray; > > > > if(pdfByteArray == null) { > > > > System.out.println("PdfResourceProducer > > constructor called with > > > > null byte array."); > > > > } > > > > } > > > > > > > > @Override > > > > protected ResourceResponse newResourceResponse(Attributes > > attributes) > > { > > > > ResourceResponse resourceResponse = new > > ResourceResponse(); > > > > resourceResponse.setContentType("application/pdf"); > > > > // resourceResponse.setTextEncoding("utf-8"); > > > > > > > > > > resourceResponse.setContentLength((int)pdfByteArray.length); > > > > > > > > resourceResponse.disableCaching(); //do not allow > > resource to be cached. > > > > > > > > resourceResponse.setWriteCallback(new WriteCallback() > > { > > > > @Override > > > > public void writeData(Attributes attributes) > > throws IOException { > > > > try { > > > > OutputStream outputStream = > > attributes.getResponse() > > > > .getOutputStream(); > > > > outputStream.write(pdfByteArray); > > > > outputStream.flush(); > > > > } catch (IOException e) { > > > > throw new WicketRuntimeException( > > > > "Problems writing > > pdf to response..."); > > > > } > > > > } > > > > }); > > > > > > > > return resourceResponse; > > > > } > > > > > > > > Bruce > > > > > > > > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [email protected] > For additional commands, e-mail: [email protected] > > -- Regards - Ernesto Reinaldo Barreiro --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
