From a2e8f1f07d8d429f5854088c2690fa4fe7dacd38 Mon Sep 17 00:00:00 2001 From: mguessan Date: Tue, 28 Jun 2011 08:25:33 +0000 Subject: [PATCH] Caldav: remove quotes on etag for Evolution git-svn-id: http://svn.code.sf.net/p/davmail/code/trunk@1721 3d1905a2-6b24-0410-a738-b14d5a86fcbd --- src/java/davmail/caldav/CaldavConnection.java | 3 ++- .../exchange/ews/EwsExchangeSession.java | 2 +- src/java/davmail/util/StringUtil.java | 17 +++++++++++++++++ src/test/davmail/util/StringUtilTest.java | 5 +++++ 4 files changed, 25 insertions(+), 2 deletions(-) diff --git a/src/java/davmail/caldav/CaldavConnection.java b/src/java/davmail/caldav/CaldavConnection.java index a10cc577..3ecca6e4 100644 --- a/src/java/davmail/caldav/CaldavConnection.java +++ b/src/java/davmail/caldav/CaldavConnection.java @@ -259,7 +259,8 @@ public class CaldavConnection extends AbstractConnection { reportItems(request); // event requests } else if (request.isPut()) { - String etag = request.getHeader("if-match"); + // remove quotes on etag for Evolution + String etag = StringUtil.removeQuotes(request.getHeader("if-match")); String noneMatch = request.getHeader("if-none-match"); ExchangeSession.ItemResult itemResult = session.createOrUpdateItem(request.getFolderPath(), lastPath, request.getBody(), etag, noneMatch); sendHttpResponse(itemResult.status, buildEtagHeader(itemResult.etag), null, "", true); diff --git a/src/java/davmail/exchange/ews/EwsExchangeSession.java b/src/java/davmail/exchange/ews/EwsExchangeSession.java index bc07f036..2b61e001 100644 --- a/src/java/davmail/exchange/ews/EwsExchangeSession.java +++ b/src/java/davmail/exchange/ews/EwsExchangeSession.java @@ -1187,7 +1187,7 @@ public class EwsExchangeSession extends ExchangeSession { if (currentItem != null) { currentItemId = new ItemId(currentItem); currentEtag = currentItem.get(Field.get("etag").getResponseName()); - LOGGER.debug("Existing item found with etag: " + currentEtag + " id: " + currentItemId.id); + LOGGER.debug("Existing item found with etag: " + currentEtag + " client etag: "+etag+" id: " + currentItemId.id); } if ("*".equals(noneMatch)) { // create requested diff --git a/src/java/davmail/util/StringUtil.java b/src/java/davmail/util/StringUtil.java index 05cd1957..a7b7ea39 100644 --- a/src/java/davmail/util/StringUtil.java +++ b/src/java/davmail/util/StringUtil.java @@ -385,4 +385,21 @@ public final class StringUtil { } return result; } + + /** + * Remove quotes if present on value. + * @param value input value + * @return unquoted string + */ + public static String removeQuotes(String value) { + String result = value; + if (result.startsWith("\"") || result.startsWith("{") || result.startsWith("(")) { + result = result.substring(1); + } + if (result.endsWith("\"") || result.endsWith("}") || result.endsWith(")")) { + result = result.substring(0, result.length() - 1); + } + return result; + } + } diff --git a/src/test/davmail/util/StringUtilTest.java b/src/test/davmail/util/StringUtilTest.java index 3cb0f9a0..edb1e97e 100644 --- a/src/test/davmail/util/StringUtilTest.java +++ b/src/test/davmail/util/StringUtilTest.java @@ -97,4 +97,9 @@ public class StringUtilTest extends TestCase { System.out.println("Elapsed: " + (System.currentTimeMillis() - startTime) + " ms"); } } + + public void testRemoveQuotes() { + assertEquals("test", StringUtil.removeQuotes("test")); + assertEquals("test", StringUtil.removeQuotes("\"test\"")); + } }