使用EWS java api无法获得重复结束日期

时间:2012-06-26 04:33:34

标签: exchangewebservices recurrence

我希望使用EWS java api获得重复结束日期。

EWS java api支持方法,名为Recurrence.getEndDate()。

但它不适用于我的项目。

复发类有4个method(getStartDate, getEndDate, getNumberOfOccurences, getClass)

我可以获得开始和上课,但其他人无法获得。

任何人都会帮助我。

以下代码在我的项目中重复出现。感谢:)

PropertySet propSet = new PropertySet(TaskSchema.Recurrence);

Task task = Task.bind(service,new ItemId(task_id),propSet);

Recurrence rec = task.getRecurrence();

rec.getEndDate();

rec.getNumberOfOccurrences();

1 个答案:

答案 0 :(得分:2)

我最近遇到了这个问题,发现这是因为EWS Java API中存在错误。

修复

要修复该错误,您需要在EWS Java API 1.2中的两个位置更改源代码(更改在注释中):

EndDateRecurrenceRange.java(第63行)

protected void setupRecurrence(Recurrence recurrence) throws Exception {
    super.setupRecurrence(recurrence);
    this.endDate = recurrence.getEndDate(); // remove this line
    recurrence.setEndDate(this.endDate); // add this line
}

NumberedRecurrenceRange.java(第61行)

protected void setupRecurrence(Recurrence recurrence) throws Exception {
    super.setupRecurrence(recurrence);
    this.numberOfOccurrences = recurrence.getNumberOfOccurrences(); // remove this line
    recurrence.setNumberOfOccurrences(this.numberOfOccurrences); // add this line
}

解释

RecurrencePropertyDefinition是从EWS XML响应中解析重复的类。解析XML响应时,RecurrenceRange类(如上面列出的类)用于设置重复字段,指定重复何时结束(例如结束日期,出现次数,无结束)。这可以通过调用setupRecurrence()来完成。

不幸的是,在上面提到的两个地方,开发人员错误地将RecurrenceRange字段设置为 Recurrence字段,而不是相反。因此,返回的endDate对象中的numberOfOccurrencesRecurrence字段永远不会设置,因此始终为null