Return-Path: X-Original-To: apmail-xmlgraphics-fop-commits-archive@www.apache.org Delivered-To: apmail-xmlgraphics-fop-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 381B61888C for ; Tue, 10 Nov 2015 14:09:16 +0000 (UTC) Received: (qmail 2484 invoked by uid 500); 10 Nov 2015 14:09:16 -0000 Delivered-To: apmail-xmlgraphics-fop-commits-archive@xmlgraphics.apache.org Received: (qmail 2449 invoked by uid 500); 10 Nov 2015 14:09:16 -0000 Mailing-List: contact fop-commits-help@xmlgraphics.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: fop-dev@xmlgraphics.apache.org Delivered-To: mailing list fop-commits@xmlgraphics.apache.org Received: (qmail 2435 invoked by uid 99); 10 Nov 2015 14:09:16 -0000 Received: from Unknown (HELO spamd3-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 10 Nov 2015 14:09:16 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd3-us-west.apache.org (ASF Mail Server at spamd3-us-west.apache.org) with ESMTP id 99114180A25 for ; Tue, 10 Nov 2015 14:09:15 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd3-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: 1.79 X-Spam-Level: * X-Spam-Status: No, score=1.79 tagged_above=-999 required=6.31 tests=[KAM_ASCII_DIVIDERS=0.8, KAM_LAZY_DOMAIN_SECURITY=1, T_RP_MATCHES_RCVD=-0.01] autolearn=disabled Received: from mx1-eu-west.apache.org ([10.40.0.8]) by localhost (spamd3-us-west.apache.org [10.40.0.10]) (amavisd-new, port 10024) with ESMTP id 2DKla6NABR3h for ; Tue, 10 Nov 2015 14:09:14 +0000 (UTC) Received: from mailrelay1-us-west.apache.org (mailrelay1-us-west.apache.org [209.188.14.139]) by mx1-eu-west.apache.org (ASF Mail Server at mx1-eu-west.apache.org) with ESMTP id 516EF21277 for ; Tue, 10 Nov 2015 14:09:13 +0000 (UTC) Received: from svn01-us-west.apache.org (svn.apache.org [10.41.0.6]) by mailrelay1-us-west.apache.org (ASF Mail Server at mailrelay1-us-west.apache.org) with ESMTP id 89A38E0044 for ; Tue, 10 Nov 2015 14:09:12 +0000 (UTC) Received: from svn01-us-west.apache.org (localhost [127.0.0.1]) by svn01-us-west.apache.org (ASF Mail Server at svn01-us-west.apache.org) with ESMTP id 6BA643A04EC for ; Tue, 10 Nov 2015 14:09:12 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1713640 - in /xmlgraphics/fop-pdf-images/trunk: lib/fop.jar src/java/org/apache/fop/render/pdf/pdfbox/AbstractPDFBoxHandler.java test/java/org/apache/fop/render/pdf/PDFBoxAdapterTestCase.java Date: Tue, 10 Nov 2015 14:09:12 -0000 To: fop-commits@xmlgraphics.apache.org From: ssteiner@apache.org X-Mailer: svnmailer-1.0.9 Message-Id: <20151110140912.6BA643A04EC@svn01-us-west.apache.org> Author: ssteiner Date: Tue Nov 10 14:09:11 2015 New Revision: 1713640 URL: http://svn.apache.org/viewvc?rev=1713640&view=rev Log: FOP-2538: PDF to PDF OOM Modified: xmlgraphics/fop-pdf-images/trunk/lib/fop.jar xmlgraphics/fop-pdf-images/trunk/src/java/org/apache/fop/render/pdf/pdfbox/AbstractPDFBoxHandler.java xmlgraphics/fop-pdf-images/trunk/test/java/org/apache/fop/render/pdf/PDFBoxAdapterTestCase.java Modified: xmlgraphics/fop-pdf-images/trunk/lib/fop.jar URL: http://svn.apache.org/viewvc/xmlgraphics/fop-pdf-images/trunk/lib/fop.jar?rev=1713640&r1=1713639&r2=1713640&view=diff ============================================================================== Binary files - no diff available. Modified: xmlgraphics/fop-pdf-images/trunk/src/java/org/apache/fop/render/pdf/pdfbox/AbstractPDFBoxHandler.java URL: http://svn.apache.org/viewvc/xmlgraphics/fop-pdf-images/trunk/src/java/org/apache/fop/render/pdf/pdfbox/AbstractPDFBoxHandler.java?rev=1713640&r1=1713639&r2=1713640&view=diff ============================================================================== --- xmlgraphics/fop-pdf-images/trunk/src/java/org/apache/fop/render/pdf/pdfbox/AbstractPDFBoxHandler.java (original) +++ xmlgraphics/fop-pdf-images/trunk/src/java/org/apache/fop/render/pdf/pdfbox/AbstractPDFBoxHandler.java Tue Nov 10 14:09:11 2015 @@ -22,16 +22,14 @@ package org.apache.fop.render.pdf.pdfbox import java.awt.Rectangle; import java.awt.geom.AffineTransform; import java.io.IOException; -import java.util.Collections; import java.util.HashMap; -import java.util.Locale; import java.util.Map; -import java.util.WeakHashMap; import org.apache.pdfbox.pdmodel.PDDocument; import org.apache.pdfbox.pdmodel.PDPage; import org.apache.xmlgraphics.image.loader.util.ImageUtil; +import org.apache.xmlgraphics.image.loader.util.SoftMapCache; import org.apache.fop.apps.FOUserAgent; import org.apache.fop.events.EventBroadcaster; @@ -43,7 +41,6 @@ import org.apache.fop.pdf.PDFResources; import org.apache.fop.pdf.PDFStructElem; import org.apache.fop.pdf.Version; import org.apache.fop.render.pdf.PDFLogicalStructureHandler; -import org.apache.fop.render.pdf.pdfbox.Cache.ValueMaker; /** * Abstract base class for implementation of FOP's image handler interfaces (old and new) @@ -52,22 +49,6 @@ import org.apache.fop.render.pdf.pdfbox. */ public abstract class AbstractPDFBoxHandler { - private static final Cache.Type CACHE_TYPE = Cache.Type.valueOf( - System.getProperty("fop.pdfbox.doc-cache", Cache.Type.WEAK.name()).toUpperCase(Locale.ENGLISH)); - - private static Cache> createDocumentCache() { - return Cache.createCache(CACHE_TYPE); - } - - private static final ValueMaker> MAP_MAKER = new ValueMaker>() { - public Map make() throws Exception { - return new HashMap(); - } - }; - - private static Map>> objectCacheMap - = Collections.synchronizedMap(new WeakHashMap>>()); - protected String createStreamForPDF(ImagePDF image, PDFPage targetPage, FOUserAgent userAgent, AffineTransform at, FontInfo fontinfo, Rectangle pos, Map pageNumbers, @@ -134,25 +115,13 @@ public abstract class AbstractPDFBoxHand return stream; } - private Map getObjectCache(String originalImageUri, - Object documentScopedReference) { - String fileUri = getImagePath(originalImageUri); - try { - return getDocumentCache(documentScopedReference) - .getValue(fileUri, MAP_MAKER); - } catch (Exception e) { - // We cannot recover from this - throw new RuntimeException(e); - } - } - - private Cache> getDocumentCache(Object documentScopedReference) { - Cache> documentCache = objectCacheMap.get(documentScopedReference); - if (documentCache == null) { - documentCache = createDocumentCache(); - objectCacheMap.put(documentScopedReference, documentCache); + private Map getObjectCache(String originalImageUri, FOUserAgent userAgent) { + SoftMapCache objectCache = userAgent.getPDFObjectCache(); + String path = getImagePath(originalImageUri); + if (objectCache.get(path) == null) { + objectCache.put(path, new HashMap()); } - return documentCache; + return (Map) objectCache.get(path); } private String getImagePath(String originalImageUri) { Modified: xmlgraphics/fop-pdf-images/trunk/test/java/org/apache/fop/render/pdf/PDFBoxAdapterTestCase.java URL: http://svn.apache.org/viewvc/xmlgraphics/fop-pdf-images/trunk/test/java/org/apache/fop/render/pdf/PDFBoxAdapterTestCase.java?rev=1713640&r1=1713639&r2=1713640&view=diff ============================================================================== --- xmlgraphics/fop-pdf-images/trunk/test/java/org/apache/fop/render/pdf/PDFBoxAdapterTestCase.java (original) +++ xmlgraphics/fop-pdf-images/trunk/test/java/org/apache/fop/render/pdf/PDFBoxAdapterTestCase.java Tue Nov 10 14:09:11 2015 @@ -62,6 +62,7 @@ import org.apache.xmlgraphics.image.load import org.apache.xmlgraphics.image.loader.impl.DefaultImageContext; import org.apache.xmlgraphics.image.loader.impl.ImageGraphics2D; import org.apache.xmlgraphics.image.loader.impl.ImageRendered; +import org.apache.xmlgraphics.image.loader.util.SoftMapCache; import org.apache.xmlgraphics.java2d.GeneralGraphics2DImagePainter; import org.apache.xmlgraphics.java2d.GraphicContext; import org.apache.xmlgraphics.ps.PSGenerator; @@ -427,6 +428,7 @@ public class PDFBoxAdapterTestCase { PDFContentGenerator con = new PDFContentGenerator(pdfdoc, null, null); FOUserAgent mockedAgent = mock(FOUserAgent.class); when(mockedAgent.isAccessibilityEnabled()).thenReturn(false); + when(mockedAgent.getPDFObjectCache()).thenReturn(new SoftMapCache(true)); PDFRenderingContext c = new PDFRenderingContext(mockedAgent, con, pdfpage, null); c.setPageNumbers(new HashMap()); new PDFBoxImageHandler().handleImage(c, img, new Rectangle()); --------------------------------------------------------------------- To unsubscribe, e-mail: fop-commits-unsubscribe@xmlgraphics.apache.org For additional commands, e-mail: fop-commits-help@xmlgraphics.apache.org