Skip to content

Commit e04fb15

Browse files
committed
Compilation compatibility with JasperReports 5.5.2
1 parent 782d10c commit e04fb15

File tree

9 files changed

+110
-78
lines changed

9 files changed

+110
-78
lines changed

spring-context-support/src/main/java/org/springframework/ui/jasperreports/JasperReportsUtils.java

Lines changed: 27 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2002-2012 the original author or authors.
2+
* Copyright 2002-2014 the original author or authors.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -23,26 +23,28 @@
2323

2424
import net.sf.jasperreports.engine.JRDataSource;
2525
import net.sf.jasperreports.engine.JRException;
26-
import net.sf.jasperreports.engine.JRExporter;
27-
import net.sf.jasperreports.engine.JRExporterParameter;
2826
import net.sf.jasperreports.engine.JasperFillManager;
2927
import net.sf.jasperreports.engine.JasperPrint;
3028
import net.sf.jasperreports.engine.JasperReport;
3129
import net.sf.jasperreports.engine.data.JRBeanArrayDataSource;
3230
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
3331
import net.sf.jasperreports.engine.export.JRCsvExporter;
34-
import net.sf.jasperreports.engine.export.JRHtmlExporter;
3532
import net.sf.jasperreports.engine.export.JRPdfExporter;
3633
import net.sf.jasperreports.engine.export.JRXlsExporter;
3734

