diff --git a/src/java/davmail/exchange/VCardReader.java b/src/java/davmail/exchange/VCardReader.java index 2d5c0516..12822d8c 100644 --- a/src/java/davmail/exchange/VCardReader.java +++ b/src/java/davmail/exchange/VCardReader.java @@ -157,19 +157,19 @@ public class VCardReader extends ICSBufferedReader { } } else if (state == State.PARAM_NAME) { if (currentChar == '=') { - paramName = line.substring(startIndex, i); + paramName = line.substring(startIndex, i).toUpperCase(); state = State.PARAM_VALUE; paramValues = new HashSet(); startIndex = i + 1; } else if (currentChar == ';') { // param with no value - paramName = line.substring(startIndex, i); + paramName = line.substring(startIndex, i).toUpperCase(); property.addParam(paramName, null); state = State.PARAM_NAME; startIndex = i + 1; } else if (currentChar == ':') { // param with no value - paramName = line.substring(startIndex, i); + paramName = line.substring(startIndex, i).toUpperCase(); property.addParam(paramName, null); state = State.VALUE; startIndex = i + 1; diff --git a/src/test/davmail/exchange/TestExchangeSessionContact.java b/src/test/davmail/exchange/TestExchangeSessionContact.java index fa107ae7..9308df23 100644 --- a/src/test/davmail/exchange/TestExchangeSessionContact.java +++ b/src/test/davmail/exchange/TestExchangeSessionContact.java @@ -298,7 +298,7 @@ public class TestExchangeSessionContact extends AbstractExchangeSessionTestCase VCardWriter vCardWriter = new VCardWriter(); vCardWriter.startCard(); - vCardWriter.appendProperty("TEL;TYPE=CELL;TYPE=PREF", "mobile"); + vCardWriter.appendProperty("TEL;TYPE=CELL;TYPE=pref", "another mobile"); vCardWriter.endCard(); ExchangeSession.ItemResult result = session.createOrUpdateContact("testcontactfolder", itemName, vCardWriter.toString(), contact.etag, null); @@ -306,8 +306,25 @@ public class TestExchangeSessionContact extends AbstractExchangeSessionTestCase contact = (ExchangeSession.Contact) session.getItem("testcontactfolder", itemName); - assertEquals("mobile", contact.get("mobile")); + assertEquals("another mobile", contact.get("mobile")); } + public void testLowerCaseTypesParamName() throws IOException { + ExchangeSession.Contact contact = (ExchangeSession.Contact) session.getItem("testcontactfolder", itemName); + + VCardWriter vCardWriter = new VCardWriter(); + vCardWriter.startCard(); + vCardWriter.appendProperty("TEL;type=HOME;type=pref", "5 68 99 3"); + vCardWriter.endCard(); + + ExchangeSession.ItemResult result = session.createOrUpdateContact("testcontactfolder", itemName, vCardWriter.toString(), contact.etag, null); + assertEquals(200, result.status); + + contact = (ExchangeSession.Contact) session.getItem("testcontactfolder", itemName); + + assertEquals("5 68 99 3", contact.get("homePhone")); + + } + }