You are viewing a plain text version of this content. The canonical link for it is here.
Posted to fop-commits@xmlgraphics.apache.org by ac...@apache.org on 2008/11/18 10:57:09 UTC
svn commit: r718538 - in /xmlgraphics/fop/branches/Temp_AFPGOCAResources: ./
src/java/org/apache/fop/fonts/FontCache.java
src/java/org/apache/fop/render/afp/AFPForeignAttributeReader.java status.xml
Author: acumiskey
Date: Tue Nov 18 01:57:08 2008
New Revision: 718538
URL: http://svn.apache.org/viewvc?rev=718538&view=rev
Log:
Merged revisions 718309,718502 via svnmerge from
https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk
........
r718309 | adelmelle | 2008-11-17 18:18:20 +0000 (Mon, 17 Nov 2008) | 4 lines
Bugzilla 46211:
Fixed some multi-threading issues in FontCache.java (+ some minor cleanup: simplification of conditionals)
Thanks to rogov.AT.devexperts.com for tracing and reporting the problem.
........
r718502 | adelmelle | 2008-11-18 06:43:08 +0000 (Tue, 18 Nov 2008) | 1 line
Removed erroneous end-element...
........
Modified:
xmlgraphics/fop/branches/Temp_AFPGOCAResources/ (props changed)
xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/fonts/FontCache.java
xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/render/afp/AFPForeignAttributeReader.java (props changed)
xmlgraphics/fop/branches/Temp_AFPGOCAResources/status.xml
Propchange: xmlgraphics/fop/branches/Temp_AFPGOCAResources/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Tue Nov 18 01:57:08 2008
@@ -1,2 +1,2 @@
/xmlgraphics/fop/branches/fop-0_95:684572,688085,688696
-/xmlgraphics/fop/trunk:693433-698670,699739,704008-704909,705529-706135,706272-706276,706319-707083,707627,707631-708012,708192-708851,711781
+/xmlgraphics/fop/trunk:693433-698670,699739,704008-704909,705529-706135,706272-706276,706319-707083,707627,707631-708012,708192-708851,711781,718309-718502
Propchange: xmlgraphics/fop/branches/Temp_AFPGOCAResources/
------------------------------------------------------------------------------
--- svnmerge-integrated (original)
+++ svnmerge-integrated Tue Nov 18 01:57:08 2008
@@ -1 +1 @@
-/xmlgraphics/fop/trunk:1-713748
+/xmlgraphics/fop/trunk:1-718536
Modified: xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/fonts/FontCache.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/fonts/FontCache.java?rev=718538&r1=718537&r2=718538&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/fonts/FontCache.java (original)
+++ xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/fonts/FontCache.java Tue Nov 18 01:57:08 2008
@@ -48,7 +48,7 @@
* Serialization Version UID. Change this value if you want to make sure the user's cache
* file is purged after an update.
*/
- private static final long serialVersionUID = 605232520271754718L;
+ private static final long serialVersionUID = 605232520271754719L;
/** logging instance */
private static Log log = LogFactory.getLog(FontCache.class);
@@ -64,7 +64,7 @@
private transient boolean changed = false;
/** change lock */
- private transient Object changeLock = new Object();
+ private final Object changeLock = new Object();
/** master mapping of font url -> font info. This needs to be
* a list, since a TTC file may contain more than 1 font. */
@@ -80,12 +80,6 @@
//nop
}
- private void readObject(java.io.ObjectInputStream in)
- throws IOException, ClassNotFoundException {
- in.defaultReadObject();
- this.changeLock = new Object(); //Initialize transient field
- }
-
private static File getUserHome() {
String s = System.getProperty("user.home");
if (s != null) {
@@ -226,10 +220,8 @@
* @return boolean
*/
public boolean containsFont(String embedUrl) {
- if (embedUrl != null) {
- return getFontFileMap().containsKey(embedUrl);
- }
- return false;
+ return (embedUrl != null
+ && getFontFileMap().containsKey(embedUrl));
}
/**
@@ -238,10 +230,8 @@
* @return font
*/
public boolean containsFont(EmbedFontInfo fontInfo) {
- if (fontInfo != null) {
- return getFontFileMap().containsKey(getCacheKey(fontInfo));
- }
- return false;
+ return (fontInfo != null
+ && getFontFileMap().containsKey(getCacheKey(fontInfo)));
}
/**
@@ -316,10 +306,7 @@
* @return CachedFontFile object
*/
public CachedFontFile getFontFile(String embedUrl) {
- if (containsFont(embedUrl)) {
- return (CachedFontFile)getFontFileMap().get(embedUrl);
- }
- return null;
+ return containsFont(embedUrl) ? (CachedFontFile) getFontFileMap().get(embedUrl) : null;
}
/**
@@ -362,8 +349,8 @@
* @return whether this is a failed font
*/
public boolean isFailedFont(String embedUrl, long lastModified) {
- if (getFailedFontMap().containsKey(embedUrl)) {
- synchronized (changeLock) {
+ synchronized (changeLock) {
+ if (getFailedFontMap().containsKey(embedUrl)) {
long failedLastModified = ((Long)getFailedFontMap().get(embedUrl)).longValue();
if (lastModified != failedLastModified) {
// this font has been changed so lets remove it
@@ -371,10 +358,11 @@
getFailedFontMap().remove(embedUrl);
changed = true;
}
+ return true;
+ } else {
+ return false;
}
- return true;
}
- return false;
}
/**
@@ -457,10 +445,8 @@
}
public boolean containsFont(EmbedFontInfo efi) {
- if (efi.getPostScriptName() != null) {
- return getFileFontsMap().containsKey(efi.getPostScriptName());
- }
- return false;
+ return efi.getPostScriptName() != null
+ && getFileFontsMap().containsKey(efi.getPostScriptName());
}
public EmbedFontInfo[] getEmbedFontInfos() {
Propchange: xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/render/afp/AFPForeignAttributeReader.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Tue Nov 18 01:57:08 2008
@@ -1,2 +1,2 @@
/xmlgraphics/fop/branches/fop-0_95/src/java/org/apache/fop/render/afp/AFPForeignAttributeReader.java:684572,688085,688696
-/xmlgraphics/fop/trunk/src/java/org/apache/fop/render/afp/AFPForeignAttributeReader.java:693433-698670,699739,704008-704909,705529-706135,706272-706276,706319-707083,707627,711781
+/xmlgraphics/fop/trunk/src/java/org/apache/fop/render/afp/AFPForeignAttributeReader.java:693433-698670,699739,704008-704909,705529-706135,706272-706276,706319-707083,707627,711781,718309-718502
Modified: xmlgraphics/fop/branches/Temp_AFPGOCAResources/status.xml
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_AFPGOCAResources/status.xml?rev=718538&r1=718537&r2=718538&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_AFPGOCAResources/status.xml (original)
+++ xmlgraphics/fop/branches/Temp_AFPGOCAResources/status.xml Tue Nov 18 01:57:08 2008
@@ -54,17 +54,24 @@
<changes>
<release version="FOP Trunk" date="TBD">
<action context="Renderers" dev="AC" importance="high" type="add">
- AFP Output: An AFPGraphics2D implementation which provides the ability to use Batik to drive the production of AFP Graphics (GOCA) output from SVG.
- Added SVG support for AFP (GOCA).
+ AFP Output: An AFPGraphics2D implementation which provides the ability to use Batik to drive the production of AFP Graphics (GOCA) output from SVG.
</action>
<action context="Renderers" dev="AC" importance="high" type="add">
- AFP Output: Resource group leveling, external streaming and de-duplication of images and graphics using IncludeObject and ResourceGroup.
+ AFP Output: Resource group leveling, external streaming, and de-duplication of images and graphics using IncludeObject and ResourceGroup.
</action>
<action context="Renderers" dev="AC" importance="high" type="add">
AFP Output: Native image embedding support (e.g. JPEG, GIF, TIFF) using ObjectContainer and a MOD:CA Registry implementation.
</action>
<action context="Fonts" dev="AC" importance="high" type="fix">
- AFP Output: More robust AFP font parsing, although it is still in need of some rework in the future.
+ More robust AFP font parsing, although it is still in need of some rework in the future.
+ </action>
+ <action context="Code" dev="AD" type="fix" fixes-bug="46211" due-to="rogov.AT.devexperts.com">
+ Fixed some multi-threading issues in FontCache.java:
+ <ul>
+ <li>remove the unused private readObject()</li>
+ <li>make the changeLock member final (initialization-safety + impossible to reassign)</li>
+ <li>perform the HashMap check for a failed font inside the synchronized block to avoid a race condition</li>
+ </ul>
</action>
<action context="Renderers" dev="AD" type="add" fixes-bug="45113" due-to="Alexander Stamenov">
Added PDF /Launch action: references to URIs using the file:// protocol will now generate
---------------------------------------------------------------------
To unsubscribe, e-mail: fop-commits-unsubscribe@xmlgraphics.apache.org
For additional commands, e-mail: fop-commits-help@xmlgraphics.apache.org