From: Mehdi Houshmand Date: Fri, 27 Apr 2012 13:11:06 +0000 (+0000) Subject: Fixed concurrency issue re:background-image on a fo:block. Also updated a couple... X-Git-Tag: fop-1_1rc1old~27 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=be77bea9baa51ef4bb6116d85edcf6a5b8f3fd67;p=xmlgraphics-fop.git Fixed concurrency issue re:background-image on a fo:block. Also updated a couple license headers in the examples git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@1331419 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/examples/embedding/java/embedding/ExampleEPS.java b/examples/embedding/java/embedding/ExampleEPS.java index ebf2b9a7d..d35413f60 100644 --- a/examples/embedding/java/embedding/ExampleEPS.java +++ b/examples/embedding/java/embedding/ExampleEPS.java @@ -1,18 +1,18 @@ /* * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with this - * work for additional information regarding copyright ownership. The ASF - * licenses this file to You under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations under - * the License. + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ /* $Id$ */ @@ -26,11 +26,13 @@ import java.io.OutputStream; import org.apache.avalon.framework.configuration.Configuration; import org.apache.avalon.framework.configuration.DefaultConfigurationBuilder; + +import org.apache.xmlgraphics.java2d.GraphicContext; +import org.apache.xmlgraphics.java2d.ps.EPSDocumentGraphics2D; + import org.apache.fop.fonts.FontInfo; import org.apache.fop.render.ps.NativeTextHandler; import org.apache.fop.svg.PDFDocumentGraphics2DConfigurator; -import org.apache.xmlgraphics.java2d.GraphicContext; -import org.apache.xmlgraphics.java2d.ps.EPSDocumentGraphics2D; public class ExampleEPS { diff --git a/examples/embedding/java/embedding/ExampleEPSSimple.java b/examples/embedding/java/embedding/ExampleEPSSimple.java index cbc353cd5..eec6d89f6 100644 --- a/examples/embedding/java/embedding/ExampleEPSSimple.java +++ b/examples/embedding/java/embedding/ExampleEPSSimple.java @@ -1,33 +1,33 @@ /* * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with this - * work for additional information regarding copyright ownership. The ASF - * licenses this file to You under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations under - * the License. + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ /* $Id$ */ - package embedding; import java.awt.Font; import java.io.FileOutputStream; import java.io.OutputStream; -import org.apache.fop.render.ps.NativeTextHandler; import org.apache.xmlgraphics.java2d.GraphicContext; import org.apache.xmlgraphics.java2d.ps.EPSDocumentGraphics2D; +import org.apache.fop.render.ps.NativeTextHandler; + public class ExampleEPSSimple { /** diff --git a/src/java/org/apache/fop/fo/properties/CommonBorderPaddingBackground.java b/src/java/org/apache/fop/fo/properties/CommonBorderPaddingBackground.java index 789b8d4ed..0e7f3d978 100644 --- a/src/java/org/apache/fop/fo/properties/CommonBorderPaddingBackground.java +++ b/src/java/org/apache/fop/fo/properties/CommonBorderPaddingBackground.java @@ -348,9 +348,7 @@ public class CommonBorderPaddingBackground { */ public static CommonBorderPaddingBackground getInstance(PropertyList pList) throws PropertyException { - - CommonBorderPaddingBackground newInstance - = new CommonBorderPaddingBackground(pList); + CommonBorderPaddingBackground newInstance = new CommonBorderPaddingBackground(pList); CommonBorderPaddingBackground cachedInstance = null; /* if padding-* and background-position-* resolve to absolute lengths * the whole instance can be cached */ @@ -368,33 +366,33 @@ public class CommonBorderPaddingBackground { || newInstance.backgroundPositionVertical.isAbsolute())) { cachedInstance = CACHE.fetch(newInstance); } - - /* for non-cached, or not-yet-cached instances, preload the image */ - if ((cachedInstance == null - || cachedInstance == newInstance) + synchronized (newInstance.backgroundImage.intern()) { + /* for non-cached, or not-yet-cached instances, preload the image */ + if ((cachedInstance == null || cachedInstance == newInstance) && !("".equals(newInstance.backgroundImage))) { - //Additional processing: preload image - String uri = URISpecification.getURL(newInstance.backgroundImage); - FObj fobj = pList.getFObj(); - FOUserAgent userAgent = pList.getFObj().getUserAgent(); - ImageManager manager = userAgent.getFactory().getImageManager(); - ImageSessionContext sessionContext = userAgent.getImageSessionContext(); - ImageInfo info; - try { - info = manager.getImageInfo(uri, sessionContext); - newInstance.backgroundImageInfo = info; - } catch (ImageException e) { - ResourceEventProducer eventProducer = ResourceEventProducer.Provider.get( - fobj.getUserAgent().getEventBroadcaster()); - eventProducer.imageError(fobj, uri, e, fobj.getLocator()); - } catch (FileNotFoundException fnfe) { - ResourceEventProducer eventProducer = ResourceEventProducer.Provider.get( - fobj.getUserAgent().getEventBroadcaster()); - eventProducer.imageNotFound(fobj, uri, fnfe, fobj.getLocator()); - } catch (IOException ioe) { - ResourceEventProducer eventProducer = ResourceEventProducer.Provider.get( - fobj.getUserAgent().getEventBroadcaster()); - eventProducer.imageIOError(fobj, uri, ioe, fobj.getLocator()); + //Additional processing: preload image + String uri = URISpecification.getURL(newInstance.backgroundImage); + FObj fobj = pList.getFObj(); + FOUserAgent userAgent = pList.getFObj().getUserAgent(); + ImageManager manager = userAgent.getFactory().getImageManager(); + ImageSessionContext sessionContext = userAgent.getImageSessionContext(); + ImageInfo info; + try { + info = manager.getImageInfo(uri, sessionContext); + newInstance.backgroundImageInfo = info; + } catch (ImageException e) { + ResourceEventProducer eventProducer = ResourceEventProducer.Provider.get( + fobj.getUserAgent().getEventBroadcaster()); + eventProducer.imageError(fobj, uri, e, fobj.getLocator()); + } catch (FileNotFoundException fnfe) { + ResourceEventProducer eventProducer = ResourceEventProducer.Provider.get( + fobj.getUserAgent().getEventBroadcaster()); + eventProducer.imageNotFound(fobj, uri, fnfe, fobj.getLocator()); + } catch (IOException ioe) { + ResourceEventProducer eventProducer = ResourceEventProducer.Provider.get( + fobj.getUserAgent().getEventBroadcaster()); + eventProducer.imageIOError(fobj, uri, ioe, fobj.getLocator()); + } } }