You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by ah...@apache.org on 2020/07/12 07:45:21 UTC
[isis] branch master updated: ISIS-2340: some extensions to
internal API
This is an automated email from the ASF dual-hosted git repository.
ahuber pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git
The following commit(s) were added to refs/heads/master by this push:
new 65c4c61 ISIS-2340: some extensions to internal API
65c4c61 is described below
commit 65c4c610fa1696fd7fc8fae9b75986223fcfc86a
Author: Andi Huber <ah...@apache.org>
AuthorDate: Sun Jul 12 09:45:02 2020 +0200
ISIS-2340: some extensions to internal API
---
.../main/java/org/apache/isis/core/commons/collections/Can.java | 4 ++++
.../java/org/apache/isis/core/commons/collections/Can_Empty.java | 6 ++++++
.../org/apache/isis/core/commons/collections/Can_Multiple.java | 7 +++++++
.../org/apache/isis/core/commons/collections/Can_Singleton.java | 9 +++++++++
.../isis/core/commons/internal/exceptions/_Exceptions.java | 8 ++++++++
5 files changed, 34 insertions(+)
diff --git a/core/commons/src/main/java/org/apache/isis/core/commons/collections/Can.java b/core/commons/src/main/java/org/apache/isis/core/commons/collections/Can.java
index 913f177..6a8861b 100644
--- a/core/commons/src/main/java/org/apache/isis/core/commons/collections/Can.java
+++ b/core/commons/src/main/java/org/apache/isis/core/commons/collections/Can.java
@@ -422,6 +422,8 @@ public interface Can<T> extends Iterable<T>, Serializable {
* (<tt>index < 0 || index > size()</tt>)
*/
Can<T> add(int index, T element);
+
+ Can<T> replace(int index, T element);
/**
* Removes the element at the specified position in this list (optional
@@ -548,5 +550,7 @@ public interface Can<T> extends Iterable<T>, Serializable {
* @return a non-null array, containing the elements of this Can
*/
T[] toArray(Class<T> elementType);
+
+
}
diff --git a/core/commons/src/main/java/org/apache/isis/core/commons/collections/Can_Empty.java b/core/commons/src/main/java/org/apache/isis/core/commons/collections/Can_Empty.java
index adf1522..a28650a 100644
--- a/core/commons/src/main/java/org/apache/isis/core/commons/collections/Can_Empty.java
+++ b/core/commons/src/main/java/org/apache/isis/core/commons/collections/Can_Empty.java
@@ -28,6 +28,7 @@ import java.util.function.Supplier;
import java.util.stream.Stream;
import org.apache.isis.core.commons.internal.base._Casts;
+import org.apache.isis.core.commons.internal.exceptions._Exceptions;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
@@ -100,6 +101,11 @@ final class Can_Empty<T> implements Can<T> {
}
return Can.ofSingleton(element);
}
+
+ @Override
+ public Can<T> replace(int index, T element) {
+ throw _Exceptions.unsupportedOperation("cannot replace an element in an empty Can");
+ }
@Override
public Can<T> remove(int index) {
diff --git a/core/commons/src/main/java/org/apache/isis/core/commons/collections/Can_Multiple.java b/core/commons/src/main/java/org/apache/isis/core/commons/collections/Can_Multiple.java
index 8e9f097..bf51e67 100644
--- a/core/commons/src/main/java/org/apache/isis/core/commons/collections/Can_Multiple.java
+++ b/core/commons/src/main/java/org/apache/isis/core/commons/collections/Can_Multiple.java
@@ -121,6 +121,13 @@ final class Can_Multiple<T> implements Can<T> {
}
@Override
+ public Can<T> replace(int index, T element) {
+ val newElements = new ArrayList<T>(elements);
+ newElements.set(index, element);
+ return Can.ofCollection(newElements);
+ }
+
+ @Override
public Can<T> remove(int index) {
val newElements = new ArrayList<T>(elements);
newElements.remove(index);
diff --git a/core/commons/src/main/java/org/apache/isis/core/commons/collections/Can_Singleton.java b/core/commons/src/main/java/org/apache/isis/core/commons/collections/Can_Singleton.java
index d39d83f..f58ff64 100644
--- a/core/commons/src/main/java/org/apache/isis/core/commons/collections/Can_Singleton.java
+++ b/core/commons/src/main/java/org/apache/isis/core/commons/collections/Can_Singleton.java
@@ -113,6 +113,15 @@ final class Can_Singleton<T> implements Can<T> {
throw new IndexOutOfBoundsException(
"cannot add to singleton with index other than 0 or 1; got " + index);
}
+
+ @Override
+ public Can<T> replace(int index, T element) {
+ if(index==0) {
+ return Can.ofSingleton(element);
+ }
+ throw new IndexOutOfBoundsException(
+ "cannot replace on singleton with index other than 0; got " + index);
+ }
@Override
public Can<T> remove(int index) {
diff --git a/core/commons/src/main/java/org/apache/isis/core/commons/internal/exceptions/_Exceptions.java b/core/commons/src/main/java/org/apache/isis/core/commons/internal/exceptions/_Exceptions.java
index 6437cdd..741d271 100644
--- a/core/commons/src/main/java/org/apache/isis/core/commons/internal/exceptions/_Exceptions.java
+++ b/core/commons/src/main/java/org/apache/isis/core/commons/internal/exceptions/_Exceptions.java
@@ -140,6 +140,14 @@ public final class _Exceptions {
return new UnsupportedOperationException("unrecoverable error: method call not allowed/supported");
}
+ public static UnsupportedOperationException unsupportedOperation(String msg) {
+ return new UnsupportedOperationException(msg);
+ }
+
+ public static UnsupportedOperationException unsupportedOperation(String format, Object ...args) {
+ return new UnsupportedOperationException(String.format(format, args));
+ }
+
// -- ASSERT
public static AssertionError assertionError(String msg) {