## javax.media.jai
Class OperationRegistry

    java.lang.Object
      |
      +--javax.media.jai.OperationRegistry

All Implemented Interfaces:
  java.io.Externalizable, java.io.Serializable

public class OperationRegistry
extends java.lang.Object
implements java.io.Externalizable

A class responsible for maintaining a registry of various types of factory objects and preferences among them. The operation registry hierarchy looks as follows

                                                          |-object1-
                                               |-product1-|-object2-
                                 |-descriptor1-|          |-object3-
                                 |             |
                                 |             |          |-object1-
                                 |             |-product2-|-object2-
                         |-mode1-|                        |-object3-
                         |       |
     |-OperationRegistry-|       |                        |-object1-
                         |       |             |-product1-|-object2-
                         |       |-descriptor2-|          |-object3-
                         |                     |
                         |                     |          |-object1-
                         |                     |-product2-|-object2-
                         |                                |-object3-
                         |
                         |-mode2-|-descriptor1-|-object1--
                                 |
                                 |-descriptor2-|-object1--

The `OperationRegistry` class maps a descriptor name (for example, an image operation name) into the particular kind of factory object requested, capable of implementing the functionality described by the descriptor. The mapping is constructed in several stages:

At the highest level all objects are registered against some mode. A mode is specified by a `String` which must be one of those returned by `RegistryMode.getModeNames()`. Examples of known registry modes include "rendered", "renderable", "collection", "renderableCollection", "tileEncoder", "tileDecoder", "remoteRendered", "remoteRenderable", etc.

Each registry mode is associated with a `RegistryElementDescriptor` which describes some functionality to be implemented by factory objects associated with this descriptor. For example, the "rendered" registry mode is associated with `OperationDescriptor.class` and "tileEncoder" is associated with `TileCodecDescriptor.class`. Different registry modes can share the same `RegistryElementDescriptor`. For example "rendered", "renderable" (and other image operation registry modes) are all associated with `OperationDescriptor.class`.

If a registry mode supports preferences (for example "rendered", "tileEncoder" etc.), then the hierarchy of objects registered under that mode looks like that of "mode1" above. Descriptors are first registered against all modes that the specific instance supports. Each factory object that implements the functionality specified by that descriptor is registered against some product (name) under that descriptor. Preferences can be set among products under a given descriptor or among objects under a specific product/descriptor.

The ordering of such factory objects is determined by the order of the products attached to an `OperationDescriptor`, and by the order of the factory objects within each product. The orders are established by setting pairwise preferences, resulting in a partial order which is then sorted topologically. The results of creating a cycle are undefined.

The ordering of factory objects within a product is intended to allow vendors to create complex "fallback" chains. An example would be installing a `RenderedImageFactory` that implements separable convolution ahead of a `RenderedImageFactory` that implements a more general algorithm.

If a registry mode does not support preferences (for example, "renderable", "remoteRenderable" etc.) then the hierarchy of objects registered under that mode looks like that of "mode2" above. Only a single factory object belonging to this mode can be associated with a given descriptor. If multiple objects are registered under the same descriptor, the last one registered is retained.

The `OperationRegistry` has several methods to manage this hierarchy, which accept a `modeName` and work with `Object`s. The preferred manner of usage is through the type-safe wrapper class which are specific to each mode (for example `RIFRegistry`, `CRIFRegistry` etc.)

Vendors are encouraged to use unique product names (by means of the Java programming language convention of reversed Internet addresses) in order to maximize the likelihood of clean installation. See The Java Programming Language, §10.1 for a discussion of this convention in the context of package naming.

Users will, for the most part, only wish to set ordering preferences on the product level, since the factory object level orderings will be complex. However, it is possible for a knowledgable user to insert a specific factory object into an existing product for tuning purposes.

The `OperationRegistry` also has the responsibility of associating a set of `PropertyGenerators` with each descriptor. This set will be coalesced into a `PropertySource` suitable for use by the getPropertySource() method. If several `PropertyGenerator`s associated with a particular descriptor generate the same property, only the last one to be registered will have any effect.

The registry handles all names (except class names) in a case-insensitive but retentive manner.

Initialization and automatic loading of registry objects.

The user has two options for automatic loading of registry objects.

- For most normal situations the user can create a "`registryFile.jai`" with entries for operators and preferences specific to their packages. This registry file must be put it in the META-INF directory of the jarfile or classpath.
- For situations where more control over the operation registry is needed, (for example remove an operator registered by JAI etc.) the user can implement a concrete sub-class of the `OperationRegistrySpi` interface and register it as service provider (see `OperationRegistrySpi` for more details). The `updateRegistry` method of such registered service providers will be called with the default `OperationRegistry` of `JAI` once it has been initialized.

The initialization of the `OperationRegistry` of the default instance of `JAI` happens as follows

1. Load the JAI distributed registry file "`META-INF/javax.media.jai.registryFile.jai`" (from jai_core.jar)
2. Find and load all "`META-INF/registryFile.jai`" files found in the classpath in some arbitrary order.
3. Look for registered service providers of `OperationRegistrySpi` listed in all "`META-INF/services/javax.media.jai.OperationRegistrySpi`" files found in the classpath and call their `updateRegistry` method passing in the default OperationRegistry. The order of these calls to `updateRegistry` is arbitrary.

Note that the user should not make any assumption about the order of loading WITHIN step 2 or 3. If there is a need for the `updateRegistry` method to be called right after the associated registryFile.jai is read in, the following could be done.

The user could give the registry file a package qualified name for e.g xxx.yyy.registryFile.jai and put this in the META-INF directory of the jar file. Then in the concrete class that implements `OperationRegistrySpi`

      void updateRegistry(OperationRegistry or) {
          String registryFile = "META-INF/xxx.yyy.registryFile.jai";
          InputStream is = ClassLoader.getResourceAsStream(registryFile);

          or.updateFromStream(is);

          // Make other changes to "or" ...
      }

For information on the format of the registry file, see the serialized form of the `OperationRegistry`.

See Also:
  `OperationRegistrySpi`, `RegistryMode`, `RegistryElementDescriptor`, Serialized Form

Constructor Summary
`OperationRegistry()` Default Constructor.

