[oXygen-sdk] Jersey seems to return Oxygen's HttpExceptionWithDetails class?
Alex Jitianu
alex_jitianu at sync.ro
Mon Apr 18 06:49:32 CDT 2016
Hi Adam,
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:
*public* *class* CustomTargetedURLStreamHandlerPluginExtension
*implements* TargetedURLStreamHandlerPluginExtension {
/@Override/
*public* *boolean* canHandleProtocol(String protocol) {
*boolean* handleProtocol = false;
*if* ("http".equals(protocol) ||"https".equals(protocol)) {
/// This extension handles both HTTP and HTTPS protocols/
handleProtocol = true;
}
*return* handleProtocol;
}
/@Override/
*public* URLStreamHandler getURLStreamHandler(URL url) {
/// This method is called only for the URLs with a protocol /
/// for which the canHandleProtocol(String) method returns true (HTTP and
HTTPS)/
URLStreamHandler handler = null;
String host = url.getHost();
String protocol = url.getProtocol();
*if* (*"**slaws.info"**.equals(host)*) {
/// When there are connections opened from some_host, the SUN HTTP(S) /
/// handlers are used/
*if* ("http".equals(protocol)) {
*handler = **new**sun.net.www.protocol.http.Handler();*
}*else* {
handler =*new* sun.net.www.protocol.https.Handler();
}
}
*return* handler;
}
}
}
[1]
http://oxygenxml.com/doc/versions/17.1/ug-editor/#concepts/targeted-url-handler-plugin.html
Best regards,
Alex
--
Alex Jitianu
<oXygen/> XML Editor, Schema Editor and XSLT Editor/Debugger
http://www.oxygenxml.com
On 4/17/2016 4:44 AM, Adam Retter wrote:
> 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:
> http://slaws.info/upload.php
> 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: http://slaws.info/upload.php
> 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.
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.oxygenxml.com/pipermail/oxygen-sdk/attachments/20160418/c33c4ae5/attachment.html>
More information about the oXygen-sdk
mailing list