This is an automated email from the ASF dual-hosted git repository.

desruisseaux pushed a commit to branch geoapi-4.0
in repository https://gitbox.apache.org/repos/asf/sis.git

commit 62a5f70d5aa8aca567490523cabb666e88e0969a
Author: Martin Desruisseaux <martin.desruisse...@geomatys.com>
AuthorDate: Fri Dec 15 10:57:01 2023 +0100

    Documentation update about how to define custum operation method.
---
 .../operation/transform/MathTransformProvider.java | 35 +++++++++++++---------
 1 file changed, 21 insertions(+), 14 deletions(-)

diff --git 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/transform/MathTransformProvider.java
 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/transform/MathTransformProvider.java
index 42aabda339..ba96f22c94 100644
--- 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/transform/MathTransformProvider.java
+++ 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/transform/MathTransformProvider.java
@@ -50,23 +50,30 @@ import 
org.opengis.referencing.operation.MathTransformFactory;
  * Example:
  *
  * {@snippet lang="java" :
- *     public class MyProjectionProvider extends DefaultOperationMethod 
implements MathTransformProvider {
- *         public MyProjectionProvider() {
- *             super(Map.of(NAME_KEY, "My projection"),
- *                     2, // Number of source dimensions
- *                     2, // Number of target dimensions
- *                     parameters);
- *         }
+ * public class MyOperationProvider extends DefaultOperationMethod implements 
MathTransformProvider {
+ *     private static final ParameterDescriptor<Foo> FOO;
+ *     private static final ParameterDescriptor<Bar> BAR;
+ *     private static final ParameterDescriptorGroup PARAMETERS;
+ *     static {
+ *         final var builder = new ParameterBuilder();
+ *         FOO = builder.addName("Foo").create(Foo.class, null);
+ *         BAR = builder.addName("Bar").create(Bar.class, null);
+ *         PARAMETERS = builder.addName("My operation").createGroup(FOO, BAR);
+ *     }
+ *
+ *     public MyOperationProvider() {
+ *         super(Map.of(NAME_KEY, PARAMETERS.getName()), PARAMETERS);
+ *     }
  *
- *         @Override
- *         public MathTransform createMathTransform(MathTransformFactory 
factory, ParameterValueGroup parameters) {
- *             double semiMajor = 
values.parameter("semi_major").doubleValue(Units.METRE);
- *             double semiMinor = 
values.parameter("semi_minor").doubleValue(Units.METRE);
- *             // etc...
- *             return new MyProjection(semiMajor, semiMinor, ...);
- *         }
+ *     @Override
+ *     public MathTransform createMathTransform(MathTransformFactory factory, 
ParameterValueGroup parameters) {
+ *         var pg  = Parameters.castOrWrap(values);
+ *         Foo foo = pg.getMandatoryValue(FOO);
+ *         Bar bar = pg.getMandatoryValue(BAR);
+ *         return new MyOperation(foo, bar);
  *     }
  * }
+ * }
  *
  * Then the class name of that implementation shall be declared in {@code 
module-info.java}
  * as a provider of the {@code 
org.opengis.referencing.operation.OperationMethod} service.

Reply via email to