org.esa.beam.framework.gpf
Class OperatorSpi

java.lang.Object
  extended by org.esa.beam.framework.gpf.OperatorSpi
Direct Known Subclasses:
GraphOp.Spi

public abstract class OperatorSpi
extends Object

The OperatorSpi class is the service provider interface (SPI) for Operators. Therefore this abstract class is intended to be derived by clients.

The SPI is both a descriptor for the operator type and a factory for new Operator instances.

An SPI is required for your operator if you want to make it accessible via an alias name in the various GPF.create methods or within GPF Graph XML code.

SPI are registered either programmatically using the OperatorSpiRegistry or automatically via standard Java services lookup mechanism. For the services approach, place a file META-INF/services/org.esa.beam.framework.gpf.OperatorSpi in the JAR file containing your operators and associated SPIs. For each SPI to be automatically registered, place a text line in the file containing the SPI's fully qualified class name.

Since:
4.1
Author:
Norman Fomferra, Marco Peters

Constructor Summary
protected OperatorSpi(Class<? extends Operator> operatorClass)
          Constructs an operator SPI for the given operator class.
protected OperatorSpi(Class<? extends Operator> operatorClass, String operatorAlias)
          Constructs an operator SPI for the given class name and alias name.
 
Method Summary
 Operator createOperator()
          Creates an operator instance with no arguments.
 Operator createOperator(Map<String,Object> parameters, Map<String,Product> sourceProducts)
          Creates an operator instance for the given source products and processing parameters.
 Operator createOperator(Map<String,Object> parameters, Map<String,Product> sourceProducts, RenderingHints renderingHints)
          Creates an operator instance for the given source products and processing parameters.
 String getOperatorAlias()
          The alias name under which the operator can be accessed.
static String getOperatorAlias(Class<? extends Operator> operatorClass)
           
 Class<? extends Operator> getOperatorClass()
          Gets the operator class.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

OperatorSpi

protected OperatorSpi(Class<? extends Operator> operatorClass)
Constructs an operator SPI for the given operator class. The alias name and other metadata will be taken from the operator annotation OperatorMetadata. If no such exists, the alias name will be the operator's class name without the package path. All other metadata will be set to the empty string.

Parameters:
operatorClass - The operator class.

OperatorSpi

protected OperatorSpi(Class<? extends Operator> operatorClass,
                      String operatorAlias)
Constructs an operator SPI for the given class name and alias name.

Parameters:
operatorClass - The operator class.
operatorAlias - The alias name for the operator.
Method Detail

createOperator

public Operator createOperator()
                        throws OperatorException

Creates an operator instance with no arguments. The default implemrentation calls the default constructor. If no such is defined in the operator, an exception is thrown.

This method may be overridden by clients in order to provide a no-argument instance of their operator. Implementors should call operator.setSpi(this) in order to set the operator's SPI.

Returns:
the operator instance
Throws:
OperatorException - if the instance could not be created

createOperator

public Operator createOperator(Map<String,Object> parameters,
                               Map<String,Product> sourceProducts)
                        throws OperatorException

Creates an operator instance for the given source products and processing parameters.

This method may be overridden by clients in order to process the passed parameters and source products and optionally construct the operator in a specific way. Implementors should call operator.setSpi(this) in order to set the operator's SPI.

Parameters:
parameters - the processing parameters.
sourceProducts - the source products.
Returns:
the operator instance.
Throws:
OperatorException - if the operator could not be created.

createOperator

public Operator createOperator(Map<String,Object> parameters,
                               Map<String,Product> sourceProducts,
                               RenderingHints renderingHints)
                        throws OperatorException

Creates an operator instance for the given source products and processing parameters.

This method may be overridden by clients in order to process the passed parameters and source products and optionally construct the operator in a specific way. Implementors should call operator.setSpi(this) in order to set the operator's SPI.

Parameters:
parameters - the processing parameters.
sourceProducts - the source products.
renderingHints - the rendering hints, may be null.
Returns:
the operator instance.
Throws:
OperatorException - if the operator could not be created.

getOperatorClass

public final Class<? extends Operator> getOperatorClass()
Gets the operator class. The operator class must be public and provide a public zero-argument constructor.

Returns:
the operator class

getOperatorAlias

public final String getOperatorAlias()
The alias name under which the operator can be accessed.

Returns:
The alias name of the (@link Operator).

getOperatorAlias

public static String getOperatorAlias(Class<? extends Operator> operatorClass)


Copyright © 2002-2012 Brockmann Consult GmbH. All Rights Reserved.