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