<Swing Dev> JDK 9 RFR of JDK-8055059: JDK9b22 public API exposes package private classes, take 2
Sergey Bylokhov
Sergey.Bylokhov at oracle.com
Mon Jan 12 09:13:20 UTC 2015
Hi, Joe.
The fix looks good.
On 10.01.2015 3:23, Joseph D. Darcy wrote:
> Hello,
>
> The previously proposed fix for
>
> JDK-8055059: JDK9b22 public API exposes package private classes
>
> was rejected during code review:
>
> http://mail.openjdk.java.net/pipermail/swing-dev/2014-August/003829.html
> http://mail.openjdk.java.net/pipermail/swing-dev/2014-August/003830.html
>
> Here is a new proposed fix that reverts the Vector<UndoPosRef>
> variable and values to a raw Vector to avoid exposing the UndoPosRef
> types more widely:
>
> http://cr.openjdk.java.net/~darcy/8055059.1/
>
> Patch inline below.
>
> The code as amended still compiles without rawtypes or unchecked
> warnings.
>
> Thanks,
>
> -Joe
>
> ---
> old/src/java.desktop/share/classes/javax/swing/text/GapContent.java
> 2015-01-09 14:48:54.394781325 -0800
> +++
> new/src/java.desktop/share/classes/javax/swing/text/GapContent.java
> 2015-01-09 14:48:54.122781325 -0800
> @@ -710,8 +710,9 @@
> * @param length the length >= 0
> * @return the set of instances
> */
> - protected Vector<UndoPosRef>
> getPositionsInRange(Vector<UndoPosRef> v,
> - int offset, int
> length) {
> + @SuppressWarnings({"rawtypes", "unchecked"}) // UndoPosRef type
> cannot be exposed
> + protected Vector getPositionsInRange(Vector v,
> + int offset, int length) {
> int endOffset = offset + length;
> int startIndex;
> int endIndex;
> @@ -758,7 +759,8 @@
> *
> * @param positions the UndoPosRef instances to reset
> */
> - protected void updateUndoPositions(Vector<UndoPosRef> positions,
> int offset,
> + @SuppressWarnings("rawtypes") // UndoPosRef type cannot be exposed
> + protected void updateUndoPositions(Vector positions, int offset,
> int length) {
> // Find the indexs of the end points.
> int endOffset = offset + length;
> @@ -775,7 +777,7 @@
>
> // Reset the location of the refenences.
> for(int counter = positions.size() - 1; counter >= 0;
> counter--) {
> - UndoPosRef ref = positions.elementAt(counter);
> + UndoPosRef ref = (UndoPosRef)positions.elementAt(counter);
> ref.resetLocation(endOffset, g1);
> }
> // We have to resort the marks in the range startIndex to
> endIndex.
> @@ -902,7 +904,8 @@
> protected String string;
> /** An array of instances of UndoPosRef for the Positions in the
> * range that was removed, valid after undo. */
> - protected Vector<UndoPosRef> posRefs;
> + @SuppressWarnings("rawtypes") // UndoPosRef type cannot be
> exposed
> + protected Vector posRefs;
> } // GapContent.InsertUndo
>
>
> @@ -911,6 +914,7 @@
> */
> @SuppressWarnings("serial") // JDK-implementation class
> class RemoveUndo extends AbstractUndoableEdit {
> + @SuppressWarnings("unchecked")
> protected RemoveUndo(int offset, String string) {
> super();
> this.offset = offset;
> @@ -934,6 +938,7 @@
> }
> }
>
> + @SuppressWarnings("unchecked")
> public void redo() throws CannotRedoException {
> super.redo();
> try {
> ---
> old/src/java.desktop/share/classes/javax/swing/text/StringContent.java
> 2015-01-09 14:48:55.178781325 -0800
> +++
> new/src/java.desktop/share/classes/javax/swing/text/StringContent.java
> 2015-01-09 14:48:54.918781325 -0800
> @@ -271,11 +271,12 @@
> * @param length the length >= 0
> * @return the set of instances
> */
> - protected Vector<UndoPosRef>
> getPositionsInRange(Vector<UndoPosRef> v, int offset,
> - int length) {
> + @SuppressWarnings({"rawtypes", "unchecked"}) // UndoPosRef type
> cannot be exposed
> + protected Vector getPositionsInRange(Vector v, int offset,
> + int length) {
> int n = marks.size();
> int end = offset + length;
> - Vector<UndoPosRef> placeIn = (v == null) ? new Vector<>() : v;
> + Vector placeIn = (v == null) ? new Vector() : v;
> for (int i = 0; i < n; i++) {
> PosRec mark = marks.elementAt(i);
> if (mark.unused) {
> @@ -298,9 +299,10 @@
> *
> * @param positions the positions of the instances
> */
> - protected void updateUndoPositions(Vector<UndoPosRef> positions) {
> + @SuppressWarnings("rawtypes") // UndoPosRef type cannot be exposed
> + protected void updateUndoPositions(Vector positions) {
> for(int counter = positions.size() - 1; counter >= 0;
> counter--) {
> - UndoPosRef ref = positions.elementAt(counter);
> + UndoPosRef ref = (UndoPosRef)positions.elementAt(counter);
> // Check if the Position is still valid.
> if(ref.rec.unused) {
> positions.removeElementAt(counter);
> @@ -437,7 +439,8 @@
> protected String string;
> // An array of instances of UndoPosRef for the Positions in the
> // range that was removed, valid after undo.
> - protected Vector<UndoPosRef> posRefs;
> + @SuppressWarnings("rawtypes") // UndoPosRef type cannot be
> exposed
> + protected Vector posRefs;
> }
>
>
> @@ -445,6 +448,7 @@
> * UndoableEdit created for removes.
> */
> class RemoveUndo extends AbstractUndoableEdit {
> + @SuppressWarnings("unchecked")
> protected RemoveUndo(int offset, String string) {
> super();
> this.offset = offset;
> @@ -471,6 +475,7 @@
> }
> }
>
> + @SuppressWarnings("unchecked")
> public void redo() throws CannotRedoException {
> super.redo();
> try {
>
--
Best regards, Sergey.
More information about the swing-dev
mailing list