This is an automated email from the ASF dual-hosted git repository.
asf-gitbox-commits pushed a commit to branch geoapi-4.0
in repository https://gitbox.apache.org/repos/asf/sis.git
The following commit(s) were added to refs/heads/geoapi-4.0 by this push:
new f1961d6459 feat(Geometry): replace Vector by ReadOnly.Vector where a
modifiable version is not requiere
f1961d6459 is described below
commit f1961d6459103f16a5ecb88bb628d7b73f87f831
Author: jsorel <[email protected]>
AuthorDate: Thu Oct 8 16:02:40 2026 +0200
feat(Geometry): replace Vector by ReadOnly.Vector where a modifiable
version is not requiere
---
.../main/org/apache/sis/geometries/BBox.java | 5 +++--
.../main/org/apache/sis/geometries/DataPoints.java | 5 +++--
.../main/org/apache/sis/geometries/HyperPlane.java | 13 +++++++------
.../main/org/apache/sis/geometries/Plane.java | 13 +++++++------
.../main/org/apache/sis/geometries/Point.java | 7 ++++---
.../main/org/apache/sis/geometries/Ray.java | 13 +++++++------
.../org/apache/sis/geometries/adapter/JTSAdapter.java | 5 +++--
.../sis/geometries/internal/shared/ArrayDataPoints.java | 7 ++++---
.../internal/shared/ConcatenatedDataPoints.java | 5 +++--
.../geometries/internal/shared/DefaultDataPoints.java | 5 +++--
.../sis/geometries/internal/shared/DefaultPoint.java | 3 ++-
.../sis/geometries/internal/shared/EmptyDataPoints.java | 5 +++--
.../sis/geometries/internal/shared/IndexedPoint.java | 3 ++-
.../internal/shared/SinglePositionDataPoints.java | 5 +++--
.../org/apache/sis/geometries/mesh/MeshPrimitive.java | 7 ++++---
.../operation/simplify/greedyinsert/WTriangle.java | 5 +++--
.../operation/triangulate/delaunay/OrientedEdge.java | 5 +++--
.../operation/triangulate/delaunay/OrientedTriangle.java | 5 +++--
.../main/org/apache/sis/geometries/point/MultiPoint.java | 5 +++--
.../main/org/apache/sis/geometries/solid/Capsule.java | 16 ++++++++--------
.../main/org/apache/sis/geometries/solid/Cylinder.java | 15 ++++++++-------
.../main/org/apache/sis/geometries/solid/Ellipsoid.java | 7 ++++---
.../main/org/apache/sis/geometries/solid/Sphere.java | 7 ++++---
.../main/org/apache/sis/geometries/surface/Triangle.java | 3 ++-
24 files changed, 96 insertions(+), 73 deletions(-)
diff --git
a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/BBox.java
b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/BBox.java
index 3fd7dbdd11..4bc0e2a9a6 100644
---
a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/BBox.java
+++
b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/BBox.java
@@ -24,6 +24,7 @@ import org.opengis.referencing.crs.CoordinateReferenceSystem;
import org.apache.sis.geometries.internal.shared.IndexedPoint;
import org.apache.sis.geometry.GeneralEnvelope;
import org.apache.sis.maths.DataType;
+import org.apache.sis.maths.ReadOnly;
import org.apache.sis.maths.SampleSystem;
import org.apache.sis.maths.Vectors;
import org.apache.sis.maths.Vector;
@@ -187,7 +188,7 @@ public final class BBox extends GeneralEnvelope implements
Geometry {
}
@Override
- public void setPosition(int index, Vector<?> value) {
+ public void setPosition(int index, ReadOnly.Vector<?> value) {
ensureValid(index);
final int dim = getDimension();
for (int i = 0; i < dim; i++) {
@@ -205,7 +206,7 @@ public final class BBox extends GeneralEnvelope implements
Geometry {
}
@Override
- public void setAttribute(int index, String name, Vector<?> value) {
+ public void setAttribute(int index, String name, ReadOnly.Vector<?>
value) {
if (!DataPointsType.ATT_POSITION.equals(name)) {
throw new IllegalArgumentException("A box holds no \"" + name
+ "\" attribute.");
}
diff --git
a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/DataPoints.java
b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/DataPoints.java
index 189b644e08..2b699574e5 100644
---
a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/DataPoints.java
+++
b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/DataPoints.java
@@ -24,6 +24,7 @@ import org.opengis.referencing.crs.CoordinateReferenceSystem;
import org.apache.sis.maths.Array;
import org.apache.sis.maths.DataType;
import org.apache.sis.maths.NDArrays;
+import org.apache.sis.maths.ReadOnly;
import org.apache.sis.maths.SampleSystem;
import org.apache.sis.maths.Vector;
@@ -109,7 +110,7 @@ public interface DataPoints {
* @param index searched index
* @param value new attribute value
*/
- void setPosition(int index, Vector<?> value);
+ void setPosition(int index, ReadOnly.Vector<?> value);
/**
* Get attribute value.
@@ -127,7 +128,7 @@ public interface DataPoints {
* @param name attribute name
* @param value new attribute value
*/
- void setAttribute(int index, String name, Vector<?> value);
+ void setAttribute(int index, String name, ReadOnly.Vector<?> value);
/**
* Get all attribute values as an Array.
diff --git
a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/HyperPlane.java
b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/HyperPlane.java
index 66b60cfe94..a71323bed5 100644
---
a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/HyperPlane.java
+++
b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/HyperPlane.java
@@ -22,6 +22,7 @@ import org.opengis.annotation.UML;
import org.opengis.referencing.crs.CoordinateReferenceSystem;
import org.apache.sis.geometries.internal.shared.AbstractGeometry;
import org.apache.sis.maths.NDArrays;
+import org.apache.sis.maths.ReadOnly;
import org.apache.sis.maths.Vector;
@@ -80,20 +81,20 @@ public final class HyperPlane extends AbstractGeometry{
return points;
}
- public Vector<?> getPosition() {
+ public ReadOnly.Vector<?> getPosition() {
return points.getPosition(0);
}
- public void setPosition(Vector<?> position) {
+ public void setPosition(ReadOnly.Vector<?> position) {
points.setPosition(0, position);
}
- public Vector<?> getNormal() {
+ public ReadOnly.Vector<?> getNormal() {
return normal;
}
- public void setNormal(Vector<?> normal) {
- this.normal = normal;
+ public void setNormal(ReadOnly.Vector<?> normal) {
+ this.normal = normal.copy();
}
/**
@@ -106,7 +107,7 @@ public final class HyperPlane extends AbstractGeometry{
*/
@Override
public BBox getEnvelope() {
- final Vector<?> position = getPosition();
+ final ReadOnly.Vector<?> position = getPosition();
final int dim = normal.getDimension();
final BBox bbox = new BBox(dim);
/*
diff --git
a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/Plane.java
b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/Plane.java
index 13c13f0a38..ab2c678992 100644
---
a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/Plane.java
+++
b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/Plane.java
@@ -22,6 +22,7 @@ import org.opengis.annotation.UML;
import org.opengis.referencing.crs.CoordinateReferenceSystem;
import org.apache.sis.geometries.internal.shared.AbstractGeometry;
import org.apache.sis.maths.NDArrays;
+import org.apache.sis.maths.ReadOnly;
import org.apache.sis.maths.Vector;
@@ -92,20 +93,20 @@ public final class Plane extends AbstractGeometry{
return points;
}
- public Vector<?> getPosition() {
+ public ReadOnly.Vector<?> getPosition() {
return points.getPosition(0);
}
- public void setPosition(Vector<?> position) {
+ public void setPosition(ReadOnly.Vector<?> position) {
points.setPosition(0, position);
}
- public Vector<?> getNormal() {
+ public ReadOnly.Vector<?> getNormal() {
return normal;
}
- public void setNormal(Vector<?> normal) {
- this.normal = normal;
+ public void setNormal(ReadOnly.Vector<?> normal) {
+ this.normal = normal.copy();
}
/**
@@ -167,7 +168,7 @@ public final class Plane extends AbstractGeometry{
*/
@Override
public BBox getEnvelope() {
- final Vector<?> position = getPosition();
+ final ReadOnly.Vector<?> position = getPosition();
final int dim = normal.getDimension();
final BBox bbox = new BBox(dim);
/*
diff --git
a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/Point.java
b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/Point.java
index 3763a767c2..e35674e779 100644
---
a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/Point.java
+++
b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/Point.java
@@ -28,6 +28,7 @@ import org.apache.sis.geometries.internal.shared.DefaultPoint;
import org.apache.sis.geometries.internal.shared.IndexedPoint;
import org.apache.sis.geometries.mesh.MeshPrimitive;
import org.apache.sis.geometries.surface.Triangle;
+import org.apache.sis.maths.ReadOnly;
import org.apache.sis.maths.Vector;
@@ -94,7 +95,7 @@ public sealed interface Point extends Primitive
* @param name name of the attribute to set.
* @param tuple new attribute value.
*/
- void setAttribute(String name, Vector<?> tuple);
+ void setAttribute(String name, ReadOnly.Vector<?> tuple);
/**
* View this point as a single point sequence
@@ -132,7 +133,7 @@ public sealed interface Point extends Primitive
}
@Override
- public void setPosition(int index, Vector<?> value) {
+ public void setPosition(int index, ReadOnly.Vector<?> value) {
if (index != 0) throw new IndexOutOfBoundsException();
Point.this.getPosition().set(value);
}
@@ -144,7 +145,7 @@ public sealed interface Point extends Primitive
}
@Override
- public void setAttribute(int index, String name, Vector<?> value) {
+ public void setAttribute(int index, String name,
ReadOnly.Vector<?> value) {
if (index != 0) throw new IndexOutOfBoundsException();
Point.this.setAttribute(name, value);
}
diff --git
a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/Ray.java
b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/Ray.java
index 1bc4f69b71..dffa41de94 100644
---
a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/Ray.java
+++
b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/Ray.java
@@ -20,6 +20,7 @@ import java.util.Objects;
import org.opengis.referencing.crs.CoordinateReferenceSystem;
import org.apache.sis.geometries.internal.shared.AbstractGeometry;
import org.apache.sis.maths.NDArrays;
+import org.apache.sis.maths.ReadOnly;
import org.apache.sis.maths.Vector;
@@ -77,25 +78,25 @@ public final class Ray extends AbstractGeometry{
return points;
}
- public Vector<?> getPosition() {
+ public ReadOnly.Vector<?> getPosition() {
return points.getPosition(0);
}
- public void setPosition(Vector<?> position) {
+ public void setPosition(ReadOnly.Vector<?> position) {
points.setPosition(0, position);
}
- public Vector<?> getDirection() {
+ public ReadOnly.Vector<?> getDirection() {
return direction;
}
- public void setDirection(Vector<?> direction) {
- this.direction = direction;
+ public void setDirection(ReadOnly.Vector<?> direction) {
+ this.direction = direction.copy();
}
@Override
public BBox getEnvelope() {
- final Vector<?> position = getPosition();
+ final ReadOnly.Vector<?> position = getPosition();
final int dim = direction.getDimension();
final BBox bbox = new BBox(dim);
for (int i=0;i<dim;i++){
diff --git
a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/adapter/JTSAdapter.java
b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/adapter/JTSAdapter.java
index 9a6881dd3e..369251e044 100644
---
a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/adapter/JTSAdapter.java
+++
b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/adapter/JTSAdapter.java
@@ -42,6 +42,7 @@ import org.apache.sis.maths.Array;
import org.apache.sis.maths.Cursor;
import org.apache.sis.maths.DataType;
import org.apache.sis.maths.NDArrays;
+import org.apache.sis.maths.ReadOnly;
import org.apache.sis.maths.SampleSystem;
import org.apache.sis.maths.Vectors;
import org.apache.sis.maths.Vector;
@@ -279,7 +280,7 @@ public final class JTSAdapter {
}
@Override
- public void setPosition(int index, Vector value) {
+ public void setPosition(int index, ReadOnly.Vector value) {
for (int i = 0; i < dim; i++) {
jts.setOrdinate(index, i, value.get(i));
}
@@ -294,7 +295,7 @@ public final class JTSAdapter {
}
@Override
- public void setAttribute(int index, String name, Vector value) {
+ public void setAttribute(int index, String name, ReadOnly.Vector
value) {
if (DataPointsType.ATT_POSITION.equals(name)) {
setPosition(index, value);
} else {
diff --git
a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/internal/shared/ArrayDataPoints.java
b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/internal/shared/ArrayDataPoints.java
index 96abdcb00f..5907bde516 100644
---
a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/internal/shared/ArrayDataPoints.java
+++
b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/internal/shared/ArrayDataPoints.java
@@ -30,6 +30,7 @@ import org.apache.sis.maths.Array;
import org.apache.sis.maths.Cursor;
import org.apache.sis.maths.DataType;
import org.apache.sis.maths.NDArrays;
+import org.apache.sis.maths.ReadOnly;
import org.apache.sis.maths.SampleSystem;
import org.apache.sis.util.ArgumentChecks;
import org.apache.sis.maths.Vector;
@@ -97,7 +98,7 @@ public final class ArrayDataPoints implements DataPoints,
DataPointsType {
}
@Override
- public void setPosition(int index, Vector value) {
+ public void setPosition(int index, ReadOnly.Vector value) {
positions.set(index, value);
}
@@ -128,7 +129,7 @@ public final class ArrayDataPoints implements DataPoints,
DataPointsType {
}
@Override
- public void setAttribute(int index, String name, Vector value) {
+ public void setAttribute(int index, String name, ReadOnly.Vector value) {
attributes.get(name).set(index, value);
}
@@ -214,7 +215,7 @@ public final class ArrayDataPoints implements DataPoints,
DataPointsType {
}
@Override
- public void setAttribute(String name, Vector tuple) {
+ public void setAttribute(String name, ReadOnly.Vector tuple) {
final Array tupleGrid = parent.attributes.get(name);
if (tupleGrid == null) throw new
IllegalArgumentException("Attribute " + name + " do not exist");
final Cursor cursor = tupleGrid.cursor();
diff --git
a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/internal/shared/ConcatenatedDataPoints.java
b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/internal/shared/ConcatenatedDataPoints.java
index 11a030d41d..bdec3d2233 100644
---
a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/internal/shared/ConcatenatedDataPoints.java
+++
b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/internal/shared/ConcatenatedDataPoints.java
@@ -24,6 +24,7 @@ import org.apache.sis.geometries.DataPointsType;
import org.apache.sis.geometries.Geometries;
import org.apache.sis.geometries.Geometry;
import org.apache.sis.geometries.Point;
+import org.apache.sis.maths.ReadOnly;
import org.apache.sis.maths.Vector;
@@ -154,7 +155,7 @@ public final class ConcatenatedDataPoints implements
DataPoints {
}
@Override
- public void setPosition(int index, Vector<?> value) {
+ public void setPosition(int index, ReadOnly.Vector<?> value) {
final int i = sourceOf(index);
sources[i].setPosition(index - offsets[i], value);
}
@@ -166,7 +167,7 @@ public final class ConcatenatedDataPoints implements
DataPoints {
}
@Override
- public void setAttribute(int index, String name, Vector<?> value) {
+ public void setAttribute(int index, String name, ReadOnly.Vector<?> value)
{
final int i = sourceOf(index);
sources[i].setAttribute(index - offsets[i], name, value);
}
diff --git
a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/internal/shared/DefaultDataPoints.java
b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/internal/shared/DefaultDataPoints.java
index 81bc6893c1..23d0318920 100644
---
a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/internal/shared/DefaultDataPoints.java
+++
b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/internal/shared/DefaultDataPoints.java
@@ -22,6 +22,7 @@ import org.opengis.referencing.crs.CoordinateReferenceSystem;
import org.apache.sis.geometries.DataPoints;
import org.apache.sis.geometries.Point;
import org.apache.sis.geometries.DataPointsType;
+import org.apache.sis.maths.ReadOnly;
import org.apache.sis.util.ArgumentChecks;
import org.apache.sis.maths.Vector;
@@ -77,7 +78,7 @@ public final class DefaultDataPoints implements DataPoints {
}
@Override
- public void setPosition(int index, Vector value) {
+ public void setPosition(int index, ReadOnly.Vector value) {
points.get(index).getPosition().set(value);
}
@@ -87,7 +88,7 @@ public final class DefaultDataPoints implements DataPoints {
}
@Override
- public void setAttribute(int index, String name, Vector value) {
+ public void setAttribute(int index, String name, ReadOnly.Vector value) {
points.get(index).setAttribute(name, value);
}
diff --git
a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/internal/shared/DefaultPoint.java
b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/internal/shared/DefaultPoint.java
index 7c006f19e0..027515aae8 100644
---
a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/internal/shared/DefaultPoint.java
+++
b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/internal/shared/DefaultPoint.java
@@ -23,6 +23,7 @@ import org.apache.sis.geometries.Point;
import org.apache.sis.geometries.DataPointsType;
import org.apache.sis.maths.DataType;
import org.apache.sis.maths.NDArrays;
+import org.apache.sis.maths.ReadOnly;
import org.apache.sis.maths.SampleSystem;
import org.apache.sis.maths.Vector;
@@ -94,7 +95,7 @@ public non-sealed class DefaultPoint extends AbstractGeometry
implements Point {
}
@Override
- public void setAttribute(String name, Vector tuple) {
+ public void setAttribute(String name, ReadOnly.Vector tuple) {
points.setAttribute(0, name, tuple);
}
diff --git
a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/internal/shared/EmptyDataPoints.java
b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/internal/shared/EmptyDataPoints.java
index a840e9ac76..fd3e873b5b 100644
---
a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/internal/shared/EmptyDataPoints.java
+++
b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/internal/shared/EmptyDataPoints.java
@@ -20,6 +20,7 @@ import org.opengis.referencing.crs.CoordinateReferenceSystem;
import org.apache.sis.geometries.DataPoints;
import org.apache.sis.geometries.DataPointsType;
import org.apache.sis.geometries.Point;
+import org.apache.sis.maths.ReadOnly;
import org.apache.sis.maths.Vector;
@@ -89,7 +90,7 @@ public final class EmptyDataPoints implements DataPoints {
}
@Override
- public void setPosition(int index, Vector<?> value) {
+ public void setPosition(int index, ReadOnly.Vector<?> value) {
throw new IndexOutOfBoundsException("This sequence holds no
position.");
}
@@ -99,7 +100,7 @@ public final class EmptyDataPoints implements DataPoints {
}
@Override
- public void setAttribute(int index, String name, Vector<?> value) {
+ public void setAttribute(int index, String name, ReadOnly.Vector<?> value)
{
throw new IndexOutOfBoundsException("This sequence holds no
position.");
}
diff --git
a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/internal/shared/IndexedPoint.java
b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/internal/shared/IndexedPoint.java
index 298e1656ab..b15198864a 100644
---
a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/internal/shared/IndexedPoint.java
+++
b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/internal/shared/IndexedPoint.java
@@ -20,6 +20,7 @@ import org.opengis.referencing.crs.CoordinateReferenceSystem;
import org.apache.sis.geometries.DataPoints;
import org.apache.sis.geometries.Point;
import org.apache.sis.geometries.DataPointsType;
+import org.apache.sis.maths.ReadOnly;
import org.apache.sis.maths.Vector;
@@ -63,7 +64,7 @@ public non-sealed class IndexedPoint implements Point {
}
@Override
- public void setAttribute(String name, Vector tuple) {
+ public void setAttribute(String name, ReadOnly.Vector tuple) {
parent.setAttribute(index, name, tuple);
}
diff --git
a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/internal/shared/SinglePositionDataPoints.java
b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/internal/shared/SinglePositionDataPoints.java
index 981ec72d99..b0dcaa51c4 100644
---
a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/internal/shared/SinglePositionDataPoints.java
+++
b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/internal/shared/SinglePositionDataPoints.java
@@ -22,6 +22,7 @@ import org.apache.sis.geometries.DataPoints;
import org.apache.sis.geometries.DataPointsType;
import org.apache.sis.geometries.Point;
import org.apache.sis.maths.DataType;
+import org.apache.sis.maths.ReadOnly;
import org.apache.sis.maths.SampleSystem;
import org.apache.sis.maths.Vector;
@@ -98,7 +99,7 @@ public final class SinglePositionDataPoints implements
DataPoints {
}
@Override
- public void setPosition(int index, Vector<?> value) {
+ public void setPosition(int index, ReadOnly.Vector<?> value) {
ensureValid(index);
position.get().set(value);
}
@@ -110,7 +111,7 @@ public final class SinglePositionDataPoints implements
DataPoints {
}
@Override
- public void setAttribute(int index, String name, Vector<?> value) {
+ public void setAttribute(int index, String name, ReadOnly.Vector<?> value)
{
ensureValid(index);
if (!DataPointsType.ATT_POSITION.equals(name)) {
throw new IllegalArgumentException("This sequence holds no \"" +
name + "\" attribute.");
diff --git
a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/mesh/MeshPrimitive.java
b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/mesh/MeshPrimitive.java
index 4bb254a75b..5c290e46d7 100644
---
a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/mesh/MeshPrimitive.java
+++
b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/mesh/MeshPrimitive.java
@@ -51,6 +51,7 @@ import org.apache.sis.maths.Cursor;
import org.apache.sis.maths.DataType;
import org.apache.sis.maths.Maths;
import org.apache.sis.maths.NDArrays;
+import org.apache.sis.maths.ReadOnly;
import org.apache.sis.maths.SampleSystem;
import org.apache.sis.maths.Vector;
import org.apache.sis.maths.Vector1D;
@@ -1040,7 +1041,7 @@ public sealed interface MeshPrimitive extends Geometry
}
@Override
- public void setAttribute(String name, Vector tuple) {
+ public void setAttribute(String name, ReadOnly.Vector tuple) {
final Array tupleGrid = parent.attributes.get(name);
if (tupleGrid == null) throw new
IllegalArgumentException("Attribute " + name + " do not exist");
final Cursor cursor = tupleGrid.cursor();
@@ -1124,12 +1125,12 @@ public sealed interface MeshPrimitive extends Geometry
}
@Override
- public void setPosition(int index, Vector value) {
+ public void setPosition(int index, ReadOnly.Vector value) {
primitive.getPositions().set(this.index[index], value);
}
@Override
- public void setAttribute(int index, String name, Vector value) {
+ public void setAttribute(int index, String name, ReadOnly.Vector
value) {
primitive.getAttribute(name).set(this.index[index], value);
}
diff --git
a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/operation/simplify/greedyinsert/WTriangle.java
b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/operation/simplify/greedyinsert/WTriangle.java
index 5f51939781..bd5d8ca74f 100644
---
a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/operation/simplify/greedyinsert/WTriangle.java
+++
b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/operation/simplify/greedyinsert/WTriangle.java
@@ -30,6 +30,7 @@ import org.apache.sis.geometries.internal.shared.IndexedPoint;
import org.apache.sis.geometries.operation.OperationException;
import org.apache.sis.geometries.surface.Triangle;
import org.apache.sis.maths.Maths;
+import org.apache.sis.maths.ReadOnly;
import org.apache.sis.maths.Vector;
@@ -85,7 +86,7 @@ public final class WTriangle extends AbstractGeometry
implements Triangle {
}
@Override
- public void setPosition(int index, Vector value) {
+ public void setPosition(int index, ReadOnly.Vector value) {
throw new UnsupportedOperationException("Not supported.");
}
@@ -98,7 +99,7 @@ public final class WTriangle extends AbstractGeometry
implements Triangle {
}
@Override
- public void setAttribute(int index, String name, Vector value) {
+ public void setAttribute(int index, String name, ReadOnly.Vector
value) {
if (DataPointsType.ATT_POSITION.equals(name)) {
setPosition(index, value);
return;
diff --git
a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/operation/triangulate/delaunay/OrientedEdge.java
b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/operation/triangulate/delaunay/OrientedEdge.java
index 8e7d43181b..f9ec9d9b7d 100644
---
a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/operation/triangulate/delaunay/OrientedEdge.java
+++
b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/operation/triangulate/delaunay/OrientedEdge.java
@@ -26,6 +26,7 @@ import
org.apache.sis.geometries.internal.shared.AbstractGeometry;
import org.apache.sis.geometries.mesh.MeshPrimitive;
import org.apache.sis.geometries.mesh.MeshPrimitive.Vertex;
import org.apache.sis.maths.Maths;
+import org.apache.sis.maths.ReadOnly;
import org.apache.sis.maths.Vector;
@@ -254,7 +255,7 @@ public final class OrientedEdge extends AbstractGeometry
implements LineString,
}
@Override
- public void setPosition(int index, Vector value) {
+ public void setPosition(int index, ReadOnly.Vector value) {
throw new UnsupportedOperationException("Not supported.");
}
@@ -267,7 +268,7 @@ public final class OrientedEdge extends AbstractGeometry
implements LineString,
}
@Override
- public void setAttribute(int index, String name, Vector value) {
+ public void setAttribute(int index, String name, ReadOnly.Vector value) {
if (DataPointsType.ATT_POSITION.equals(name)) {
setPosition(index, value);
return;
diff --git
a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/operation/triangulate/delaunay/OrientedTriangle.java
b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/operation/triangulate/delaunay/OrientedTriangle.java
index 46a28f5252..7682faf715 100644
---
a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/operation/triangulate/delaunay/OrientedTriangle.java
+++
b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/operation/triangulate/delaunay/OrientedTriangle.java
@@ -29,6 +29,7 @@ import org.apache.sis.geometries.mesh.MeshPrimitive;
import org.apache.sis.geometries.mesh.MeshPrimitive.Vertex;
import org.apache.sis.geometries.operation.OperationException;
import org.apache.sis.geometries.surface.Triangle;
+import org.apache.sis.maths.ReadOnly;
import org.apache.sis.referencing.internal.shared.ShapeUtilities;
import org.apache.sis.maths.Vector;
@@ -284,7 +285,7 @@ public final class OrientedTriangle extends
AbstractGeometry implements Triangle
}
@Override
- public void setPosition(int index, Vector value) {
+ public void setPosition(int index, ReadOnly.Vector value) {
throw new UnsupportedOperationException("Not supported.");
}
@@ -297,7 +298,7 @@ public final class OrientedTriangle extends
AbstractGeometry implements Triangle
}
@Override
- public void setAttribute(int index, String name, Vector value) {
+ public void setAttribute(int index, String name, ReadOnly.Vector value) {
if (DataPointsType.ATT_POSITION.equals(name)) {
setPosition(index, value);
return;
diff --git
a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/point/MultiPoint.java
b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/point/MultiPoint.java
index 1b766fbd4b..f85567d92a 100644
---
a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/point/MultiPoint.java
+++
b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/point/MultiPoint.java
@@ -26,6 +26,7 @@ import org.apache.sis.geometries.DataPointsType;
import org.apache.sis.geometries.internal.shared.DefaultMultiPoint;
import org.apache.sis.geometries.internal.shared.DefaultRawMultiPoint;
import org.apache.sis.geometries.mesh.MeshPrimitive;
+import org.apache.sis.maths.ReadOnly;
import org.apache.sis.maths.Vector;
@@ -94,7 +95,7 @@ public sealed interface MultiPoint<T extends Point> extends
GeometryCollection<T
}
@Override
- public void setPosition(int index, Vector value) {
+ public void setPosition(int index, ReadOnly.Vector value) {
MultiPoint.this.getGeometryN(index).getPosition().set(value);
}
@@ -104,7 +105,7 @@ public sealed interface MultiPoint<T extends Point> extends
GeometryCollection<T
}
@Override
- public void setAttribute(int index, String name, Vector value) {
+ public void setAttribute(int index, String name, ReadOnly.Vector
value) {
MultiPoint.this.getGeometryN(index).setAttribute(name, value);
}
diff --git
a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/solid/Capsule.java
b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/solid/Capsule.java
index 154a7ecc57..755a477115 100644
---
a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/solid/Capsule.java
+++
b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/solid/Capsule.java
@@ -28,7 +28,7 @@ import org.apache.sis.geometries.GeometryType;
import org.apache.sis.geometries.internal.shared.AbstractGeometry;
import org.apache.sis.maths.DataType;
import org.apache.sis.maths.NDArrays;
-import org.apache.sis.maths.Vector;
+import org.apache.sis.maths.ReadOnly;
import org.apache.sis.maths.Vectors;
import org.apache.sis.maths.Vector;
@@ -92,28 +92,28 @@ public final class Capsule extends AbstractGeometry{
/**
* @return the center of the bottom sphere
*/
- public Vector<?> getBottom() {
+ public ReadOnly.Vector<?> getBottom() {
return points.getPosition(0);
}
/**
* @param position new center of the bottom sphere
*/
- public void setBottom(Vector<?> position) {
+ public void setBottom(ReadOnly.Vector<?> position) {
points.setPosition(0, position);
}
/**
* @return the center of the top sphere
*/
- public Vector<?> getTop() {
+ public ReadOnly.Vector<?> getTop() {
return points.getPosition(1);
}
/**
* @param position new center of the top sphere
*/
- public void setTop(Vector<?> position) {
+ public void setTop(ReadOnly.Vector<?> position) {
points.setPosition(1, position);
}
@@ -123,7 +123,7 @@ public final class Capsule extends AbstractGeometry{
* an axis being real values even when the positions they are derived from
are integers.
*/
private Vector<?> getAxis() {
- final Vector<?> bottom = getBottom();
+ final ReadOnly.Vector<?> bottom = getBottom();
final Vector<?> axis = Vectors.create(bottom.getSampleSystem(),
DataType.DOUBLE);
axis.set(getTop());
axis.subtract(bottom);
@@ -184,8 +184,8 @@ public final class Capsule extends AbstractGeometry{
*/
@Override
public BBox getEnvelope() {
- final Vector<?> bottom = getBottom();
- final Vector<?> top = getTop();
+ final ReadOnly.Vector<?> bottom = getBottom();
+ final ReadOnly.Vector<?> top = getTop();
final int dim = points.getDimension();
final BBox bbox = new BBox(dim);
for (int i=0;i<dim;i++){
diff --git
a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/solid/Cylinder.java
b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/solid/Cylinder.java
index 210cf54f99..ece17f57ec 100644
---
a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/solid/Cylinder.java
+++
b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/solid/Cylinder.java
@@ -28,6 +28,7 @@ import org.apache.sis.geometries.GeometryType;
import org.apache.sis.geometries.internal.shared.AbstractGeometry;
import org.apache.sis.maths.DataType;
import org.apache.sis.maths.NDArrays;
+import org.apache.sis.maths.ReadOnly;
import org.apache.sis.maths.Vector;
import org.apache.sis.maths.Vectors;
import org.apache.sis.maths.Vector;
@@ -98,28 +99,28 @@ public final class Cylinder extends AbstractGeometry{
/**
* @return the center of the bottom circle
*/
- public Vector<?> getBottom() {
+ public ReadOnly.Vector<?> getBottom() {
return points.getPosition(0);
}
/**
* @param position new center of the bottom circle
*/
- public void setBottom(Vector<?> position) {
+ public void setBottom(ReadOnly.Vector<?> position) {
points.setPosition(0, position);
}
/**
* @return the center of the top circle
*/
- public Vector<?> getTop() {
+ public ReadOnly.Vector<?> getTop() {
return points.getPosition(1);
}
/**
* @param position new center of the top circle
*/
- public void setTop(Vector<?> position) {
+ public void setTop(ReadOnly.Vector<?> position) {
points.setPosition(1, position);
}
@@ -129,7 +130,7 @@ public final class Cylinder extends AbstractGeometry{
* an axis being real values even when the positions they are derived from
are integers.
*/
private Vector<?> getAxis() {
- final Vector<?> bottom = getBottom();
+ final ReadOnly.Vector<?> bottom = getBottom();
final Vector<?> axis = Vectors.create(bottom.getSampleSystem(),
DataType.DOUBLE);
axis.set(getTop());
axis.subtract(bottom);
@@ -200,8 +201,8 @@ public final class Cylinder extends AbstractGeometry{
*/
@Override
public BBox getEnvelope() {
- final Vector<?> bottom = getBottom();
- final Vector<?> top = getTop();
+ final ReadOnly.Vector<?> bottom = getBottom();
+ final ReadOnly.Vector<?> top = getTop();
final Vector<?> axis = getAxis();
final double height = axis.length();
final int dim = points.getDimension();
diff --git
a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/solid/Ellipsoid.java
b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/solid/Ellipsoid.java
index 346c27174f..71baf5d083 100644
---
a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/solid/Ellipsoid.java
+++
b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/solid/Ellipsoid.java
@@ -36,6 +36,7 @@ import
org.apache.sis.geometries.internal.shared.AbstractGeometry;
import org.apache.sis.geometries.surface.ParametricCurveSurface;
import org.apache.sis.maths.DataType;
import org.apache.sis.maths.NDArrays;
+import org.apache.sis.maths.ReadOnly;
import org.apache.sis.maths.SampleSystem;
import org.apache.sis.util.ArgumentChecks;
@@ -268,14 +269,14 @@ public final class Ellipsoid extends AbstractGeometry
implements ParametricCurve
*
* @return ellipsoid center.
*/
- public Vector<?> getCenter() {
+ public ReadOnly.Vector<?> getCenter() {
return points.getPosition(0);
}
/**
* @param position new center of the ellipsoid
*/
- public void setCenter(Vector<?> position) {
+ public void setCenter(ReadOnly.Vector<?> position) {
points.setPosition(0, position);
}
@@ -287,7 +288,7 @@ public final class Ellipsoid extends AbstractGeometry
implements ParametricCurve
*/
@Override
public Envelope getEnvelope() {
- final Vector<?> center = getCenter();
+ final Vector<?> center = getCenter().copy();
final BBox env = new BBox(center, center);
env.setCoordinateReferenceSystem(getCoordinateReferenceSystem());
for (int i = 0, n = getDimension(); i < n; i++) {
diff --git
a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/solid/Sphere.java
b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/solid/Sphere.java
index f43f7feb31..f7ac70b00f 100644
---
a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/solid/Sphere.java
+++
b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/solid/Sphere.java
@@ -35,6 +35,7 @@ import
org.apache.sis.geometries.internal.shared.AbstractGeometry;
import org.apache.sis.geometries.surface.ParametricCurveSurface;
import org.apache.sis.maths.DataType;
import org.apache.sis.maths.NDArrays;
+import org.apache.sis.maths.ReadOnly;
import org.apache.sis.maths.SampleSystem;
import org.apache.sis.util.ArgumentChecks;
@@ -200,14 +201,14 @@ public final class Sphere extends AbstractGeometry
implements ParametricCurveSur
*
* @return sphere center.
*/
- public Vector<?> getCenter() {
+ public ReadOnly.Vector<?> getCenter() {
return points.getPosition(0);
}
/**
* @param position new center of the sphere
*/
- public void setCenter(Vector<?> position) {
+ public void setCenter(ReadOnly.Vector<?> position) {
points.setPosition(0, position);
}
@@ -216,7 +217,7 @@ public final class Sphere extends AbstractGeometry
implements ParametricCurveSur
*/
@Override
public Envelope getEnvelope() {
- final Vector<?> center = getCenter();
+ final Vector<?> center = getCenter().copy();
final BBox env = new BBox(center, center);
env.setCoordinateReferenceSystem(getCoordinateReferenceSystem());
if (radius > 0) {
diff --git
a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/surface/Triangle.java
b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/surface/Triangle.java
index 906936b1fb..9b3a8bdc07 100644
---
a/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/surface/Triangle.java
+++
b/incubator/src/org.apache.sis.geometry/main/org/apache/sis/geometries/surface/Triangle.java
@@ -33,6 +33,7 @@ import
org.apache.sis.geometries.internal.shared.DefaultTriangle;
import org.apache.sis.geometries.operation.simplify.greedyinsert.WTriangle;
import
org.apache.sis.geometries.operation.triangulate.delaunay.OrientedTriangle;
import org.apache.sis.maths.Maths;
+import org.apache.sis.maths.ReadOnly;
import org.apache.sis.maths.Vector;
import org.apache.sis.maths.Vector2D;
import org.apache.sis.maths.Vector3D;
@@ -324,7 +325,7 @@ public sealed interface Triangle extends Polygon
}
@Override
- public void setAttribute(String name, Vector tuple) {
+ public void setAttribute(String name, ReadOnly.Vector tuple) {
throw new UnsupportedOperationException("Not supported on
interpolated points.");
}