01: /*
02:
03: Licensed to the Apache Software Foundation (ASF) under one or more
04: contributor license agreements. See the NOTICE file distributed with
05: this work for additional information regarding copyright ownership.
06: The ASF licenses this file to You under the Apache License, Version 2.0
07: (the "License"); you may not use this file except in compliance with
08: the License. You may obtain a copy of the License at
09:
10: http://www.apache.org/licenses/LICENSE-2.0
11:
12: Unless required by applicable law or agreed to in writing, software
13: distributed under the License is distributed on an "AS IS" BASIS,
14: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15: See the License for the specific language governing permissions and
16: limitations under the License.
17:
18: */
19: package org.apache.batik.ext.awt.image.spi;
20:
21: import java.util.HashMap;
22: import java.util.Iterator;
23: import java.util.Map;
24:
25: import org.apache.batik.util.Service;
26:
27: /**
28: *
29: * @version $Id: ImageWriterRegistry.java 501495 2007-01-30 18:00:36Z dvholten $
30: */
31: public class ImageWriterRegistry {
32:
33: private static volatile ImageWriterRegistry instance;
34:
35: private final Map imageWriterMap = new HashMap();
36:
37: private ImageWriterRegistry() {
38: setup();
39: }
40:
41: public static ImageWriterRegistry getInstance() {
42: if (instance == null) {
43: synchronized (ImageWriterRegistry.class) {
44: if (instance == null) {
45: instance = new ImageWriterRegistry();
46: }
47: }
48: }
49: return instance;
50: }
51:
52: private void setup() {
53: Iterator iter = Service.providers(ImageWriter.class);
54: while (iter.hasNext()) {
55: ImageWriter writer = (ImageWriter) iter.next();
56: // System.out.println("RE: " + writer);
57: register(writer);
58: }
59: }
60:
61: public void register(ImageWriter writer) {
62: imageWriterMap.put(writer.getMIMEType(), writer);
63: }
64:
65: /**
66: * get the ImageWriter registered for mime, or null.
67: * @param mime used for lookup
68: * @return the registered ImageWriter (maybe null)
69: */
70: public ImageWriter getWriterFor(String mime) {
71: return (ImageWriter) imageWriterMap.get(mime);
72: }
73:
74: }
|