Method Summary
`void` `addPropertyGenerator(java.lang.String operationName, PropertyGenerator generator)` Deprecated. as of JAI 1.1 in favor of the version where the modeName is explicitly specified. This is currently equivalent to `addPropertyGenerator("rendered", ...)`
`void` `addPropertyGenerator(java.lang.String modeName, java.lang.String descriptorName, PropertyGenerator generator)` Adds a `PropertyGenerator` to the registry, associating it with a particular descriptor registered against a registry mode.
`void` `clearCIFPreferences(java.lang.String operationName, java.lang.String productName)` Deprecated. as of JAI 1.1 in favor of `CIFRegistry.clearPreferences(...)` . This is currently equivalent to `CIFRegistry.clearPreferences(this, operationName, productName)`
`void` `clearFactoryPreferences(java.lang.String modeName, java.lang.String descriptorName, java.lang.String productName)` Removes all preferences between instances of a factory within a product registered under a particular `OperationDescriptor`.
`void` `clearOperationPreferences(java.lang.String operationName, java.lang.String productName)` Deprecated. as of JAI 1.1 in favor of calling `*IFRegistry.clearPreferences(..)` on all image operation related modes.
`void` `clearProductPreferences(java.lang.String operationName)` Deprecated. as of JAI 1.1 in favor of `clearProductPreferences(...)` which specifies a `modeName` also. This is currently equivalent to `clearProductPreferences("rendered", operationName)`
`void` `clearProductPreferences(java.lang.String modeName, java.lang.String descriptorName)` Remove all the preferences between products for a descriptor registered under a registry mode.
`void` `clearPropertyState()` Deprecated. as of JAI 1.1 in factor of the version where the modeName is explicitly specified. This is currently equivalent to `clearPropertyState("rendered")`
`void` `clearPropertyState(java.lang.String modeName)` Removes all property associated information for this registry mode from this `OperationRegistry`.
`void` `clearRIFPreferences(java.lang.String operationName, java.lang.String productName)` Deprecated. as of JAI 1.1 in favor of `RIFRegistry.clearPreferences(...)` . This is currently equivalent to `RIFRegistry.clearPreferences(this, operationName, productName)`
`void` `copyPropertyFromSource(java.lang.String operationName, java.lang.String propertyName, int sourceIndex)` Deprecated. as of JAI 1.1 in favor of the version where the modeName is explicitly specified. This is currently equivalent to `copyPropertyFromSource("rendered", ...)`
`void` `copyPropertyFromSource(java.lang.String modeName, java.lang.String descriptorName, java.lang.String propertyName, int sourceIndex)` Forces a property to be copied from the specified source by nodes performing a particular operation.
`PlanarImage` `create(java.lang.String operationName, java.awt.image.renderable.ParameterBlock paramBlock, java.awt.RenderingHints renderHints)` Deprecated. as of JAI 1.1 in favor of `RIFRegistry.create(...)` which returns a `RenderedImage` and not a `PlanarImage`. This is currently equivalent to `PlanarImage.wrapRenderedImage(RIFRegistry.create(this, operationName, paramBlock, renderHints))`
`CollectionImage` `createCollection(java.lang.String operationName, java.awt.image.renderable.ParameterBlock args, java.awt.RenderingHints hints)` Deprecated. as of JAI 1.1 in favor of `CIFRegistry.create(...)` . This is currently equivalent to `CIFRegistry.create(this, operationName, args, hints))`
`java.awt.image.renderable.ContextualRenderedImageFactory` `createRenderable(java.lang.String operationName, java.awt.image.renderable.ParameterBlock paramBlock)` Deprecated. as of JAI 1.1 in favor of `CRIFRegistry.get(...)` This is currently equivalent to `CRIFRegistry.get(this, operationName)`
`RegistryElementDescriptor` `getDescriptor(java.lang.Class descriptorClass, java.lang.String descriptorName)` Get the `RegistryElementDescriptor` corresponding to a `descriptorClass` and a `descriptorName`.
`RegistryElementDescriptor` `getDescriptor(java.lang.String modeName, java.lang.String descriptorName)` Get the `RegistryElementDescriptor` corresponding to `descriptorName` which supports the specified mode.
`java.lang.String[]` `getDescriptorNames(java.lang.Class descriptorClass)` Get an array of all the descriptor names corresponding to the `descriptorClass`.
`java.lang.String[]` `getDescriptorNames(java.lang.String modeName)` Get an array of all descriptor-names of descriptors registered under a given registry mode.
`java.util.List` `getDescriptors(java.lang.Class descriptorClass)` Get a `List` of all `RegistryElementDescriptor` corresponding to the `descriptorClass`.
`java.util.List` `getDescriptors(java.lang.String modeName)` Get a list of all `RegistryElementDescriptor`s registered under a given registry mode.
`java.lang.Object` `getFactory(java.lang.String modeName, java.lang.String descriptorName)` Returns the factory of the specified type for the named operation.
`java.util.Iterator` `getFactoryIterator(java.lang.String modeName, java.lang.String descriptorName)` Returns an `Iterator` over all factory objects registered with the specified factory and operation names over all products.
`java.lang.Object[][]` `getFactoryPreferences(java.lang.String modeName, java.lang.String descriptorName, java.lang.String productName)` Get all pairwise preferences between instances of a factory within a product registered under a particular `OperationDescriptor`.
`java.lang.String[]` `getGeneratedPropertyNames(java.lang.String operationName)` Deprecated. as of JAI 1.1 in favor of the version where the modeName is explicitly specified. This is currently equivalent to `getGeneratedPropertyNames("rendered", ...)`
`java.lang.String[]` `getGeneratedPropertyNames(java.lang.String modeName, java.lang.String descriptorName)` Returns a list of the properties generated by nodes implementing the descriptor associated with a particular descriptor Name.
`OperationDescriptor` `getOperationDescriptor(java.lang.String operationName)` Deprecated. as of JAI 1.1 in favor of `getDescriptor(...)` where the mode name is explicitly specified.
`java.util.Vector` `getOperationDescriptors()` Deprecated. as of JAI 1.1 in favor of `getDescriptors( OperationDescriptor.class)` which returns a `List` and not a `Vector`. This is currently equivalent to `new Vector(getDescriptors(OperationDescriptor.class))`
`java.lang.String[]` `getOperationNames()` Deprecated. as of JAI 1.1 in favor of `getDescriptorNames( OperationDescriptor.class)`.
`java.util.Vector` `getOrderedCIFList(java.lang.String operationName, java.lang.String productName)` Deprecated. as of JAI 1.1 in favor of `CIFRegistry.getOrderedList(...)` which returns a `List` and not a `Vector`. This is currently equivalent to `new Vector(CIFRegistry.getOrderedList(this, operationName, productName))`
`java.util.List` `getOrderedFactoryList(java.lang.String modeName, java.lang.String descriptorName, java.lang.String productName)` Returns a list of the factory instances of a product registered under a particular `OperationDescriptor`, in an ordering that satisfies all of the pairwise preferences that have been set.
`java.util.Vector` `getOrderedProductList(java.lang.String operationName)` Deprecated. as of JAI 1.1 in favor of `getOrderedProductList(...)` which accepts a `modeName` also. This is currently equivalent to `getOrderedProductList("rendered", operationName)`
`java.util.Vector` `getOrderedProductList(java.lang.String modeName, java.lang.String descriptorName)` Returns a list of the products registered under a particular descriptor in an ordering that satisfies all of the pairwise preferences that have been set.
`java.util.Vector` `getOrderedRIFList(java.lang.String operationName, java.lang.String productName)` Deprecated. as of JAI 1.1 in favor of `RIFRegistry.getOrderedList(...)` which returns a `List` and not a `Vector`. This is currently equivalent to `new Vector(RIFRegistry.getOrderedList(this, operationName, productName))`
`java.lang.String[][]` `getProductPreferences(java.lang.String operationName)` Deprecated. as of JAI 1.1 in favor of `getProductPreferences(...)` which accepts a `modeName` also. This is currently equivalent to `getProductPreferences("rendered", operationName)`
`java.lang.String[][]` `getProductPreferences(java.lang.String modeName, java.lang.String descriptorName)` Returns a list of the pairwise product preferences under a particular descriptor registered against a registry mode.
`PropertySource` `getPropertySource(OperationNode op)` Constructs and returns a `PropertySource` suitable for use by a given `OperationNode`.
`PropertySource` `getPropertySource(RenderableOp op)` Deprecated. as of JAI 1.1 in favor `CRIFRegistry.getPropertySource(op)`
`PropertySource` `getPropertySource(RenderedOp op)` Deprecated. as of JAI 1.1 in favor `RIFRegistry.getPropertySource(op)`
`PropertySource` `getPropertySource(java.lang.String modeName, java.lang.String descriptorName, java.lang.Object op, java.util.Vector sources)` Merge mode-specific property environment with mode-independent property environment of the descriptor.
`java.lang.String[]` `getRegistryModes()` Get's the list of known registry modes known to the `OperationRegistry`.
`static OperationRegistry` `getThreadSafeOperationRegistry()` Creates and returns a new thread-safe version of the `OperationRegistry` which uses reader-writer locks to wrap every method with a read or a write lock as appropriate.
`void` `initializeFromStream(java.io.InputStream in)` Initializes the `OperationRegistry` from an `InputStream`.
`java.lang.Object` `invokeFactory(java.lang.String modeName, java.lang.String descriptorName, java.lang.Object[] args)` Finds the factory of the specified type for the named operation and invokes its default factory method with the supplied parameters.
`void` `readExternal(java.io.ObjectInput in)` Restores the contents of the registry from an ObjectInput which was previously written using the `writeExternal` method.
`void` `registerCIF(java.lang.String operationName, java.lang.String productName, CollectionImageFactory CIF)` Deprecated. as of JAI 1.1 in favor of `CIFRegistry.register(...)` . This is currently equivalent to `CIFRegistry.register(this, operationName, productName, CIF)`
`void` `registerCRIF(java.lang.String operationName, java.awt.image.renderable.ContextualRenderedImageFactory CRIF)` Deprecated. as of JAI 1.1 in favor of `CRIFRegistry.register(...)` . This is currently equivalent to `CRIFRegistry.register(this, operationName, productName, CRIF)`
`void` `registerDescriptor(RegistryElementDescriptor descriptor)` Register a descriptor against all the registry modes it supports.
`void` `registerFactory(java.lang.String modeName, java.lang.String descriptorName, java.lang.String productName, java.lang.Object factory)` Register a factory object with a particular product and descriptor against a specified mode.
`void` `registerOperationDescriptor(OperationDescriptor odesc, java.lang.String operationName)` Deprecated. as of JAI 1.1 in favor of `registerDescriptor(odesc)`
`void` `registerRIF(java.lang.String operationName, java.lang.String productName, java.awt.image.renderable.RenderedImageFactory RIF)` Deprecated. as of JAI 1.1 in favor of `RIFRegistry.register(...)` . This is currently equivalent to `RIFRegistry.register(this, operationName, productName, RIF)`
`void` `registerServices(java.lang.ClassLoader cl)` Load all the "META-INF/registryFile.jai" files and then called the `updateRegistry()` of the registered service provider of `OperationRegistrySpi` found in the classpath corresponding to this class loader.
`void` `removePropertyGenerator(java.lang.String operationName, PropertyGenerator generator)` Deprecated. as of JAI 1.1 in favor of the version where the modeName is explicitly specified. This is currently equivalent to `removePropertyGenerator("rendered", ...)`
`void` `removePropertyGenerator(java.lang.String modeName, java.lang.String descriptorName, PropertyGenerator generator)` Removes a `PropertyGenerator` from its association with a particular descriptor/registry-mode in the registry.
`void` `removeRegistryMode(java.lang.String modeName)` Remove a registry mode (including pre-defined JAI modes) from the OperationRegistry.
`void` `setCIFPreference(java.lang.String operationName, java.lang.String productName, CollectionImageFactory preferredCIF, CollectionImageFactory otherCIF)` Deprecated. as of JAI 1.1 in favor of `CIFRegistry.setPreference(...)` . This is currently equivalent to `CIFRegistry.setPreference(this, operationName, productName, preferredCIF, otherCIF)`
`void` `setFactoryPreference(java.lang.String modeName, java.lang.String descriptorName, java.lang.String productName, java.lang.Object preferredOp, java.lang.Object otherOp)` Sets a preference between two factory instances for a given operation under a specified product.
`void` `setProductPreference(java.lang.String operationName, java.lang.String preferredProductName, java.lang.String otherProductName)` Deprecated. as of JAI 1.1 in favor of `setProductPreference(...)` which specifies a `modeName` also. This is currently equivalent to `setProductPreference("rendered", operationName, preferredProductName, otherProductName)`
`void` `setProductPreference(java.lang.String modeName, java.lang.String descriptorName, java.lang.String preferredProductName, java.lang.String otherProductName)` Set the preference between two products for a descriptor registered under a registry mode.
`void` `setRIFPreference(java.lang.String operationName, java.lang.String productName, java.awt.image.renderable.RenderedImageFactory preferredRIF, java.awt.image.renderable.RenderedImageFactory otherRIF)` Deprecated. as of JAI 1.1 in favor of `RIFRegistry.setPreference(...)` . This is currently equivalent to `RIFRegistry.setPreference(this, operationName, productName, preferredRIF, otherRIF)`
`void` `suppressAllProperties(java.lang.String operationName)` Deprecated. as of JAI 1.1 in favor of the version where the modeName is explicitly specified. This is currently equivalent to `suppressAllProperties("rendered", ...)`
`void` `suppressAllProperties(java.lang.String modeName, java.lang.String descriptorName)` Forces all properties to be suppressed by nodes performing a particular operation.
`void` `suppressProperty(java.lang.String operationName, java.lang.String propertyName)` Deprecated. as of JAI 1.1 in favor of the version where the modeName is explicitly specified. This is currently equivalent to `suppressProperty("rendered", ...)`
`void` `suppressProperty(java.lang.String modeName, java.lang.String descriptorName, java.lang.String propertyName)` Forces a particular property to be suppressed by nodes performing a particular operation.
`java.lang.String` `toString()` Returns a String representation of the registry.
`void` `unregisterCIF(java.lang.String operationName, java.lang.String productName, CollectionImageFactory CIF)` Deprecated. as of JAI 1.1 in favor of `CIFRegistry.unregister(...)` . This is currently equivalent to `CIFRegistry.unregister(this, operationName, productName, CIF)`
`void` `unregisterCRIF(java.lang.String operationName, java.awt.image.renderable.ContextualRenderedImageFactory CRIF)` Deprecated. as of JAI 1.1 in favor of `CRIFRegistry.unregister(...)` . This is currently equivalent to `CRIFRegistry.unregister(this, operationName, productName, CRIF)`
`void` `unregisterDescriptor(RegistryElementDescriptor descriptor)` Unregister a descriptor against all its supported modes from the operation registry.
`void` `unregisterFactory(java.lang.String modeName, java.lang.String descriptorName, java.lang.String productName, java.lang.Object factory)` Unregister a factory object previously registered with a product and descriptor against the specified mode.
`void` `unregisterOperationDescriptor(java.lang.String operationName)` Deprecated. as of JAI 1.1 in favor of `unregisterDescriptor(...)` which accepts an `OperationDescriptor` and not a `operationName`.
`void` `unregisterRIF(java.lang.String operationName, java.lang.String productName, java.awt.image.renderable.RenderedImageFactory RIF)` Deprecated. as of JAI 1.1 in favor of `RIFRegistry.unregister(...)` . This is currently equivalent to `RIFRegistry.unregister(this, operationName, productName, RIF)`
`void` `unsetCIFPreference(java.lang.String operationName, java.lang.String productName, CollectionImageFactory preferredCIF, CollectionImageFactory otherCIF)` Deprecated. as of JAI 1.1 in favor of `CIFRegistry.unsetPreference(...)` . This is currently equivalent to `CIFRegistry.unsetPreference(this, operationName, productName, preferredCIF, otherCIF)`
`void` `unsetFactoryPreference(java.lang.String modeName, java.lang.String descriptorName, java.lang.String productName, java.lang.Object preferredOp, java.lang.Object otherOp)` Unsets a preference between two factory instances for a given operation under a specified product.
`void` `unsetProductPreference(java.lang.String operationName, java.lang.String preferredProductName, java.lang.String otherProductName)` Deprecated. as of JAI 1.1 in favor of `unsetProductPreference(...)` which specifies a `modeName` also. This is currently equivalent to `unsetProductPreference("rendered", operationName, preferredProductName, otherProductName)`
`void` `unsetProductPreference(java.lang.String modeName, java.lang.String descriptorName, java.lang.String preferredProductName, java.lang.String otherProductName)` Remove the preference between two products for a descriptor registered under a registry mode.

