<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1252">
</head>
<body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;">
<div>Iíve done more research on the server side - and I donít see how I can override the behavior of my server (Glassfish 4.1, with Java Servlets 3.1).  So I will need to modify the Annotator code so that it sends the DELETE without a message body.  Can I do
 this by implementing the annotationDeleted() method?  Or is that just an additional callback that happens on delete?</div>
<div><br>
</div>
<br>
<div>
<div>On May 19, 2015, at 12:53 PM, Ellen Kraffmiller <<a href="mailto:ekraffmiller@fas.harvard.edu">ekraffmiller@fas.harvard.edu</a>> wrote:</div>
<br class="Apple-interchange-newline">
<blockquote type="cite">
<div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;">
Yes, I think that is the problem!  I can see in my javascript console that the DELETE request includes the entire annotation in the request body.  When I run the DELETE curl command with a body, Iím also getting the 400 error.  The problem seems to be that
 the framework Iím using to implement the service doesnít allow a body in a DELETE request.  So I will either have to override the DELETE being sent from the annotator, or implement the delete differently on my server.
<div><br>
</div>
<div>Thanks for your help!</div>
<div><br>
<div>
<div>On May 18, 2015, at 7:44 PM, Randall Leeds <<a href="mailto:tilgovi@hypothes.is">tilgovi@hypothes.is</a>> wrote:</div>
<br class="Apple-interchange-newline">
<blockquote type="cite">
<div dir="ltr">
<div>Is your server rejecting the DELETE in the first case?<br>
<br>
</div>
I think Annotator will send the annotation in the request body for the delete. Maybe your server is not expecting that?<br>
</div>
<div class="gmail_extra"><br>
<div class="gmail_quote">On Mon, May 18, 2015 at 2:43 PM, Kraffmiller, Ellen <span dir="ltr">
<<a href="mailto:ekraffmiller@hmdc.harvard.edu" target="_blank">ekraffmiller@hmdc.harvard.edu</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div style="word-wrap:break-word">When the request is made from within Annotator, I the response I get from the server is  400 Bad Request. The request never gets to my method on the server, so my annotation isnít deleted.  Here is what it looks like on my
 Javascript Console:
<div>
<div><br>
</div>
<div>DELETE <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__localhost-3A8080_text_api_store_annotations_555a512f30045b989f670271&d=BQMFaQ&c=WO-RGvefibhHBZq3fL85hQ&r=vyEs5LtWI7iWAgVfdz7UJyI8eN_xIkVsV7ez924R2rA&m=hpo03hQATZvIXcLHvDQApvT1pCO1kpQ3JNlk10n04Hk&s=ZwMaKS6OI3ty9YAuUIvTVJXaHIP6uxGUcIYB5ZCjk4o&e=" target="_blank">
http://localhost:8080/text/api/store/annotations/555a512f30045b989f670271</a> 400 (Bad Request)</div>
<div><br>
</div>
<div>When I make the request from curl the annotation is deleted and I get 200 response: </div>
<div><br>
</div>
<div>
<div style="margin:0px;font-size:11px;font-family:Menlo">curl -i -X DELETE <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__localhost-3A8080_text_api_store_annotations_555a512f30045b989f670271&d=BQMFaQ&c=WO-RGvefibhHBZq3fL85hQ&r=vyEs5LtWI7iWAgVfdz7UJyI8eN_xIkVsV7ez924R2rA&m=hpo03hQATZvIXcLHvDQApvT1pCO1kpQ3JNlk10n04Hk&s=ZwMaKS6OI3ty9YAuUIvTVJXaHIP6uxGUcIYB5ZCjk4o&e=" target="_blank">
http://localhost:8080/text/api/store/annotations/555a512f30045b989f670271</a></div>
<div style="margin:0px;font-size:11px;font-family:Menlo">HTTP/1.1 200 OK</div>
</div>
<div>
<div class="h5">
<div><br>
</div>
<div><br>
<div>
<div>On May 18, 2015, at 5:33 PM, Randall Leeds <<a href="mailto:tilgovi@hypothes.is" target="_blank">tilgovi@hypothes.is</a>> wrote:</div>
<br>
<blockquote type="cite">
<p dir="ltr">Is the response from the server different? Or does Annotator just have trouble processing it?</p>
<p dir="ltr">When you delete the annotation in Annotator, is it deleted on the server, and then just the client sees failure? Or is the backend rejecting the request?</p>
<div class="gmail_quote">On May 18, 2015 2:07 PM, "Kraffmiller, Ellen" <<a href="mailto:ekraffmiller@hmdc.harvard.edu" target="_blank">ekraffmiller@hmdc.harvard.edu</a>> wrote:<br type="attribution">
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Hi,<br>
Iím running Annotator 1.2.10, with the Storage plugin, and have implemented my own REST interface for the storage commands.  I have create, update and search working correctly, but Iím having a problem with the delete command.  When I try to delete an annotation,
 I get a ďBad RequestĒ error from the Storage plugin, but if I run try the same DELETE URL that the plugin is calling with curl, it works as expected and the annotation is deleted.  Iím using jQuery 1.9.0.<br>
