• Авторизация


Liferay 4.2.2 themes handling bug 11-07-2007 15:34 к комментариям - к полной версии - понравилось!



для версии 4.2.2 Liferay Portal зафиксирована не корректная работа с идентификаторами портальных тем, развернутых как внешние WAR-приложения с помощью механизма автоматического развертывания компонентов портала (тем, шаблонов расположения и портлетов).

проблема
ошибка заключается в возникновении java.lang.NullPointerException (далее NPE) при обращении к настройкам вида и поведения созданного комьюнити/группы/пользователя при установке темы, развернутой как внешнее WAR-приложение (далее Тема), в качестве темы используемой по умолчанию.
после исследования проблемы, определено, что источником ошибки является не корректная работа с идентификатором темы.
причины возникновения
для всех компонентов, развернутых с использованием механизма авто-развертывания, Liferay Portal генерирует сложные идентификаторы по шаблону <theme-id>_WAR_<web.xml_display_name>. к примеру если тема имеет theme-id=foo, определенный в liferay-look-and-feel.xml, и display-name=bar, определенный в web.xml, то конечный идентификатор Темы в Liferay Portal будет foo_WAR_bar.
стандартная документация, в частности статья, описывает изменение параметров, установленных по-умолчанию, с использованием идентификатора темы в том виде, в котором он определен в liferay-look-and-feel.xml (для примера приведенного выше -- foo). однако, API портала не обрабатывает идентификатор для Тем и использует его значение из portal(-ext).properties без изменений. таким образом, происходит попытка обращения к несуществующей Теме и возникает NPE.

решение
для решения данной проблемы необходимо определять идентификатор темы в portal(-ext).properties с учетом его автоматической модификации внутри портала. иными словами, значение параметра default.theme.id должно быть не theme_id, а <theme_id_WAR_<web.xml_display_name>. дла описанного выше примера соотвественно -- не default.theme.id=foo, а default.theme.id=foo_WAR_bar.
для использования произвольной Темы, в качестве темы по-умолчанию, будет полезна следующая инструкция:
1. развернуть Тему следуя стандартному процессу.
2. авторизоваться в Liferay Portal как пользователь с правами администратора и установить Тему в качестве темы любого доступного компьюнити.
3. открыть базу данных портала в любом SQL-клиенте.
4. выполнить select themeId from layoutset where groupId = (select groupId from group_ where name = ) >, где community_name - имя комьюнити, где использована Тема.
5. использовать выбранный идентификатор, как значение параметра default.theme.id

область распространения
проблема выявлена для версии портала 4.2.2 и не тестировалась на других версиях. не исключено исправление ошибки в старших и отсутствие в младших версиях.
для предустановленных тем портала стандартный механизм работает корректно.

ссылки
мой комментарий на форуме Liferay Portal(англ.)
вверх^ к полной версии понравилось! в evernote
Комментарии (1):


Комментарии (1): вверх^

Вы сейчас не можете прокомментировать это сообщение.

Дневник Liferay 4.2.2 themes handling bug | Cor_Win - Записки на полях | Лента друзей Cor_Win / Полная версия Добавить в друзья Страницы: раньше»