aboutsummaryrefslogtreecommitdiffstats
path: root/src/net/java/sip/communicator/plugin/addrbook
diff options
context:
space:
mode:
authorhristoterezov <hristo@jitsi.org>2014-05-09 20:06:17 +0300
committerhristoterezov <hristo@jitsi.org>2014-05-09 20:06:17 +0300
commit295c67030ea7b94c86de7146da2b1442fc9dedc9 (patch)
tree095e3976544d809be3aec8e1dc87f05217d89ab6 /src/net/java/sip/communicator/plugin/addrbook
parent3064b44caec3ed1a68bbe3459c58c21861fd8ff1 (diff)
downloadjitsi-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')
-rw-r--r--src/net/java/sip/communicator/plugin/addrbook/msoutlook/MsOutlookAddrBookContactQuery.java30
-rw-r--r--src/net/java/sip/communicator/plugin/addrbook/msoutlook/calendar/CalendarServiceImpl.java23
-rw-r--r--src/net/java/sip/communicator/plugin/addrbook/msoutlook/calendar/RecurringPattern.java4
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;