`void`

`unsetRIFPreference(java.lang.String operationName, java.lang.String productName, java.awt.image.renderable.RenderedImageFactory preferredRIF, java.awt.image.renderable.RenderedImageFactory otherRIF)`
Deprecated. as of JAI 1.1 in favor of `RIFRegistry.unsetPreference(...)` . This is currently equivalent to `RIFRegistry.unsetPreference(this, operationName, productName, preferredRIF, otherRIF)`

`void` `updateFromStream(java.io.InputStream in)` Updates the current `OperationRegistry` with the operations specified by the given `InputStream`.
`void` `writeExternal(java.io.ObjectOutput out)` Saves the contents of the registry as described in the serialized form.
`void` `writeToStream(java.io.OutputStream out)` Writes out the contents of the `OperationRegistry` to a stream as specified in the `writeExternal` method.

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

Constructor Detail

### OperationRegistry

    public OperationRegistry()

  Default Constructor. The `OperationRegistry` created is not thread-safe. Note that none of the automatic loading of registry files or services happens here.
  See Also:
    `getThreadSafeOperationRegistry()`

Method Detail

### getThreadSafeOperationRegistry

    public static OperationRegistry getThreadSafeOperationRegistry()

  Creates and returns a new thread-safe version of the `OperationRegistry` which uses reader-writer locks to wrap every method with a read or a write lock as appropriate. Note that none of the automatic loading of registry files or services is done on this `OperationRegistry`.

### toString

    public java.lang.String toString()

  Returns a String representation of the registry.
  Overrides:
    `toString` in class `java.lang.Object`
  Returns:
    the string representation of this `OperationRegistry`.

### writeToStream

    public void writeToStream(java.io.OutputStream out)
                       throws java.io.IOException

  Writes out the contents of the `OperationRegistry` to a stream as specified in the `writeExternal` method. For more information see the serialized form.
  Parameters:
    `out` - The OutputStream to which the `OperationRegistry` state is written.
  Throws:
    `java.lang.IllegalArgumentException` - if out is null.
  See Also:
    `writeExternal(java.io.ObjectOutput)`

### initializeFromStream

    public void initializeFromStream(java.io.InputStream in)
                              throws java.io.IOException

  Initializes the `OperationRegistry` from an `InputStream`. All non-IO exceptions encountered while parsing the registry files are caught and their error messages are redirected to `System.err`. If `System.err` is null the error messages will never be seen.

  The `InputStream` passed in will not be closed by this method, the caller should close the `InputStream` when it is no longer needed.

  The format of the data from the `InputStream` is expected to be the same as that of the `writeExternal` method as specified in the serialized form.

  Parameters:
    `in` - The `InputStream` from which to read the data.
  Throws:
    `java.lang.IllegalArgumentException` - if in is null.
  See Also:
    `writeExternal(java.io.ObjectOutput)`

### updateFromStream

    public void updateFromStream(java.io.InputStream in)
                          throws java.io.IOException

  Updates the current `OperationRegistry` with the operations specified by the given `InputStream`. All non-IO exceptions encountered while parsing the registry files are caught and their error messages are redirected to `System.err`. If `System.err` is null the error messages will never be seen.

  The `InputStream` passed in will not be closed by this method, the caller should close the `InputStream` when it is no longer needed.

  The format of the data from the `InputStream` is expected to be the same as that of the `writeExternal` method as specified in the serialized form.

  Parameters:
    `in` - The `InputStream` from which to read the data.
  Throws:
    `java.lang.IllegalArgumentException` - if in is null.
  See Also:
    `writeExternal(java.io.ObjectOutput)`

### readExternal

    public void readExternal(java.io.ObjectInput in)
                      throws java.io.IOException,
                             java.lang.ClassNotFoundException

  Restores the contents of the registry from an ObjectInput which was previously written using the `writeExternal` method.

  All non-IO exceptions encountered while parsing the registry files are caught and their error messages are redirected to `System.err`. If `System.err` is null the error messages will never be seen.

  Specified by:
    `readExternal` in interface `java.io.Externalizable`
  Parameters:
    `in` - An ObjectInput from which to read the data.
  Throws:
    `java.lang.IllegalArgumentException` - if in is null.
  See Also:
    `writeExternal(java.io.ObjectOutput)`

### writeExternal

    public void writeExternal(java.io.ObjectOutput out)
                       throws java.io.IOException

  Saves the contents of the registry as described in the serialized form.
  Specified by:
    `writeExternal` in interface `java.io.Externalizable`
  Parameters:
    `out` - An ObjectOutput to which to write the data.
  Throws:
    `IllegalArgumentException` - if out is null.

### removeRegistryMode

    public void removeRegistryMode(java.lang.String modeName)

  Remove a registry mode (including pre-defined JAI modes) from the OperationRegistry. When a mode is removed, all associated descriptors are also removed unless associated with another mode. Note that this does not unregister or remove this mode from `RegistryMode` Also note that a registry mode need not be explicitly added to the `OperationRegistry`. All modes registered under `RegistryMode` are automatically recognized by the `OperationRegistry`.
  Throws:
    `java.lang.IllegalArgumentException` - if modeName is `null` or if the modeName is not one of the modes returned `RegistryMode.getModes()`
  Since:
    Java Advanced Imaging 1.1

### getRegistryModes

    public java.lang.String[] getRegistryModes()

  Get's the list of known registry modes known to the `OperationRegistry`. This might not be all modes listed in `RegistryMode.getModeNames()`.
  Since:
    Java Advanced Imaging 1.1

### registerDescriptor

    public void registerDescriptor(RegistryElementDescriptor descriptor)

  Register a descriptor against all the registry modes it supports. The "descriptor" must be an instance of the RegistryMode.getDescriptorClass() The "descriptor" is keyed on descriptor.getName(). Only one descriptor can be registered against a descriptor name for a given mode.
  Parameters:
    `descriptor` - an instance of a concrete sub-class of `RegistryElementDescriptor`
  Throws:
    `java.lang.IllegalArgumentException` - is descriptor is `null`
    `java.lang.IllegalArgumentException` - if any of the modes returned by `descriptor.getSupportedModes()` is not one of those returned by `RegistryMode.getModes()`
    `java.lang.IllegalArgumentException` - if another descriptor with the same name has already been registered against any of the modes supported by this descriptor.
  Since:
    Java Advanced Imaging 1.1

### unregisterDescriptor

    public void unregisterDescriptor(RegistryElementDescriptor descriptor)

  Unregister a descriptor against all its supported modes from the operation registry.
  Parameters:
    `descriptor` - an instance of a concrete sub-class of `RegistryElementDescriptor`
  Throws:
    `java.lang.IllegalArgumentException` - is descriptor is `null`
    `java.lang.IllegalArgumentException` - if any of the modes returned by `descriptor.getSupportedModes()` is not one of those returned by `RegistryMode.getModes()`
    `java.lang.IllegalArgumentException` - if any of the `PropertyGenerator`s associated with the `RegistryElementDescriptor` to be unregistered is null.
  Since:
    Java Advanced Imaging 1.1

### getDescriptor

    public RegistryElementDescriptor getDescriptor(java.lang.Class descriptorClass,
                                                   java.lang.String descriptorName)

  Get the `RegistryElementDescriptor` corresponding to a `descriptorClass` and a `descriptorName`. For example, `getDescriptor(OperationDescriptor.class, "add")` would get the operation descriptor for the "add" image operation. Note that different descriptors might have been registered against each mode associated with the descriptorClass. In this case this methods will arbitrarily return the first descriptor it encounters with a matching descriptorName and descriptorClass.
  Parameters:
    `descriptorClass` - the descriptor `Class`
    `descriptorName` - the descriptor name as a `String`
  Throws:
    `java.lang.IllegalArgumentException` - if `descriptorClass` is `null` or if the `descriptorClass` is not associated with any of the modes returned `RegistryMode.getModes()`
    `java.lang.IllegalArgumentException` - if descriptorName is `null`
  Since:
    Java Advanced Imaging 1.1

### getDescriptors

    public java.util.List getDescriptors(java.lang.Class descriptorClass)

  Get a `List` of all `RegistryElementDescriptor` corresponding to the `descriptorClass`. For example, `getDescriptors(OperationDescriptor.class)` would get a list of all image operation descriptors.
  Parameters:
    `descriptorClass` - the descriptor `Class`
  Throws:
    `java.lang.IllegalArgumentException` - if `descriptorClass` is `null` or if the `descriptorClass` is not associated with any of the modes returned `RegistryMode.getModes()`
  Since:
    Java Advanced Imaging 1.1

### getDescriptorNames

    public java.lang.String[] getDescriptorNames(java.lang.Class descriptorClass)

  Get an array of all the descriptor names corresponding to the `descriptorClass`. For example, `getDescriptorNames(OperationDescriptor.class)` would get an array of all image operation descriptor names.
  Parameters:
    `descriptorClass` - the descriptor `Class`
  Throws:
    `java.lang.IllegalArgumentException` - if `descriptorClass` is `null` or if the `descriptorClass` is not associated with any of the modes returned `RegistryMode.getModes()`
  Since:
    Java Advanced Imaging 1.1

### getDescriptor

    public RegistryElementDescriptor getDescriptor(java.lang.String modeName,
                                                   java.lang.String descriptorName)

  Get the `RegistryElementDescriptor` corresponding to `descriptorName` which supports the specified mode. This is done by matching up the `descriptorName` against `RegistryElementDescriptor.getName` in a case-insensitive manner. This returns `null` if there no `RegistryElementDescriptor` corresponding to `descriptorName` that supports the specified mode.
  Parameters:
    `modeName` - the registry mode name as a `String`
    `descriptorName` - the descriptor name as a `String`
  Throws:
    `java.lang.IllegalArgumentException` - if modeName is `null` or if the modeName is not one of the modes returned `RegistryMode.getModes()`
    `java.lang.IllegalArgumentException` - if descriptorName is `null`
  Since:
    Java Advanced Imaging 1.1

