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 je...@apache.org on 2010/05/20 08:38:49 UTC

svn commit: r946539 - in /xmlgraphics/fop/trunk/src/java/org/apache/fop: afp/fonts/CharacterSetBuilder.java render/afp/AFPRendererConfigurator.java

Author: jeremias
Date: Thu May 20 06:38:48 2010
New Revision: 946539

URL: http://svn.apache.org/viewvc?rev=946539&view=rev
Log:
Bring error handling more in line with general recommendations and provide better error messages.

Modified:
    xmlgraphics/fop/trunk/src/java/org/apache/fop/afp/fonts/CharacterSetBuilder.java
    xmlgraphics/fop/trunk/src/java/org/apache/fop/render/afp/AFPRendererConfigurator.java

Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/afp/fonts/CharacterSetBuilder.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/afp/fonts/CharacterSetBuilder.java?rev=946539&r1=946538&r2=946539&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/src/java/org/apache/fop/afp/fonts/CharacterSetBuilder.java (original)
+++ xmlgraphics/fop/trunk/src/java/org/apache/fop/afp/fonts/CharacterSetBuilder.java Thu May 20 06:38:48 2010
@@ -24,14 +24,15 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.net.URI;
 import java.net.URISyntaxException;
-import java.util.Map;
 import java.util.List;
+import java.util.Map;
 import java.util.WeakHashMap;
 
-import org.apache.xmlgraphics.image.loader.util.SoftMapCache;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 
+import org.apache.xmlgraphics.image.loader.util.SoftMapCache;
+
 import org.apache.fop.afp.AFPConstants;
 import org.apache.fop.afp.util.ResourceAccessor;
 import org.apache.fop.afp.util.StructuredFieldReader;
@@ -183,9 +184,10 @@ public class CharacterSetBuilder {
      * @param encoding encoding name
      * @param accessor used to load codepage and characterset
      * @return CharacterSet object
+     * @throws IOException if an I/O error occurs
      */
     public CharacterSet build(String characterSetName, String codePageName,
-            String encoding, ResourceAccessor accessor) {
+            String encoding, ResourceAccessor accessor) throws IOException {
 
         // check for cached version of the characterset
         String descriptor = characterSetName + "_" + encoding + "_" + codePageName;
@@ -253,22 +255,10 @@ public class CharacterSetBuilder {
                     characterSet.addCharacterSetOrientation(characterSetOrientations[i]);
                 }
             } else {
-
-                    String msg = "Failed to load the character set metrics for code page "
-                        + codePageName;
-                    LOG.error(msg);
-                    throw new RuntimeException("Failed to read font control structured field"
-                            + "in character set " + characterSetName);
-
+                throw new IOException("Missing D3AE89 Font Control structured field.");
             }
 
-        } catch (IOException e) {
-            String msg = "Failed to load the character set metrics for code page " + codePageName;
-            LOG.error(msg);
-            throw new RuntimeException("Failed to read font control structured field"
-                    + "in character set " + characterSetName);
         } finally {
-
             closeInputStream(inputStream);
         }
         characterSetsCache.put(descriptor, characterSet);
@@ -652,7 +642,7 @@ public class CharacterSetBuilder {
             return nominalFontSize;
         }
     }
-    
+
     /**
      * Double-byte (CID Keyed font (Type 0)) implementation of AFPFontReader.
      */

Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/render/afp/AFPRendererConfigurator.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/render/afp/AFPRendererConfigurator.java?rev=946539&r1=946538&r2=946539&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/src/java/org/apache/fop/render/afp/AFPRendererConfigurator.java (original)
+++ xmlgraphics/fop/trunk/src/java/org/apache/fop/render/afp/AFPRendererConfigurator.java Thu May 20 06:38:48 2010
@@ -202,8 +202,12 @@ public class AFPRendererConfigurator ext
                         log.error(msg);
                     }
                 } else {
-                    font.addCharacterSet(sizeMpt, CharacterSetBuilder.getInstance()
-                            .build(characterset, codepage, encoding, accessor));
+                    try {
+                        font.addCharacterSet(sizeMpt, CharacterSetBuilder.getInstance()
+                                .build(characterset, codepage, encoding, accessor));
+                    } catch (IOException ioe) {
+                        toConfigurationException(codepage, characterset, ioe);
+                    }
                 }
             }
             return font;
@@ -227,17 +231,21 @@ public class AFPRendererConfigurator ext
                                         .build(characterset, codepage, encoding, tf);
                     } catch (Exception ie) {
                         String msg = "The base 14 font class " + clazz.getName()
-                        + " could not be instantiated";
+                                + " could not be instantiated";
                         log.error(msg);
                     }
                 } catch (ClassNotFoundException cnfe) {
                     String msg = "The base 14 font class for " + characterset
-                    + " could not be found";
+                            + " could not be found";
                     log.error(msg);
                 }
             } else {
-                characterSet = CharacterSetBuilder.getInstance().build(
-                        characterset, codepage, encoding, accessor);
+                try {
+                    characterSet = CharacterSetBuilder.getInstance().build(
+                            characterset, codepage, encoding, accessor);
+                } catch (IOException ioe) {
+                    toConfigurationException(codepage, characterset, ioe);
+                }
             }
             // Return new font object
             return new OutlineFont(name, characterSet);
@@ -250,8 +258,12 @@ public class AFPRendererConfigurator ext
             }
             String name = afpFontCfg.getAttribute("name", characterset);
             CharacterSet characterSet = null;
-            characterSet = CharacterSetBuilder.getDoubleByteInstance()
-                            .build(characterset, codepage, encoding, accessor);
+            try {
+                characterSet = CharacterSetBuilder.getDoubleByteInstance()
+                                .build(characterset, codepage, encoding, accessor);
+            } catch (IOException ioe) {
+                toConfigurationException(codepage, characterset, ioe);
+            }
 
             // Create a new font object
             DoubleByteFont font = new DoubleByteFont(name, characterSet);
@@ -264,6 +276,14 @@ public class AFPRendererConfigurator ext
         return null;
     }
 
+    private void toConfigurationException(String codepage, String characterset, IOException ioe)
+            throws ConfigurationException {
+        String msg = "Failed to load the character set metrics " + characterset
+            + " with code page " + codepage
+            + ". I/O error: " + ioe.getMessage();
+        throw new ConfigurationException(msg, ioe);
+    }
+
     /**
      * Builds a list of AFPFontInfo objects for use with the setup() method.
      *



---------------------------------------------------------------------
To unsubscribe, e-mail: fop-commits-unsubscribe@xmlgraphics.apache.org
For additional commands, e-mail: fop-commits-help@xmlgraphics.apache.org