mirror of
https://bitbucket.org/wisemapping/wisemapping-open-source.git
synced 2024-11-21 21:57:56 +01:00
Hack for workaround batik OOM
This commit is contained in:
parent
b89a82760c
commit
e138923694
@ -19,6 +19,7 @@
|
|||||||
package com.wisemapping.exporter;
|
package com.wisemapping.exporter;
|
||||||
|
|
||||||
import com.wisemapping.importer.VersionNumber;
|
import com.wisemapping.importer.VersionNumber;
|
||||||
|
import org.apache.batik.ext.awt.image.rendered.TileCache;
|
||||||
import org.apache.batik.parser.AWTTransformProducer;
|
import org.apache.batik.parser.AWTTransformProducer;
|
||||||
import org.apache.batik.parser.ParseException;
|
import org.apache.batik.parser.ParseException;
|
||||||
import org.apache.batik.parser.TransformListParser;
|
import org.apache.batik.parser.TransformListParser;
|
||||||
@ -53,6 +54,11 @@ import java.nio.charset.StandardCharsets;
|
|||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
public class ExporterFactory {
|
public class ExporterFactory {
|
||||||
|
|
||||||
|
static {
|
||||||
|
// Try to prevent OOM.
|
||||||
|
TileCache.setSize(0);
|
||||||
|
}
|
||||||
private static final String GROUP_NODE_NAME = "g";
|
private static final String GROUP_NODE_NAME = "g";
|
||||||
private static final String IMAGE_NODE_NAME = "image";
|
private static final String IMAGE_NODE_NAME = "image";
|
||||||
private static final int MANGING = 50;
|
private static final int MANGING = 50;
|
||||||
@ -70,6 +76,7 @@ public class ExporterFactory {
|
|||||||
public void export(@NotNull ExportProperties properties, @Nullable String xml, @NotNull OutputStream output, @Nullable String mapSvg) throws ExportException, IOException, TranscoderException {
|
public void export(@NotNull ExportProperties properties, @Nullable String xml, @NotNull OutputStream output, @Nullable String mapSvg) throws ExportException, IOException, TranscoderException {
|
||||||
final ExportFormat format = properties.getFormat();
|
final ExportFormat format = properties.getFormat();
|
||||||
|
|
||||||
|
|
||||||
switch (format) {
|
switch (format) {
|
||||||
case PNG: {
|
case PNG: {
|
||||||
// Create a JPEG transcoder
|
// Create a JPEG transcoder
|
||||||
@ -81,12 +88,14 @@ public class ExporterFactory {
|
|||||||
|
|
||||||
// Create the transcoder input.
|
// Create the transcoder input.
|
||||||
final String svgString = normalizeSvg(mapSvg);
|
final String svgString = normalizeSvg(mapSvg);
|
||||||
final TranscoderInput input = new TranscoderInput(new CharArrayReader(svgString.toCharArray()));
|
final CharArrayReader reader = new CharArrayReader(svgString.toCharArray());
|
||||||
|
final TranscoderInput input = new TranscoderInput(reader);
|
||||||
|
|
||||||
TranscoderOutput transcoderOutput = new TranscoderOutput(output);
|
TranscoderOutput transcoderOutput = new TranscoderOutput(output);
|
||||||
|
|
||||||
// Save the image.
|
// Save the image.
|
||||||
transcoder.transcode(input, transcoderOutput);
|
transcoder.transcode(input, transcoderOutput);
|
||||||
|
reader.close();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case JPG: {
|
case JPG: {
|
||||||
@ -101,7 +110,9 @@ public class ExporterFactory {
|
|||||||
|
|
||||||
// Create the transcoder input.
|
// Create the transcoder input.
|
||||||
final String svgString = normalizeSvg(mapSvg);
|
final String svgString = normalizeSvg(mapSvg);
|
||||||
final TranscoderInput input = new TranscoderInput(new CharArrayReader(svgString.toCharArray()));
|
CharArrayReader reader = new CharArrayReader(svgString.toCharArray());
|
||||||
|
final TranscoderInput input = new TranscoderInput(reader);
|
||||||
|
reader.close();
|
||||||
|
|
||||||
TranscoderOutput trascoderOutput = new TranscoderOutput(output);
|
TranscoderOutput trascoderOutput = new TranscoderOutput(output);
|
||||||
|
|
||||||
@ -115,9 +126,10 @@ public class ExporterFactory {
|
|||||||
|
|
||||||
// Create the transcoder input.
|
// Create the transcoder input.
|
||||||
final String svgString = normalizeSvg(mapSvg);
|
final String svgString = normalizeSvg(mapSvg);
|
||||||
final TranscoderInput input = new TranscoderInput(new CharArrayReader(svgString.toCharArray()));
|
CharArrayReader reader = new CharArrayReader(svgString.toCharArray());
|
||||||
|
final TranscoderInput input = new TranscoderInput(reader);
|
||||||
TranscoderOutput trascoderOutput = new TranscoderOutput(output);
|
TranscoderOutput trascoderOutput = new TranscoderOutput(output);
|
||||||
|
reader.close();
|
||||||
// Save the image.
|
// Save the image.
|
||||||
transcoder.transcode(input, trascoderOutput);
|
transcoder.transcode(input, trascoderOutput);
|
||||||
break;
|
break;
|
||||||
@ -156,6 +168,9 @@ public class ExporterFactory {
|
|||||||
default:
|
default:
|
||||||
throw new UnsupportedOperationException("Export method not supported.");
|
throw new UnsupportedOperationException("Export method not supported.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
output.flush();
|
||||||
|
output.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
private String normalizeSvg(@NotNull String svgXml) throws ExportException {
|
private String normalizeSvg(@NotNull String svgXml) throws ExportException {
|
||||||
|
@ -41,9 +41,7 @@ public class XSLTExporter implements Exporter {
|
|||||||
final CharArrayReader reader = new CharArrayReader(mmos.toString("iso-8859-1").toCharArray());
|
final CharArrayReader reader = new CharArrayReader(mmos.toString("iso-8859-1").toCharArray());
|
||||||
final Source mmSource = new StreamSource(reader);
|
final Source mmSource = new StreamSource(reader);
|
||||||
transformer.transform(mmSource, new StreamResult(outputStream));
|
transformer.transform(mmSource, new StreamResult(outputStream));
|
||||||
} catch (TransformerException e) {
|
} catch (TransformerException | UnsupportedEncodingException e) {
|
||||||
throw new ExportException(e);
|
|
||||||
} catch (UnsupportedEncodingException e) {
|
|
||||||
throw new ExportException(e);
|
throw new ExportException(e);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user