Fix for ALF-14746 (SVG mimetype)

git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@40697 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Jamal Kaabi-Mofrad
2012-08-21 17:16:35 +00:00
parent 5a4a040e6c
commit 7f98324f25

View File

@@ -17,12 +17,13 @@
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>. */
package org.alfresco.web.forms;
import java.io.*;
import java.util.*;
import javax.xml.transform.Result;
import javax.xml.transform.Source;
import javax.xml.transform.dom.DOMSource;
import java.io.IOException;
import java.io.OutputStream;
import java.util.HashMap;
import java.util.Map;
import javax.xml.transform.sax.SAXResult;
import org.alfresco.service.namespace.QName;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -31,23 +32,20 @@ import org.apache.fop.apps.FOUserAgent;
import org.apache.fop.apps.Fop;
import org.apache.fop.apps.FopFactory;
import org.apache.fop.apps.MimeConstants;
import org.w3c.dom.*;
import org.xml.sax.SAXException;
/**
* A rendering engine which uses xsl-fo templates to generate renditions of
* form instance data.
* A rendering engine which uses xsl-fo templates to generate renditions of form
* instance data.
*
* @author Ariel Backenroth
*/
public class XSLFORenderingEngine
extends XSLTRenderingEngine
public class XSLFORenderingEngine extends XSLTRenderingEngine
{
private static final Log LOGGER = LogFactory.getLog(XSLFORenderingEngine.class);
private static final Map<String, String> MIME_TYPES =
new HashMap<String, String>();
private static final Map<String, String> MIME_TYPES = new HashMap<String, String>();
static
{
MIME_TYPES.put(MimeConstants.MIME_PDF, MimeConstants.MIME_PDF);
@@ -65,10 +63,9 @@ public class XSLFORenderingEngine
MIME_TYPES.put("application/x-mif", MimeConstants.MIME_MIF);
MIME_TYPES.put(MimeConstants.MIME_SVG, MimeConstants.MIME_SVG);
MIME_TYPES.put("image/svg", MimeConstants.MIME_SVG);
//looks like a dependency is missing - removing for now
//MIME_TYPES.put(MimeConstants.MIME_GIF, MimeConstants.MIME_GIF);
// looks like a dependency is missing - removing for now
// MIME_TYPES.put(MimeConstants.MIME_GIF, MimeConstants.MIME_GIF);
MIME_TYPES.put(MimeConstants.MIME_PNG, MimeConstants.MIME_PNG);
MIME_TYPES.put(MimeConstants.MIME_JPEG, MimeConstants.MIME_JPEG);
MIME_TYPES.put(MimeConstants.MIME_TIFF, MimeConstants.MIME_TIFF);
@@ -90,29 +87,21 @@ public class XSLFORenderingEngine
}
@Override
public void render(final Map<QName, Object> model,
final RenderingEngineTemplate ret,
final OutputStream out)
throws IOException,
RenderingEngine.RenderingException,
SAXException
public void render(final Map<QName, Object> model, final RenderingEngineTemplate ret, final OutputStream out)
throws IOException, RenderingEngine.RenderingException, SAXException
{
String mimetype = MIME_TYPES.get(ret.getMimetypeForRendition());
if (mimetype == null)
{
throw new RenderingEngine.RenderingException("mimetype " + ret.getMimetypeForRendition() +
" is not supported by " + this.getName());
}
if (mimetype == null) { throw new RenderingEngine.RenderingException("mimetype "
+ ret.getMimetypeForRendition() + " is not supported by " + this.getName()); }
try
{
final FopFactory fopFactory = FopFactory.newInstance();
final FOUserAgent foUserAgent = fopFactory.newFOUserAgent();
final Fop fop = fopFactory.newFop(mimetype, foUserAgent, out);
// Resulting SAX events (the generated FO) must be piped through to FOP
super.render(model,
ret,
new SAXResult(fop.getDefaultHandler()));
// Resulting SAX events (the generated FO) must be piped through to
// FOP
super.render(model, ret, new SAXResult(fop.getDefaultHandler()));
}
catch (FOPException fope)