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.