<p dir="ltr">Hi Alex I'm afraid that won't work for me as the same sever URIs will be used both with my plugin and with other Oxygen features like WebDav. Is there anyway to to catch the exception? if I put a try catch around it, it seems to not be caught!</p>
<p dir="ltr">I think maybe this is because it's a different HttpDetailsWithException which has been obfuscated when compared to the one I see in the SDK.</p>
<div class="gmail_quote">On 18 Apr 2016 7:52 am, "Alex Jitianu" <<a href="mailto:alex_jitianu@sync.ro">alex_jitianu@sync.ro</a>> wrote:<br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
  
    
  
  <div bgcolor="#FFFFFF" text="#000000">
    Hi Adam,<br>
    <br>
    Oxygen installs it's own protocol handler for "http". As far as I
    can see, the problem would be that the
    ro.sync.net.protocol.http.WebdavHttpURLConnection.getResponseCode()
    method throws an exception instead of returning the 404 code. I'll
    add an issue for us to fix this. In the mean time I recommend using
    the Targeted URL Stream Handler [1] plugin extension. From this
    extension you can decide to use the SUN protocols when connecting to
    Jersey:<br>
    <br>
    <pre><strong style="color:#7f0055">public</strong> <strong style="color:#7f0055">class</strong> CustomTargetedURLStreamHandler<span>Plugin</span>Extension 
  <strong style="color:#7f0055">implements</strong> TargetedURLStreamHandler<span>Plugin</span>Extension {

  <em><span style="color:gray">@Override</span></em>
  <strong style="color:#7f0055">public</strong> <strong style="color:#7f0055">boolean</strong> canHandleProtocol(String protocol) {
    <strong style="color:#7f0055">boolean</strong> handleProtocol = false;
    <strong style="color:#7f0055">if</strong> (<span style="color:#2a00ff">"http"</span>.equals(protocol) || <span style="color:#2a00ff">"https"</span>.equals(protocol)) {
      <em style="color:#006400">// This extension handles both HTTP and HTTPS protocols</em>
      handleProtocol = true;
    }
    <strong style="color:#7f0055">return</strong> handleProtocol;
  }</pre>
    <pre>  <em><span style="color:gray">@Override</span></em>
  <strong style="color:#7f0055">public</strong> URLStreamHandler getURLStreamHandler(URL url) {
    <em style="color:#006400">// This method is called only for the URLs with a protocol </em>
    <em style="color:#006400">// for which the canHandleProtocol(String) method returns true (HTTP and HTTPS)</em>

    URLStreamHandler handler = null;
      
    String host = url.getHost();
    String protocol = url.getProtocol();
    <strong style="color:#7f0055">if</strong> (<b><span style="color:#2a00ff">"</span></b><b><span style="color:#2a00ff"><a href="http://slaws.info" target="_blank">slaws.info</a>"</span></b><b>.equals(host)</b>) {
      <em style="color:#006400">// When there are connections opened from some_host, the SUN HTTP(S) </em>
      <em style="color:#006400">// handlers are used</em>
      <strong style="color:#7f0055">if</strong> (<span style="color:#2a00ff">"http"</span>.equals(protocol)) {
        <b>handler = </b><strong style="color:#7f0055">new</strong><b> sun.net.www.protocol.http.Handler();</b>
      } <strong style="color:#7f0055">else</strong> {
        handler = <strong style="color:#7f0055">new</strong> sun.net.www.protocol.https.Handler();
      }
    }
    <strong style="color:#7f0055">return</strong> handler;
  }
}
}

</pre>
    [1]
<a href="http://oxygenxml.com/doc/versions/17.1/ug-editor/#concepts/targeted-url-handler-plugin.html" target="_blank">http://oxygenxml.com/doc/versions/17.1/ug-editor/#concepts/targeted-url-handler-plugin.html</a><br>
    <pre cols="72">Best regards,
Alex
-- 
Alex Jitianu
<oXygen/>  XML Editor, Schema Editor and XSLT Editor/Debugger
<a href="http://www.oxygenxml.com" target="_blank">http://www.oxygenxml.com</a> </pre>
    <div>On 4/17/2016 4:44 AM, Adam Retter
      wrote:<br>
    </div>
    <blockquote type="cite">
      <pre>I am trying to use Jersey 2.22.2 from inside my Oxygen plugin, but
when I use a URL which my server doesn't recognise and results in a
404, then for a reason I don't understand Jersey seems to be throwing
me Oxygen's HttpExceptionWithDetails.

Any ideas how I can get Oxygen not to override Jersey's error
handling? The stacktrace looks like:

