<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