On Thu, 28 Jul 2022 18:11:02 GMT, Phil Race <p...@openjdk.org> wrote:
>> Tejesh R has updated the pull request incrementally with one additional >> commit since the last revision: >> >> Removed whitespace error > > You wrote " The graphics object is not initialized anywhere inside the class, > where it is expected to set explicitly by the user. " > > which reads a bit like if the user does > DebugGraphics dg = new DebugGraphics(); > they must then follow it up with > dg.setGraphics(g); > however there's no such method. > > So any DebugGraphics created this way is useless. > You can't use it for debugging > Making it protected won't prevent mis-use. > Someone could subclass and provide a public no-args constructor and the > problem will recur. > > The javadoc for the class says : > DebugGraphics objects are rarely created by hand > > So likely no one should be doing this. > > I'd just add javadoc saying "This constructor should not be called by > applications, it > is for internal use only. When called directly it will create an un-usable > instance". > > The only other thing I can think of is to try to figure out by using > https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/StackWalker.html#getCallerClass()) > > if it was called from outside DebugGraphics, and if so install some other > graphics instead. > > something like .. > if (graphics == null && stackWalker.getCallerClass() != this.class ) { > BufferedImage bi = new BufferedImage(1,1,BufferedImage.TYPE_INT_RGB); > graphics = bi.createGraphics(); > } @prrace, I have updated the PR, let me know if its ok now...... ------------- PR: https://git.openjdk.org/jdk/pull/9673