Description: Replace non-free W3C Base64 implementation with apache.commons.codec.binary.Base64
Author: Markus Koschany <apo@gambaru.de>
Forwarded: no
--- a/src/net/sf/jasperreports/engine/export/JRXmlExporter.java
+++ b/src/net/sf/jasperreports/engine/export/JRXmlExporter.java
@@ -40,7 +40,7 @@
 import java.util.Map;
 import java.util.Set;
 
-import org.w3c.tools.codec.Base64Encoder;
+import org.apache.commons.codec.binary.Base64;
 
 import net.sf.jasperreports.engine.DefaultJasperReportsContext;
 import net.sf.jasperreports.engine.JRAbstractExporter;
@@ -877,15 +877,9 @@
 							
 						try
 						{
-							ByteArrayInputStream bais = new ByteArrayInputStream(dataRenderer.getData(jasperReportsContext));
-							ByteArrayOutputStream baos = new ByteArrayOutputStream();
-							
-							Base64Encoder encoder = new Base64Encoder(bais, baos);
-							encoder.process();
-							
 							String encoding = getExporterOutput().getEncoding();
 							
-							imageSource = new String(baos.toByteArray(), encoding);
+							imageSource = new String(Base64.encodeBase64(dataRenderer.getData(jasperReportsContext)), encoding);
 						}
 						catch (IOException e)
 						{
--- a/src/net/sf/jasperreports/engine/util/JRValueStringUtils.java
+++ b/src/net/sf/jasperreports/engine/util/JRValueStringUtils.java
@@ -34,10 +34,7 @@
 
 import net.sf.jasperreports.engine.JRRuntimeException;
 
-import org.w3c.tools.codec.Base64Decoder;
-import org.w3c.tools.codec.Base64Encoder;
-import org.w3c.tools.codec.Base64FormatException;
-
+import org.apache.commons.codec.binary.Base64;
 
 /**
  * Utility class used to serialize/deserialize value objects to/from String values.
@@ -554,12 +551,8 @@
 		{
 			try
 			{
-				ByteArrayInputStream dataIn = new ByteArrayInputStream(data.getBytes());
-				ByteArrayOutputStream bytesOut = new ByteArrayOutputStream();
-				Base64Decoder dec = new Base64Decoder(dataIn, bytesOut);
-				dec.process();
-				
-				ByteArrayInputStream bytesIn = new ByteArrayInputStream(bytesOut.toByteArray());
+				byte[] bytesOut = Base64.decodeBase64(data.getBytes());
+				ByteArrayInputStream bytesIn = new ByteArrayInputStream(bytesOut);
 				ObjectInputStream objectIn = new ObjectInputStream(bytesIn);
 				return objectIn.readObject();
 			}
@@ -571,10 +564,6 @@
 			{
 				throw new JRRuntimeException(e);
 			}
-			catch (Base64FormatException e)
-			{
-				throw new JRRuntimeException(e);
-			}
 		}
 
 		@Override
@@ -586,14 +575,8 @@
 				ObjectOutputStream objectOut = new ObjectOutputStream(bytesOut);
 				objectOut.writeObject(value);
 				objectOut.close();
-				
-				ByteArrayInputStream bytesIn = new ByteArrayInputStream(bytesOut.toByteArray());
-				ByteArrayOutputStream dataOut = new ByteArrayOutputStream();				
-				
-				Base64Encoder enc = new Base64Encoder(bytesIn, dataOut);
-				enc.process();
-				
-				return new String(dataOut.toByteArray(), "UTF-8");
+				byte[] dataOut = Base64.decodeBase64(bytesOut.toByteArray());
+				return new String(dataOut, "UTF-8");
 			}
 			catch (NotSerializableException e)
 			{
--- a/src/net/sf/jasperreports/engine/xml/JRPrintImageSourceObject.java
+++ b/src/net/sf/jasperreports/engine/xml/JRPrintImageSourceObject.java
@@ -26,7 +26,7 @@
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
 
-import org.w3c.tools.codec.Base64Decoder;
+import org.apache.commons.codec.binary.Base64;
 
 import net.sf.jasperreports.engine.JRException;
 import net.sf.jasperreports.engine.JRPrintImage;
@@ -108,13 +108,7 @@
 			{
 				try
 				{
-					ByteArrayInputStream bais = new ByteArrayInputStream(imageSource.getBytes("UTF-8"));//FIXMENOW other encodings ?
-					ByteArrayOutputStream baos = new ByteArrayOutputStream();
-					
-					Base64Decoder decoder = new Base64Decoder(bais, baos);
-					decoder.process();
-					
-					renderable = SimpleDataRenderer.getInstance(baos.toByteArray());//, JRImage.ON_ERROR_TYPE_ERROR));
+					renderable = SimpleDataRenderer.getInstance(Base64.decodeBase64(imageSource.getBytes("UTF-8")));//, JRImage.ON_ERROR_TYPE_ERROR));
 				}
 				catch (Exception e)
 				{
--- a/src/net/sf/jasperreports/engine/export/JRXhtmlExporter.java
+++ b/src/net/sf/jasperreports/engine/export/JRXhtmlExporter.java
@@ -53,7 +53,7 @@
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
-import org.w3c.tools.codec.Base64Encoder;
+import org.apache.commons.codec.binary.Base64;
 
 import net.sf.jasperreports.components.headertoolbar.HeaderToolbarElement;
 import net.sf.jasperreports.engine.DefaultJasperReportsContext;
@@ -1712,15 +1712,9 @@
 							? RendererUtil.SVG_MIME_TYPE
 							: JRTypeSniffer.getImageTypeValue(imageData).getMimeType();
 						
-						ByteArrayInputStream bais = new ByteArrayInputStream(imageData);
-						ByteArrayOutputStream baos = new ByteArrayOutputStream();
-						
-						Base64Encoder encoder = new Base64Encoder(bais, baos);
-						encoder.process();
-						
 						String encoding = getExporterOutput().getEncoding();
 						
-						imagePath = "data:" + imageMimeType + ";base64," + new String(baos.toByteArray(), encoding);
+						imagePath = "data:" + imageMimeType + ";base64," + new String(Base64.encodeBase64(imageData), encoding);
 						//don't cache the base64 encoded image as imagePath because they are too big
 					}
 					else
--- a/src/net/sf/jasperreports/engine/export/JRHtmlExporter.java
+++ b/src/net/sf/jasperreports/engine/export/JRHtmlExporter.java
@@ -53,7 +53,7 @@
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
-import org.w3c.tools.codec.Base64Encoder;
+import org.apache.commons.codec.binary.Base64;
 
 import net.sf.jasperreports.crosstabs.JRCellContents;
 import net.sf.jasperreports.engine.DefaultJasperReportsContext;
@@ -1775,15 +1775,9 @@
 								? "image/svg+xml"
 								: JRTypeSniffer.getImageTypeValue(imageData).getMimeType();
 							
-							ByteArrayInputStream bais = new ByteArrayInputStream(imageData);
-							ByteArrayOutputStream baos = new ByteArrayOutputStream();
-							
-							Base64Encoder encoder = new Base64Encoder(bais, baos);
-							encoder.process();
-							
 							String encoding = getExporterOutput().getEncoding();
 							
-							imagePath = "data:" + imageMimeType + ";base64," + new String(baos.toByteArray(), encoding);
+							imagePath = "data:" + imageMimeType + ";base64," + new String(Base64.encodeBase64(imageData), encoding);
 							//don't cache the base64 encoded image as imagePath because they are too big
 						}
 						else
--- a/src/net/sf/jasperreports/engine/export/HtmlExporter.java
+++ b/src/net/sf/jasperreports/engine/export/HtmlExporter.java
@@ -47,7 +47,7 @@
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
-import org.w3c.tools.codec.Base64Encoder;
+import org.apache.commons.codec.binary.Base64;
 
 import net.sf.jasperreports.components.headertoolbar.HeaderToolbarElement;
 import net.sf.jasperreports.crosstabs.interactive.CrosstabInteractiveJsonHandler;
@@ -1412,15 +1412,9 @@
 								? RendererUtil.SVG_MIME_TYPE
 								: JRTypeSniffer.getImageTypeValue(imageData).getMimeType();
 
-							ByteArrayInputStream bais = new ByteArrayInputStream(imageData);
-							ByteArrayOutputStream baos = new ByteArrayOutputStream();
-							
-							Base64Encoder encoder = new Base64Encoder(bais, baos);
-							encoder.process();
-							
 							String encoding = getExporterOutput().getEncoding();
 							
-							imageSource = "data:" + imageMimeType + ";base64," + new String(baos.toByteArray(), encoding);
+							imageSource = "data:" + imageMimeType + ";base64," + new String(Base64.encodeBase64(imageData), encoding);
 						}
 						
 						//don't cache embedded imageSource as they are not image paths
