You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sis.apache.org by de...@apache.org on 2015/04/29 18:28:41 UTC
svn commit: r1676784 - in /sis/branches/JDK8/core/sis-feature/src:
main/java/org/apache/sis/feature/ test/java/org/apache/sis/feature/
test/java/org/apache/sis/test/suite/
Author: desruisseaux
Date: Wed Apr 29 16:28:41 2015
New Revision: 1676784
URL: http://svn.apache.org/r1676784
Log:
Feature: renamed DefaultOperation as AbstractOperation, since an abstract "invoke" method has been added.
Added:
sis/branches/JDK8/core/sis-feature/src/main/java/org/apache/sis/feature/AbstractOperation.java
- copied, changed from r1676229, sis/branches/JDK8/core/sis-feature/src/main/java/org/apache/sis/feature/DefaultOperation.java
sis/branches/JDK8/core/sis-feature/src/test/java/org/apache/sis/feature/AbstractOperationTest.java
- copied, changed from r1676229, sis/branches/JDK8/core/sis-feature/src/test/java/org/apache/sis/feature/DefaultOperationTest.java
sis/branches/JDK8/core/sis-feature/src/test/java/org/apache/sis/feature/NoOperation.java
- copied, changed from r1676229, sis/branches/JDK8/core/sis-feature/src/main/java/org/apache/sis/feature/DefaultOperation.java
Removed:
sis/branches/JDK8/core/sis-feature/src/test/java/org/apache/sis/feature/DefaultOperationTest.java
Modified:
sis/branches/JDK8/core/sis-feature/src/main/java/org/apache/sis/feature/AbstractFeature.java
sis/branches/JDK8/core/sis-feature/src/main/java/org/apache/sis/feature/DefaultFeatureType.java
sis/branches/JDK8/core/sis-feature/src/main/java/org/apache/sis/feature/DefaultOperation.java
sis/branches/JDK8/core/sis-feature/src/main/java/org/apache/sis/feature/package-info.java
sis/branches/JDK8/core/sis-feature/src/test/java/org/apache/sis/test/suite/FeatureTestSuite.java
Modified: sis/branches/JDK8/core/sis-feature/src/main/java/org/apache/sis/feature/AbstractFeature.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK8/core/sis-feature/src/main/java/org/apache/sis/feature/AbstractFeature.java?rev=1676784&r1=1676783&r2=1676784&view=diff
==============================================================================
--- sis/branches/JDK8/core/sis-feature/src/main/java/org/apache/sis/feature/AbstractFeature.java [UTF-8] (original)
+++ sis/branches/JDK8/core/sis-feature/src/main/java/org/apache/sis/feature/AbstractFeature.java [UTF-8] Wed Apr 29 16:28:41 2015
@@ -46,7 +46,7 @@ import org.opengis.feature.FeatureAssoci
* <ul>
* <li>{@linkplain AbstractAttribute Attributes}</li>
* <li>{@linkplain AbstractAssociation Associations to other features}</li>
- * <li>{@linkplain DefaultOperation Operations}</li>
+ * <li>{@linkplain AbstractOperation Operations}</li>
* </ul>
*
* {@code AbstractFeature} can be instantiated by calls to {@link DefaultFeatureType#newInstance()}.
Copied: sis/branches/JDK8/core/sis-feature/src/main/java/org/apache/sis/feature/AbstractOperation.java (from r1676229, sis/branches/JDK8/core/sis-feature/src/main/java/org/apache/sis/feature/DefaultOperation.java)
URL: http://svn.apache.org/viewvc/sis/branches/JDK8/core/sis-feature/src/main/java/org/apache/sis/feature/AbstractOperation.java?p2=sis/branches/JDK8/core/sis-feature/src/main/java/org/apache/sis/feature/AbstractOperation.java&p1=sis/branches/JDK8/core/sis-feature/src/main/java/org/apache/sis/feature/DefaultOperation.java&r1=1676229&r2=1676784&rev=1676784&view=diff
==============================================================================
--- sis/branches/JDK8/core/sis-feature/src/main/java/org/apache/sis/feature/DefaultOperation.java [UTF-8] (original)
+++ sis/branches/JDK8/core/sis-feature/src/main/java/org/apache/sis/feature/AbstractOperation.java [UTF-8] Wed Apr 29 16:28:41 2015
@@ -20,14 +20,17 @@ import java.util.Map;
import org.opengis.util.GenericName;
import org.opengis.parameter.GeneralParameterDescriptor;
import org.opengis.parameter.ParameterDescriptorGroup;
+import org.opengis.parameter.ParameterValueGroup;
import org.apache.sis.referencing.IdentifiedObjects;
import org.apache.sis.util.ArgumentChecks;
import org.apache.sis.util.Debug;
// Branch-dependent imports
import java.util.Objects;
+import org.opengis.feature.Feature;
import org.opengis.feature.IdentifiedType;
import org.opengis.feature.Operation;
+import org.opengis.feature.Property;
/**
@@ -46,11 +49,11 @@ import org.opengis.feature.Operation;
* experience on this aspect of ISO 19109.</div>
*
* @author Martin Desruisseaux (Geomatys)
- * @since 0.5
- * @version 0.5
+ * @since 0.6
+ * @version 0.6
* @module
*/
-public class DefaultOperation extends AbstractIdentifiedType implements Operation {
+public abstract class AbstractOperation extends AbstractIdentifiedType implements Operation {
/**
* For cross-version compatibility.
*/
@@ -74,7 +77,7 @@ public class DefaultOperation extends Ab
* @param parameters A description of the input parameters.
* @param result The type of the result, or {@code null} if none.
*/
- public DefaultOperation(final Map<String,?> identification,
+ public AbstractOperation(final Map<String,?> identification,
final ParameterDescriptorGroup parameters, final IdentifiedType result)
{
super(identification);
@@ -104,6 +107,32 @@ public class DefaultOperation extends Ab
}
/**
+ * Executes the operation on the specified feature with the specified parameters.
+ * The value returned by this method depends on the value returned by {@link #getResult()}:
+ *
+ * <ul>
+ * <li>If {@code getResult()}} returns {@code null},
+ * then this method should return {@code null}.</li>
+ * <li>If {@code getResult()}} returns an instance of {@link AttributeType},
+ * then this method shall return an instance of {@link Attribute}
+ * and the {@code Attribute.getType() == getResult()} relation should hold.</li>
+ * <li>If {@code getResult()}} returns an instance of {@link FeatureAssociationRole},
+ * then this method shall return an instance of {@link FeatureAssociation}
+ * and the {@code FeatureAssociation.getRole() == getResult()} relation should hold.</li>
+ * </ul>
+ *
+ * <div class="note"><b>Analogy:</b>
+ * if we compare {@code Operation} to {@link Method} in the Java language, then this method is equivalent
+ * to {@link Method#invoke(Object, Object...)}. The {@code Feature} argument is equivalent to {@code this}
+ * in the Java language.</div>
+ *
+ * @param feature The feature on which to execute the operation.
+ * @param parameters The parameters to use for executing the operation.
+ * @return The operation result, or {@code null} if this operation does not produce any result.
+ */
+ public abstract Property invoke(Feature feature, ParameterValueGroup parameters);
+
+ /**
* Returns a hash code value for this operation.
*
* @return {@inheritDoc}
@@ -124,7 +153,7 @@ public class DefaultOperation extends Ab
return true;
}
if (super.equals(obj)) {
- final DefaultOperation that = (DefaultOperation) obj;
+ final AbstractOperation that = (AbstractOperation) obj;
return parameters.equals(that.parameters) &&
Objects.equals(result, that.result);
}
Modified: sis/branches/JDK8/core/sis-feature/src/main/java/org/apache/sis/feature/DefaultFeatureType.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK8/core/sis-feature/src/main/java/org/apache/sis/feature/DefaultFeatureType.java?rev=1676784&r1=1676783&r2=1676784&view=diff
==============================================================================
--- sis/branches/JDK8/core/sis-feature/src/main/java/org/apache/sis/feature/DefaultFeatureType.java [UTF-8] (original)
+++ sis/branches/JDK8/core/sis-feature/src/main/java/org/apache/sis/feature/DefaultFeatureType.java [UTF-8] Wed Apr 29 16:28:41 2015
@@ -65,7 +65,7 @@ import org.opengis.feature.FeatureAssoci
* <ul>
* <li>{@linkplain DefaultAttributeType Attributes}</li>
* <li>{@linkplain DefaultAssociationRole Associations to other features}</li>
- * <li>{@linkplain DefaultOperation Operations}</li>
+ * <li>{@linkplain AbstractOperation Operations}</li>
* </ul>
*
* In addition, a feature type can inherit the properties of one or more other feature types.
Modified: sis/branches/JDK8/core/sis-feature/src/main/java/org/apache/sis/feature/DefaultOperation.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK8/core/sis-feature/src/main/java/org/apache/sis/feature/DefaultOperation.java?rev=1676784&r1=1676783&r2=1676784&view=diff
==============================================================================
--- sis/branches/JDK8/core/sis-feature/src/main/java/org/apache/sis/feature/DefaultOperation.java [UTF-8] (original)
+++ sis/branches/JDK8/core/sis-feature/src/main/java/org/apache/sis/feature/DefaultOperation.java [UTF-8] Wed Apr 29 16:28:41 2015
@@ -17,56 +17,31 @@
package org.apache.sis.feature;
import java.util.Map;
-import org.opengis.util.GenericName;
-import org.opengis.parameter.GeneralParameterDescriptor;
+import org.opengis.parameter.ParameterValueGroup;
import org.opengis.parameter.ParameterDescriptorGroup;
-import org.apache.sis.referencing.IdentifiedObjects;
-import org.apache.sis.util.ArgumentChecks;
-import org.apache.sis.util.Debug;
// Branch-dependent imports
-import java.util.Objects;
+import org.opengis.feature.Feature;
import org.opengis.feature.IdentifiedType;
-import org.opengis.feature.Operation;
+import org.opengis.feature.Property;
/**
- * Describes the behaviour of a feature type as a function or a method.
- * Operations can:
- *
- * <ul>
- * <li>Compute values from the attributes.</li>
- * <li>Perform actions that change the attribute values.</li>
- * </ul>
- *
- * <div class="note"><b>Example:</b> a mutator operation may raise the height of a dam. This changes
- * may affect other properties like the watercourse and the reservoir associated with the dam.</div>
- *
- * <div class="warning"><b>Warning:</b> this class is experimental and may change after we gained more
- * experience on this aspect of ISO 19109.</div>
+ * @deprecated Renamed {@link AbstractOperation}.
*
* @author Martin Desruisseaux (Geomatys)
* @since 0.5
- * @version 0.5
+ * @version 0.6
* @module
*/
-public class DefaultOperation extends AbstractIdentifiedType implements Operation {
+@Deprecated
+public class DefaultOperation extends AbstractOperation {
/**
* For cross-version compatibility.
*/
private static final long serialVersionUID = 6300319108116735764L;
/**
- * A description of the input parameters.
- */
- private final ParameterDescriptorGroup parameters;
-
- /**
- * The type of the result, or {@code null} if none.
- */
- private final IdentifiedType result;
-
- /**
* Constructs an operation from the given properties. The identification map is given unchanged to
* the {@linkplain AbstractIdentifiedType#AbstractIdentifiedType(Map) super-class constructor}.
*
@@ -77,89 +52,17 @@ public class DefaultOperation extends Ab
public DefaultOperation(final Map<String,?> identification,
final ParameterDescriptorGroup parameters, final IdentifiedType result)
{
- super(identification);
- ArgumentChecks.ensureNonNull("parameters", parameters);
- this.parameters = parameters;
- this.result = result;
- }
-
- /**
- * Returns a description of the input parameters.
- *
- * @return Description of the input parameters.
- */
- @Override
- public ParameterDescriptorGroup getParameters() {
- return parameters;
- }
-
- /**
- * Returns the expected result type, or {@code null} if none.
- *
- * @return The type of the result, or {@code null} if none.
- */
- @Override
- public IdentifiedType getResult() {
- return result;
+ super(identification, parameters, result);
}
/**
- * Returns a hash code value for this operation.
+ * Subclasses should override.
+ * Default implementation throws {@link UnsupportedOperationException}.
*
* @return {@inheritDoc}
*/
@Override
- public int hashCode() {
- return super.hashCode() + parameters.hashCode() + Objects.hashCode(result);
- }
-
- /**
- * Compares this operation with the given object for equality.
- *
- * @return {@inheritDoc}
- */
- @Override
- public boolean equals(final Object obj) {
- if (obj == this) {
- return true;
- }
- if (super.equals(obj)) {
- final DefaultOperation that = (DefaultOperation) obj;
- return parameters.equals(that.parameters) &&
- Objects.equals(result, that.result);
- }
- return false;
- }
-
- /**
- * Returns a string representation of this operation.
- * The returned string is for debugging purpose and may change in any future SIS version.
- *
- * @return A string representation of this operation for debugging purpose.
- */
- @Debug
- @Override
- public String toString() {
- final StringBuilder buffer = new StringBuilder(40).append("Operation").append('[');
- final GenericName name = getName();
- if (name != null) {
- buffer.append('“');
- }
- buffer.append(name);
- if (name != null) {
- buffer.append('”');
- }
- String separator = " (";
- for (final GeneralParameterDescriptor param : parameters.descriptors()) {
- buffer.append(separator).append(IdentifiedObjects.toString(param.getName()));
- separator = ", ";
- }
- if (separator == ", ") { // Identity comparaison is okay here.
- buffer.append(')');
- }
- if (result != null) {
- buffer.append(" : ").append(result.getName());
- }
- return buffer.append(']').toString();
+ public Property invoke(Feature feature, ParameterValueGroup parameters) {
+ throw new UnsupportedOperationException();
}
}
Modified: sis/branches/JDK8/core/sis-feature/src/main/java/org/apache/sis/feature/package-info.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK8/core/sis-feature/src/main/java/org/apache/sis/feature/package-info.java?rev=1676784&r1=1676783&r2=1676784&view=diff
==============================================================================
--- sis/branches/JDK8/core/sis-feature/src/main/java/org/apache/sis/feature/package-info.java [UTF-8] (original)
+++ sis/branches/JDK8/core/sis-feature/src/main/java/org/apache/sis/feature/package-info.java [UTF-8] Wed Apr 29 16:28:41 2015
@@ -24,7 +24,7 @@
* <li><b>{@linkplain org.apache.sis.feature.DefaultFeatureType Feature types}</b><br>
* Define the <em>structure</em> of real-world representations. A feature type lists the
* {@linkplain org.apache.sis.feature.DefaultAttributeType attributes},
- * {@linkplain org.apache.sis.feature.DefaultOperation operations} or
+ * {@linkplain org.apache.sis.feature.AbstractOperation operations} or
* {@linkplain org.apache.sis.feature.DefaultAssociationRole associations to other features}
* (collectively called “{@linkplain org.apache.sis.feature.DefaultFeatureType#getProperties(boolean) properties}”
* or “characteristics”) that a feature can have.
@@ -70,7 +70,7 @@
* {@code └─} Property type<br>
* {@code ├─} {@linkplain org.apache.sis.feature.DefaultAttributeType Attribute type}<br>
* {@code ├─} {@linkplain org.apache.sis.feature.DefaultAssociationRole Feature association role}<br>
- * {@code └─} {@linkplain org.apache.sis.feature.DefaultOperation Operation}<br>
+ * {@code └─} {@linkplain org.apache.sis.feature.AbstractOperation Operation}<br>
* </td><td class="sep" style="width: 50%; white-space: nowrap">
* {@linkplain org.apache.sis.feature.AbstractFeature Feature} (<cite>sparse</cite> or <cite>dense</cite>)<br>
* Property<br>
Copied: sis/branches/JDK8/core/sis-feature/src/test/java/org/apache/sis/feature/AbstractOperationTest.java (from r1676229, sis/branches/JDK8/core/sis-feature/src/test/java/org/apache/sis/feature/DefaultOperationTest.java)
URL: http://svn.apache.org/viewvc/sis/branches/JDK8/core/sis-feature/src/test/java/org/apache/sis/feature/AbstractOperationTest.java?p2=sis/branches/JDK8/core/sis-feature/src/test/java/org/apache/sis/feature/AbstractOperationTest.java&p1=sis/branches/JDK8/core/sis-feature/src/test/java/org/apache/sis/feature/DefaultOperationTest.java&r1=1676229&r2=1676784&rev=1676784&view=diff
==============================================================================
--- sis/branches/JDK8/core/sis-feature/src/test/java/org/apache/sis/feature/DefaultOperationTest.java [UTF-8] (original)
+++ sis/branches/JDK8/core/sis-feature/src/test/java/org/apache/sis/feature/AbstractOperationTest.java [UTF-8] Wed Apr 29 16:28:41 2015
@@ -27,24 +27,24 @@ import static org.apache.sis.test.Assert
/**
- * Tests {@link DefaultOperationTest}.
+ * Tests {@link AbstractOperation}.
*
* @author Martin Desruisseaux (Geomatys)
- * @since 0.5
- * @version 0.5
+ * @since 0.6
+ * @version 0.6
* @module
*/
@DependsOn(SingletonAttributeTest.class)
-public final strictfp class DefaultOperationTest extends TestCase {
+public final strictfp class AbstractOperationTest extends TestCase {
/**
* Returns an operation that found new cities.
*/
- static DefaultOperation foundCity() {
+ static AbstractOperation foundCity() {
final ParameterBuilder builder = new ParameterBuilder();
final ParameterDescriptor<?>[] parameters = {
builder.addName("founder").create(String.class, null)
};
- return new DefaultOperation(singletonMap(DefaultOperation.NAME_KEY, "found city"),
+ return new NoOperation(singletonMap(AbstractOperation.NAME_KEY, "found city"),
builder.addName("found city").createGroup(parameters),
DefaultAttributeTypeTest.city());
}
Copied: sis/branches/JDK8/core/sis-feature/src/test/java/org/apache/sis/feature/NoOperation.java (from r1676229, sis/branches/JDK8/core/sis-feature/src/main/java/org/apache/sis/feature/DefaultOperation.java)
URL: http://svn.apache.org/viewvc/sis/branches/JDK8/core/sis-feature/src/test/java/org/apache/sis/feature/NoOperation.java?p2=sis/branches/JDK8/core/sis-feature/src/test/java/org/apache/sis/feature/NoOperation.java&p1=sis/branches/JDK8/core/sis-feature/src/main/java/org/apache/sis/feature/DefaultOperation.java&r1=1676229&r2=1676784&rev=1676784&view=diff
==============================================================================
--- sis/branches/JDK8/core/sis-feature/src/main/java/org/apache/sis/feature/DefaultOperation.java [UTF-8] (original)
+++ sis/branches/JDK8/core/sis-feature/src/test/java/org/apache/sis/feature/NoOperation.java [UTF-8] Wed Apr 29 16:28:41 2015
@@ -17,55 +17,26 @@
package org.apache.sis.feature;
import java.util.Map;
-import org.opengis.util.GenericName;
-import org.opengis.parameter.GeneralParameterDescriptor;
+import org.opengis.parameter.ParameterValueGroup;
import org.opengis.parameter.ParameterDescriptorGroup;
-import org.apache.sis.referencing.IdentifiedObjects;
-import org.apache.sis.util.ArgumentChecks;
-import org.apache.sis.util.Debug;
// Branch-dependent imports
-import java.util.Objects;
+import org.opengis.feature.Feature;
import org.opengis.feature.IdentifiedType;
-import org.opengis.feature.Operation;
+import org.opengis.feature.Property;
/**
- * Describes the behaviour of a feature type as a function or a method.
- * Operations can:
- *
- * <ul>
- * <li>Compute values from the attributes.</li>
- * <li>Perform actions that change the attribute values.</li>
- * </ul>
- *
- * <div class="note"><b>Example:</b> a mutator operation may raise the height of a dam. This changes
- * may affect other properties like the watercourse and the reservoir associated with the dam.</div>
- *
- * <div class="warning"><b>Warning:</b> this class is experimental and may change after we gained more
- * experience on this aspect of ISO 19109.</div>
+ * An operation that does nothing.
+ * This is used for testing purpose only.
*
* @author Martin Desruisseaux (Geomatys)
- * @since 0.5
- * @version 0.5
+ * @since 0.6
+ * @version 0.6
* @module
*/
-public class DefaultOperation extends AbstractIdentifiedType implements Operation {
- /**
- * For cross-version compatibility.
- */
- private static final long serialVersionUID = 6300319108116735764L;
-
- /**
- * A description of the input parameters.
- */
- private final ParameterDescriptorGroup parameters;
-
- /**
- * The type of the result, or {@code null} if none.
- */
- private final IdentifiedType result;
-
+@SuppressWarnings("serial")
+final strictfp class NoOperation extends AbstractOperation {
/**
* Constructs an operation from the given properties. The identification map is given unchanged to
* the {@linkplain AbstractIdentifiedType#AbstractIdentifiedType(Map) super-class constructor}.
@@ -74,92 +45,19 @@ public class DefaultOperation extends Ab
* @param parameters A description of the input parameters.
* @param result The type of the result, or {@code null} if none.
*/
- public DefaultOperation(final Map<String,?> identification,
+ NoOperation(final Map<String,?> identification,
final ParameterDescriptorGroup parameters, final IdentifiedType result)
{
- super(identification);
- ArgumentChecks.ensureNonNull("parameters", parameters);
- this.parameters = parameters;
- this.result = result;
- }
-
- /**
- * Returns a description of the input parameters.
- *
- * @return Description of the input parameters.
- */
- @Override
- public ParameterDescriptorGroup getParameters() {
- return parameters;
- }
-
- /**
- * Returns the expected result type, or {@code null} if none.
- *
- * @return The type of the result, or {@code null} if none.
- */
- @Override
- public IdentifiedType getResult() {
- return result;
- }
-
- /**
- * Returns a hash code value for this operation.
- *
- * @return {@inheritDoc}
- */
- @Override
- public int hashCode() {
- return super.hashCode() + parameters.hashCode() + Objects.hashCode(result);
- }
-
- /**
- * Compares this operation with the given object for equality.
- *
- * @return {@inheritDoc}
- */
- @Override
- public boolean equals(final Object obj) {
- if (obj == this) {
- return true;
- }
- if (super.equals(obj)) {
- final DefaultOperation that = (DefaultOperation) obj;
- return parameters.equals(that.parameters) &&
- Objects.equals(result, that.result);
- }
- return false;
+ super(identification, parameters, result);
}
/**
- * Returns a string representation of this operation.
- * The returned string is for debugging purpose and may change in any future SIS version.
+ * Do nothing.
*
- * @return A string representation of this operation for debugging purpose.
+ * @return {@code null}
*/
- @Debug
@Override
- public String toString() {
- final StringBuilder buffer = new StringBuilder(40).append("Operation").append('[');
- final GenericName name = getName();
- if (name != null) {
- buffer.append('“');
- }
- buffer.append(name);
- if (name != null) {
- buffer.append('”');
- }
- String separator = " (";
- for (final GeneralParameterDescriptor param : parameters.descriptors()) {
- buffer.append(separator).append(IdentifiedObjects.toString(param.getName()));
- separator = ", ";
- }
- if (separator == ", ") { // Identity comparaison is okay here.
- buffer.append(')');
- }
- if (result != null) {
- buffer.append(" : ").append(result.getName());
- }
- return buffer.append(']').toString();
+ public Property invoke(Feature feature, ParameterValueGroup parameters) {
+ return null;
}
}
Modified: sis/branches/JDK8/core/sis-feature/src/test/java/org/apache/sis/test/suite/FeatureTestSuite.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK8/core/sis-feature/src/test/java/org/apache/sis/test/suite/FeatureTestSuite.java?rev=1676784&r1=1676783&r2=1676784&view=diff
==============================================================================
--- sis/branches/JDK8/core/sis-feature/src/test/java/org/apache/sis/test/suite/FeatureTestSuite.java [UTF-8] (original)
+++ sis/branches/JDK8/core/sis-feature/src/test/java/org/apache/sis/test/suite/FeatureTestSuite.java [UTF-8] Wed Apr 29 16:28:41 2015
@@ -41,7 +41,7 @@ import org.junit.BeforeClass;
org.apache.sis.feature.SparseFeatureTest.class,
org.apache.sis.feature.DefaultAssociationRoleTest.class,
org.apache.sis.feature.SingletonAssociationTest.class,
- org.apache.sis.feature.DefaultOperationTest.class,
+ org.apache.sis.feature.AbstractOperationTest.class,
org.apache.sis.feature.FeatureFormatTest.class,
org.apache.sis.feature.FeaturesTest.class
})