01: /*
02: * $RCSfile: OperationRegistrySpi.java,v $
03: *
04: * Copyright (c) 2005 Sun Microsystems, Inc. All rights reserved.
05: *
06: * Use is subject to license terms.
07: *
08: * $Revision: 1.1 $
09: * $Date: 2005/02/11 04:57:13 $
10: * $State: Exp $
11: */
12: package javax.media.jai;
13:
14: // This uses the ImageIO idea of "services" to look for
15: // concrete class that implement this interface. These concrete
16: // classes must have been registered/listed in the
17: // META-INF/services/javax.media.jai.OperationRegistrySpi file.
18:
19: /**
20: * <p> An interface definition to aid in the automatic loading of
21: * user-defined JAI operations.
22: *
23: * <p> All concrete classes that implement this
24: * interface can register by listing themselves in the
25: * "<code>META-INF/services/javax.media.jai.OperationRegistrySpi</code>"
26: * file that can be found in the classpath (this file is often contained
27: * in a jar file along with the class files). The file should contain
28: * a list of fully-qualified concrete provider-class names, one per
29: * line. Space and tab characters surrounding each name, as well as
30: * blank lines, are ignored. The comment character is <tt>'#'</tt>
31: * (<tt>0x23</tt>); on each line all characters following the first
32: * comment character are ignored. The file must be encoded in UTF-8.
33: *
34: * <p> If a particular concrete provider class is named in more than one
35: * configuration file, or is named in the same configuration file more
36: * than once, then the duplicates will be ignored. The configuration
37: * file naming a particular provider need not be in the same jar file or
38: * other distribution unit as the provider itself. The provider must be
39: * accessible from the same class loader that was initially queried to
40: * locate the configuration file; note that this is not necessarily the
41: * class loader that found the file.
42: *
43: * <p>All such concrete classes must have a zero-argument
44: * constructor so that they may be instantiated during lookup. The
45: * <code>updateRegistry()</code> method of all such registered
46: * classes will be called with the default instance of the JAI
47: * <code>OperationRegistry</code> after it has been initialized with the
48: * default JAI registry file (META-INF/javax.media.jai.registryFile.jai)
49: * and once all "META-INF/registryFile.jai"s found in the
50: * classpath are loaded. There is no guarantee of the order
51: * in which the <code>updateRegistry()</code> method of each
52: * <code>OperationRegistrySpi</code> instance will be invoked.
53: *
54: * <p>The <code>OperationRegistrySpi</code> could also be used to for
55: * the registration of other JAI related objects done through static
56: * methods such as the <code>Serializer</code> objects and image
57: * codecs.
58: *
59: * @see javax.media.jai.remote.Serializer
60: * @see javax.media.jai.OperationRegistry
61: * @see javax.media.jai.OperationRegistry#writeExternal
62: *
63: * @since JAI 1.1
64: */
65: public interface OperationRegistrySpi {
66:
67: /**
68: * This method will be called for all registered "service-providers"
69: * of this interface just after the default registry has been
70: * read-in.
71: */
72: public void updateRegistry(OperationRegistry registry);
73: }
|