~hjd/ubuntu/wily/xmlgraphics-commons/debian-merged

« back to all changes in this revision

Viewing changes to src/java/org/apache/xmlgraphics/image/loader/spi/ImageImplRegistry.java

  • Committer: Hans Joachim Desserud
  • Date: 2015-11-11 18:22:53 UTC
  • mfrom: (9.1.5 sid)
  • Revision ID: hans_joachim_desserud-20151111182253-zwi0frfm97j0wddn
  * Merge from Debian unstable.  Remaining changes:
    - d/control: Drop dependencies required for unit testing as they
      include libmockito-java which would pull maven into main, disable unit
      test execution.

Show diffs side-by-side

added added

removed removed

Lines of Context:
15
15
 * limitations under the License.
16
16
 */
17
17
 
18
 
/* $Id: ImageImplRegistry.java 1311364 2012-04-09 18:22:43Z gadams $ */
 
18
/* $Id: ImageImplRegistry.java 1681698 2015-05-26 07:49:35Z ssteiner $ */
19
19
 
20
20
package org.apache.xmlgraphics.image.loader.spi;
21
21
 
42
42
public class ImageImplRegistry {
43
43
 
44
44
    /** logger */
45
 
    protected static Log log = LogFactory.getLog(ImageImplRegistry.class);
 
45
    protected static final Log log = LogFactory.getLog(ImageImplRegistry.class);
46
46
 
47
47
    /** Infinite penalty value which shall force any implementation to become ineligible. */
48
48
    public static final int INFINITE_PENALTY = Integer.MAX_VALUE;
68
68
    //Note: String as key chosen to avoid possible class-unloading leaks
69
69
 
70
70
    /** Singleton instance */
71
 
    private static ImageImplRegistry defaultInstance;
 
71
    private static ImageImplRegistry defaultInstance = new ImageImplRegistry();
72
72
 
73
73
    /**
74
74
     * Main constructor. This constructor allows to disable plug-in discovery for testing purposes.
82
82
 
83
83
    /**
84
84
     * Main constructor.
85
 
     * @see #getDefaultInstance()
86
85
     */
87
86
    public ImageImplRegistry() {
88
87
        this(true);
93
92
     * @return the default instance
94
93
     */
95
94
    public static ImageImplRegistry getDefaultInstance() {
96
 
        if (defaultInstance == null) {
97
 
            defaultInstance = new ImageImplRegistry();
98
 
        }
99
95
        return defaultInstance;
100
96
    }
101
97
 
223
219
 
224
220
    /**
225
221
     * Returns the Collection of registered ImageConverter instances.
226
 
     * @return a Collection<ImageConverter>
 
222
     * @return a Collection&lt;ImageConverter&gt;
227
223
     */
228
224
    public Collection getImageConverters() {
229
225
        return Collections.unmodifiableList(this.converters);
258
254
        sortPreloaders();
259
255
        final Iterator iter = this.preloaders.iterator();
260
256
        //Unpack the holders
261
 
        return new Iterator() {
262
 
 
263
 
            public boolean hasNext() {
264
 
                return iter.hasNext();
265
 
            }
266
 
 
267
 
            public Object next() {
268
 
                Object obj = iter.next();
269
 
                if (obj != null) {
270
 
                    return ((PreloaderHolder)obj).preloader;
271
 
                } else {
272
 
                    return null;
273
 
                }
274
 
            }
275
 
 
276
 
            public void remove() {
277
 
                iter.remove();
278
 
            }
279
 
 
280
 
        };
 
257
        MyIterator i = new MyIterator();
 
258
        i.iter = iter;
 
259
        return i;
 
260
    }
 
261
 
 
262
    static class MyIterator implements Iterator {
 
263
        Iterator iter;
 
264
        public boolean hasNext() {
 
265
            return iter.hasNext();
 
266
        }
 
267
 
 
268
        public Object next() {
 
269
            Object obj = iter.next();
 
270
            if (obj != null) {
 
271
                return ((PreloaderHolder)obj).preloader;
 
272
            } else {
 
273
                return null;
 
274
            }
 
275
        }
 
276
 
 
277
        public void remove() {
 
278
            iter.remove();
 
279
        }
 
280
 
281
281
    }
282
282
 
283
283
    /**
324
324
    public ImageLoaderFactory[] getImageLoaderFactories(ImageInfo imageInfo, ImageFlavor flavor) {
325
325
        String mime = imageInfo.getMimeType();
326
326
        Collection matches = new java.util.TreeSet(new ImageLoaderFactoryComparator(flavor));
327
 
        Map flavorMap = (Map)loaders.get(mime);
 
327
        Map flavorMap = (Map) loaders.get(mime);
328
328
        if (flavorMap != null) {
329
 
            Iterator flavorIter = flavorMap.keySet().iterator();
330
 
            while (flavorIter.hasNext()) {
331
 
                ImageFlavor checkFlavor = (ImageFlavor)flavorIter.next();
 
329
            for (Object i : flavorMap.entrySet()) {
 
330
                Map.Entry e = (Map.Entry) i;
 
331
                ImageFlavor checkFlavor = (ImageFlavor) e.getKey();
332
332
                if (checkFlavor.isCompatible(flavor)) {
333
 
                    List factoryList = (List)flavorMap.get(checkFlavor);
 
333
                    List factoryList = (List)e.getValue();
334
334
                    if (factoryList != null && factoryList.size() > 0) {
335
335
                        Iterator factoryIter = factoryList.iterator();
336
336
                        while (factoryIter.hasNext()) {
367
367
 
368
368
            ImageLoaderFactory f2 = (ImageLoaderFactory)o2;
369
369
            ImageLoader l2 = f2.newImageLoader(targetFlavor);
370
 
            long p2 = l2.getUsagePenalty();
371
 
            p2 = getAdditionalPenalty(l2.getClass().getName()).getValue();
 
370
//            long p2 = l2.getUsagePenalty();
 
371
            long p2 = getAdditionalPenalty(l2.getClass().getName()).getValue();
372
372
 
373
373
            //Lowest penalty first
374
374
            return Penalty.truncate(p1 - p2);
398
398
                        new ImageLoaderFactory[factoryCount]);
399
399
            }
400
400
        }
401
 
        return null;
 
401
        return new ImageLoaderFactory[0];
402
402
    }
403
403
 
404
404
    /**