Exception in thread "AWT-EventQueue-0"
javax.ws.rs.ProcessingException:
ro.sync.net.protocol.http.HttpExceptionWithDetails: 404 Not Found for:
<a href="http://slaws.info/upload.php" target="_blank">http://slaws.info/upload.php</a>
at org.glassfish.jersey.client.internal.HttpUrlConnector.apply(HttpUrlConnector.java:287)
at org.glassfish.jersey.client.ClientRuntime.invoke(ClientRuntime.java:255)
at org.glassfish.jersey.client.JerseyInvocation$1.call(JerseyInvocation.java:684)
at org.glassfish.jersey.client.JerseyInvocation$1.call(JerseyInvocation.java:681)
at org.glassfish.jersey.internal.Errors.process(Errors.java:315)
at org.glassfish.jersey.internal.Errors.process(Errors.java:297)
at org.glassfish.jersey.internal.Errors.process(Errors.java:228)
at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:444)
at org.glassfish.jersey.client.JerseyInvocation.invoke(JerseyInvocation.java:681)
at org.glassfish.jersey.client.JerseyInvocation$Builder.method(JerseyInvocation.java:437)
at org.glassfish.jersey.client.JerseyInvocation$Builder.post(JerseyInvocation.java:343)
at org.humanistika.oxygen.tei.authorizer.remote.impl.JerseyClient.uploadSuggestion(JerseyClient.java:157)
at org.humanistika.oxygen.tei.authorizer.TeiAuthorizer$AddNewSuggestionCIValue.uploadSuggestion(TeiAuthorizer.java:166)
at org.humanistika.oxygen.tei.authorizer.TeiAuthorizer$AddNewSuggestionCIValue.getInsertString(TeiAuthorizer.java:145)
at ro.sync.contentcompletion.g.x(Unknown Source)
at ro.sync.contentcompletion.f.ab(Unknown Source)
at ro.sync.contentcompletion.xml.k.gpm(Unknown Source)
at ro.sync.contentcompletion.l.j.spm(Unknown Source)
at ro.sync.contentcompletion.l.j.aom(Unknown Source)
at ro.sync.contentcompletion.l.j.processKeyEvent(Unknown Source)
at ro.sync.contentcompletion.l.u.processKeyEvent(Unknown Source)
at java.awt.Component.processEvent(Component.java:6312)
at java.awt.Container.processEvent(Container.java:2236)
at java.awt.Component.dispatchEventImpl(Component.java:4891)
at java.awt.Container.dispatchEventImpl(Container.java:2294)
at java.awt.Component.dispatchEvent(Component.java:4713)
at java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1954)
at java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(DefaultKeyboardFocusManager.java:806)
at java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(DefaultKeyboardFocusManager.java:1074)
at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:945)
at java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:771)
at java.awt.Component.dispatchEventImpl(Component.java:4762)
at java.awt.Container.dispatchEventImpl(Container.java:2294)
at java.awt.Window.dispatchEventImpl(Window.java:2750)
at java.awt.Component.dispatchEvent(Component.java:4713)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
at java.awt.EventQueue$4.run(EventQueue.java:731)
at java.awt.EventQueue$4.run(EventQueue.java:729)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
at ro.sync.ui.application.ApplicationLauncher$_b$1.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
Caused by: ro.sync.net.protocol.http.HttpExceptionWithDetails: 404 Not
Found for: <a href="http://slaws.info/upload.php" target="_blank">http://slaws.info/upload.php</a>
at ro.sync.net.protocol.http.b.d.cb(Unknown Source)
at ro.sync.net.protocol.http.b.d.j(Unknown Source)
at ro.sync.net.protocol.http.abstraction.o.q(Unknown Source)
at ro.sync.net.protocol.http.abstraction.o.f(Unknown Source)
at ro.sync.net.protocol.http.WebdavHttpURLConnection.getInputStream(Unknown
Source)
at ro.sync.net.protocol.http.WebdavHttpURLConnection.getResponseCode(Unknown
Source)
at org.glassfish.jersey.client.internal.HttpUrlConnector._apply(HttpUrlConnector.java:394)
at org.glassfish.jersey.client.internal.HttpUrlConnector.apply(HttpUrlConnector.java:285)
... 53 more

Thanks Adam.

</pre>
    </blockquote>
    <br>
  </div>

<br>_______________________________________________<br>
oXygen-sdk mailing list<br>
<a href="mailto:oXygen-sdk@oxygenxml.com">oXygen-sdk@oxygenxml.com</a><br>
<a href="https://www.oxygenxml.com/mailman/listinfo/oxygen-sdk" rel="noreferrer" target="_blank">https://www.oxygenxml.com/mailman/listinfo/oxygen-sdk</a><br>
<br></blockquote></div>