On Thu, 12 Jun 2025 22:48:14 GMT, Sergey Bylokhov <s...@openjdk.org> wrote:
>> I looked into this when I was doing SoundClip. >> What is actually returned by contract is a ContentHandler which returns an >> Object from its getContent() method >> That Object happens to be a com.sun.media.sound.JavaSoundAudioClip which >> previously implemented AudioClip >> >> This implements relationship isn't there for SoundClip, so the expectation >> of the test that it knows of an exported type that will actually be returned >> is no longer valid. >> >> I don't think it is worth testing that JavaSoundAudioClip is returned. >> >> Possibly we could jsut verify that a non-null handler is returned ? > > As far as I understand, this method should return something that the > application can actually use. Previously, the application could access the > audio data via the AudioClip interface - it wasn’t important that it was > specifically implemented by JavaSoundAudioClip. Now, I believe we should > return a SoundClip object, which can be created (not necessarily via the > public API of the SoundClip/JavaSoundAudioClip classes). I have no idea how applications (or applets) could really have used this URL.getContent() API that just returns an Object. It seems like it was meant to be used by some other part of the larger JDK that was aware of how this was implemented. I am inclined to ask the networking API owners what the purpose and future should be. I also don't particularly like the java.base module (even via this private SPI) calling into the desktop module. When the desktop module isn't present in a jlinked image it will not find a handler and have to do some default thing such as return raw bytes or null. So I can probably return a SoundClip but any code out there that used this was always taking a chance. OTOH we are removing Applet entirely so anyone who was relying on this is out of luck anyway. >> was this comment meant to be on some other (test) code ? > > It is about content handlers we discussed above and its implementation in > awt/www/content/audio/. If we want to support content handlers then it is not > necessary to change this in the test: >>SoundClip clip = (SoundClip) file.toURL().getContent(); Not sure I would do that anyway here. It seems like an unnecessary file->url->file roundtrip with a cast to a type you have to "know". And it was never specified. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/25698#discussion_r2146175203 PR Review Comment: https://git.openjdk.org/jdk/pull/25698#discussion_r2146141458