Any suggestiions appreciated!<br>
Thanks,<br>
Ellen<br>
<br>
Here is my javascript from my test page:<br>
<br>
                     jQuery(function ($) {<br>
                    if (typeof $.fn.annotator !== 'function') {<br>
                        alert("Ooops! it looks like you haven't built the Annotator concatenation file. " +<br>
                            "Either download a tagged release from GitHub, or modify the Cakefile to point " +<br>
                            "at your copy of the YUI compressor and run `cake package`.");<br>
                    } else {<br>
                        // This is the important bit: how to create the annotator and add<br>
                        // plugins<br>
                        $('#clusterDocViewText').annotator()<br>
                        .annotator('addPlugin', 'Permissions')<br>
                        .annotator('addPlugin','Store', {<br>
                            prefix: '/text/api/store',<br>
                            annotationData : {<br>
                                url: '<a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__-26-2339-3B-2B&d=BQMFaQ&c=WO-RGvefibhHBZq3fL85hQ&r=vyEs5LtWI7iWAgVfdz7UJyI8eN_xIkVsV7ez924R2rA&m=hpo03hQATZvIXcLHvDQApvT1pCO1kpQ3JNlk10n04Hk&s=K4M135-FnMN9GnIGDjZ9w6ZuqtG5HDqQLhqjN2mBR0U&e=" target="_blank">http://'+</a>
 window.location.host  + window.location.pathname,<br>
                                documentId: '553e964230040cdcf4ecf4d4'<br>
                            },<br>
                            loadFromSearch: {<br>
                                limit: 0,<br>
                                all_fields: 1,<br>
                                documentId: '553e964230040cdcf4ecf4d4'<br>
                             }<br>
                        })<br>
                        .annotator('addPlugin', 'Tags');<br>
                        $('#clusterDocViewText').data('annotator').plugins['Permissions'].setUser({ id: 9, username: 'ellen' });<br>
                     }<br>
                });<br>
_______________________________________________<br>
annotator-dev mailing list<br>
<a href="mailto:annotator-dev@lists.okfn.org" target="_blank">annotator-dev@lists.okfn.org</a><br>
<a href="https://urldefense.proofpoint.com/v2/url?u=https-3A__lists.okfn.org_mailman_listinfo_annotator-2Ddev&d=BQMFaQ&c=WO-RGvefibhHBZq3fL85hQ&r=vyEs5LtWI7iWAgVfdz7UJyI8eN_xIkVsV7ez924R2rA&m=LQfZhQT6420GJkEmYrKLFKm3pplCRbShxC7W4K1-hos&s=pnZwXRH8-ibwspqAtULJpbQZUoDuZlURhG4xNKQ0eyU&e=" target="_blank">https://lists.okfn.org/mailman/listinfo/annotator-dev</a><br>
Unsubscribe: <a href="https://urldefense.proofpoint.com/v2/url?u=https-3A__lists.okfn.org_mailman_options_annotator-2Ddev&d=BQMFaQ&c=WO-RGvefibhHBZq3fL85hQ&r=vyEs5LtWI7iWAgVfdz7UJyI8eN_xIkVsV7ez924R2rA&m=LQfZhQT6420GJkEmYrKLFKm3pplCRbShxC7W4K1-hos&s=VCDXf_v_ESbHFHNbkmHU_jlqfJSg7NslVVvE9gqAzFQ&e=" target="_blank">
https://lists.okfn.org/mailman/options/annotator-dev</a><br>
</blockquote>
</div>
</blockquote>
</div>
<br>
</div>
</div>
</div>
</div>
</div>
</blockquote>
</div>
<br>
</div>
</blockquote>
</div>
<br>
</div>
</div>
</blockquote>
</div>
<br>
</body>
</html>