### getDescriptors

    public java.util.List getDescriptors(java.lang.String modeName)

  Get a list of all `RegistryElementDescriptor`s registered under a given registry mode.
  Parameters:
    `modeName` - the registry mode name as a `String`
  Throws:
    `java.lang.IllegalArgumentException` - if modeName is `null` or if the modeName is not one of the modes returned `RegistryMode.getModes()`
  Since:
    Java Advanced Imaging 1.1

### getDescriptorNames

    public java.lang.String[] getDescriptorNames(java.lang.String modeName)

  Get an array of all descriptor-names of descriptors registered under a given registry mode.
  Parameters:
    `modeName` - the registry mode name as a `String`
  Throws:
    `java.lang.IllegalArgumentException` - if modeName is `null` or if the modeName is not one of the modes returned `RegistryMode.getModes()`
  Since:
    Java Advanced Imaging 1.1

### setProductPreference

    public void setProductPreference(java.lang.String modeName,
                                     java.lang.String descriptorName,
                                     java.lang.String preferredProductName,
                                     java.lang.String otherProductName)

  Set the preference between two products for a descriptor registered under a registry mode.
  Parameters:
    `modeName` - the registry mode name as a `String`
    `descriptorName` - the descriptor name as a `String`
    `preferredProductName` - the product to be preferred.
    `otherProductName` - the other product.
  Throws:
    `java.lang.IllegalArgumentException` - if any of the arguments is `null`
    `java.lang.IllegalArgumentException` - if modeName is not one of those returned by `RegistryMode.getModes()`
    `java.lang.IllegalArgumentException` - if the registry mode does not support preferences
  Since:
    Java Advanced Imaging 1.1

### unsetProductPreference

    public void unsetProductPreference(java.lang.String modeName,
                                       java.lang.String descriptorName,
                                       java.lang.String preferredProductName,
                                       java.lang.String otherProductName)

  Remove the preference between two products for a descriptor registered under a registry mode.
  Parameters:
    `modeName` - the registry mode name as a `String`
    `descriptorName` - the descriptor name as a `String`
    `preferredProductName` - the product formerly preferred.
    `otherProductName` - the other product.
  Throws:
    `java.lang.IllegalArgumentException` - if any of the arguments is `null`
    `java.lang.IllegalArgumentException` - if modeName is not one of those returned by `RegistryMode.getModes()`
    `java.lang.IllegalArgumentException` - if the registry mode does not support preferences
  Since:
    Java Advanced Imaging 1.1

### clearProductPreferences

    public void clearProductPreferences(java.lang.String modeName,
                                        java.lang.String descriptorName)

  Remove all the preferences between products for a descriptor registered under a registry mode.
  Parameters:
    `modeName` - the registry mode name as a `String`
    `descriptorName` - the descriptor name as a `String`
  Throws:
    `java.lang.IllegalArgumentException` - if modeName is `null` or if the modeName is not one of the modes returned `RegistryMode.getModes()`
    `java.lang.IllegalArgumentException` - if descriptorName is `null`
    `java.lang.IllegalArgumentException` - if the registry mode does not support preferences
  Since:
    Java Advanced Imaging 1.1

### getProductPreferences

    public java.lang.String[][] getProductPreferences(java.lang.String modeName,
                                                      java.lang.String descriptorName)

  Returns a list of the pairwise product preferences under a particular descriptor registered against a registry mode.
  Parameters:
    `modeName` - the registry mode name as a `String`
    `descriptorName` - the descriptor name as a `String`
  Returns:
    an array of 2-element arrays of Strings.
  Throws:
    `java.lang.IllegalArgumentException` - if modeName is `null` or if the modeName is not one of the modes returned `RegistryMode.getModes()`
    `java.lang.IllegalArgumentException` - if descriptorName is `null`
    `java.lang.IllegalArgumentException` - if the registry mode does not support preferences
  Since:
    Java Advanced Imaging 1.1

### getOrderedProductList

    public java.util.Vector getOrderedProductList(java.lang.String modeName,
                                                  java.lang.String descriptorName)

  Returns a list of the products registered under a particular descriptor in an ordering that satisfies all of the pairwise preferences that have been set. Cycles will be broken in an arbitrary manner. Returns null if no descriptor has been registered under this descriptorName, or if no products exist for this operation.
  Parameters:
    `modeName` - the registry mode name as a `String`
    `descriptorName` - the descriptor name as a `String`
  Returns:
    a `Vector` of Strings representing product names.
  Throws:
    `java.lang.IllegalArgumentException` - if modeName is `null` or if the modeName is not one of the modes returned `RegistryMode.getModes()`
    `java.lang.IllegalArgumentException` - if descriptorName is `null`
    `java.lang.IllegalArgumentException` - if the registry mode does not support preferences
  Since:
    Java Advanced Imaging 1.1

### registerFactory

    public void registerFactory(java.lang.String modeName,
                                java.lang.String descriptorName,
                                java.lang.String productName,
                                java.lang.Object factory)

  Register a factory object with a particular product and descriptor against a specified mode. For modes that do not support preferences the productName is ignored (can be `null`)
  Parameters:
    `modeName` - the registry mode name as a `String`
    `descriptorName` - the descriptor name as a `String`
    `productName` - the product name as a `String`
    `factory` - the object to be registered.
  Throws:
    `java.lang.IllegalArgumentException` - if any of the arguments is `null` (productName can be `null` for modes that do not support preferences).
    `java.lang.IllegalArgumentException` - if modeName is not one of those returned by `RegistryMode.getModes()`
    `java.lang.IllegalArgumentException` - if there is no `RegistryElementDescriptor` registered against the `descriptorName`
  Since:
    Java Advanced Imaging 1.1

### unregisterFactory

    public void unregisterFactory(java.lang.String modeName,
                                  java.lang.String descriptorName,
                                  java.lang.String productName,
                                  java.lang.Object factory)

  Unregister a factory object previously registered with a product and descriptor against the specified mode. For modes that do not support preferences the productName is ignored (can be `null`)
  Parameters:
    `modeName` - the registry mode name as a `String`
    `descriptorName` - the descriptor name as a `String`
    `productName` - the product name as a `String`
    `factory` - the object to be unregistered.
  Throws:
    `java.lang.IllegalArgumentException` - if any of the arguments is `null` (productName can be `null` for modes that do not support preferences).
    `java.lang.IllegalArgumentException` - if modeName is not one of those returned by `RegistryMode.getModes()`
    `java.lang.IllegalArgumentException` - if there is no `RegistryElementDescriptor` registered against the `descriptorName`
    `java.lang.IllegalArgumentException` - if the factory object was not previously registered against descriptorName and productName
  Since:
    Java Advanced Imaging 1.1

### setFactoryPreference

    public void setFactoryPreference(java.lang.String modeName,
                                     java.lang.String descriptorName,
                                     java.lang.String productName,
                                     java.lang.Object preferredOp,
                                     java.lang.Object otherOp)

  Sets a preference between two factory instances for a given operation under a specified product.
  Parameters:
    `modeName` - the registry mode name as a `String`
    `descriptorName` - the descriptor name as a `String`
    `productName` - the product name as a `String`
    `preferredOp` - the preferred factory object
    `otherOp` - the other factory object
  Throws:
    `java.lang.IllegalArgumentException` - if any of the arguments is `null`
    `java.lang.IllegalArgumentException` - if modeName is not one of those returned by `RegistryMode.getModes()`
    `java.lang.IllegalArgumentException` - if there is no `RegistryElementDescriptor` registered against the `descriptorName`
    `java.lang.IllegalArgumentException` - if either of the factory objects were not previously registered against descriptorName and productName
    `java.lang.IllegalArgumentException` - if the registry mode does not support preferences
  Since:
    Java Advanced Imaging 1.1

### unsetFactoryPreference

    public void unsetFactoryPreference(java.lang.String modeName,
                                       java.lang.String descriptorName,
                                       java.lang.String productName,
                                       java.lang.Object preferredOp,
                                       java.lang.Object otherOp)

  Unsets a preference between two factory instances for a given operation under a specified product.
  Parameters:
    `modeName` - the registry mode name as a `String`
    `descriptorName` - the descriptor name as a `String`
    `productName` - the product name as a `String`
    `preferredOp` - the factory object formerly preferred
    `otherOp` - the other factory object
  Throws:
    `java.lang.IllegalArgumentException` - if any of the arguments is `null`
    `java.lang.IllegalArgumentException` - if modeName is not one of those returned by `RegistryMode.getModes()`
    `java.lang.IllegalArgumentException` - if there is no `RegistryElementDescriptor` registered against the `descriptorName`
    `java.lang.IllegalArgumentException` - if either of the factory objects were not previously registered against descriptorName and productName
    `java.lang.IllegalArgumentException` - if the registry mode does not support preferences
  Since:
    Java Advanced Imaging 1.1

### clearFactoryPreferences

    public void clearFactoryPreferences(java.lang.String modeName,
                                        java.lang.String descriptorName,
                                        java.lang.String productName)

  Removes all preferences between instances of a factory within a product registered under a particular `OperationDescriptor`.
  Parameters:
    `modeName` - the registry mode name as a `String`
    `descriptorName` - the descriptor name as a `String`
    `productName` - the product name as a `String`
  Throws:
    `java.lang.IllegalArgumentException` - if any of the arguments is `null`
    `java.lang.IllegalArgumentException` - if modeName is not one of those returned by `RegistryMode.getModes()`
    `java.lang.IllegalArgumentException` - if there is no `RegistryElementDescriptor` registered against the `descriptorName`
  Since:
    Java Advanced Imaging 1.1

### getFactoryPreferences

    public java.lang.Object[][] getFactoryPreferences(java.lang.String modeName,
                                                      java.lang.String descriptorName,
                                                      java.lang.String productName)

  Get all pairwise preferences between instances of a factory within a product registered under a particular `OperationDescriptor`.
  Parameters:
    `modeName` - the registry mode name as a `String`
    `descriptorName` - the descriptor name as a `String`
    `productName` - the product name as a `String`
  Throws:
    `java.lang.IllegalArgumentException` - if any of the arguments is `null`
    `java.lang.IllegalArgumentException` - if modeName is not one of those returned by `RegistryMode.getModes()`
    `java.lang.IllegalArgumentException` - if there is no `RegistryElementDescriptor` registered against the `descriptorName`
  Since:
    Java Advanced Imaging 1.1

