diff options
author | hristoterezov <hristo@jitsi.org> | 2014-05-09 20:06:17 +0300 |
---|---|---|
committer | hristoterezov <hristo@jitsi.org> | 2014-05-09 20:06:17 +0300 |
commit | 295c67030ea7b94c86de7146da2b1442fc9dedc9 (patch) | |
tree | 095e3976544d809be3aec8e1dc87f05217d89ab6 /src/net/java/sip/communicator/plugin/addrbook | |
parent | 3064b44caec3ed1a68bbe3459c58c21861fd8ff1 (diff) | |
download | jitsi-295c67030ea7b94c86de7146da2b1442fc9dedc9.zip jitsi-295c67030ea7b94c86de7146da2b1442fc9dedc9.tar.gz jitsi-295c67030ea7b94c86de7146da2b1442fc9dedc9.tar.bz2 |
Fixes exception in the calendar service. Adds log messages for the outlook
contact source.
Diffstat (limited to 'src/net/java/sip/communicator/plugin/addrbook')
3 files changed, 45 insertions, 12 deletions
diff --git a/src/net/java/sip/communicator/plugin/addrbook/msoutlook/MsOutlookAddrBookContactQuery.java b/src/net/java/sip/communicator/plugin/addrbook/msoutlook/MsOutlookAddrBookContactQuery.java index ed3a22a..82fa241 100644 --- a/src/net/java/sip/communicator/plugin/addrbook/msoutlook/MsOutlookAddrBookContactQuery.java +++ b/src/net/java/sip/communicator/plugin/addrbook/msoutlook/MsOutlookAddrBookContactQuery.java @@ -859,7 +859,15 @@ public class MsOutlookAddrBookContactQuery catch(MsOutlookMAPIHResultException ex) { String hresult = ex.getHresultString(); - + + if (logger.isTraceEnabled()) + { + logger.trace( + MsOutlookAddrBookContactQuery.class.getSimpleName() + + "#onMailUser(String)", + ex); + } + if("MAPI_E_0x57".equals(hresult)) { if (!firstIMAPIPropGetPropFailureLogged) @@ -872,13 +880,7 @@ public class MsOutlookAddrBookContactQuery { throw ex; } - if (logger.isTraceEnabled()) - { - logger.trace( - MsOutlookAddrBookContactQuery.class.getSimpleName() - + "#onMailUser(String)", - ex); - } + return true; } @@ -891,13 +893,20 @@ public class MsOutlookAddrBookContactQuery } else { + logger.error("Wrong object types. We are canceling the query."); return false; } // If we have results from the Contacts folder(s), don't read from the // Address Book because there may be duplicates. if ((MAPI_MAILUSER == objType) && (mapiMessageCount != 0)) + { + if (logger.isTraceEnabled()) + { + logger.trace("Duplicate contacts. We are canceling the query."); + } return false; + } int propIndex = 0; boolean matches = false; @@ -973,6 +982,11 @@ public class MsOutlookAddrBookContactQuery addQueryResult(sourceContact); } + else + { + logger.error("Error creating the found contact. " + + "Contact details are empty."); + } } return (getStatus() == QUERY_IN_PROGRESS); } diff --git a/src/net/java/sip/communicator/plugin/addrbook/msoutlook/calendar/CalendarServiceImpl.java b/src/net/java/sip/communicator/plugin/addrbook/msoutlook/calendar/CalendarServiceImpl.java index 0460207..5741698 100644 --- a/src/net/java/sip/communicator/plugin/addrbook/msoutlook/calendar/CalendarServiceImpl.java +++ b/src/net/java/sip/communicator/plugin/addrbook/msoutlook/calendar/CalendarServiceImpl.java @@ -436,9 +436,19 @@ public class CalendarServiceImpl implements CalendarService { task = new CalendarItemTimerTask(status, startTime, endTime, id, executeNow, null); - RecurringPattern pattern - = new RecurringPattern(recurringData, task); - task.setPattern(pattern); + try + { + RecurringPattern pattern + = new RecurringPattern(recurringData, task); + task.setPattern(pattern); + } + catch(IndexOutOfBoundsException e) + { + logger.error( + "Error parsing reccuring pattern." + e.getMessage(),e); + logger.error("Reccuring data:\n" + bytesToHex(recurringData)); + return; + } } if(endTime.before(currentTime) || endTime.equals(currentTime)) @@ -458,6 +468,13 @@ public class CalendarServiceImpl implements CalendarService task.scheduleTasks(); } + private static String bytesToHex(byte[] bytes) { + StringBuilder sb = new StringBuilder(); + for(byte b: bytes) + sb.append(String.format("%02x", b & 0xff)); + return sb.toString(); + } + /** * Changes the value of the current status * @param state the new value. diff --git a/src/net/java/sip/communicator/plugin/addrbook/msoutlook/calendar/RecurringPattern.java b/src/net/java/sip/communicator/plugin/addrbook/msoutlook/calendar/RecurringPattern.java index e9c703e..4121e70 100644 --- a/src/net/java/sip/communicator/plugin/addrbook/msoutlook/calendar/RecurringPattern.java +++ b/src/net/java/sip/communicator/plugin/addrbook/msoutlook/calendar/RecurringPattern.java @@ -220,12 +220,14 @@ public class RecurringPattern * Parses the binary data that describes the recurrent pattern. * @param data the binary data. * @param sourceTask the calendar item. + * @throws IndexOutOfBoundsException if data can't be parsed. */ public RecurringPattern(byte[] data, CalendarItemTimerTask sourceTask) + throws IndexOutOfBoundsException { this.sourceTask = sourceTask; dataBuffer = ByteBuffer.wrap(data).order(ByteOrder.LITTLE_ENDIAN); - + int offset = 4; recurFrequency = dataBuffer.getShort(offset); offset += 2; |