Subject: Re: JasperReports progress
Date: Wednesday, April 4, 2012, 6:56 AM
Seems to me like D2W integration of
long response pages is your issue here and the d2wcontext is
getting lost. CCAjaxLongResponsePage knows nothing about D2W
for a start, neither the nextpage controllers being used
there. The jasper task is a background Callable task that
returns a File result. The Jasper example project is not a
D2W project. So, at this stage I have to defer to the D2W
experts on the list for advice on integrating a background
task with a File (to be downloaded result) into a D2W
scenario.
The iReport
MUST match the JasperReports version in this
project. You have been warned.
Look in Libraries directory of this project for the jar
named something like jasperreports-X.X.X.jar.
That file has the current version number.
Currently Wonder version is at 3.7.4. It will probably stay
that way for a while. Jasper has many other dependencies and
those dependencies are used across other Wonder projects
.... iText for example. So it is not just a case of drop the
latest jasper and all its dependencies into Libraries.
On Apr 3, 2012, at 10:48 PM, Theodore Petrosky wrote:
here's what we have.
in a stock D2W app there is a method in pageWrapper:
public String bodyClass() {
String result =
null;
String pageConfig =
(String)d2wContext().valueForKey("pageConfiguration");
if (pageConfig != null &&
pageConfig.length() > 0) {
result =
pageConfig + "Body";
}
return result;
}
Obviously it is setting the css class for the context.
When I return from making the jasper report pdf, the
d2wcontect is null and there is the NPE.
as a work around, I added to the method that checks the
context:
if (d2wContext() != null)
{
NSLog.out.appendln("*** pageWrapper
pageConfiguration is not null = ***** ");
(String)d2wContext().valueForKey("pageConfiguration");
}
I get a very ugly page. now I can figure out why the
compiled jasper report is not using any of the fonts that I
am specifying.
Are there any gotchas with the different versions of
iReport and the version of Jasper Reports in wonder?
wrote:
Subject: Re: JasperReports progress
Date: Tuesday, April 3, 2012, 6:34 PM
The NPE is
at:
at
com.as.application.ui.components.PageWrapper.bodyClass(PageWrapper.java:27)
that is your component ..... so why don't you look
there to
see what is causing the NPE?
On Apr 3, 2012, at 4:00 PM, Theodore Petrosky
wrote:
So I've made progress but am stumped. I created
a
customcomponent and used a rule to make one of the
displayPropertyKeys a hyperlink.
I
am basically using the JasperReportExample. I
created
a hyperlink as one of the property keys. this will
fire off
the method that starts the jasper reports process:
public WOActionResults printBrief()
{
theBrief =
(Brief)object();
Callable<File> reportTask =
Reports.createBriefReportTask(theBrief);
CCAjaxLongResponsePage nextPage =
pageWithName(CCAjaxLongResponsePage.class);
the task
into the long response page
nextPage.setTask(reportTask);
Controller for
handling the Callable result in the long response
page
FileTaskDownloadController nextPageController =
new
FileTaskDownloadController();
Hyperlink text
on the "Your file is downloaded page" to get back
here
nextPageController.setReturnLinkText("Reports
Menu");
filename
nextPageController.setDownloadFileNameForClient("BriefReport.pdf");
nextPage.setNextPageForResultController(nextPageController);
NSLog.out.appendln("*** nextPage = ***** " +
nextPage);
nextPage;
}
Here is the Reports method:
public static
Callable<File>
createBriefReportTask(Brief b) {
String
reportDescription = "Printed Brief";
HashMap<String, Object> parameters = new
HashMap<String, Object>();
parameters.put("reportDescription",
reportDescription);
parameters.put("userName", "User From session");
EOQualifier
qualifier = ERXQ.equals(Brief.JOB_NUMBER_KEY,
b.jobNumber());
ERXFetchSpecification<Brief> fs = new
ERXFetchSpecification<Brief>(Brief.ENTITY_NAME,
qualifier, null);
ERJRFetchSpecificationReportTask reportTask = new
ERJRFetchSpecificationReportTask(fs,
jasperCompiledReportFileName, parameters);
reportTask;
}
indeed it goes out and starts to create the
pdf. I see
the the pdf in
/var/folders/2d/23408oihsdvh08r23/T/Brief3234987239872398472.pdf
However, just when DownloadIsComplete's
appendToResponse method is called I get errors:
Apr 03 15:33:34 ASBriefsD2W[57285] WARN
NSLog
-
<com.webobjects.appserver._private.WOComponentRequestHandler>:
Exception occurred while handling request:
java.lang.NullPointerException
[2012-4-3 15:33:34 EDT] <WorkerThread0>
java.lang.NullPointerException
at
com.as.application.ui.components.PageWrapper.bodyClass(PageWrapper.java:27)
at
sun.reflect.NativeMethodAccessorImpl.invoke0(Native
Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at
java.lang.reflect.Method.invoke(Method.java:597)
at
com.webobjects.foundation.NSKeyValueCoding$ValueAccessor$1.methodValue(NSKeyValueCoding.java:636)
at
com.webobjects.foundation.NSKeyValueCoding$_MethodBinding.valueInObject(NSKeyValueCoding.java:1134)
at
com.webobjects.foundation.NSKeyValueCoding$DefaultImplementation.valueForKey(NSKeyValueCoding.java:1324)
at
com.webobjects.appserver.WOComponent.valueForKey(WOComponent.java:1736)
at
com.webobjects.foundation.NSKeyValueCoding$Utility.valueForKey(NSKeyValueCoding.java:447)
at
com.webobjects.foundation.NSKeyValueCodingAdditions$DefaultImplementation.valueForKeyPath(NSKeyValueCodingAdditions.java:212)
at
com.webobjects.appserver.WOComponent.valueForKeyPath(WOComponent.java:1804)
at
com.webobjects.appserver._private.WOKeyValueAssociation.valueInComponent(WOKeyValueAssociation.java:50)