### getOrderedFactoryList

    public java.util.List getOrderedFactoryList(java.lang.String modeName,
                                                java.lang.String descriptorName,
                                                java.lang.String productName)

  Returns a list of the factory instances of a product registered under a particular `OperationDescriptor`, in an ordering that satisfies all of the pairwise preferences that have been set. Cycles will be broken in an arbitrary manner. Returns null, if the product does not exist under this descriptorName. If the particular factory does not have preferences then the returned `List` will contain single factory.
  Parameters:
    `modeName` - the registry mode name as a `String`
    `descriptorName` - the descriptor name as a `String`
    `productName` - the product name as a `String`
  Returns:
    an ordered `List` of factory instances
  Throws:
    `java.lang.IllegalArgumentException` - if any of the arguments is `null` (productName can be `null` for modes that do not support preferences).
    `java.lang.IllegalArgumentException` - if modeName is not one of those returned by `RegistryMode.getModes()`
    `java.lang.IllegalArgumentException` - if there is no `RegistryElementDescriptor` registered against the `descriptorName`
  Since:
    Java Advanced Imaging 1.1

### getFactoryIterator

    public java.util.Iterator getFactoryIterator(java.lang.String modeName,
                                                 java.lang.String descriptorName)

  Returns an `Iterator` over all factory objects registered with the specified factory and operation names over all products. The order of objects in the iteration will be according to the pairwise preferences among products and image factories within a product. The `remove()` method of the `Iterator` may not be implemented. If the particular factory does not have preferences then the returned `Iterator` will traverse a collection containing the single factory.
  Parameters:
    `modeName` - the registry mode name as a `String`
    `descriptorName` - the descriptor name as a `String`
  Returns:
    an `Iterator` over factory objects
  Throws:
    `java.lang.IllegalArgumentException` - if any of the arguments is `null`
    `java.lang.IllegalArgumentException` - if modeName is not one of those returned by `RegistryMode.getModes()`
    `java.lang.IllegalArgumentException` - if there is no `RegistryElementDescriptor` registered against the `descriptorName`
  Since:
    Java Advanced Imaging 1.1

### getFactory

    public java.lang.Object getFactory(java.lang.String modeName,
                                       java.lang.String descriptorName)

  Returns the factory of the specified type for the named operation. This method will return the first factory that would be encountered by the `Iterator` returned by the `getFactoryIterator()` method.
  Parameters:
    `modeName` - the registry mode name as a `String`
    `descriptorName` - the descriptor name as a `String`
  Returns:
    a registered factory object
  Throws:
    `java.lang.IllegalArgumentException` - if any of the arguments is `null`
    `java.lang.IllegalArgumentException` - if modeName is not one of those returned by `RegistryMode.getModes()`
    `java.lang.IllegalArgumentException` - if there is no `RegistryElementDescriptor` registered against the `descriptorName`
  Since:
    Java Advanced Imaging 1.1

### invokeFactory

    public java.lang.Object invokeFactory(java.lang.String modeName,
                                          java.lang.String descriptorName,
                                          java.lang.Object[] args)

  Finds the factory of the specified type for the named operation and invokes its default factory method with the supplied parameters. The class of the returned object is that of the object returned by the factory's object creation method.
  Parameters:
    `modeName` - the registry mode name as a `String`
    `descriptorName` - the descriptor name as a `String`
  Returns:
    an object created by the factory method
  Throws:
    `java.lang.IllegalArgumentException` - if modeName or descriptorName is `null`
    `java.lang.IllegalArgumentException` - if modeName is not one of those returned by `RegistryMode.getModes()`
    `java.lang.IllegalArgumentException` - if there is no `RegistryElementDescriptor` registered against the `descriptorName`
  Since:
    Java Advanced Imaging 1.1

### addPropertyGenerator

    public void addPropertyGenerator(java.lang.String modeName,
                                     java.lang.String descriptorName,
                                     PropertyGenerator generator)

  Adds a `PropertyGenerator` to the registry, associating it with a particular descriptor registered against a registry mode.
  Parameters:
    `modeName` - the registry mode name as a `String`
    `descriptorName` - the descriptor name as a `String`
    `generator` - the `PropertyGenerator` to be added.
  Throws:
    `java.lang.IllegalArgumentException` - if any of the arguments is `null`
    `java.lang.IllegalArgumentException` - if modeName is not one of those returned by `RegistryMode.getModes()`
    `java.lang.IllegalArgumentException` - if there is no `RegistryElementDescriptor` registered against the `descriptorName`
    `java.lang.IllegalArgumentException` - if the specified mode does not support properties.
  Since:
    Java Advanced Imaging 1.1

### removePropertyGenerator

    public void removePropertyGenerator(java.lang.String modeName,
                                        java.lang.String descriptorName,
                                        PropertyGenerator generator)

  Removes a `PropertyGenerator` from its association with a particular descriptor/registry-mode in the registry. If the generator was not associated with the operation, nothing happens.
  Parameters:
    `modeName` - the registry mode name as a `String`
    `descriptorName` - the descriptor name as a `String`
    `generator` - the `PropertyGenerator` to be removed.
  Throws:
    `java.lang.IllegalArgumentException` - if any of the arguments is `null`
    `java.lang.IllegalArgumentException` - if modeName is not one of those returned by `RegistryMode.getModes()`
    `java.lang.IllegalArgumentException` - if there is no `RegistryElementDescriptor` registered against the `descriptorName`
    `java.lang.IllegalArgumentException` - if the specified mode does not support properties.
  Since:
    Java Advanced Imaging 1.1

### copyPropertyFromSource

    public void copyPropertyFromSource(java.lang.String modeName,
                                       java.lang.String descriptorName,
                                       java.lang.String propertyName,
                                       int sourceIndex)

  Forces a property to be copied from the specified source by nodes performing a particular operation. By default, a property is copied from the first source node that emits it. The result of specifying an invalid source is undefined.
  Parameters:
    `modeName` - the registry mode name as a `String`
    `descriptorName` - the descriptor name as a `String`
    `propertyName` - the name of the property to be copied.
    `sourceIndex` - the index of the source to copy the property from.
  Throws:
    `java.lang.IllegalArgumentException` - if any of the `String` arguments is `null`
    `java.lang.IllegalArgumentException` - if modeName is not one of those returned by `RegistryMode.getModes()`
    `java.lang.IllegalArgumentException` - if there is no `RegistryElementDescriptor` registered against the `descriptorName`
    `java.lang.IllegalArgumentException` - if the specified mode does not support properties.
  Since:
    Java Advanced Imaging 1.1

### suppressProperty

    public void suppressProperty(java.lang.String modeName,
                                 java.lang.String descriptorName,
                                 java.lang.String propertyName)

  Forces a particular property to be suppressed by nodes performing a particular operation. By default, properties are passed through operations unchanged.
  Parameters:
    `modeName` - the registry mode name as a `String`
    `descriptorName` - the descriptor name as a `String`
    `propertyName` - the name of the property to be suppressed.
  Throws:
    `java.lang.IllegalArgumentException` - if any of the arguments is `null`
    `java.lang.IllegalArgumentException` - if modeName is not one of those returned by `RegistryMode.getModes()`
    `java.lang.IllegalArgumentException` - if there is no `RegistryElementDescriptor` registered against the `descriptorName`
    `java.lang.IllegalArgumentException` - if the specified mode does not support properties.
  Since:
    Java Advanced Imaging 1.1

### suppressAllProperties

    public void suppressAllProperties(java.lang.String modeName,
                                      java.lang.String descriptorName)

  Forces all properties to be suppressed by nodes performing a particular operation. By default, properties are passed through operations unchanged.
  Parameters:
    `modeName` - the registry mode name as a `String`
    `descriptorName` - the descriptor name as a `String`
  Throws:
    `java.lang.IllegalArgumentException` - if any of the arguments is `null`
    `java.lang.IllegalArgumentException` - if modeName is not one of those returned by `RegistryMode.getModes()`
    `java.lang.IllegalArgumentException` - if there is no `RegistryElementDescriptor` registered against the `descriptorName`
    `java.lang.IllegalArgumentException` - if the specified mode does not support properties.
  Since:
    Java Advanced Imaging 1.1

### clearPropertyState

    public void clearPropertyState(java.lang.String modeName)

  Removes all property associated information for this registry mode from this `OperationRegistry`.
  Parameters:
    `modeName` - the registry mode name as a `String`
  Throws:
    `java.lang.IllegalArgumentException` - if modeName is null or is not one of those returned by `RegistryMode.getModes()`
    `java.lang.IllegalArgumentException` - if the specified mode does not support properties.
  Since:
    Java Advanced Imaging 1.1

### getGeneratedPropertyNames

    public java.lang.String[] getGeneratedPropertyNames(java.lang.String modeName,
                                                        java.lang.String descriptorName)

  Returns a list of the properties generated by nodes implementing the descriptor associated with a particular descriptor Name. Returns null if no properties are generated.
  Parameters:
    `modeName` - the registry mode name as a `String`
    `descriptorName` - the descriptor name as a `String`
  Throws:
    `java.lang.IllegalArgumentException` - if any of the arguments is `null`
    `java.lang.IllegalArgumentException` - if modeName is not one of those returned by `RegistryMode.getModes()`
    `java.lang.IllegalArgumentException` - if there is no `RegistryElementDescriptor` registered against the `descriptorName`
    `java.lang.IllegalArgumentException` - if the specified mode does not support properties.
  Since:
    Java Advanced Imaging 1.1

### getPropertySource

    public PropertySource getPropertySource(java.lang.String modeName,
                                            java.lang.String descriptorName,
                                            java.lang.Object op,
                                            java.util.Vector sources)

  Merge mode-specific property environment with mode-independent property environment of the descriptor. Array elements of "sources" are expected to be in the same ordering as referenced by the "sourceIndex" parameter of copyPropertyFromSource().
  Parameters:
    `modeName` - the registry mode name as a `String`
    `descriptorName` - the descriptor name as a `String`
    `op` - the `Object` from which properties will be generated.
    `sources` - the `PropertySource`s corresponding to the sources of the object representing the named descriptor in the indicated mode.
  Returns:
    A `PropertySource` which encapsulates the global property environment for the object representing the named descriptor in the indicated mode.
  Throws:
    `java.lang.IllegalArgumentException` - if any of the arguments is `null`
    `java.lang.IllegalArgumentException` - if modeName is not one of those returned by `RegistryMode.getModes()`
    `java.lang.IllegalArgumentException` - if there is no `RegistryElementDescriptor` registered against the `descriptorName`
    `java.lang.IllegalArgumentException` - if the specified mode does not support properties.
  Since:
    Java Advanced Imaging 1.1

### getPropertySource

    public PropertySource getPropertySource(OperationNode op)

  Constructs and returns a `PropertySource` suitable for use by a given `OperationNode`. The `PropertySource` includes properties copied from prior nodes as well as those generated at the node itself. Additionally, property suppression is taken into account. The actual implementation of `getPropertySource()` may make use of deferred execution and caching.
  Parameters:
    `op` - the `OperationNode` requesting its `PropertySource`.
  Throws:
    `java.lang.IllegalArgumentException` - if op is null.

