You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pivot.apache.org by rw...@apache.org on 2020/05/07 20:03:24 UTC
svn commit: r1877484 - in /pivot/trunk:
core/src/org/apache/pivot/collections/
core/src/org/apache/pivot/collections/immutable/
wtk/src/org/apache/pivot/wtk/content/
Author: rwhitcomb
Date: Thu May 7 20:03:24 2020
New Revision: 1877484
URL: http://svn.apache.org/viewvc?rev=1877484&view=rev
Log:
PIVOT-1032: Several enhancements to ReadOnlySequence triggered by a style error.
* Make a "defaultException" method that does some fancy stuff to pinpoint the
exact method as well as class name of the unsupported operation.
* Change all subclasses to call "defaultException()" instead of relying on the
protected message string.
Modified:
pivot/trunk/core/src/org/apache/pivot/collections/EnumList.java
pivot/trunk/core/src/org/apache/pivot/collections/ReadOnlySequence.java
pivot/trunk/core/src/org/apache/pivot/collections/immutable/ImmutableList.java
pivot/trunk/wtk/src/org/apache/pivot/wtk/content/CalendarDateSpinnerData.java
pivot/trunk/wtk/src/org/apache/pivot/wtk/content/NumericSpinnerData.java
Modified: pivot/trunk/core/src/org/apache/pivot/collections/EnumList.java
URL: http://svn.apache.org/viewvc/pivot/trunk/core/src/org/apache/pivot/collections/EnumList.java?rev=1877484&r1=1877483&r2=1877484&view=diff
==============================================================================
--- pivot/trunk/core/src/org/apache/pivot/collections/EnumList.java (original)
+++ pivot/trunk/core/src/org/apache/pivot/collections/EnumList.java Thu May 7 20:03:24 2020
@@ -61,7 +61,7 @@ public class EnumList<E extends Enum<E>>
@Override
@UnsupportedOperation
public void remove() {
- throw new UnsupportedOperationException(unsupportedOperationMsg);
+ throw new UnsupportedOperationException();
}
}
@@ -87,7 +87,7 @@ public class EnumList<E extends Enum<E>>
@Override
@UnsupportedOperation
public void clear() {
- throw new UnsupportedOperationException(unsupportedOperationMsg);
+ throw defaultException();
}
@Override
@@ -134,7 +134,7 @@ public class EnumList<E extends Enum<E>>
@Override
@UnsupportedOperation
public void setComparator(final Comparator<E> comparator) {
- throw new UnsupportedOperationException(unsupportedOperationMsg);
+ throw defaultException();
}
@Override
Modified: pivot/trunk/core/src/org/apache/pivot/collections/ReadOnlySequence.java
URL: http://svn.apache.org/viewvc/pivot/trunk/core/src/org/apache/pivot/collections/ReadOnlySequence.java?rev=1877484&r1=1877483&r2=1877484&view=diff
==============================================================================
--- pivot/trunk/core/src/org/apache/pivot/collections/ReadOnlySequence.java (original)
+++ pivot/trunk/core/src/org/apache/pivot/collections/ReadOnlySequence.java Thu May 7 20:03:24 2020
@@ -17,6 +17,7 @@
package org.apache.pivot.collections;
import java.io.Serializable;
+import java.util.Arrays;
import org.apache.pivot.annotations.UnsupportedOperation;
@@ -32,11 +33,26 @@ import org.apache.pivot.annotations.Unsu
public abstract class ReadOnlySequence<T> implements Sequence<T>, Serializable {
private static final long serialVersionUID = -2547032333033014540L;
- /** The message passed to the {@link UnsupportedOperationException} to say this
- * sequence is read-only and cannot be modified.
+ /** The simple name of our (derived) class, for message purposes. */
+ private final String simpleClassName = this.getClass().getSimpleName();
+
+ /** Format of the default exception message. */
+ private static final String MSG_FORMAT =
+ "The \"%1$s\" method is unsupported because %2$s is read-only (immutable).";
+
+ /**
+ * @return A new {@link UnsupportedOperationException} with a fancy message
+ * detailing the method and class name that was in error.
*/
- protected final String unsupportedOperationMsg =
- "A(n) " + this.getClass().getSimpleName() + " is read-only (immutable).";
+ public UnsupportedOperationException defaultException() {
+ StackTraceElement[] stackTrace = Thread.currentThread().getStackTrace();
+ StackTraceElement[] modifiedStackTrace = Arrays.copyOfRange(stackTrace, 2, stackTrace.length);
+ String callingMethodName = modifiedStackTrace[0].getMethodName();
+ String message = String.format(MSG_FORMAT, callingMethodName, simpleClassName);
+ UnsupportedOperationException exception = new UnsupportedOperationException(message);
+ exception.setStackTrace(modifiedStackTrace);
+ return exception;
+ }
/**
* Adding an item to a read-only sequence is unsupported.
@@ -45,7 +61,7 @@ public abstract class ReadOnlySequence<T
@Override
@UnsupportedOperation
public final int add(final T item) {
- throw new UnsupportedOperationException(unsupportedOperationMsg);
+ throw defaultException();
}
/**
@@ -55,7 +71,7 @@ public abstract class ReadOnlySequence<T
@Override
@UnsupportedOperation
public final void insert(final T item, final int index) {
- throw new UnsupportedOperationException(unsupportedOperationMsg);
+ throw defaultException();
}
/**
@@ -65,7 +81,7 @@ public abstract class ReadOnlySequence<T
@Override
@UnsupportedOperation
public final T update(final int index, final T item) {
- throw new UnsupportedOperationException(unsupportedOperationMsg);
+ throw defaultException();
}
/**
@@ -75,7 +91,7 @@ public abstract class ReadOnlySequence<T
@Override
@UnsupportedOperation
public final int remove(final T item) {
- throw new UnsupportedOperationException(unsupportedOperationMsg);
+ throw defaultException();
}
/**
@@ -85,7 +101,7 @@ public abstract class ReadOnlySequence<T
@Override
@UnsupportedOperation
public final Sequence<T> remove(final int index, final int count) {
- throw new UnsupportedOperationException(unsupportedOperationMsg);
+ throw defaultException();
}
}
Modified: pivot/trunk/core/src/org/apache/pivot/collections/immutable/ImmutableList.java
URL: http://svn.apache.org/viewvc/pivot/trunk/core/src/org/apache/pivot/collections/immutable/ImmutableList.java?rev=1877484&r1=1877483&r2=1877484&view=diff
==============================================================================
--- pivot/trunk/core/src/org/apache/pivot/collections/immutable/ImmutableList.java (original)
+++ pivot/trunk/core/src/org/apache/pivot/collections/immutable/ImmutableList.java Thu May 7 20:03:24 2020
@@ -47,7 +47,7 @@ public final class ImmutableList<T> exte
@Override
@UnsupportedOperation
public void clear() {
- throw new UnsupportedOperationException(unsupportedOperationMsg);
+ throw defaultException();
}
@Override
@@ -78,7 +78,7 @@ public final class ImmutableList<T> exte
@Override
@UnsupportedOperation
public void setComparator(final Comparator<T> comparator) {
- throw new UnsupportedOperationException(unsupportedOperationMsg);
+ throw defaultException();
}
@Override
Modified: pivot/trunk/wtk/src/org/apache/pivot/wtk/content/CalendarDateSpinnerData.java
URL: http://svn.apache.org/viewvc/pivot/trunk/wtk/src/org/apache/pivot/wtk/content/CalendarDateSpinnerData.java?rev=1877484&r1=1877483&r2=1877484&view=diff
==============================================================================
--- pivot/trunk/wtk/src/org/apache/pivot/wtk/content/CalendarDateSpinnerData.java (original)
+++ pivot/trunk/wtk/src/org/apache/pivot/wtk/content/CalendarDateSpinnerData.java Thu May 7 20:03:24 2020
@@ -63,7 +63,7 @@ public class CalendarDateSpinnerData ext
@UnsupportedOperation
@Override
public void remove() {
- throw new UnsupportedOperationException(unsupportedOperationMsg);
+ throw defaultException();
}
}
@@ -139,7 +139,7 @@ public class CalendarDateSpinnerData ext
@UnsupportedOperation
@Override
public void clear() {
- throw new UnsupportedOperationException(unsupportedOperationMsg);
+ throw defaultException();
}
@Override
@@ -174,7 +174,7 @@ public class CalendarDateSpinnerData ext
@UnsupportedOperation
@Override
public final void setComparator(final Comparator<CalendarDate> comparator) {
- throw new UnsupportedOperationException(unsupportedOperationMsg);
+ throw defaultException();
}
@Override
Modified: pivot/trunk/wtk/src/org/apache/pivot/wtk/content/NumericSpinnerData.java
URL: http://svn.apache.org/viewvc/pivot/trunk/wtk/src/org/apache/pivot/wtk/content/NumericSpinnerData.java?rev=1877484&r1=1877483&r2=1877484&view=diff
==============================================================================
--- pivot/trunk/wtk/src/org/apache/pivot/wtk/content/NumericSpinnerData.java (original)
+++ pivot/trunk/wtk/src/org/apache/pivot/wtk/content/NumericSpinnerData.java Thu May 7 20:03:24 2020
@@ -67,6 +67,7 @@ public class NumericSpinnerData extends
}
@Override
+ @UnsupportedOperation
public void remove() {
throw new UnsupportedOperationException();
}
@@ -180,7 +181,7 @@ public class NumericSpinnerData extends
@UnsupportedOperation
@Override
public void clear() {
- throw new UnsupportedOperationException(unsupportedOperationMsg);
+ throw defaultException();
}
@Override
@@ -209,7 +210,7 @@ public class NumericSpinnerData extends
@UnsupportedOperation
@Override
public void setComparator(final Comparator<Integer> comparator) {
- throw new UnsupportedOperationException(unsupportedOperationMsg);
+ throw defaultException();
}
@Override