3835
/**
3936
* Utility methods for working with JasperReports. Provides a set of convenience
4037
* methods for generating reports in a CSV, HTML, PDF and XLS formats.
4138
*
39+
* <p><b>This class is compatible with classic JasperReports releases back until 2.x.</b>
40+
* As a consequence, it keeps using the {@link net.sf.jasperreports.engine.JRExporter}
41+
* API which has been deprecated in early 2014.
42+
*
4243
* @author Rob Harrop
4344
* @author Juergen Hoeller
4445
* @since 1.1.3
4546
*/
47+
@SuppressWarnings({"deprecation", "rawtypes"})
4648
public abstract class JasperReportsUtils {
4749

4850
/**
@@ -84,11 +86,11 @@ else if (value instanceof Object[]) {
8486
* @param writer the {@code Writer} to write the result to
8587
* @throws JRException if rendering failed
8688
*/
87-
public static void render(JRExporter exporter, JasperPrint print, Writer writer)
89+
public static void render(net.sf.jasperreports.engine.JRExporter exporter, JasperPrint print, Writer writer)
8890
throws JRException {
8991

90-
exporter.setParameter(JRExporterParameter.JASPER_PRINT, print);
91-
exporter.setParameter(JRExporterParameter.OUTPUT_WRITER, writer);
92+
exporter.setParameter(net.sf.jasperreports.engine.JRExporterParameter.JASPER_PRINT, print);
93+
exporter.setParameter(net.sf.jasperreports.engine.JRExporterParameter.OUTPUT_WRITER, writer);
9294
exporter.exportReport();
9395
}
9496

@@ -103,11 +105,11 @@ public static void render(JRExporter exporter, JasperPrint print, Writer writer)
103105
* @param outputStream the {@code OutputStream} to write the result to
104106
* @throws JRException if rendering failed
105107
*/
106-
public static void render(JRExporter exporter, JasperPrint print, OutputStream outputStream)
107-
throws JRException {
108+
public static void render(net.sf.jasperreports.engine.JRExporter exporter, JasperPrint print,
109+
OutputStream outputStream) throws JRException {
108110

109-
exporter.setParameter(JRExporterParameter.JASPER_PRINT, print);
110-
exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, outputStream);
111+
exporter.setParameter(net.sf.jasperreports.engine.JRExporterParameter.JASPER_PRINT, print);
112+
exporter.setParameter(net.sf.jasperreports.engine.JRExporterParameter.OUTPUT_STREAM, outputStream);
111113
exporter.exportReport();
112114
}
113115

@@ -137,12 +139,13 @@ public static void renderAsCsv(JasperReport report, Map<String, Object> paramete
137139
* @param writer the {@code Writer} to write the rendered report to
138140
* @param reportData a {@code JRDataSource}, {@code java.util.Collection} or object array
139141
* (converted accordingly), representing the report data to read fields from
140-
* @param exporterParameters a {@link Map} of {@link JRExporterParameter exporter parameters}
142+
* @param exporterParameters a {@link Map} of {@code JRExporterParameter exporter parameters}
141143
* @throws JRException if rendering failed
142144
* @see #convertReportData
143145
*/
144146
public static void renderAsCsv(JasperReport report, Map<String, Object> parameters, Object reportData,
145-
Writer writer, Map<JRExporterParameter, Object> exporterParameters) throws JRException {
147+
Writer writer, Map<net.sf.jasperreports.engine.JRExporterParameter, Object> exporterParameters)
148+
throws JRException {
146149

147150
JasperPrint print = JasperFillManager.fillReport(report, parameters, convertReportData(reportData));
148151
JRCsvExporter exporter = new JRCsvExporter();
@@ -165,7 +168,7 @@ public static void renderAsHtml(JasperReport report, Map<String, Object> paramet
165168
Writer writer) throws JRException {
166169

167170
JasperPrint print = JasperFillManager.fillReport(report, parameters, convertReportData(reportData));
168-
render(new JRHtmlExporter(), print, writer);
171+
render(new net.sf.jasperreports.engine.export.JRHtmlExporter(), print, writer);
169172
}
170173

171174
/**
@@ -176,15 +179,16 @@ public static void renderAsHtml(JasperReport report, Map<String, Object> paramet
176179
* @param writer the {@code Writer} to write the rendered report to
177180
* @param reportData a {@code JRDataSource}, {@code java.util.Collection} or object array
178181
* (converted accordingly), representing the report data to read fields from
179-
* @param exporterParameters a {@link Map} of {@link JRExporterParameter exporter parameters}
182+
* @param exporterParameters a {@link Map} of {@code JRExporterParameter exporter parameters}
180183
* @throws JRException if rendering failed
181184
* @see #convertReportData
182185
*/
183186
public static void renderAsHtml(JasperReport report, Map<String, Object> parameters, Object reportData,
184-
Writer writer, Map<JRExporterParameter, Object> exporterParameters) throws JRException {
187+
Writer writer, Map<net.sf.jasperreports.engine.JRExporterParameter, Object> exporterParameters)
188+
throws JRException {
185189

186190
JasperPrint print = JasperFillManager.fillReport(report, parameters, convertReportData(reportData));
187-
JRHtmlExporter exporter = new JRHtmlExporter();
191+
net.sf.jasperreports.engine.export.JRHtmlExporter exporter = new net.sf.jasperreports.engine.export.JRHtmlExporter();
188192
exporter.setParameters(exporterParameters);
189193
render(exporter, print, writer);
190194
}
@@ -215,12 +219,13 @@ public static void renderAsPdf(JasperReport report, Map<String, Object> paramete
215219
* @param stream the {@code OutputStream} to write the rendered report to
216220
* @param reportData a {@code JRDataSource}, {@code java.util.Collection} or object array
217221
* (converted accordingly), representing the report data to read fields from
218-
* @param exporterParameters a {@link Map} of {@link JRExporterParameter exporter parameters}
222+
* @param exporterParameters a {@link Map} of {@code JRExporterParameter exporter parameters}
219223
* @throws JRException if rendering failed
220224
* @see #convertReportData
221225
*/
222226
public static void renderAsPdf(JasperReport report, Map<String, Object> parameters, Object reportData,
223-
OutputStream stream, Map<JRExporterParameter, Object> exporterParameters) throws JRException {
227+
OutputStream stream, Map<net.sf.jasperreports.engine.JRExporterParameter, Object> exporterParameters)
228+
throws JRException {
224229

225230
JasperPrint print = JasperFillManager.fillReport(report, parameters, convertReportData(reportData));
226231
JRPdfExporter exporter = new JRPdfExporter();
@@ -254,12 +259,13 @@ public static void renderAsXls(JasperReport report, Map<String, Object> paramete
254259
* @param stream the {@code OutputStream} to write the rendered report to
255260
* @param reportData a {@code JRDataSource}, {@code java.util.Collection} or object array
256261
* (converted accordingly), representing the report data to read fields from
257-
* @param exporterParameters a {@link Map} of {@link JRExporterParameter exporter parameters}
262+
* @param exporterParameters a {@link Map} of {@code JRExporterParameter exporter parameters}
258263
* @throws JRException if rendering failed
259264
* @see #convertReportData
260265
*/
261266
public static void renderAsXls(JasperReport report, Map<String, Object> parameters, Object reportData,
262-
OutputStream stream, Map<JRExporterParameter, Object> exporterParameters) throws JRException {
267+
OutputStream stream, Map<net.sf.jasperreports.engine.JRExporterParameter, Object> exporterParameters)
268+
throws JRException {
263269

264270
JasperPrint print = JasperFillManager.fillReport(report, parameters, convertReportData(reportData));
265271
JRXlsExporter exporter = new JRXlsExporter();

spring-context-support/src/test/java/org/springframework/ui/jasperreports/JasperReportsUtilsTests.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2002-2013 the original author or authors.
2+
* Copyright 2002-2014 the original author or authors.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -41,13 +41,13 @@
4141
import net.sf.jasperreports.engine.export.JRPdfExporterParameter;
4242
import net.sf.jasperreports.engine.export.JRXlsExporterParameter;
4343
import net.sf.jasperreports.engine.util.JRLoader;
44-
4544
import org.apache.poi.hssf.usermodel.HSSFCell;
4645
import org.apache.poi.hssf.usermodel.HSSFRow;
4746
import org.apache.poi.hssf.usermodel.HSSFSheet;
4847
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
4948
import org.junit.BeforeClass;
5049
import org.junit.Test;
50+
5151
import org.springframework.core.io.ClassPathResource;
5252
import org.springframework.tests.Assume;
5353

@@ -140,7 +140,7 @@ public void testRenderAsPdfWithCollection() throws Exception {
140140
public void testRenderAsPdfWithExporterParameters() throws Exception {
141141
ByteArrayOutputStream os = new ByteArrayOutputStream();
142142
Map<JRExporterParameter, Object> exporterParameters = new HashMap<JRExporterParameter, Object>();
143-
exporterParameters.put(JRPdfExporterParameter.PDF_VERSION, JRPdfExporterParameter.PDF_VERSION_1_6);
143+
exporterParameters.put(JRPdfExporterParameter.PDF_VERSION, JRPdfExporterParameter.PDF_VERSION_1_6.toString());
144144
JasperReportsUtils.renderAsPdf(getReport(), getParameters(), getData(), os, exporterParameters);
145145
byte[] output = os.toByteArray();
146146
assertPdfOutputCorrect(output);

spring-webmvc/src/main/java/org/springframework/web/servlet/view/jasperreports/AbstractJasperReportsSingleFormatView.java

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2002-2012 the original author or authors.
2+
* Copyright 2002-2014 the original author or authors.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -20,8 +20,6 @@
2020
import java.util.Map;
2121
import javax.servlet.http.HttpServletResponse;
2222

23-
import net.sf.jasperreports.engine.JRExporter;
24-
import net.sf.jasperreports.engine.JRExporterParameter;
2523
import net.sf.jasperreports.engine.JasperPrint;
2624

2725
import org.springframework.ui.jasperreports.JasperReportsUtils;
@@ -36,12 +34,17 @@
3634
* to create a JasperReports exporter for a specific output format, and
3735
* {@code useWriter} to determine whether to write text or binary content.
3836
*
37+
* <p><b>This class is compatible with classic JasperReports releases back until 2.x.</b>
38+
* As a consequence, it keeps using the {@link net.sf.jasperreports.engine.JRExporter}
39+
* API which got deprecated as of JasperReports 5.5.2 (early 2014).
40+
*
3941
* @author Rob Harrop
4042
* @author Juergen Hoeller
4143
* @since 1.1.5
4244
* @see #createExporter()
4345
* @see #useWriter()
4446
*/
47+
@SuppressWarnings({"deprecation", "rawtypes"})
4548
public abstract class AbstractJasperReportsSingleFormatView extends AbstractJasperReportsView {
4649

4750
@Override
@@ -54,12 +57,13 @@ protected boolean generatesDownloadContent() {
5457
* for a pre-defined output format.
5558
*/
5659
@Override
60+
@SuppressWarnings("unchecked")
5761
protected void renderReport(JasperPrint populatedReport, Map<String, Object> model, HttpServletResponse response)
5862
throws Exception {
5963

60-
JRExporter exporter = createExporter();
64+
net.sf.jasperreports.engine.JRExporter exporter = createExporter();
6165

62-
Map<JRExporterParameter, Object> mergedExporterParameters = getConvertedExporterParameters();
66+
Map<net.sf.jasperreports.engine.JRExporterParameter, Object> mergedExporterParameters = getConvertedExporterParameters();
6367
if (!CollectionUtils.isEmpty(mergedExporterParameters)) {
6468
exporter.setParameters(mergedExporterParameters);
6569
}
@@ -79,12 +83,12 @@ protected void renderReport(JasperPrint populatedReport, Map<String, Object> mod
7983
* @param response the HTTP response the report should be rendered to
8084
* @throws Exception if rendering failed
8185
*/
82-
protected void renderReportUsingWriter(
83-
JRExporter exporter, JasperPrint populatedReport, HttpServletResponse response) throws Exception {
86+
protected void renderReportUsingWriter(net.sf.jasperreports.engine.JRExporter exporter,
87+
JasperPrint populatedReport, HttpServletResponse response) throws Exception {
8488

8589
// Copy the encoding configured for the report into the response.
8690
String contentType = getContentType();
87-
String encoding = (String) exporter.getParameter(JRExporterParameter.CHARACTER_ENCODING);
91+
String encoding = (String) exporter.getParameter(net.sf.jasperreports.engine.JRExporterParameter.CHARACTER_ENCODING);
8892
if (encoding != null) {
8993
// Only apply encoding if content type is specified but does not contain charset clause already.
9094
if (contentType != null && !contentType.toLowerCase().contains(WebUtils.CONTENT_TYPE_CHARSET_PREFIX)) {
@@ -104,8 +108,8 @@ protected void renderReportUsingWriter(
104108
* @param response the HTTP response the report should be rendered to
105109
* @throws Exception if rendering failed
106110
*/
107-
protected void renderReportUsingOutputStream(
108-
JRExporter exporter, JasperPrint populatedReport, HttpServletResponse response) throws Exception {
111+
protected void renderReportUsingOutputStream(net.sf.jasperreports.engine.JRExporter exporter,
112+
JasperPrint populatedReport, HttpServletResponse response) throws Exception {
109113

110114
// IE workaround: write into byte array first.
111115
ByteArrayOutputStream baos = createTemporaryOutputStream();
@@ -121,7 +125,7 @@ protected void renderReportUsingOutputStream(
121125
* output will be written as text or as binary content.
122126
* @see #useWriter()
123127
*/
124-
protected abstract JRExporter createExporter();
128+
protected abstract net.sf.jasperreports.engine.JRExporter createExporter();
125129

126130
/**
127131
* Return whether to use a {@code java.io.Writer} to write text content

spring-webmvc/src/main/java/org/springframework/web/servlet/view/jasperreports/AbstractJasperReportsView.java

Lines changed: 21 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2002-2013 the original author or authors.
2+
* Copyright 2002-2014 the original author or authors.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -35,7 +35,6 @@
3535
import net.sf.jasperreports.engine.JRDataSource;
3636
import net.sf.jasperreports.engine.JRDataSourceProvider;
3737
import net.sf.jasperreports.engine.JRException;
38-
import net.sf.jasperreports.engine.JRExporterParameter;
3938
import net.sf.jasperreports.engine.JRParameter;
4039
import net.sf.jasperreports.engine.JasperCompileManager;
4140
import net.sf.jasperreports.engine.JasperFillManager;
@@ -101,6 +100,10 @@
101100
* so that reports render correctly in Internet Explorer. However, you can override this
102101
* setting through the {@code headers} property.
103102
*
103+
* <p><b>This class is compatible with classic JasperReports releases back until 2.x.</b>
104+
* As a consequence, it keeps using the {@link net.sf.jasperreports.engine.JRExporter}
105+
* API which got deprecated as of JasperReports 5.5.2 (early 2014).
106+
*
104107
* @author Rob Harrop
105108
* @author Juergen Hoeller
106109
* @since 1.1.3
@@ -112,6 +115,7 @@
112115
* @see #setExporterParameters
113116
* @see #setJdbcDataSource
114117
*/
118+
@SuppressWarnings({"deprecation", "rawtypes"})
115119
public abstract class AbstractJasperReportsView extends AbstractUrlBasedView {
116120

117121
/**
@@ -157,7 +161,7 @@ public abstract class AbstractJasperReportsView extends AbstractUrlBasedView {
157161
/**
158162
* Stores the converted exporter parameters - keyed by {@code JRExporterParameter}.
159163
*/
160-
private Map<JRExporterParameter, Object> convertedExporterParameters;
164+
private Map<net.sf.jasperreports.engine.JRExporterParameter, Object> convertedExporterParameters;
161165

162166
/**
163167
* Stores the {@code DataSource}, if any, used as the report data source.
@@ -261,14 +265,14 @@ public void setExporterParameters(Map<?, ?> parameters) {
261265
/**
262266
* Allows subclasses to populate the converted exporter parameters.
263267
*/
264-
protected void setConvertedExporterParameters(Map<JRExporterParameter, Object> convertedExporterParameters) {
265-
this.convertedExporterParameters = convertedExporterParameters;
268+
protected void setConvertedExporterParameters(Map<net.sf.jasperreports.engine.JRExporterParameter, Object> parameters) {
269+
this.convertedExporterParameters = parameters;
266270
}
267271

268272
/**
269273
* Allows subclasses to retrieve the converted exporter parameters.
270274
*/
271-
protected Map<JRExporterParameter, Object> getConvertedExporterParameters() {
275+
protected Map<net.sf.jasperreports.engine.JRExporterParameter, Object> getConvertedExporterParameters() {
272276
return this.convertedExporterParameters;
273277
}
274278

@@ -353,9 +357,10 @@ protected void onInit() {
353357
*/
354358
protected final void convertExporterParameters() {
355359
if (!CollectionUtils.isEmpty(this.exporterParameters)) {
356-
this.convertedExporterParameters = new HashMap<JRExporterParameter, Object>(this.exporterParameters.size());
360+
this.convertedExporterParameters =
361+
new HashMap<net.sf.jasperreports.engine.JRExporterParameter, Object>(this.exporterParameters.size());
357362
for (Map.Entry<?, ?> entry : this.exporterParameters.entrySet()) {
358-
JRExporterParameter exporterParameter = getExporterParameter(entry.getKey());
363+
net.sf.jasperreports.engine.JRExporterParameter exporterParameter = getExporterParameter(entry.getKey());
359364
this.convertedExporterParameters.put(
360365
exporterParameter, convertParameterValue(exporterParameter, entry.getValue()));
361366
}
@@ -364,7 +369,7 @@ protected final void convertExporterParameters() {
364369

365370
/**
366371
* Convert the supplied parameter value into the actual type required by the
367-
* corresponding {@link JRExporterParameter}.
372+
* corresponding {@code JRExporterParameter}.
368373
* <p>The default implementation simply converts the String values "true" and
369374
* "false" into corresponding {@code Boolean} objects, and tries to convert
370375
* String values that start with a digit into {@code Integer} objects
@@ -373,7 +378,7 @@ protected final void convertExporterParameters() {
373378
* @param value the parameter value
374379
* @return the converted parameter value
375380
*/
376-
protected Object convertParameterValue(JRExporterParameter parameter, Object value) {
381+
protected Object convertParameterValue(net.sf.jasperreports.engine.JRExporterParameter parameter, Object value) {
377382
if (value instanceof String) {
378383
String str = (String) value;
379384
if ("true".equals(str)) {
@@ -403,9 +408,9 @@ else if (str.length() > 0 && Character.isDigit(str.charAt(0))) {
403408
* @return a JRExporterParameter for the given parameter object
404409
* @see #convertToExporterParameter(String)
405410
*/
406-
protected JRExporterParameter getExporterParameter(Object parameter) {
407-
if (parameter instanceof JRExporterParameter) {
408-
return (JRExporterParameter) parameter;
411+
protected net.sf.jasperreports.engine.JRExporterParameter getExporterParameter(Object parameter) {
412+
if (parameter instanceof net.sf.jasperreports.engine.JRExporterParameter) {
413+
return (net.sf.jasperreports.engine.JRExporterParameter) parameter;
409414
}
410415
if (parameter instanceof String) {
411416
return convertToExporterParameter((String) parameter);
@@ -422,7 +427,7 @@ protected JRExporterParameter getExporterParameter(Object parameter) {
422427
* (e.g. "net.sf.jasperreports.engine.export.JRHtmlExporterParameter.IMAGES_URI")
423428
* @return the corresponding JRExporterParameter instance
424429
*/
425-
protected JRExporterParameter convertToExporterParameter(String fqFieldName) {
430+
protected net.sf.jasperreports.engine.JRExporterParameter convertToExporterParameter(String fqFieldName) {
426431
int index = fqFieldName.lastIndexOf('.');
427432
if (index == -1 || index == fqFieldName.length()) {
428433
throw new IllegalArgumentException(
@@ -437,9 +442,9 @@ protected JRExporterParameter convertToExporterParameter(String fqFieldName) {
437442
Class<?> cls = ClassUtils.forName(className, getApplicationContext().getClassLoader());
438443
Field field = cls.getField(fieldName);
439444

440-
if (JRExporterParameter.class.isAssignableFrom(field.getType())) {
445+
if (net.sf.jasperreports.engine.JRExporterParameter.class.isAssignableFrom(field.getType())) {
441446
try {
442-
return (JRExporterParameter) field.get(null);
447+
return (net.sf.jasperreports.engine.JRExporterParameter) field.get(null);
443448
}
444449
catch (IllegalAccessException ex) {
445450
throw new IllegalArgumentException(

0 commit comments

Comments
 (0)