### registerServices

    public void registerServices(java.lang.ClassLoader cl)
                          throws java.io.IOException

  Load all the "META-INF/registryFile.jai" files and then called the `updateRegistry()` of the registered service provider of `OperationRegistrySpi` found in the classpath corresponding to this class loader. All non-IO exceptions encountered while parsing the registry files are caught and their error messages are redirected to `System.err`. If `System.err` is null the error messages will never be seen.

  This is a convenience method to do automatic detection in runtime loaded jar files

  Note that the JAI does not keep track of which JAR files have their registry files loaded and/or services initialized. Hence if `registerServices` is called twice with the same ClassLoader, the loading of the registry files and/or initialization of the services will happen twice.

  Since:
    Java Advanced Imaging 1.1

### registerOperationDescriptor

    public void registerOperationDescriptor(OperationDescriptor odesc,
                                            java.lang.String operationName)

  Deprecated. as of JAI 1.1 in favor of `registerDescriptor(odesc)`

  Registers an `OperationDescriptor` with the registry. Each operation must have an `OperationDescriptor` before registerRIF() may be called to add RIFs to the operation.

  An `OperationDescriptor` cannot be registered under an operation name under which another `OperationDescriptor` was registered previously. If such an attempt is made, an error message will be printed.

  Parameters:
    `odesc` - an `OperationDescriptor` containing information about the operation.
    `operationName` - the operation name as a String.
  Throws:
    `java.lang.IllegalArgumentException` - if odesc is null.
  See Also:
    `registerDescriptor(RegistryElementDescriptor)`

### unregisterOperationDescriptor

    public void unregisterOperationDescriptor(java.lang.String operationName)

  Deprecated. as of JAI 1.1 in favor of `unregisterDescriptor(...)` which accepts an `OperationDescriptor` and not a `operationName`.

  Unregisters an `OperationDescriptor` from the registry. An error message will be printed if an attempt is made to unregister an `OperationDescriptor` that was not previously registered.
  Parameters:
    `operationName` - the operation name as a String.
  Throws:
    `java.lang.IllegalArgumentException` - if operationName is null.
    `java.lang.IllegalArgumentException` - if any of the `PropertyGenerator`s associated with the `OperationDescriptor` to be removed is null.
  See Also:
    `unregisterDescriptor(RegistryElementDescriptor)`

### getOperationDescriptor

    public OperationDescriptor getOperationDescriptor(java.lang.String operationName)

  Deprecated. as of JAI 1.1 in favor of `getDescriptor(...)` where the mode name is explicitly specified.

  Returns the `OperationDescriptor` that is currently registered under the given name, or null if none exists. Though unlikely, it is possible to have different descriptors registered under different modes. In this case this will arbitrarily return the first operation descriptor found.
  Parameters:
    `operationName` - the String to be queried.
  Returns:
    an `OperationDescriptor`.
  Throws:
    `java.lang.IllegalArgumentException` - if operationName is null.
  See Also:
    `getDescriptor(Class, String)`

### getOperationDescriptors

    public java.util.Vector getOperationDescriptors()

  Deprecated. as of JAI 1.1 in favor of `getDescriptors( OperationDescriptor.class)` which returns a `List` and not a `Vector`. This is currently equivalent to `new Vector(getDescriptors(OperationDescriptor.class))`

  Returns a Vector of all currently registered `OperationDescriptor`s.
  Returns:
    a Vector of `OperationDescriptor`s.
  See Also:
    `getDescriptors(Class)`

### getOperationNames

    public java.lang.String[] getOperationNames()

  Deprecated. as of JAI 1.1 in favor of `getDescriptorNames( OperationDescriptor.class)`.

  Returns a list of names under which all the `OperationDescriptor`s in the registry are registered.
  Returns:
    a list of currently existing operation names.
  See Also:
    `getDescriptorNames(Class)`

### registerRIF

    public void registerRIF(java.lang.String operationName,
                            java.lang.String productName,
                            java.awt.image.renderable.RenderedImageFactory RIF)

  Deprecated. as of JAI 1.1 in favor of `RIFRegistry.register(...)` . This is currently equivalent to `RIFRegistry.register(this, operationName, productName, RIF)`

  Registers a RIF with a particular product and operation. An error message will be printed out if the operation was not registered previously.
  Parameters:
    `operationName` - the operation name as a String.
    `productName` - the product name, as a String.
    `RIF` - the `RenderedImageFactory` to be registered.
  Throws:
    `java.lang.IllegalArgumentException` - if operationName is null.
    `java.lang.IllegalArgumentException` - if productName is null.
    `java.lang.IllegalArgumentException` - if RIF is null.
  See Also:
    `RIFRegistry.register(javax.media.jai.OperationRegistry, java.lang.String, java.lang.String, java.awt.image.renderable.RenderedImageFactory)`

### unregisterRIF

    public void unregisterRIF(java.lang.String operationName,
                              java.lang.String productName,
                              java.awt.image.renderable.RenderedImageFactory RIF)

  Deprecated. as of JAI 1.1 in favor of `RIFRegistry.unregister(...)` . This is currently equivalent to `RIFRegistry.unregister(this, operationName, productName, RIF)`

  Unregisters a RIF from a particular product and operation. An error message will be printed out if the operation was not registered previously or if the product has not been registered under the operation.
  Parameters:
    `operationName` - the operation name as a String.
    `productName` - the product name, as a String.
    `RIF` - the `RenderedImageFactory` to be unregistered.
  Throws:
    `java.lang.IllegalArgumentException` - if operationName is null.
    `java.lang.IllegalArgumentException` - if productName is null.
    `java.lang.IllegalArgumentException` - if RIF is null.
  See Also:
    `RIFRegistry.unregister(javax.media.jai.OperationRegistry, java.lang.String, java.lang.String, java.awt.image.renderable.RenderedImageFactory)`

### registerCRIF

    public void registerCRIF(java.lang.String operationName,
                             java.awt.image.renderable.ContextualRenderedImageFactory CRIF)

  Deprecated. as of JAI 1.1 in favor of `CRIFRegistry.register(...)` . This is currently equivalent to `CRIFRegistry.register(this, operationName, productName, CRIF)`

  Registers a CRIF under a particular operation. An error message will be printed out if the operation was not registered previously.
  Parameters:
    `operationName` - the operation name as a String.
    `CRIF` - the `ContextualRenderedImageFactory` to be registered.
  Throws:
    `java.lang.IllegalArgumentException` - if operationName is null.
    `java.lang.IllegalArgumentException` - if CRIF is null.
  See Also:
    `CRIFRegistry.register(javax.media.jai.OperationRegistry, java.lang.String, java.awt.image.renderable.ContextualRenderedImageFactory)`

### unregisterCRIF

    public void unregisterCRIF(java.lang.String operationName,
                               java.awt.image.renderable.ContextualRenderedImageFactory CRIF)

  Deprecated. as of JAI 1.1 in favor of `CRIFRegistry.unregister(...)` . This is currently equivalent to `CRIFRegistry.unregister(this, operationName, productName, CRIF)`

  Unregisters a CRIF from a particular operation. An error message will be printed out if the operation was not registered previously.
  Parameters:
    `operationName` - the operation name as a String.
    `CRIF` - the `ContextualRenderedImageFactory` to be unregistered.
  Throws:
    `java.lang.IllegalArgumentException` - if operationName is null.
    `java.lang.IllegalArgumentException` - if CRIF is null.
  See Also:
    `CRIFRegistry.unregister(javax.media.jai.OperationRegistry, java.lang.String, java.awt.image.renderable.ContextualRenderedImageFactory)`

### registerCIF

    public void registerCIF(java.lang.String operationName,
                            java.lang.String productName,
                            CollectionImageFactory CIF)

  Deprecated. as of JAI 1.1 in favor of `CIFRegistry.register(...)` . This is currently equivalent to `CIFRegistry.register(this, operationName, productName, CIF)`

  Registers a CIF with a particular product and operation. An error message will be printed out if the operation was not registered previously.
  Parameters:
    `operationName` - the operation name as a String.
    `productName` - the product name, as a String.
    `CIF` - the `CollectionImageFactory` to be registered.
  Throws:
    `java.lang.IllegalArgumentException` - if operationName is null.
    `java.lang.IllegalArgumentException` - if productName is null.
    `java.lang.IllegalArgumentException` - if CIF is null.
  See Also:
    `CIFRegistry.register(javax.media.jai.OperationRegistry, java.lang.String, java.lang.String, javax.media.jai.CollectionImageFactory)`

### unregisterCIF

    public void unregisterCIF(java.lang.String operationName,
                              java.lang.String productName,
                              CollectionImageFactory CIF)

  Deprecated. as of JAI 1.1 in favor of `CIFRegistry.unregister(...)` . This is currently equivalent to `CIFRegistry.unregister(this, operationName, productName, CIF)`

  Unregisters a CIF from a particular product and operation. An error message will be printed out if the operation was not registered previously or if the product was not registered under the operation previously.
  Parameters:
    `operationName` - the operation name as a String.
    `productName` - the product name, as a String.
    `CIF` - the `CollectionImageFactory` to be unregistered.
  Throws:
    `java.lang.IllegalArgumentException` - if operationName is null.
    `java.lang.IllegalArgumentException` - if productName is null.
    `java.lang.IllegalArgumentException` - if CIF is null.
  See Also:
    `CIFRegistry.unregister(javax.media.jai.OperationRegistry, java.lang.String, java.lang.String, javax.media.jai.CollectionImageFactory)`

### setProductPreference

    public void setProductPreference(java.lang.String operationName,
                                     java.lang.String preferredProductName,
                                     java.lang.String otherProductName)

  Deprecated. as of JAI 1.1 in favor of `setProductPreference(...)` which specifies a `modeName` also. This is currently equivalent to `setProductPreference("rendered", operationName, preferredProductName, otherProductName)`

  Sets a preference between two products registered under a common `OperationDescriptor`. An error will be printed out if the operation was not registered previously and no preference will be set. Any attempt to set a preference between a product and itself will be ignored.
  Parameters:
    `operationName` - the operation name as a String.
    `preferredProductName` - the product to be preferred.
    `otherProductName` - the other product.
  Throws:
    `java.lang.IllegalArgumentException` - if operationName is null.
    `java.lang.IllegalArgumentException` - if preferredProductName is null.
    `java.lang.IllegalArgumentException` - if otherProductName is null.
  See Also:
    `setProductPreference(java.lang.String, java.lang.String, java.lang.String, java.lang.String)`

