[FLINK-19096] [sdk] Add toString() for state classes for better error messages
This closes #136.
diff --git a/statefun-sdk/src/main/java/org/apache/flink/statefun/sdk/state/Expiration.java b/statefun-sdk/src/main/java/org/apache/flink/statefun/sdk/state/Expiration.java
index d3396f3..8841cc9 100644
--- a/statefun-sdk/src/main/java/org/apache/flink/statefun/sdk/state/Expiration.java
+++ b/statefun-sdk/src/main/java/org/apache/flink/statefun/sdk/state/Expiration.java
@@ -86,4 +86,9 @@
public Duration duration() {
return duration;
}
+
+ @Override
+ public String toString() {
+ return String.format("Expiration{mode=%s, duration=%s}", mode, duration);
+ }
}
diff --git a/statefun-sdk/src/main/java/org/apache/flink/statefun/sdk/state/PersistedAppendingBuffer.java b/statefun-sdk/src/main/java/org/apache/flink/statefun/sdk/state/PersistedAppendingBuffer.java
index 42032c5..60541ff 100644
--- a/statefun-sdk/src/main/java/org/apache/flink/statefun/sdk/state/PersistedAppendingBuffer.java
+++ b/statefun-sdk/src/main/java/org/apache/flink/statefun/sdk/state/PersistedAppendingBuffer.java
@@ -160,6 +160,13 @@
accessor.clear();
}
+ @Override
+ public String toString() {
+ return String.format(
+ "PersistedAppendingBuffer{name=%s, elementType=%s, expiration=%s}",
+ name, elementType.getName(), expiration);
+ }
+
@ForRuntime
void setAccessor(AppendingBufferAccessor<E> newAccessor) {
this.accessor = Objects.requireNonNull(newAccessor);
diff --git a/statefun-sdk/src/main/java/org/apache/flink/statefun/sdk/state/PersistedStateRegistry.java b/statefun-sdk/src/main/java/org/apache/flink/statefun/sdk/state/PersistedStateRegistry.java
index f606675..b806df1 100644
--- a/statefun-sdk/src/main/java/org/apache/flink/statefun/sdk/state/PersistedStateRegistry.java
+++ b/statefun-sdk/src/main/java/org/apache/flink/statefun/sdk/state/PersistedStateRegistry.java
@@ -121,9 +121,7 @@
throw new IllegalStateException(
String.format(
"State name '%s' was registered twice; previous registered state object with the same name was a %s, attempting to register a new %s under the same name.",
- stateName,
- previousRegistration.getClass().getName(),
- newStateObject.getClass().getName()));
+ stateName, previousRegistration, newStateObject));
}
registeredStates.put(stateName, newStateObject);
diff --git a/statefun-sdk/src/main/java/org/apache/flink/statefun/sdk/state/PersistedTable.java b/statefun-sdk/src/main/java/org/apache/flink/statefun/sdk/state/PersistedTable.java
index a04c126..4826606 100644
--- a/statefun-sdk/src/main/java/org/apache/flink/statefun/sdk/state/PersistedTable.java
+++ b/statefun-sdk/src/main/java/org/apache/flink/statefun/sdk/state/PersistedTable.java
@@ -182,6 +182,13 @@
accessor.clear();
}
+ @Override
+ public String toString() {
+ return String.format(
+ "PersistedTable{name=%s, keyType=%s, valueType=%s, expiration=%s}",
+ name, keyType.getName(), valueType.getName(), expiration);
+ }
+
@ForRuntime
void setAccessor(TableAccessor<K, V> newAccessor) {
Objects.requireNonNull(newAccessor);
diff --git a/statefun-sdk/src/main/java/org/apache/flink/statefun/sdk/state/PersistedValue.java b/statefun-sdk/src/main/java/org/apache/flink/statefun/sdk/state/PersistedValue.java
index 3d78b75..7c29493 100644
--- a/statefun-sdk/src/main/java/org/apache/flink/statefun/sdk/state/PersistedValue.java
+++ b/statefun-sdk/src/main/java/org/apache/flink/statefun/sdk/state/PersistedValue.java
@@ -165,6 +165,12 @@
this.accessor = newAccessor;
}
+ @Override
+ public String toString() {
+ return String.format(
+ "PersistedValue{name=%s, type=%s, expiration=%s}", name, type.getName(), expiration);
+ }
+
private static final class NonFaultTolerantAccessor<E> implements Accessor<E> {
private E element;