<Swing Dev> JDK 9 RFR of JDK-8055059: JDK9b22 public API exposes package private classes

Anthony Petrov anthony.petrov at oracle.com
Tue Aug 19 12:34:48 UTC 2014


Hi Joe,

I'm not sure if exposing internal classes is a good idea. There's 
absolutely no need for user code to even know about them. If the only 
reason we have to make them protected is because they're exposed with 
the generification fix, then perhaps we could just revert the 
generifications (and add corresponding @SuppressWarning) for these 
specific cases?

--
best regards,
Anthony

On 8/19/2014 5:33 AM, Joe Darcy wrote:
> Hello,
>
> Please review my proposed changes to address:
>
>      JDK-8055059: JDK9b22 public API exposes package private classes
>      http://cr.openjdk.java.net/~darcy/8055059.0/
>
> Bug JDK-8055059 that the generification of swing added package-private
> types to the signatures of several protected methods. The solution is to
> the make the formerly package-private types also be protected.
>
> Patch below.
>
> Thanks,
>
> -Joe
>
> --- old/src/share/classes/javax/swing/text/GapContent.java 2014-08-18
> 18:27:50.000000000 -0700
> +++ new/src/share/classes/javax/swing/text/GapContent.java 2014-08-18
> 18:27:49.000000000 -0700
> @@ -826,7 +826,7 @@
>        * Used to hold a reference to a Mark that is being reset as the
>        * result of removing from the content.
>        */
> -    final class UndoPosRef {
> +    protected final class UndoPosRef {
>           UndoPosRef(MarkData rec) {
>               this.rec = rec;
>               this.undoLocation = rec.getOffset();
> @@ -839,7 +839,7 @@
>            * @param endOffset end location of inserted string.
>            * @param g1 resulting end of gap.
>            */
> -        protected void resetLocation(int endOffset, int g1) {
> +        void resetLocation(int endOffset, int g1) {
>               if (undoLocation != endOffset) {
>                   this.rec.index = undoLocation;
>               }
> @@ -849,9 +849,9 @@
>           }
>
>           /** Previous Offset of rec. */
> -        protected int undoLocation;
> +        private int undoLocation;
>           /** Mark to reset offset. */
> -        protected MarkData rec;
> +        private MarkData rec;
>       } // End of GapContent.UndoPosRef
>
>
> --- old/src/share/classes/javax/swing/text/StringContent.java 2014-08-18
> 18:27:50.000000000 -0700
> +++ new/src/share/classes/javax/swing/text/StringContent.java 2014-08-18
> 18:27:50.000000000 -0700
> @@ -366,7 +366,7 @@
>        * Used to hold a reference to a Position that is being reset as the
>        * result of removing from the content.
>        */
> -    final class UndoPosRef {
> +    protected final class UndoPosRef {
>           UndoPosRef(PosRec rec) {
>               this.rec = rec;
>               this.undoLocation = rec.offset;
> @@ -376,14 +376,14 @@
>            * Resets the location of the Position to the offset when the
>            * receiver was instantiated.
>            */
> -        protected void resetLocation() {
> +        void resetLocation() {
>               rec.offset = undoLocation;
>           }
>
>           /** Location to reset to when resetLocatino is invoked. */
> -        protected int undoLocation;
> +        private int undoLocation;
>           /** Position to reset offset. */
> -        protected PosRec rec;
> +        private PosRec rec;
>       }
>
>       /**
>



More information about the swing-dev mailing list