James, AJ,

I've moved the bug report into the JDK category. It should be appearing with new ID shortly (JDK-8015302)
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=8015302

I suggest you discuss the issue with the awt-dev mailing list first. (I think this issue falls into that area). Ideally you could propose a patch for JDK8 first and then backport to jdk7u. Details on how to contribute can be found at : http://openjdk.java.net/contribute/

regards,
Sean.

On 22/05/2013 22:52, James Tomson wrote:
I've run into this issue as well with jdk7u_21, and just entered (another)
bug on the subject - 9003054.

Looking at the system log in Console.app when this occurs, there's a but
more info in the exception description:

----------
JavaAppLauncher[74278]: -[NSAppleEventDescriptor
paramDescriptorForKeyword:] called on invalid NSAppleEventDescriptor
----------

It appears that since the QueueingApplicationDelegate is only keeping
references to those event objects instead of making deep copies of them,
the event descriptor for the initial URI that launches the app is
invalidated by the time the app actually gets around to processing it.

The following patch seems to resolve the issue:
-----------
diff -r fd2743154fcf
src/macosx/native/sun/osxapp/QueuingApplicationDelegate.m
--- a/src/macosx/native/sun/osxapp/QueuingApplicationDelegate.m     Wed May
08 16:52:22 2013 -0700
+++ b/src/macosx/native/sun/osxapp/QueuingApplicationDelegate.m     Wed May
22 12:41:08 2013 -0400
@@ -110,8 +110,14 @@

  - (void)_handleOpenURLEvent:(NSAppleEventDescriptor *)openURLEvent
withReplyEvent:(NSAppleEventDescriptor *)replyEvent
  {
+    // Make an explicit copy of the passed events as they may be
invalidated by the time they're processed
+    NSAppleEventDescriptor *openURLEventCopy = [openURLEvent copy];
+    NSAppleEventDescriptor *replyEventCopy = [replyEvent copy];
+
      [self.queue addObject:[^(){
-        [self.realDelegate _handleOpenURLEvent:openURLEvent
withReplyEvent:replyEvent];
+        [self.realDelegate _handleOpenURLEvent:openURLEventCopy
withReplyEvent:replyEventCopy];
+        [openURLEventCopy release];
+        [replyEventCopy release];
      } copy]];
  }
-----------

I'm not quite sure of the process required to get these patches considered,
but I've included the above diff in the bug report - hopefully it's of some
use and not completely off track :)

-James

I submitted a bug for this but it's been "not available" for a few weeks:
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=9000081

Can anybody comment on this issue with the
Application.setOpenURIHandler and custom protocols?

Custom protocols really are useful especially now that applets are
dying a slow death with everybody disabling java in their browser...

Thanks,
-Aj


On Mon, Feb 18, 2013 at 7:28 PM, AJ Gregory <ajgregory at gmail.com> wrote:
I have an app bundled with Java 7 (1.7.0_13) which registers a custom
URL scheme using CFBundleURLSchemes in it's Info.plist and uses the
Application.setOpenURIHandler to register a listener.

When I click on a link that has the custom URL scheme in the browser
it launches the app OK but doesn't call the handler and the following
dump is in the console.

I tried to submitted a bug as well but never got a bug number so not
sure if it was created.

Anybody else have experience with this?

Thanks,
-Aj



2/6/13 8:46:21.473 AM JavaAppLauncher[842]: (
     0   CoreFoundation                      0x00007fff898200a6
__exceptionPreprocess + 198
     1   libobjc.A.dylib                     0x00007fff840043f0
objc_exception_throw + 43
     2   CoreFoundation                      0x00007fff8981fe7c
+[NSException raise:format:] + 204
     3   Foundation                          0x00007fff8c29f763
-[NSAppleEventDescriptor paramDescriptorForKeyword:] + 71
     4   liblwawt.dylib                      0x0000000168fb2b77
-[ApplicationDelegate _handleOpenURLEvent:
withReplyEvent:] + 137
     5   libosxapp.dylib                     0x00000001690588b1
__-[QueuingApplicationDelegate
_handleOpenURLEvent:withReplyEvent:]_block_invoke_1 + 135
     6   libosxapp.dylib                     0x00000001690597bf
-[QueuingApplicationDelegate processQueuedEventsWithTargetDelegate:] +
134
     7   libosxapp.dylib                     0x0000000169057857
OSXAPP_SetApplicationDelegate + 153
     8   liblwawt.dylib                      0x0000000168fb1899
__+[AWTStarter start:swtMode:swtModeForWebStart:]_block_invoke_1 + 111
     9   Foundation                          0x00007fff8c2cf677
__NSThreadPerformPerform + 225
     10  CoreFoundation                      0x00007fff8979f101
__CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17
     11  CoreFoundation                      0x00007fff8979ea25
__CFRunLoopDoSources0 + 245
     12  CoreFoundation                      0x00007fff897c1dc5
__CFRunLoopRun + 789
     13  CoreFoundation                      0x00007fff897c16b2
CFRunLoopRunSpecific + 290
     14  HIToolbox                           0x00007fff872880a4
RunCurrentEventLoopInMode + 209
     15  HIToolbox                           0x00007fff87287d84
ReceiveNextEventCommon + 166
     16  HIToolbox                           0x00007fff87287cd3
BlockUntilNextEventMatchingListInMode + 62
     17  AppKit                              0x00007fff8e331613
_DPSNextEvent + 685
     18  AppKit                              0x00007fff8e330ed2
-[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:] + 128
     19  libosxapp.dylib                     0x0000000169057b56
-[NSApplicationAWT nextEventMatchingMask:untilDate:inMode:dequeue:] +
124
     20  AppKit                              0x00007fff8e328283
-[NSApplication run] + 517
     21  libosxapp.dylib                     0x00000001690579b9
+[NSApplicationAWT runAWTLoopWithApp:] + 156
     22  liblwawt.dylib                      0x0000000168fb181a
-[AWTStarter starter:] + 1591
     23  Foundation                          0x00007fff8c2cf677
__NSThreadPerformPerform + 225
     24  CoreFoundation                      0x00007fff8979f101
__CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17
     25  CoreFoundation                      0x00007fff8979ea25
__CFRunLoopDoSources0 + 245
     26  CoreFoundation                      0x00007fff897c1dc5
__CFRunLoopRun + 789
     27  CoreFoundation                      0x00007fff897c16b2
CFRunLoopRunSpecific + 290
     28  libjli.dylib                        0x00000001001cb88d
CreateExecutionEnvironment + 871
     29  libjli.dylib                        0x00000001001c603c
JLI_Launch + 1952
     30  JavaAppLauncher                     0x00000001000629cb launch +
5035
     31  JavaAppLauncher                     0x00000001000614f6 main + 102
     32  JavaAppLauncher                     0x0000000100061484 start + 52
     33  ???                                 0x0000000000000002 0x0 + 2
)>

Reply via email to