jeremias    2002/11/08 02:05:29

  Modified:    src/org/apache/fop/image/analyser Tag: fop-0_20_2-maintain
                        ImageReaderFactory.java
  Log:
  Improved registration of ImageReader implementations.
  line ending correction
  ArrayList --> List
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.6.2.3   +97 -64    
xml-fop/src/org/apache/fop/image/analyser/ImageReaderFactory.java
  
  Index: ImageReaderFactory.java
  ===================================================================
  RCS file: 
/home/cvs/xml-fop/src/org/apache/fop/image/analyser/ImageReaderFactory.java,v
  retrieving revision 1.6.2.2
  retrieving revision 1.6.2.3
  diff -u -r1.6.2.2 -r1.6.2.3
  --- ImageReaderFactory.java   2 Aug 2002 20:28:52 -0000       1.6.2.2
  +++ ImageReaderFactory.java   8 Nov 2002 10:05:29 -0000       1.6.2.3
  @@ -1,64 +1,97 @@
  -/*
  - * $Id$
  - * Copyright (C) 2001 The Apache Software Foundation. All rights reserved.
  - * For details on use and redistribution please refer to the
  - * LICENSE file included with these sources.
  - */
  -
  -package org.apache.fop.image.analyser;
  -
  -// Java
  -import java.io.InputStream;
  -import java.io.BufferedInputStream;
  -import java.io.IOException;
  -import java.util.ArrayList;
  -
  -// FOP
  -import org.apache.fop.image.FopImageException;
  -
  -/**
  - * Factory for ImageReader objects.
  - * @author Pankaj Narula
  - * @version 1.0
  - */
  -public class ImageReaderFactory {
  -    static protected ArrayList formats = null;
  -
  -    /**
  -     * ImageReader maker.
  -     * @param in image input stream
  -     * @return ImageReader object
  -     * @exception FopImageException  an error occured during creation or
  -     * image type is not supported
  -     */
  -    static public ImageReader Make(String uri,
  -                                   InputStream in) throws FopImageException {
  -
  -        // need to use a config file and remove static methods
  -        formats = new ArrayList();
  -        formats.add(new JPEGReader());
  -        formats.add(new BMPReader());
  -        formats.add(new GIFReader());
  -        formats.add(new PNGReader());
  -        formats.add(new TIFFReader());
  -        formats.add(new EPSReader());
  -        formats.add(new SVGReader());
  -        //
  -
  -        ImageReader reader;
  -        BufferedInputStream bis = new BufferedInputStream(in);
  -        try {
  -            for (int i = 0; i< formats.size(); i++) {
  -                reader = (ImageReader)formats.get(i);
  -                if (reader.verifySignature(uri, bis)) {
  -                    return reader;
  -                }
  -            }
  -        } catch (IOException ex) {
  -            throw new FopImageException(ex.getMessage());
  -        }
  -        return null;
  -    }
  -
  -}
  -
  +/*
  + * $Id$
  + * Copyright (C) 2001-2002 The Apache Software Foundation. All rights reserved.
  + * For details on use and redistribution please refer to the
  + * LICENSE file included with these sources.
  + */
  +
  +package org.apache.fop.image.analyser;
  +
  +// Java
  +import java.io.InputStream;
  +import java.io.BufferedInputStream;
  +import java.io.IOException;
  +import java.util.List;
  +
  +// FOP
  +import org.apache.fop.image.FopImageException;
  +
  +/**
  + * Factory for ImageReader objects.
  + * @author Pankaj Narula
  + */
  +public class ImageReaderFactory {
  +    static protected List formats = null;
  +
  +    static {
  +        /**@todo  make configurable one day...*/
  +        formats = new java.util.Vector();
  +        try {
  +            registerImageReader("org.apache.fop.image.analyser.JPEGReader");
  +            registerImageReader("org.apache.fop.image.analyser.BMPReader");
  +            registerImageReader("org.apache.fop.image.analyser.GIFReader");
  +            registerImageReader("org.apache.fop.image.analyser.PNGReader");
  +            registerImageReader("org.apache.fop.image.analyser.TIFFReader");
  +            registerImageReader("org.apache.fop.image.analyser.EPSReader");
  +            registerImageReader("org.apache.fop.image.analyser.SVGReader");
  +        } catch (ClassNotFoundException cnfe) {
  +            throw new RuntimeException("One of the default ImageReader 
implementations is not available: "+cnfe.getMessage());
  +        }
  +    }
  +
  +    /**
  +     * Registers a new ImageReader implementation.
  +     *
  +     * @param classname The fully qualified classname
  +     * @throws ClassNotFoundException In case the given class cannot be found
  +     */
  +    public static void registerImageReader(String classname) throws 
ClassNotFoundException {
  +        Class clazz = Class.forName(classname);
  +        registerImageReader(clazz);
  +    }
  +
  +
  +    /**
  +     * Registers a new ImageReader implementation.
  +     *
  +     * @param clazz The ImageReader implementation class.
  +     */
  +    public static void registerImageReader(Class clazz) {
  +        if (!ImageReader.class.isAssignableFrom(clazz)) throw new 
RuntimeException("This class does not implement the ImageReader interface: 
"+clazz.getName());
  +        formats.add(clazz);
  +    }
  +
  +    /**
  +     * ImageReader maker.
  +     *
  +     * @param uri URI of the image
  +     * @param in image input stream
  +     * @return ImageReader object
  +     * @exception FopImageException  an error occured during creation or
  +     * image type is not supported
  +     */
  +    static public ImageReader Make(String uri,
  +                                   InputStream in) throws FopImageException {
  +
  +        ImageReader reader;
  +        BufferedInputStream bis = new BufferedInputStream(in);
  +        try {
  +            for (int i = 0; i< formats.size(); i++) {
  +                Class clazz = (Class)formats.get(i);
  +                try {
  +                    reader = (ImageReader)clazz.newInstance();
  +                } catch (Exception e) {
  +                    throw new FopImageException("ImageReader implementation cannot 
be instantiated: "+e.getMessage());
  +                }
  +                if (reader.verifySignature(uri, bis)) {
  +                    return reader;
  +                }
  +            }
  +        } catch (IOException ex) {
  +            throw new FopImageException(ex.getMessage());
  +        }
  +        return null;
  +    }
  +
  +}
  +
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to