четверг, 16 мая 2013 г.

Как реагировать на изменения моделей в Liferay 6.0.6

1. Нужно создать наследникака класса com.liferay.portal.model.BaseModelListener<{c указанием класса модели изменение которой нам интересно}>
методы interface ModelListener
onAfterAddAssociation
onAfterCreate
onAfterRemove
onAfterRemoveAssociation
onAfterUpdate
onBeforeAddAssociation
onBeforeCreate
onBeforeRemove
onBeforeRemoveAssociation
onBeforeUpdate

2. Зарегистрировать наш лисенер в portal-ext.properties
value.object.listener.{package.and.class.of.needed.model}
e.g.
value.object.listener.com.liferay.portlet.expando.model.ExpandoValue=com.correr.portal.liferay.model.ExpandoValueListener

ehcache-spring-annotations


Эта библиотека имеет смысл, когда есть готовый проект на Spring, и нам нужно привнести кеширование в его сервисы. Если мы специально добавляем в свой проект спринг, чтобы подвязать это к Ehcache, это путь вникуда, в таком случае нужно пользоваться апи эхкеша напрямую.

Чтобы эти аннотации работали, нужно:
1. Чтобы класс реализовывал какой-то интрефес, потому что для работы этой библиотеки на класс с кешируемыми методами нужно чтобы была возможность создавать прокси.
2. обязательно чтобы к желаемому кешируемому методу шло обращение не из самой инстанции, а снаружи, потому что создается прокси и только в этом случае можно получить кеш в ответ из желаемого метода.
3. Также важно чтобы классы аргуметов кешируемых методов реализовывали правильные  equals() and hashCode().