public abstract class OperatorSpi extends Object
The OperatorSpi
class is the service provider interface (SPI) for Operator
s.
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 pragmatically using the
OperatorSpiRegistry
or
automatically via standard Java services lookup mechanism. For the services approach, place a
file META-INF/services/org.esa.snap.core.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.
Modifier | Constructor and Description |
---|---|
protected |
OperatorSpi(Class<? extends Operator> operatorClass)
Constructs an operator SPI for the given operator class.
|
protected |
OperatorSpi(Class<? extends Operator> operatorClass,
String operatorAlias)
Deprecated.
since BEAM 5, no replacement.
|
protected |
OperatorSpi(OperatorDescriptor operatorDescriptor)
Constructs an operator SPI for the given operator descriptor.
|
protected |
OperatorSpi(URL operatorDescriptorUrl)
Constructs an operator SPI for the given URL pointing to a valid operator descriptor XML document.
|
Modifier and Type | Method and Description |
---|---|
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.
|
ModuleMetadata |
getModuleMetadata()
The metadata information of the module which holds the operator provided by this SPI.
|
String |
getOperatorAlias()
The alias name under which the operator can be accessed.
|
static String |
getOperatorAlias(Class<? extends Operator> operatorClass)
Gets the alias name of the operator given by it's class.
|
Class<? extends Operator> |
getOperatorClass()
Gets the operator implementation class.
|
OperatorDescriptor |
getOperatorDescriptor() |
protected OperatorSpi(OperatorDescriptor operatorDescriptor)
operatorDescriptor
- The operator descriptor.protected OperatorSpi(URL operatorDescriptorUrl)
operatorDescriptorUrl
- The operator descriptor URL.protected OperatorSpi(Class<? extends Operator> operatorClass)
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.operatorClass
- The operator class.@Deprecated protected OperatorSpi(Class<? extends Operator> operatorClass, String operatorAlias)
operatorClass
- The operator class.operatorAlias
- The alias name for the operator.public Operator createOperator() throws OperatorException
Creates an operator instance with no arguments. The default implementation 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.
OperatorException
- if the instance could not be createdpublic 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
- the processing parameters.sourceProducts
- the source products.OperatorException
- if the operator could not be created.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
- the processing parameters.sourceProducts
- the source products.renderingHints
- the rendering hints, may be null
.OperatorException
- if the operator could not be created.public final Class<? extends Operator> getOperatorClass()
Shorthand for getOperatorDescriptor().getOperatorClass()
.
public final String getOperatorAlias()
Shorthand for getOperatorDescriptor().getAlias()
.
null
if not declared.public ModuleMetadata getModuleMetadata()
public OperatorDescriptor getOperatorDescriptor()
public static String getOperatorAlias(Class<? extends Operator> operatorClass)
OperatorMetadata
, if any.
Otherwise it returns the class' simple name (without package path).operatorClass
- The operator class.Copyright © 2014–2017 European Space Agency (ESA). All rights reserved.