2016-01-22 7 views
1

Система, над которой я работаю, использует библиотеку ical4j для синхронизации календарей Google с нашим встроенным календарем на некоторое время и отлично работает до пары недель назад, когда их календари остановились синхронизация. Быстрый взгляд в журналы показывает следующую трассировку стека:Ошибка в анализе Google icals с использованием библиотеки ical4j

=75213399 2016-01-15 14:37:33,574 [task-scheduler-5] INFO org.springframework.integration.mail.ImapMailReceiver - attempting to receive mail from folder [INBOX] 
=75214067 2016-01-15 14:37:34,242 [calendar-9] INFO com.starfish.batch.integration.GoogleCalendarParser - Using temp dir /var/log/starfish/starfish-batch-stage 
=75214070 2016-01-15 14:37:34,245 [calendar-9] ERROR com.starfish.batch.integration.GoogleCalendarParser - Exception getting user google cal for 4829on try number 2 trying again. 
net.fortuna.ical4j.data.ParserException: Error at line 841:Invalid parameter name: FILENAME 
    at net.fortuna.ical4j.data.CalendarParserImpl.parse(CalendarParserImpl.java:148) 
    at net.fortuna.ical4j.data.CalendarBuilder.build(CalendarBuilder.java:211) 
    at net.fortuna.ical4j.data.CalendarBuilder.build(CalendarBuilder.java:192) 
    at..... 

Я использовал онлайн скую инструмент для проверки (http://severinghaus.org/projects/icv/) на основе одной и той же библиотеки для проверки ошибок.

Часть ческих, которая производит исключение синтаксического анализа является (клиент информация опущена):

ATTACH;FILENAME=Reading Day Holiday Lunch 2015.docx:https://drive.google.co 
m/a/ZZZZ.edu/file/d/ZZZZZZZZZZZZZZZZZZZZZZZZ/view?usp=drive_web 

Наша система использует ical4j версии 1.0-RC3-SNAPSHOT.

Я исследовал, изменили ли Google изменения способа их создания, но не смогли ничего найти. Возможно, я искал не то место. Кто-нибудь столкнулся с этой проблемой, и если да, то что было сделано для ее устранения?

Кому-нибудь известно о любых изменениях, которые Google мог бы сделать, чтобы вызвать это исключение?

Может быть, имеет ли место привязанность пользователя какое-либо отношение?

ответ

3

По умолчанию ical4j строго придерживается установленного по умолчанию набора зарегистрированного свойства, определенного в RFC5545. Это означает, что любое свойство или параметр, не определенный в RFC5545, должен иметь префикс X-.

Конкретный параметр (FILENAME), с которым вы боретесь, был добавлен как часть https://tools.ietf.org/html/draft-daboo-caldav-attachments-03#section-4.2.

Чтобы преодолеть это, вы хотите установить

ical4j.parsing.relaxed = истинный

либо в ваших ical4j.properties (который сам должен быть в корне файла банку ical4j.jar) или как системное свойство.

Теперь, я не 100% уверен, что версия ical4j, что вы используете, включают правильное исправление для этого, так что вы также можете обновить до более поздней версии от https://github.com/ical4j/ical4j

+0

Спасибо! Это сработало для меня. – alexolivas