### unsetProductPreference

    public void unsetProductPreference(java.lang.String operationName,
                                       java.lang.String preferredProductName,
                                       java.lang.String otherProductName)

  Deprecated. as of JAI 1.1 in favor of `unsetProductPreference(...)` which specifies a `modeName` also. This is currently equivalent to `unsetProductPreference("rendered", operationName, preferredProductName, otherProductName)`

  Removes a preference between two products registered under a common `OperationDescriptor`. An error message will be printed out if the operation was not registered previously.
  Parameters:
    `operationName` - the operation name as a String.
    `preferredProductName` - the product formerly preferred.
    `otherProductName` - the other product.
  Throws:
    `java.lang.IllegalArgumentException` - if operationName is null.
    `java.lang.IllegalArgumentException` - if preferredProductName is null.
    `java.lang.IllegalArgumentException` - if otherProductName is null.
  See Also:
    `unsetProductPreference(java.lang.String, java.lang.String, java.lang.String, java.lang.String)`

### clearProductPreferences

    public void clearProductPreferences(java.lang.String operationName)

  Deprecated. as of JAI 1.1 in favor of `clearProductPreferences(...)` which specifies a `modeName` also. This is currently equivalent to `clearProductPreferences("rendered", operationName)`

  Removes all preferences between products registered under a common `OperationDescriptor`. An error message will be printed out if the operation was not registered previously.
  Parameters:
    `operationName` - the operation name as a String.
  Throws:
    `java.lang.IllegalArgumentException` - if operationName is null.
  See Also:
    `clearProductPreferences(java.lang.String, java.lang.String)`

### getProductPreferences

    public java.lang.String[][] getProductPreferences(java.lang.String operationName)

  Deprecated. as of JAI 1.1 in favor of `getProductPreferences(...)` which accepts a `modeName` also. This is currently equivalent to `getProductPreferences("rendered", operationName)`

  Returns a list of the pairwise product preferences under a particular `OperationDescriptor`. If no product preferences have been set, returns null.
  Parameters:
    `operationName` - the operation name as a String.
  Returns:
    an array of 2-element arrays of Strings.
  Throws:
    `java.lang.IllegalArgumentException` - if operationName is null.
  See Also:
    `getProductPreferences(java.lang.String, java.lang.String)`

### getOrderedProductList

    public java.util.Vector getOrderedProductList(java.lang.String operationName)

  Deprecated. as of JAI 1.1 in favor of `getOrderedProductList(...)` which accepts a `modeName` also. This is currently equivalent to `getOrderedProductList("rendered", operationName)`

  Returns a list of the products registered under a particular `OperationDescriptor`, in an ordering that satisfies all of the pairwise preferences that have been set. Cycles will be broken in an arbitrary manner. Returns null if no `OperationDescriptor` has been registered under this operationName, or if no products exist for this operation.
  Parameters:
    `operationName` - the operation name as a String.
  Returns:
    a Vector of Strings representing product names.
  Throws:
    `java.lang.IllegalArgumentException` - if operationName is null.
  See Also:
    `getOrderedProductList(java.lang.String, java.lang.String)`

### setRIFPreference

    public void setRIFPreference(java.lang.String operationName,
                                 java.lang.String productName,
                                 java.awt.image.renderable.RenderedImageFactory preferredRIF,
                                 java.awt.image.renderable.RenderedImageFactory otherRIF)

  Deprecated. as of JAI 1.1 in favor of `RIFRegistry.setPreference(...)` . This is currently equivalent to `RIFRegistry.setPreference(this, operationName, productName, preferredRIF, otherRIF)`

  Sets a preference between two RIFs within the same product. An error message will be printed out if the operation was not registered previously or if the product was not registered under the operation or if either of the supplied RIFs is null. Any attempt to set a preference between a RIF and itself will be ignored.
  Parameters:
    `operationName` - the operation name as a String.
    `productName` - the name of the product.
    `preferredRIF` - the preferred `RenderedImageFactory`.
    `otherRIF` - the other `RenderedImageFactory`.
  Throws:
    `java.lang.IllegalArgumentException` - if operationName is null.
    `java.lang.IllegalArgumentException` - if productName is null.
    `java.lang.IllegalArgumentException` - if preferredRIF is null.
    `java.lang.IllegalArgumentException` - if otherRIF is null.
  See Also:
    `RIFRegistry.setPreference(javax.media.jai.OperationRegistry, java.lang.String, java.lang.String, java.awt.image.renderable.RenderedImageFactory, java.awt.image.renderable.RenderedImageFactory)`

### setCIFPreference

    public void setCIFPreference(java.lang.String operationName,
                                 java.lang.String productName,
                                 CollectionImageFactory preferredCIF,
                                 CollectionImageFactory otherCIF)

  Deprecated. as of JAI 1.1 in favor of `CIFRegistry.setPreference(...)` . This is currently equivalent to `CIFRegistry.setPreference(this, operationName, productName, preferredCIF, otherCIF)`

  Sets a preference between two CIFs within the same product. An error message will be printed out if the operation was not registered previously or if the product was not registered under the operation or if either of the two supplied CIF's is null. Any attempt to set a preference between a CIF and itself will be ignored.
  Parameters:
    `operationName` - the operation name as a String.
    `productName` - the name of the product.
    `preferredCIF` - the preferred CollectionRenderedImageFactory.
    `otherCIF` - the other CollectionRenderedImageFactory.
  Throws:
    `java.lang.IllegalArgumentException` - if operationName is null.
    `java.lang.IllegalArgumentException` - if productName is null.
    `java.lang.IllegalArgumentException` - if preferredCIF is null.
    `java.lang.IllegalArgumentException` - if otherCIF is null.
  See Also:
    `CIFRegistry.setPreference(javax.media.jai.OperationRegistry, java.lang.String, java.lang.String, javax.media.jai.CollectionImageFactory, javax.media.jai.CollectionImageFactory)`

### unsetRIFPreference

    public void unsetRIFPreference(java.lang.String operationName,
                                   java.lang.String productName,
                                   java.awt.image.renderable.RenderedImageFactory preferredRIF,
                                   java.awt.image.renderable.RenderedImageFactory otherRIF)

  Deprecated. as of JAI 1.1 in favor of `RIFRegistry.unsetPreference(...)` . This is currently equivalent to `RIFRegistry.unsetPreference(this, operationName, productName, preferredRIF, otherRIF)`

  Removes a preference between two RIFs within the same product. An error message will be printed out if the operation was not registered previously or if the product was not registered under the operation or if either of the two supplied RIF's is null.
  Parameters:
    `operationName` - the operation name as a String.
    `productName` - the name of the product.
    `preferredRIF` - the formerly preferred `RenderedImageFactory`.
    `otherRIF` - the other `RenderedImageFactory`.
  Throws:
    `java.lang.IllegalArgumentException` - if operationName is null.
    `java.lang.IllegalArgumentException` - if productName is null.
    `java.lang.IllegalArgumentException` - if preferredRIF is null.
    `java.lang.IllegalArgumentException` - if otherRIF is null.
  See Also:
    `RIFRegistry.unsetPreference(javax.media.jai.OperationRegistry, java.lang.String, java.lang.String, java.awt.image.renderable.RenderedImageFactory, java.awt.image.renderable.RenderedImageFactory)`

### unsetCIFPreference

    public void unsetCIFPreference(java.lang.String operationName,
                                   java.lang.String productName,
                                   CollectionImageFactory preferredCIF,
                                   CollectionImageFactory otherCIF)

  Deprecated. as of JAI 1.1 in favor of `CIFRegistry.unsetPreference(...)` . This is currently equivalent to `CIFRegistry.unsetPreference(this, operationName, productName, preferredCIF, otherCIF)`

  Removes a preference between two CIFs within the same product. An error message will be printed out if the operation was not registered previously or if the product was not registered under the operation or if either of the two supplied CIF's is null.
  Parameters:
    `operationName` - the operation name as a String.
    `productName` - the name of the product.
    `preferredCIF` - the formerly preferred `CollectionImageFactory`.
    `otherCIF` - the other `CollectionImageFactory`.
  Throws:
    `java.lang.IllegalArgumentException` - if operationName is null.
    `java.lang.IllegalArgumentException` - if productName is null.
    `java.lang.IllegalArgumentException` - if preferredCIF is null.
    `java.lang.IllegalArgumentException` - if otherCIF is null.
  See Also:
    `CIFRegistry.unsetPreference(javax.media.jai.OperationRegistry, java.lang.String, java.lang.String, javax.media.jai.CollectionImageFactory, javax.media.jai.CollectionImageFactory)`

### clearRIFPreferences

    public void clearRIFPreferences(java.lang.String operationName,
                                    java.lang.String productName)

  Deprecated. as of JAI 1.1 in favor of `RIFRegistry.clearPreferences(...)` . This is currently equivalent to `RIFRegistry.clearPreferences(this, operationName, productName)`

  Removes all preferences between RIFs within a product registered under a particular `OperationDescriptor`. An error message will be printed out if the operation was not registered previously or if the product was not registered under the operation.
  Parameters:
    `operationName` - the operation name as a String.
    `productName` - the name of the product.
  Throws:
    `java.lang.IllegalArgumentException` - if operationName is null.
    `java.lang.IllegalArgumentException` - if productName is null.
  See Also:
    `RIFRegistry.clearPreferences(javax.media.jai.OperationRegistry, java.lang.String, java.lang.String)`

### clearCIFPreferences

    public void clearCIFPreferences(java.lang.String operationName,
                                    java.lang.String productName)

  Deprecated. as of JAI 1.1 in favor of `CIFRegistry.clearPreferences(...)` . This is currently equivalent to `CIFRegistry.clearPreferences(this, operationName, productName)`

  Removes all preferences between CIFs within a product registered under a particular `OperationDescriptor`. An error message will be printed out if the operation was not registered previously or if the product was not registered under the operation.
  Parameters:
    `operationName` - the operation name as a String.
    `productName` - the name of the product.
  Throws:
    `java.lang.IllegalArgumentException` - if operationName is null.
    `java.lang.IllegalArgumentException` - if productName is null.
  See Also:
    `CIFRegistry.clearPreferences(javax.media.jai.OperationRegistry, java.lang.String, java.lang.String)`

### clearOperationPreferences

    public void clearOperationPreferences(java.lang.String operationName,
                                          java.lang.String productName)

  Deprecated. as of JAI 1.1 in favor of calling `*IFRegistry.clearPreferences(..)` on all image operation related modes.

  Removes all RIF and CIF preferences within a product registered under a particular `OperationDescriptor`.
  Parameters:
    `operationName` - the operation name as a String.
    `productName` - the name of the product.
  Throws:
    `java.lang.IllegalArgumentException` - if operationName is null.
    `java.lang.IllegalArgumentException` - if productName is null.
  See Also:
    `RIFRegistry.clearPreferences(javax.media.jai.OperationRegistry, java.lang.String, java.lang.String)`, `CIFRegistry.clearPreferences(javax.media.jai.OperationRegistry, java.lang.String, java.lang.String)`

