From 5668bdab96cbfac4b3c6148a48d81986322280f2 Mon Sep 17 00:00:00 2001 From: eschaeffer Date: Tue, 12 Dec 2000 09:38:52 +0000 Subject: [PATCH] Patch from Kelly Campbell. Fix NullPointerException... PR: Obtained from: Submitted by: Reviewed by: git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@193860 13f79535-47bb-0310-9956-ffa450edef68 --- src/org/apache/fop/image/FopImageFactory.java | 242 +++++++++--------- 1 file changed, 122 insertions(+), 120 deletions(-) diff --git a/src/org/apache/fop/image/FopImageFactory.java b/src/org/apache/fop/image/FopImageFactory.java index 77eb0e5bc..0707ecbae 100644 --- a/src/org/apache/fop/image/FopImageFactory.java +++ b/src/org/apache/fop/image/FopImageFactory.java @@ -1,27 +1,27 @@ /*-- $Id$ -- ============================================================================ - The Apache Software License, Version 1.1 + The Apache Software License, Version 1.1 ============================================================================ - Copyright (C) 1999 The Apache Software Foundation. All rights reserved. + Copyright (C) 1999 The Apache Software Foundation. All rights reserved. Redistribution and use in source and binary forms, with or without modifica- tion, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. + this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. 3. The end-user documentation included with the redistribution, if any, must - include the following acknowledgment: "This product includes software - developed by the Apache Software Foundation (http://www.apache.org/)." - Alternately, this acknowledgment may appear in the software itself, if - and wherever such third-party acknowledgments normally appear. + include the following acknowledgment: "This product includes software + developed by the Apache Software Foundation (http://www.apache.org/)." + Alternately, this acknowledgment may appear in the software itself, if + and wherever such third-party acknowledgments normally appear. 4. The names "Fop" and "Apache Software Foundation" must not be used to - endorse or promote products derived from this software without prior - written permission. For written permission, please contact - apache@apache.org. + endorse or promote products derived from this software without prior + written permission. For written permission, please contact + apache@apache.org. 5. Products derived from this software may not be called "Apache", nor may - "Apache" appear in their name, without prior written permission of the - Apache Software Foundation. + "Apache" appear in their name, without prior written permission of the + Apache Software Foundation. THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE @@ -59,117 +59,119 @@ import org.apache.fop.image.analyser.ImageReader; */ public class FopImageFactory { - private static Hashtable m_urlMap = new Hashtable(); + private static Hashtable m_urlMap = new Hashtable(); - /** - * create an FopImage objects. - * @param href image URL as a String - * @return a new FopImage object - * @exception java.net.MalformedURLException bad URL - * @exception FopImageException an error occured during construction - */ - public static FopImage Make(String href) - throws MalformedURLException, FopImageException { + /** + * create an FopImage objects. + * @param href image URL as a String + * @return a new FopImage object + * @exception java.net.MalformedURLException bad URL + * @exception FopImageException an error occured during construction + */ + public static FopImage Make(String href) + throws MalformedURLException, FopImageException { - // Get the absolute URL - URL absoluteURL = null; - // try { - absoluteURL = new URL(href); - /* - } - catch (MalformedURLException e) { - // maybe relative - URL context_url = null; - try { - context_url = new URL(); // how to get the context URL ? - try { - absoluteURL = new URL(context_url, ref); - } - catch (MalformedURLException e_abs) { - // not found - MessageHandler.errorln( - "Invalid Image URL : " + - e_abs.getMessage() + - "(base URL " + context_url.toString() + ")" - ); - return null; - } - } - catch (MalformedURLException e_context) { - // pb context url - MessageHandler.errorln("Invalid Image URL - error on relative URL : " + e_context.getMessage()); - return null; - } - } - */ + // Get the absolute URL + URL absoluteURL = null; + // try { + absoluteURL = new URL(href); + /* + } + catch (MalformedURLException e) { + // maybe relative + URL context_url = null; + try { + context_url = new URL(); // how to get the context URL ? + try { + absoluteURL = new URL(context_url, ref); + } + catch (MalformedURLException e_abs) { + // not found + MessageHandler.errorln( + "Invalid Image URL : " + + e_abs.getMessage() + + "(base URL " + context_url.toString() + ")" + ); + return null; + } + } + catch (MalformedURLException e_context) { + // pb context url + MessageHandler.errorln("Invalid Image URL - error on relative URL : " + e_context.getMessage()); + return null; + } + } + */ - // check if already created - FopImage imageObject = - (FopImage) m_urlMap.get(absoluteURL.toString()); - if (imageObject != null) - return imageObject; + // check if already created + FopImage imageObject = + (FopImage) m_urlMap.get(absoluteURL.toString()); + if (imageObject != null) + return imageObject; - // If not, check image type - ImageReader imgReader = null; + // If not, check image type + ImageReader imgReader = null; InputStream imgIS = null; - try { + try { imgIS = absoluteURL.openStream(); - imgReader = ImageReaderFactory.Make(imgIS); - } catch (Exception e) { - throw new FopImageException( - "Error while recovering Image Informations (" + - absoluteURL.toString() + ") : " + e.getMessage()); - } finally { - try {imgIS.close();} catch (IOException e) {} + imgReader = ImageReaderFactory.Make(imgIS); + } catch (Exception e) { + throw new FopImageException( + "Error while recovering Image Informations (" + + absoluteURL.toString() + ") : " + e.getMessage()); + } finally { + if (imgIS != null) { + try {imgIS.close();} catch (IOException e) {} + } } - if (imgReader == null) - throw new FopImageException("No ImageReader for this type of image (" + - absoluteURL.toString() + ")"); - // Associate mime-type to FopImage class - String imgMimeType = imgReader.getMimeType(); - String imgClassName = null; - if ("image/gif".equals(imgMimeType)) { - imgClassName = "org.apache.fop.image.GifJpegImage"; + if (imgReader == null) + throw new FopImageException("No ImageReader for this type of image (" + + absoluteURL.toString() + ")"); + // Associate mime-type to FopImage class + String imgMimeType = imgReader.getMimeType(); + String imgClassName = null; + if ("image/gif".equals(imgMimeType)) { + imgClassName = "org.apache.fop.image.GifJpegImage"; // imgClassName = "org.apache.fop.image.JAIImage"; - } else if ("image/jpeg".equals(imgMimeType)) { - imgClassName = "org.apache.fop.image.GifJpegImage"; + } else if ("image/jpeg".equals(imgMimeType)) { + imgClassName = "org.apache.fop.image.GifJpegImage"; // imgClassName = "org.apache.fop.image.JAIImage"; - } else if ("image/bmp".equals(imgMimeType)) { - imgClassName = "org.apache.fop.image.BmpImage"; + } else if ("image/bmp".equals(imgMimeType)) { + imgClassName = "org.apache.fop.image.BmpImage"; // imgClassName = "org.apache.fop.image.JAIImage"; - } else if ("image/png".equals(imgMimeType)) { - imgClassName = "org.apache.fop.image.JimiImage"; + } else if ("image/png".equals(imgMimeType)) { + imgClassName = "org.apache.fop.image.JimiImage"; // imgClassName = "org.apache.fop.image.JAIImage"; - } else if ("image/tga".equals(imgMimeType)) { - imgClassName = "org.apache.fop.image.JimiImage"; + } else if ("image/tga".equals(imgMimeType)) { + imgClassName = "org.apache.fop.image.JimiImage"; // imgClassName = "org.apache.fop.image.JAIImage"; - } else if ("image/tiff".equals(imgMimeType)) { - imgClassName = "org.apache.fop.image.JimiImage"; + } else if ("image/tiff".equals(imgMimeType)) { + imgClassName = "org.apache.fop.image.JimiImage"; // imgClassName = "org.apache.fop.image.JAIImage"; - } else if ("image/svg-xml".equals(imgMimeType)) { - imgClassName = "org.apache.fop.image.SVGImage"; - } - if (imgClassName == null) - throw new FopImageException("Unsupported image type (" + - absoluteURL.toString() + ") : " + imgMimeType); + } else if ("image/svg-xml".equals(imgMimeType)) { + imgClassName = "org.apache.fop.image.SVGImage"; + } + if (imgClassName == null) + throw new FopImageException("Unsupported image type (" + + absoluteURL.toString() + ") : " + imgMimeType); - // load the right image class - // return new - Object imageInstance = null; - Class imageClass = null; - try { - imageClass = Class.forName(imgClassName); - Class[] imageConstructorParameters = new Class[2]; - imageConstructorParameters[0] = Class.forName("java.net.URL"); - imageConstructorParameters[1] = Class.forName("org.apache.fop.image.analyser.ImageReader"); - Constructor imageConstructor = - imageClass.getDeclaredConstructor( - imageConstructorParameters); - Object[] initArgs = new Object[2]; - initArgs[0] = absoluteURL; - initArgs[1] = imgReader; - imageInstance = imageConstructor.newInstance(initArgs); - } catch (java.lang.reflect.InvocationTargetException ex) { + // load the right image class + // return new + Object imageInstance = null; + Class imageClass = null; + try { + imageClass = Class.forName(imgClassName); + Class[] imageConstructorParameters = new Class[2]; + imageConstructorParameters[0] = Class.forName("java.net.URL"); + imageConstructorParameters[1] = Class.forName("org.apache.fop.image.analyser.ImageReader"); + Constructor imageConstructor = + imageClass.getDeclaredConstructor( + imageConstructorParameters); + Object[] initArgs = new Object[2]; + initArgs[0] = absoluteURL; + initArgs[1] = imgReader; + imageInstance = imageConstructor.newInstance(initArgs); + } catch (java.lang.reflect.InvocationTargetException ex) { Throwable t = ex.getTargetException(); String msg; if (t != null) { @@ -189,14 +191,14 @@ public class FopImageFactory { absoluteURL.toString() + ") : " + ex.getMessage() ); } - if (! (imageInstance instanceof org.apache.fop.image.FopImage)) { - throw new FopImageException( - "Error creating FopImage object (" + - absoluteURL.toString() + ") : " + "class " + - imageClass.getName() + " doesn't implement org.apache.fop.image.FopImage interface"); - } - m_urlMap.put(absoluteURL.toString(), imageInstance); - return (FopImage) imageInstance; - } + if (! (imageInstance instanceof org.apache.fop.image.FopImage)) { + throw new FopImageException( + "Error creating FopImage object (" + + absoluteURL.toString() + ") : " + "class " + + imageClass.getName() + " doesn't implement org.apache.fop.image.FopImage interface"); + } + m_urlMap.put(absoluteURL.toString(), imageInstance); + return (FopImage) imageInstance; + } } -- 2.39.5