summaryrefslogtreecommitdiffstats
path: root/external/jfreereport/patches
diff options
context:
space:
mode:
Diffstat (limited to 'external/jfreereport/patches')
-rw-r--r--external/jfreereport/patches/common_build.patch119
-rw-r--r--external/jfreereport/patches/flow-engine.patch19
-rw-r--r--external/jfreereport/patches/flow-engine_date_is_datetime.patch.113
-rw-r--r--external/jfreereport/patches/libbase-1.1.6-deprecated.patch53
-rw-r--r--external/jfreereport/patches/libfonts-1.1.6-deprecated.patch11
-rw-r--r--external/jfreereport/patches/libformula-datevalue_truncation.patch.129
-rw-r--r--external/jfreereport/patches/libformula-minutes_truncation.patch.114
-rw-r--r--external/jfreereport/patches/libformula-seconds_rounding.patch.137
-rw-r--r--external/jfreereport/patches/libformula-time-notz.patch22
-rw-r--r--external/jfreereport/patches/liblayout.patch22
-rw-r--r--external/jfreereport/patches/libloader-1.1.6-deprecated.patch34
-rw-r--r--external/jfreereport/patches/librepository-1.1.6-deprecated.patch37
-rw-r--r--external/jfreereport/patches/sac.patch73
13 files changed, 483 insertions, 0 deletions
diff --git a/external/jfreereport/patches/common_build.patch b/external/jfreereport/patches/common_build.patch
new file mode 100644
index 000000000..b197f494e
--- /dev/null
+++ b/external/jfreereport/patches/common_build.patch
@@ -0,0 +1,119 @@
+--- misc/libloader-1.1.3/common_build.xml 2009-11-16 10:25:34.000000000 +0100
++++ misc/build/libloader-1.1.3/common_build.xml 2009-12-04 10:22:24.277647200 +0100
+@@ -136,8 +136,6 @@
+ <property name="javac.deprecation"
+ value="true"
+ description="Indicates whether source should be compiled with deprecation information" />
+- <property name="javac.source" value="1.5" description="Provide source compatibility with specified release" />
+- <property name="javac.target" value="1.5" description="Generate class files for specific VM version" />
+
+ <!-- Build Cache properties -->
+ <property name="build.cache.dir"
+@@ -261,7 +261,7 @@ TYPICAL TARGET SEQUENCE
+ <property name="project.revision" value="${Implementation-Version}" description="Sets the version number of the project based on the Implementation-Version found in the manifest file (if one is supplied and nothing is specified in the build.properties)" />
+ <fail message="A project revision number has not been determined!">
+ <condition>
+- <matches string="${project.revision}" pattern="\$\{.*\}" />
++ <contains string="${project.revision}" substring="\$\{" />
+ </condition>
+ </fail>
+
+@@ -270,7 +270,7 @@ TYPICAL TARGET SEQUENCE
+ <property name="impl.title" value="${Implementation-Title}" description="Sets the title of the project based on the Implementation-Title found in the manifest file (if one is supplied and nothing is specified in the build.properties)" />
+ <fail message="A project title has not been determined!">
+ <condition>
+- <matches string="${impl.title}" pattern="\$\{.*\}" />
++ <contains string="${impl.title}" substring="\$\{" />
+ </condition>
+ </fail>
+
+@@ -497,7 +497,7 @@
+ Sets a property build.id to the either "development" or the svn revision
+ if in release mode
+ ====================================================================-->
+- <target name="set-build.id" unless="build.id" depends="install-antcontrib">
++ <target name="set-build.id" unless="build.id" >
+ <if>
+ <istrue value="${release}" />
+ <then>
+@@ -1061,12 +1061,17 @@
+ Performs the actual compile
+ ====================================================================-->
+ <target name="compile.compile" depends="init">
++ <copy todir="${classes.dir}">
++ <fileset dir="source">
++ <include name="**/*.properties"/>
++ </fileset>
++ </copy>
+ <javac destdir="${classes.dir}"
+ debug="${javac.debug}"
+ deprecation="${javac.deprecation}"
+ fork="true"
+- source="${javac.source}"
+- target="${javac.target}">
++ source="${ant.build.javac.source}"
++ target="${ant.build.javac.target}">
+ <classpath>
+ <path refid="classpath" />
+ </classpath>
+@@ -1082,27 +1087,32 @@
+ duplicate copying of resources from src tree (handled by compile.src_copy
+ if jar.include.source is set.
+ ====================================================================-->
+- <target name="compile.res_copy" depends="install-antcontrib">
+- <if>
+- <available file="${res.dir}" />
+- <then>
+- <copy todir="${classes.dir}">
+- <fileset dir="${res.dir}" />
+- </copy>
+- </then>
+- </if>
++ <target name="compile.res_copy" >
++ <condition property="copy.res.available">
++ <available file="$(res.dir)" type="dir" />
++ </condition>
++ <antcall target="copy.res" />
+
+- <if>
+- <not>
+- <isset property="jar.include.source" />
+- </not>
+- <then>
+- <copy todir="${classes.dir}" flatten="false">
+- <fileset dir="${src.dir}" excludes="**/*.java" />
+- </copy>
+- </then>
+- </if>
+- </target>
++ <condition property="copy.res.class.available">
++ <not>
++ <isset property="jar.include.source" />
++ </not>
++ </condition>
++ <antcall target="copy.res.class" />
++ </target>
++
++ <target name="copy.res" if="copy.res.available" >
++ <copy todir="${classes.dir}">
++ <fileset dir="${res.dir}"/>
++ </copy>
++ </target>
++
++ <target name="copy.res.class" if="copy.res.class.available" >
++ <uptodate targetfile="${classes.dir}" property="s">
++ <srcfiles dir= "${src.dir}" excludes="**/*.java" />
++ <flattenmapper/>
++ </uptodate>
++ </target>
+
+
+ <!--=======================================================================
+@@ -1167,7 +1177,6 @@
+ <target name="generate.manifest" depends="init,set-build.id">
+ <delete file="${dist.manifest.file}" />
+ <touch file="${dist.manifest.file}" />
+- <copy file="${manifest.file}" tofile="${dist.manifest.file}" overwrite="true" failonerror="false" />
+
+ <manifest file="${dist.manifest.file}" mode="update">
+ <attribute name="Implementation-Title" value="${impl.title}" />
diff --git a/external/jfreereport/patches/flow-engine.patch b/external/jfreereport/patches/flow-engine.patch
new file mode 100644
index 000000000..63f0dbda0
--- /dev/null
+++ b/external/jfreereport/patches/flow-engine.patch
@@ -0,0 +1,19 @@
+--- misc/flow-engine-0.9.4/build.xml (Revision 6728)
++++ misc/build/flow-engine-0.9.4/build.xml (Arbeitskopie)
+@@ -24,9 +24,13 @@
+
+ <!-- Setup the compile classpath -->
+ <path id="classpath">
+- <fileset dir="lib">
+- <include name="*.jar" />
+- </fileset>
++ <pathelement path="${commons-logging.jar}"/>
++ <pathelement path="${libbase.jar}"/>
++ <pathelement path="${libformula.jar}"/>
++ <pathelement path="${liblayout.jar}"/>
++ <pathelement path="${libloader.jar}"/>
++ <pathelement path="${libserializer.jar}"/>
++ <pathelement path="${libxml.jar}"/>
+ </path>
+
+ <!-- Kill all the created directories -->
diff --git a/external/jfreereport/patches/flow-engine_date_is_datetime.patch.1 b/external/jfreereport/patches/flow-engine_date_is_datetime.patch.1
new file mode 100644
index 000000000..3ed23ee58
--- /dev/null
+++ b/external/jfreereport/patches/flow-engine_date_is_datetime.patch.1
@@ -0,0 +1,13 @@
+diff -ur jfreereport_flow_engine.org/source/org/jfree/report/expressions/ReportFormulaContext.java jfreereport_flow_engine/source/org/jfree/report/expressions/ReportFormulaContext.java
+--- jfreereport_flow_engine.org/source/org/jfree/report/expressions/ReportFormulaContext.java 2015-07-14 17:24:51.924156060 +0200
++++ jfreereport_flow_engine/source/org/jfree/report/expressions/ReportFormulaContext.java 2015-07-14 17:27:56.669270298 +0200
+@@ -120,7 +120,7 @@
+ {
+ if (flags.isDate())
+ {
+- return DateTimeType.DATE_TYPE;
++ return DateTimeType.DATETIME_TYPE;
+ }
+ if (flags.isNumeric())
+ {
+Only in jfreereport_flow_engine/source/org/jfree/report/expressions: ReportFormulaContext.java~
diff --git a/external/jfreereport/patches/libbase-1.1.6-deprecated.patch b/external/jfreereport/patches/libbase-1.1.6-deprecated.patch
new file mode 100644
index 000000000..e5cd38bd8
--- /dev/null
+++ b/external/jfreereport/patches/libbase-1.1.6-deprecated.patch
@@ -0,0 +1,53 @@
+--- misc/libbase-1.1.6/source/org/pentaho/reporting/libraries/base/boot/ModuleInitializeException.java 2010-04-27 15:58:44.000000000 +0200
++++ misc/build/libbase-1.1.6/source/org/pentaho/reporting/libraries/base/boot/ModuleInitializeException.java 2011-06-13 01:28:14.000000000 +0200
+@@ -48,7 +48,7 @@
+ */
+ public ModuleInitializeException(final String s, final Exception e)
+ {
+- super(s, e);
++ super(s, (Throwable) e);
+ }
+
+ /**
+--- misc/libbase-1.1.6/source/org/pentaho/reporting/libraries/base/util/ClassQueryTool.java 2010-04-27 15:58:46.000000000 +0200
++++ misc/build/libbase-1.1.6/source/org/pentaho/reporting/libraries/base/util/ClassQueryTool.java 2014-07-22 17:53:13.000000000 +0200
+@@ -173,7 +173,7 @@
+ final File file = directoryOrJar.getAbsoluteFile();
+ if (file.isDirectory() && file.exists() && file.canRead())
+ {
+- allURLs.add(file.toURL());
++ allURLs.add(file.toURI().toURL());
+ directoryURLs.add(file);
+ continue;
+ }
+@@ -186,8 +186,8 @@
+ final String fileName = file.getName();
+ if (fileName.endsWith(".jar") || fileName.endsWith(".zip"))
+ {
+- allURLs.add(file.toURL());
+- jarURLs.add(file.toURL());
++ allURLs.add(file.toURI().toURL());
++ jarURLs.add(file.toURI().toURL());
+ }
+ }
+
+@@ -199,7 +199,7 @@
+ final File file = driverFiles[i];
+ if (file.isDirectory() && file.exists() && file.canRead())
+ {
+- allURLs.add(file.toURL());
++ allURLs.add(file.toURI().toURL());
+ directoryURLs.add(file);
+ continue;
+ }
+@@ -212,8 +212,8 @@
+ final String fileName = file.getName();
+ if (fileName.endsWith(".jar") || fileName.endsWith(".zip"))
+ {
+- allURLs.add(file.toURL());
+- jarURLs.add(file.toURL());
++ allURLs.add(file.toURI().toURL());
++ jarURLs.add(file.toURI().toURL());
+ }
+ }
+ }
diff --git a/external/jfreereport/patches/libfonts-1.1.6-deprecated.patch b/external/jfreereport/patches/libfonts-1.1.6-deprecated.patch
new file mode 100644
index 000000000..eb2ab8c76
--- /dev/null
+++ b/external/jfreereport/patches/libfonts-1.1.6-deprecated.patch
@@ -0,0 +1,11 @@
+--- misc/libfonts-1.1.6/source/org/pentaho/reporting/libraries/fonts/FontException.java 2010-04-27 16:09:00.000000000 +0200
++++ misc/build/libfonts-1.1.6/source/org/pentaho/reporting/libraries/fonts/FontException.java 2011-06-13 02:04:51.000000000 +0200
+@@ -39,7 +39,7 @@
+ */
+ public FontException(final String message, final Exception ex)
+ {
+- super(message, ex);
++ super(message, (Throwable) ex);
+ }
+
+ /**
diff --git a/external/jfreereport/patches/libformula-datevalue_truncation.patch.1 b/external/jfreereport/patches/libformula-datevalue_truncation.patch.1
new file mode 100644
index 000000000..069c667c1
--- /dev/null
+++ b/external/jfreereport/patches/libformula-datevalue_truncation.patch.1
@@ -0,0 +1,29 @@
+diff -ur jfreereport_libformula.org/source/org/pentaho/reporting/libraries/formula/function/datetime/DateValueFunction.java jfreereport_libformula/source/org/pentaho/reporting/libraries/formula/function/datetime/DateValueFunction.java
+--- jfreereport_libformula.org/source/org/pentaho/reporting/libraries/formula/function/datetime/DateValueFunction.java 2010-06-01 17:15:50.000000000 +0200
++++ jfreereport_libformula/source/org/pentaho/reporting/libraries/formula/function/datetime/DateValueFunction.java 2015-07-14 17:24:42.503895240 +0200
+@@ -18,6 +18,7 @@
+ package org.pentaho.reporting.libraries.formula.function.datetime;
+
+ import java.util.Date;
++import java.util.Calendar;
+
+ import org.pentaho.reporting.libraries.formula.EvaluationException;
+ import org.pentaho.reporting.libraries.formula.FormulaContext;
+@@ -28,6 +29,7 @@
+ import org.pentaho.reporting.libraries.formula.typing.Type;
+ import org.pentaho.reporting.libraries.formula.typing.TypeRegistry;
+ import org.pentaho.reporting.libraries.formula.typing.coretypes.DateTimeType;
++import org.pentaho.reporting.libraries.formula.util.DateUtil;
+
+ /**
+ * This function returns
+@@ -61,7 +63,8 @@
+ final Object value = parameters.getValue(0);
+
+ final Date date1 = typeRegistry.convertToDate(type, value);
+- return new TypeValuePair(DateTimeType.DATE_TYPE, date1);
++ final Date date = DateUtil.normalizeDate(date1, DateTimeType.DATE_TYPE);
+
++ return new TypeValuePair(DateTimeType.DATE_TYPE, date);
+ }
+ }
diff --git a/external/jfreereport/patches/libformula-minutes_truncation.patch.1 b/external/jfreereport/patches/libformula-minutes_truncation.patch.1
new file mode 100644
index 000000000..71f0be2c9
--- /dev/null
+++ b/external/jfreereport/patches/libformula-minutes_truncation.patch.1
@@ -0,0 +1,14 @@
+diff -ur jfreereport_libformula.org/source/org/pentaho/reporting/libraries/formula/function/datetime/MinuteFunction.java jfreereport_libformula/source/org/pentaho/reporting/libraries/formula/function/datetime/MinuteFunction.java
+--- jfreereport_libformula.org/source/org/pentaho/reporting/libraries/formula/function/datetime/MinuteFunction.java 2015-07-13 15:55:31.752539618 +0200
++++ jfreereport_libformula/source/org/pentaho/reporting/libraries/formula/function/datetime/MinuteFunction.java 2015-07-13 15:56:27.084394065 +0200
+@@ -74,7 +74,7 @@
+
+ // Multiply the minutes with 60 to get the minutes as ints
+ final BigDecimal minutes = minutesFraction.multiply(MINUTES);
+- final BigDecimal minutesAsInt = minutes.setScale(0, BigDecimal.ROUND_HALF_UP);
++ final BigDecimal minutesAsInt = NumberUtil.performIntRounding(minutes);
+ return new TypeValuePair(NumberType.GENERIC_NUMBER, minutesAsInt);
+ }
+-}
+\ Pas de fin de ligne à la fin du fichier
++}
diff --git a/external/jfreereport/patches/libformula-seconds_rounding.patch.1 b/external/jfreereport/patches/libformula-seconds_rounding.patch.1
new file mode 100644
index 000000000..369332d1a
--- /dev/null
+++ b/external/jfreereport/patches/libformula-seconds_rounding.patch.1
@@ -0,0 +1,37 @@
+diff -ur jfreereport_libformula.org/source/org/pentaho/reporting/libraries/formula/function/datetime/SecondFunction.java jfreereport_libformula/source/org/pentaho/reporting/libraries/formula/function/datetime/SecondFunction.java
+--- jfreereport_libformula.org/source/org/pentaho/reporting/libraries/formula/function/datetime/SecondFunction.java 2016-03-05 09:43:06.121774691 +0100
++++ jfreereport_libformula/source/org/pentaho/reporting/libraries/formula/function/datetime/SecondFunction.java 2016-03-05 09:51:04.810488511 +0100
+@@ -29,7 +29,7 @@
+ import org.pentaho.reporting.libraries.formula.util.NumberUtil;
+
+ /**
+- * This function extracts the minute (0 through 59) from a time.
++ * This function extracts the seconds (0 through 59) from a time.
+ *
+ * @author Cedric Pronzato
+ */
+@@ -67,14 +67,15 @@
+
+ // time * 24 so that we get the full hours (which we remove later)
+ final BigDecimal bd = NumberUtil.getAsBigDecimal(n);
+- final BigDecimal hours = bd.multiply(MINUTES_PER_DAY);
+- final BigDecimal dayAndHoursAsInt = NumberUtil.performIntRounding(hours);
+- final BigDecimal minutesFraction = hours.subtract(dayAndHoursAsInt);
+-
+- // Multiply the minutes with 60 to get the minutes as ints
+- final BigDecimal seconds = minutesFraction.multiply(SECONDS);
+- final BigDecimal secondsAsInt = NumberUtil.performIntRounding(seconds);
++ final BigDecimal minutes = bd.multiply(MINUTES_PER_DAY);
++ final BigDecimal dayHoursAndMinutesAsInt = NumberUtil.performIntRounding(minutes);
++ final BigDecimal secondsFraction = minutes.subtract(dayHoursAndMinutesAsInt);
++
++ // Multiply the minutes with 60 to get the seconds as ints
++ final BigDecimal seconds = secondsFraction.multiply(SECONDS);
++ final BigDecimal nanoSeconds = seconds.setScale(9, BigDecimal.ROUND_HALF_UP);
++ final BigDecimal secondsAsInt = NumberUtil.performIntRounding(nanoSeconds);
+
+ return new TypeValuePair(NumberType.GENERIC_NUMBER, secondsAsInt);
+ }
+-}
+\ No newline at end of file
++}
diff --git a/external/jfreereport/patches/libformula-time-notz.patch b/external/jfreereport/patches/libformula-time-notz.patch
new file mode 100644
index 000000000..fec65b17e
--- /dev/null
+++ b/external/jfreereport/patches/libformula-time-notz.patch
@@ -0,0 +1,22 @@
+--- a/jfreereport_libformula/source/org/pentaho/reporting/libraries/formula/DefaultLocalizationContext.java 2010-06-01 17:15:52.000000000 +0200
++++ a/jfreereport_libformula.patched/source/org/pentaho/reporting/libraries/formula/DefaultLocalizationContext.java 2013-08-06 13:11:58.000000000 +0200
+@@ -162,11 +169,17 @@
+ final Locale activeLocale = getLocale();
+ datetimeFormats.add(DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL, activeLocale));
+ dateFormats.add(DateFormat.getDateInstance(DateFormat.FULL, activeLocale));
+- timeFormats.add(DateFormat.getTimeInstance(DateFormat.FULL, activeLocale));
++ // LEM: "FULL" does not really make sense for isolated times:
++ // in the absence of a date, it cannot know whether it is meant in the winter-timezone
++ // or in the summer (daylight saving time) timezone, and will always display the winter timezone.
++ // timeFormats.add(DateFormat.getTimeInstance(DateFormat.FULL, activeLocale));
+
+ datetimeFormats.add(DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, activeLocale));
+ dateFormats.add(DateFormat.getDateInstance(DateFormat.LONG, activeLocale));
+- timeFormats.add(DateFormat.getTimeInstance(DateFormat.LONG, activeLocale));
++ // LEM: "LONG" does not really make sense for isolated times:
++ // in the absence of a date, it cannot know whether it is meant in the winter-timezone
++ // or in the summer (daylight saving time) timezone, and will always display the winter timezone.
++ // timeFormats.add(DateFormat.getTimeInstance(DateFormat.LONG, activeLocale));
+
+ datetimeFormats.add(DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.MEDIUM, activeLocale));
+ dateFormats.add(DateFormat.getDateInstance(DateFormat.MEDIUM, activeLocale));
diff --git a/external/jfreereport/patches/liblayout.patch b/external/jfreereport/patches/liblayout.patch
new file mode 100644
index 000000000..cf82b5c05
--- /dev/null
+++ b/external/jfreereport/patches/liblayout.patch
@@ -0,0 +1,22 @@
+--- misc/liblayout-0.2.10/build.xml (Revision 6728)
++++ misc/build/liblayout-0.2.10/build.xml (Arbeitskopie)
+@@ -24,9 +24,16 @@
+
+ <!-- Setup the compile classpath -->
+ <path id="classpath">
+- <fileset dir="lib">
+- <include name="*.jar" />
+- </fileset>
++ <pathelement path="${commons-logging.jar}"/>
++ <pathelement path="${flute.jar}"/>
++ <pathelement path="${libbase.jar}"/>
++ <pathelement path="${libformula.jar}"/>
++ <pathelement path="${libfonts.jar}"/>
++ <pathelement path="${libloader.jar}"/>
++ <pathelement path="${librepository.jar}"/>
++ <pathelement path="${libserializer.jar}"/>
++ <pathelement path="${libxml.jar}"/>
++ <pathelement path="${sac.jar}"/>
+ </path>
+
+ <!-- Kill all the created directories -->
diff --git a/external/jfreereport/patches/libloader-1.1.6-deprecated.patch b/external/jfreereport/patches/libloader-1.1.6-deprecated.patch
new file mode 100644
index 000000000..79fa046fd
--- /dev/null
+++ b/external/jfreereport/patches/libloader-1.1.6-deprecated.patch
@@ -0,0 +1,34 @@
+--- misc/libloader-1.1.6/source/org/pentaho/reporting/libraries/resourceloader/ResourceException.java 2010-04-27 16:07:00.000000000 +0200
++++ misc/build/libloader-1.1.6/source/org/pentaho/reporting/libraries/resourceloader/ResourceException.java 2011-06-13 02:00:46.000000000 +0200
+@@ -42,7 +42,7 @@
+ */
+ public ResourceException(final String message, final Exception ex)
+ {
+- super(message, ex);
++ super(message, (Throwable) ex);
+ }
+
+ /**
+--- misc/libloader-1.1.6/source/org/pentaho/reporting/libraries/resourceloader/loader/file/FileResourceLoader.java 2010-04-27 16:07:00.000000000 +0200
++++ misc/build/libloader-1.1.6/source/org/pentaho/reporting/libraries/resourceloader/loader/file/FileResourceLoader.java 2014-07-24 15:11:26.000000000 +0200
+@@ -19,6 +19,7 @@
+
+ import java.io.File;
+ import java.io.IOException;
++import java.lang.SecurityException;
+ import java.net.MalformedURLException;
+ import java.net.URL;
+ import java.util.HashMap;
+@@ -170,7 +171,11 @@
+ final File file = (File) key.getIdentifier();
+ try
+ {
+- return file.toURL();
++ return file.toURI().toURL();
++ }
++ catch (SecurityException e)
++ {
++ return null;
+ }
+ catch (MalformedURLException e)
+ {
diff --git a/external/jfreereport/patches/librepository-1.1.6-deprecated.patch b/external/jfreereport/patches/librepository-1.1.6-deprecated.patch
new file mode 100644
index 000000000..324a8f416
--- /dev/null
+++ b/external/jfreereport/patches/librepository-1.1.6-deprecated.patch
@@ -0,0 +1,37 @@
+--- misc/librepository-1.1.6/source/org/pentaho/reporting/libraries/repository/ContentIOException.java 2010-04-27 16:04:50.000000000 +0200
++++ misc/build/librepository-1.1.6/source/org/pentaho/reporting/libraries/repository/ContentIOException.java 2011-06-13 01:44:35.000000000 +0200
+@@ -43,7 +43,7 @@
+ */
+ public ContentIOException(final String message, final Exception ex)
+ {
+- super(message, ex);
++ super(message, (Throwable) ex);
+ }
+
+ /**
+--- misc/librepository-1.1.6/source/org/pentaho/reporting/libraries/repository/file/FileRepository.java 2010-04-27 16:04:50.000000000 +0200
++++ misc/build/librepository-1.1.6/source/org/pentaho/reporting/libraries/repository/file/FileRepository.java 2014-07-25 11:21:51.000000000 +0200
+@@ -19,7 +19,9 @@
+
+ import java.io.File;
+ import java.io.Serializable;
++import java.lang.SecurityException;
+ import java.net.MalformedURLException;
++import java.net.URI;
+ import java.net.URL;
+
+ import org.pentaho.reporting.libraries.repository.ContentIOException;
+@@ -104,6 +106,11 @@
+ */
+ public URL getURL() throws MalformedURLException
+ {
+- return root.getBackend().toURL();
++ try {
++ URI uri = root.getBackend().toURI();
++ return uri.toURL();
++ } catch (SecurityException e) {
++ throw new MalformedURLException("impossible" + e);
++ }
+ }
+ }
+
diff --git a/external/jfreereport/patches/sac.patch b/external/jfreereport/patches/sac.patch
new file mode 100644
index 000000000..77db8511a
--- /dev/null
+++ b/external/jfreereport/patches/sac.patch
@@ -0,0 +1,73 @@
+*** misc/sac-1.3/build.xml Thu Oct 18 09:22:24 2007
+--- misc/build/sac-1.3/build.xml Thu Oct 18 08:53:59 2007
+***************
+*** 1 ****
+! dummy
+--- 1,66 ----
+! <!-- simple generic build file -->
+!
+! <project name="sac" default="all" basedir=".">
+!
+! <!-- Properties -->
+!
+! <property name="name" value="sac"/>
+! <property name="src" value="src"/>
+! <property name="build" value="build"/>
+! <property name="build.classes" value="${build}/classes"/>
+! <property name="build.doc" value="${build}/api"/>
+! <property name="build.lib" value="${build}/lib"/>
+! <property name="packagenames" value="org.w3c.css.sac.*"/>
+!
+! <!-- Targets -->
+!
+! <!-- Prepare build directories -->
+! <target name="prepare">
+! <mkdir dir="${src}"/>
+! <mkdir dir="${build}"/>
+! <mkdir dir="${build.classes}"/>
+! <mkdir dir="${build.lib}"/>
+! <mkdir dir="${build.doc}"/>
+! <copy todir="${src}/org">
+! <fileset dir="org"/>
+! </copy>
+! </target>
+!
+! <!-- Kill all the created directories -->
+! <target name="clean">
+! <delete dir="${build}"/>
+! <delete dir="${src}"/>
+! </target>
+!
+! <!-- Build classes -->
+! <target name="classes" depends="prepare">
+! <javac srcdir="${src}" destdir="${build.classes}" debug="off" optimize="on"/>
+! <copy todir="${build.classes}">
+! <fileset dir="${src}">
+! <include name="**/*.properties"/>
+! </fileset>
+! </copy>
+! </target>
+!
+! <!-- Build jar archives -->
+! <target name="jar" depends="classes">
+! <jar jarfile="${build.lib}/${name}.jar" basedir="${build.classes}"/>
+! </target>
+!
+! <!-- Build the full JavaDocs -->
+! <target name="javadoc" depends="prepare">
+! <javadoc sourcepath="${src}"
+! destdir="${build.doc}"
+! doctitle="${name} JavaDoc"
+! windowtitle="${name} JavaDoc"
+! package="true"
+! author="true"
+! version="true"
+! packagenames="${packagenames}"
+! />
+! </target>
+!
+! <!-- Build everything -->
+! <target name="all" depends="jar,javadoc"/>
+!
+! </project>
+\ No newline at end of file