From 72fb2053d4c0adb80b500c2325ddc30e9f446ba2 Mon Sep 17 00:00:00 2001 From: mguessan Date: Tue, 6 Jul 2010 15:52:38 +0000 Subject: [PATCH] Carddav: instant messaging and role properties git-svn-id: http://svn.code.sf.net/p/davmail/code/trunk@1140 3d1905a2-6b24-0410-a738-b14d5a86fcbd --- src/java/davmail/exchange/ExchangeSession.java | 16 ++++++---------- src/java/davmail/exchange/dav/Field.java | 18 +++++++----------- .../exchange/TestExchangeSessionContact.java | 11 ++++++++++- 3 files changed, 23 insertions(+), 22 deletions(-) diff --git a/src/java/davmail/exchange/ExchangeSession.java b/src/java/davmail/exchange/ExchangeSession.java index f3f7d762..35db2949 100644 --- a/src/java/davmail/exchange/ExchangeSession.java +++ b/src/java/davmail/exchange/ExchangeSession.java @@ -2705,19 +2705,15 @@ public abstract class ExchangeSession { properties.put("extensionattribute3", property.getValue()); } else if ("CUSTOM4".equals(property.getKey())) { properties.put("extensionattribute4", property.getValue()); + } else if ("ROLE".equals(property.getKey())) { + properties.put("profession", property.getValue()); + } else if ("X-AIM".equals(property.getKey())) { + properties.put("im", property.getValue()); + } else if ("BDAY".equals(property.getKey())) { + properties.put("bday", property.getValue()); } /* - - - - - writer.appendProperty("ROLE", get("profession")); - writer.appendProperty("NICKNAME", get("nickname")); - writer.appendProperty("X-AIM", get("im")); - - writer.appendProperty("BDAY", get("bday")); - writer.appendProperty("X-EVOLUTION-ASSISTANT", get("secretarycn")); writer.appendProperty("X-EVOLUTION-MANAGER", get("manager")); writer.appendProperty("X-EVOLUTION-SPOUSE", get("spousecn")); diff --git a/src/java/davmail/exchange/dav/Field.java b/src/java/davmail/exchange/dav/Field.java index 1a2a5827..00510274 100644 --- a/src/java/davmail/exchange/dav/Field.java +++ b/src/java/davmail/exchange/dav/Field.java @@ -50,6 +50,7 @@ public class Field { protected static final Namespace URN_SCHEMAS_MAILHEADER = Namespace.getNamespace("urn:schemas:mailheader:"); protected static final Namespace SCHEMAS_EXCHANGE = Namespace.getNamespace("http://schemas.microsoft.com/exchange/"); + protected static final Namespace SCHEMAS_MAPI = Namespace.getNamespace("http://schemas.microsoft.com/mapi/"); protected static final Namespace SCHEMAS_MAPI_PROPTAG = Namespace.getNamespace("http://schemas.microsoft.com/mapi/proptag/"); protected static final Namespace SCHEMAS_MAPI_ID = Namespace.getNamespace("http://schemas.microsoft.com/mapi/id/"); protected static final Namespace SCHEMAS_MAPI_STRING = Namespace.getNamespace("http://schemas.microsoft.com/mapi/string/"); @@ -227,7 +228,7 @@ public class Field { createField(URN_SCHEMAS_CONTACTS, "telephoneNumber"); // PR_BUSINESS_TELEPHONE_NUMBER 0x3A08 String createField(URN_SCHEMAS_CONTACTS, "title"); // PR_TITLE 0x3A17 String createField("description", URN_SCHEMAS_HTTPMAIL, "textdescription"); // PR_BODY 0x1000 String - createField("im", DistinguishedPropertySetType.Address, 0x8062, "im"); // InstantMessagingAddress DistinguishedPropertySetType.Address/0x00008062/String + createField("im", SCHEMAS_MAPI, "InstMsg"); // InstantMessagingAddress DistinguishedPropertySetType.Address/0x00008062/String // contact private flags createField("private", DistinguishedPropertySetType.Common, 0x8506, "private"); // True/False @@ -264,17 +265,16 @@ public class Field { } protected static void createField(String alias, DistinguishedPropertySetType propertySetType, int propertyTag, String responseAlias) { - String uriName; + String name; if (propertySetType == DistinguishedPropertySetType.Address) { // Address namespace expects integer names - uriName = String.valueOf(propertyTag); + name = String.valueOf(propertyTag); } else { // Common namespace expects hex names - uriName = "0x" + toHexString(propertyTag); + name = "0x" + toHexString(propertyTag); } - String name = "_x" + propertyTypeMap.get(PropertyType.String10) + "_x" + toHexString(propertyTag); Field field = new Field(alias, Namespace.getNamespace(SCHEMAS_MAPI_ID.getURI() + - '{' + distinguishedPropertySetMap.get(propertySetType) + "}/"), name, uriName, responseAlias, null); + '{' + distinguishedPropertySetMap.get(propertySetType) + "}/"), name, responseAlias, null); fieldMap.put(field.alias, field); } @@ -314,13 +314,9 @@ public class Field { } public Field(String alias, Namespace namespace, String name, String responseAlias, String cast) { - this(alias, namespace, name, name, responseAlias, cast); - } - - public Field(String alias, Namespace namespace, String name, String uriName, String responseAlias, String cast) { davPropertyName = DavPropertyName.create(name, namespace); this.alias = alias; - this.uri = namespace.getURI() + uriName; + this.uri = namespace.getURI() + name; if (responseAlias == null) { this.requestPropertyString = '"' + uri + '"'; this.responsePropertyName = davPropertyName; diff --git a/src/test/davmail/exchange/TestExchangeSessionContact.java b/src/test/davmail/exchange/TestExchangeSessionContact.java index e0c961f6..afc54c65 100644 --- a/src/test/davmail/exchange/TestExchangeSessionContact.java +++ b/src/test/davmail/exchange/TestExchangeSessionContact.java @@ -91,9 +91,14 @@ public class TestExchangeSessionContact extends AbstractExchangeSessionTestCase vCardWriter.appendProperty("CUSTOM3", "extensionattribute3"); vCardWriter.appendProperty("CUSTOM4", "extensionattribute4"); + vCardWriter.appendProperty("ROLE", "profession"); + vCardWriter.appendProperty("X-AIM", "im"); + //vCardWriter.appendProperty("BDAY", "bday"); + vCardWriter.endCard(); - session.createOrUpdateContact("testcontactfolder", itemName, vCardWriter.toString(), null, null); + ExchangeSession.ItemResult result = session.createOrUpdateContact("testcontactfolder", itemName, vCardWriter.toString(), null, null); + assertEquals(201, result.status); } @@ -143,5 +148,9 @@ public class TestExchangeSessionContact extends AbstractExchangeSessionTestCase assertEquals("extensionattribute2", contact.get("extensionattribute2")); assertEquals("extensionattribute3", contact.get("extensionattribute3")); assertEquals("extensionattribute4", contact.get("extensionattribute4")); + + assertEquals("profession", contact.get("profession")); + assertEquals("im", contact.get("im")); + //assertEquals("bday", contact.get("bday")); } }