3 import javax
.jcr
.RepositoryException
;
4 import javax
.jcr
.Session
;
5 import javax
.jcr
.observation
.Event
;
6 import javax
.jcr
.observation
.EventIterator
;
7 import javax
.jcr
.observation
.EventListener
;
8 import javax
.jcr
.observation
.ObservationManager
;
10 import org
.argeo
.api
.cms
.CmsLog
;
12 /** To be overridden */
13 public class DefaultJcrListener
implements EventListener
{
14 private final static CmsLog log
= CmsLog
.getLog(DefaultJcrListener
.class);
15 private Session session
;
16 private String path
= "/";
17 private Boolean deep
= true;
21 addEventListener(session().getWorkspace().getObservationManager());
22 if (log
.isDebugEnabled())
23 log
.debug("Registered JCR event listener on " + path
);
24 } catch (RepositoryException e
) {
25 throw new JcrException("Cannot register event listener", e
);
31 session().getWorkspace().getObservationManager()
32 .removeEventListener(this);
33 if (log
.isDebugEnabled())
34 log
.debug("Unregistered JCR event listener on " + path
);
35 } catch (RepositoryException e
) {
36 throw new JcrException("Cannot unregister event listener", e
);
40 /** Default is listen to all events */
41 protected Integer
getEvents() {
42 return Event
.NODE_ADDED
| Event
.NODE_REMOVED
| Event
.PROPERTY_ADDED
43 | Event
.PROPERTY_CHANGED
| Event
.PROPERTY_REMOVED
;
46 /** To be overidden */
47 public void onEvent(EventIterator events
) {
48 while (events
.hasNext()) {
49 Event event
= events
.nextEvent();
54 /** To be overidden */
55 protected void addEventListener(ObservationManager observationManager
)
56 throws RepositoryException
{
57 observationManager
.addEventListener(this, getEvents(), path
, deep
,
61 private Session
session() {
65 public void setPath(String path
) {
69 public void setDeep(Boolean deep
) {
73 public void setSession(Session session
) {
74 this.session
= session
;