### getOrderedRIFList

    public java.util.Vector getOrderedRIFList(java.lang.String operationName,
                                              java.lang.String productName)

  Deprecated. as of JAI 1.1 in favor of `RIFRegistry.getOrderedList(...)` which returns a `List` and not a `Vector`. This is currently equivalent to `new Vector(RIFRegistry.getOrderedList(this, operationName, productName))`

  Returns a list of the RIFs of a product registered under a particular `OperationDescriptor`, in an ordering that satisfies all of the pairwise preferences that have been set. Cycles will be broken in an arbitrary manner. Returns null, if the product does not exist under this operationName.
  Parameters:
    `operationName` - the operation name as a String.
    `productName` - the name of the product.
  Returns:
    a Vector of RIFs.
  Throws:
    `java.lang.IllegalArgumentException` - if operationName is null.
    `java.lang.IllegalArgumentException` - if productName is null.
  See Also:
    `RIFRegistry.getOrderedList(javax.media.jai.OperationRegistry, java.lang.String, java.lang.String)`

### getOrderedCIFList

    public java.util.Vector getOrderedCIFList(java.lang.String operationName,
                                              java.lang.String productName)

  Deprecated. as of JAI 1.1 in favor of `CIFRegistry.getOrderedList(...)` which returns a `List` and not a `Vector`. This is currently equivalent to `new Vector(CIFRegistry.getOrderedList(this, operationName, productName))`

  Returns a list of the CIFs of a product registered under a particular `OperationDescriptor`, in an ordering that satisfies all of the pairwise preferences that have been set. Cycles will be broken in an arbitrary manner. Returns null, if the product does not exist under this operationName.
  Parameters:
    `operationName` - the operation name as a String.
    `productName` - the name of the product.
  Returns:
    a Vector of CIFs.
  Throws:
    `java.lang.IllegalArgumentException` - if operationName is null.
    `java.lang.IllegalArgumentException` - if productName is null.
  See Also:
    `CIFRegistry.getOrderedList(javax.media.jai.OperationRegistry, java.lang.String, java.lang.String)`

### create

    public PlanarImage create(java.lang.String operationName,
                              java.awt.image.renderable.ParameterBlock paramBlock,
                              java.awt.RenderingHints renderHints)

  Deprecated. as of JAI 1.1 in favor of `RIFRegistry.create(...)` which returns a `RenderedImage` and not a `PlanarImage`. This is currently equivalent to `PlanarImage.wrapRenderedImage(RIFRegistry.create(this, operationName, paramBlock, renderHints))`

  Constructs a PlanarImage (usually a `RenderedOp`) representing the results of applying a given operation to a particular ParameterBlock and rendering hints. The registry is used to determine the RIF to be used to instantiate the operation.

  If none of the RIFs registered with this `OperationRegistry` returns a non-null value, null is returned. Exceptions thrown by the RIFs will be caught by this method and will not be propagated.

  Parameters:
    `operationName` - the operation name as a String.
    `paramBlock` - the operation's ParameterBlock.
    `renderHints` - a RenderingHints object containing rendering hints.
  Throws:
    `java.lang.IllegalArgumentException` - if operationName is null.
  See Also:
    `RIFRegistry.create(javax.media.jai.OperationRegistry, java.lang.String, java.awt.image.renderable.ParameterBlock, java.awt.RenderingHints)`

### createRenderable

    public java.awt.image.renderable.ContextualRenderedImageFactory createRenderable(java.lang.String operationName,
                                                                                     java.awt.image.renderable.ParameterBlock paramBlock)

  Deprecated. as of JAI 1.1 in favor of `CRIFRegistry.get(...)` This is currently equivalent to `CRIFRegistry.get(this, operationName)`

  Constructs the CRIF to be used to instantiate the operation. Returns null, if no CRIF is registered with the given operation name.
  Parameters:
    `operationName` - the operation name as a String.
    `paramBlock` - the operation's ParameterBlock.
  Throws:
    `java.lang.IllegalArgumentException` - if operationName is null.
  See Also:
    `CRIFRegistry.get(javax.media.jai.OperationRegistry, java.lang.String)`

### createCollection

    public CollectionImage createCollection(java.lang.String operationName,
                                            java.awt.image.renderable.ParameterBlock args,
                                            java.awt.RenderingHints hints)

  Deprecated. as of JAI 1.1 in favor of `CIFRegistry.create(...)` . This is currently equivalent to `CIFRegistry.create(this, operationName, args, hints))`

  Constructs a `CollectionImage` (usually a `CollectionOp`) representing the results of applying a given operation to a particular ParameterBlock and rendering hints. The registry is used to determine the CIF to be used to instantiate the operation.

  If none of the CIFs registered with this `OperationRegistry` returns a non-null value, null is returned. Exceptions thrown by the CIFs will be caught by this method and will not be propagated.

  Parameters:
    `operationName` - The operation name as a String.
    `args` - The operation's input parameters.
    `hints` - A RenderingHints object containing rendering hints.
  Throws:
    `java.lang.IllegalArgumentException` - if operationName is null.
  See Also:
    `CIFRegistry.create(javax.media.jai.OperationRegistry, java.lang.String, java.awt.image.renderable.ParameterBlock, java.awt.RenderingHints)`

### clearPropertyState

    public void clearPropertyState()

  Deprecated. as of JAI 1.1 in factor of the version where the modeName is explicitly specified. This is currently equivalent to `clearPropertyState("rendered")`

  Removes all property associated information from this `OperationRegistry`.
  See Also:
    `clearPropertyState(java.lang.String)`

### addPropertyGenerator

    public void addPropertyGenerator(java.lang.String operationName,
                                     PropertyGenerator generator)

  Deprecated. as of JAI 1.1 in favor of the version where the modeName is explicitly specified. This is currently equivalent to `addPropertyGenerator("rendered", ...)`

  Adds a `PropertyGenerator` to the registry, associating it with a particular `OperationDescriptor`.
  Parameters:
    `operationName` - the operation name as a String.
    `generator` - the `PropertyGenerator` to be added.
  Throws:
    `java.lang.IllegalArgumentException` - if operationName is null.
    `java.lang.IllegalArgumentException` - if generator is null.
  See Also:
    `addPropertyGenerator(java.lang.String, java.lang.String, javax.media.jai.PropertyGenerator)`

### removePropertyGenerator

    public void removePropertyGenerator(java.lang.String operationName,
                                        PropertyGenerator generator)

  Deprecated. as of JAI 1.1 in favor of the version where the modeName is explicitly specified. This is currently equivalent to `removePropertyGenerator("rendered", ...)`

  Removes a `PropertyGenerator` from its association with a particular `OperationDescriptor` in the registry. If the generator was not associated with the operation, nothing happens.
  Parameters:
    `operationName` - the operation name as a String.
    `generator` - the `PropertyGenerator` to be removed.
  Throws:
    `java.lang.IllegalArgumentException` - if operationName is null.
    `java.lang.IllegalArgumentException` - if generator is null.
  See Also:
    `removePropertyGenerator(java.lang.String, java.lang.String, javax.media.jai.PropertyGenerator)`

### suppressProperty

    public void suppressProperty(java.lang.String operationName,
                                 java.lang.String propertyName)

  Deprecated. as of JAI 1.1 in favor of the version where the modeName is explicitly specified. This is currently equivalent to `suppressProperty("rendered", ...)`

  Forces a particular property to be suppressed by nodes performing a particular operation. By default, properties are passed through operations unchanged.
  Parameters:
    `operationName` - the operation name as a String.
    `propertyName` - the name of the property to be suppressed.
  Throws:
    `java.lang.IllegalArgumentException` - if operationName is null.
    `java.lang.IllegalArgumentException` - if propertyName is null.
  See Also:
    `suppressProperty(java.lang.String, java.lang.String, java.lang.String)`

### suppressAllProperties

    public void suppressAllProperties(java.lang.String operationName)

  Deprecated. as of JAI 1.1 in favor of the version where the modeName is explicitly specified. This is currently equivalent to `suppressAllProperties("rendered", ...)`

  Forces all properties to be suppressed by nodes performing a particular operation. By default, properties are passed through operations unchanged.
  Parameters:
    `operationName` - the operation name as a String.
  Throws:
    `java.lang.IllegalArgumentException` - if operationName is null.
  See Also:
    `suppressAllProperties(java.lang.String, java.lang.String)`

### copyPropertyFromSource

    public void copyPropertyFromSource(java.lang.String operationName,
                                       java.lang.String propertyName,
                                       int sourceIndex)

  Deprecated. as of JAI 1.1 in favor of the version where the modeName is explicitly specified. This is currently equivalent to `copyPropertyFromSource("rendered", ...)`

  Forces a property to be copied from the specified source image by `RenderedOp` nodes performing a particular operation. By default, a property is copied from the first source node that emits it. The result of specifying an invalid source is undefined.
  Parameters:
    `operationName` - the operation name as a String.
    `propertyName` - the name of the property to be copied.
    `sourceIndex` - the index of the source to copy the property from.
  Throws:
    `java.lang.IllegalArgumentException` - if operationName is null.
    `java.lang.IllegalArgumentException` - if propertyName is null.
  See Also:
    `copyPropertyFromSource(java.lang.String, java.lang.String, java.lang.String, int)`

### getGeneratedPropertyNames

    public java.lang.String[] getGeneratedPropertyNames(java.lang.String operationName)

  Deprecated. as of JAI 1.1 in favor of the version where the modeName is explicitly specified. This is currently equivalent to `getGeneratedPropertyNames("rendered", ...)`

  Returns a list of the properties generated by nodes implementing the operation associated with a particular Operation Name. Returns null if no properties are generated.
  Parameters:
    `operationName` - the operation name as a String.
  Returns:
    an array of Strings.
  Throws:
    `java.lang.IllegalArgumentException` - if operationName is null.
  See Also:
    `getGeneratedPropertyNames(java.lang.String, java.lang.String)`

### getPropertySource

    public PropertySource getPropertySource(RenderedOp op)

  Deprecated. as of JAI 1.1 in favor `RIFRegistry.getPropertySource(op)`

  Constructs and returns a `PropertySource` suitable for use by a given `RenderedOp`. The `PropertySource` includes properties copied from prior nodes as well as those generated at the node itself. Additionally, property suppression is taken into account. The actual implementation of `getPropertySource()` may make use of deferred execution and caching.
  Parameters:
    `op` - the `RenderedOp` requesting its `PropertySource`.
  Throws:
    `java.lang.IllegalArgumentException` - if op is null.
  See Also:
    `RIFRegistry.getPropertySource(javax.media.jai.RenderedOp)`

### getPropertySource

    public PropertySource getPropertySource(RenderableOp op)

  Deprecated. as of JAI 1.1 in favor `CRIFRegistry.getPropertySource(op)`

  Constructs and returns a `PropertySource` suitable for use by a given `RenderableOp`. The `PropertySource` includes properties copied from prior nodes as well as those generated at the node itself. Additionally, property suppression is taken into account. The actual implementation of `getPropertySource()` may make use of deferred execution and caching.
  Parameters:
    `op` - the `RenderableOp` requesting its `PropertySource`.
  See Also:
    `CRIFRegistry.getPropertySource(javax.media.jai.RenderableOp)`