]> git.argeo.org Git - lgpl/argeo-commons.git/blob - server/runtime/org.argeo.server.jcr/src/main/java/org/argeo/jcr/DefaultJcrListener.java
Improve webdav
[lgpl/argeo-commons.git] / server / runtime / org.argeo.server.jcr / src / main / java / org / argeo / jcr / DefaultJcrListener.java
1 package org.argeo.jcr;
2
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;
9
10 import org.apache.commons.logging.Log;
11 import org.apache.commons.logging.LogFactory;
12 import org.argeo.ArgeoException;
13
14 /** To be overridden */
15 public class DefaultJcrListener implements EventListener {
16 private final static Log log = LogFactory.getLog(DefaultJcrListener.class);
17 private Session session;
18 private String path = "/";
19 private Boolean deep = true;
20
21 public void start() {
22 try {
23 addEventListener(session().getWorkspace().getObservationManager());
24 if (log.isDebugEnabled())
25 log.debug("Registered JCR event listener on " + path);
26 } catch (Exception e) {
27 throw new ArgeoException("Cannot register event listener", e);
28 }
29 }
30
31 public void stop() {
32 try {
33 session().getWorkspace().getObservationManager()
34 .removeEventListener(this);
35 if (log.isDebugEnabled())
36 log.debug("Unregistered JCR event listener on " + path);
37 } catch (Exception e) {
38 throw new ArgeoException("Cannot unregister event listener", e);
39 }
40 }
41
42 /** Default is listen to all events */
43 protected Integer getEvents() {
44 return Event.NODE_ADDED | Event.NODE_REMOVED | Event.PROPERTY_ADDED
45 | Event.PROPERTY_CHANGED | Event.PROPERTY_REMOVED;
46 }
47
48 /** To be overidden */
49 public void onEvent(EventIterator events) {
50 while (events.hasNext()) {
51 Event event = events.nextEvent();
52 log.debug(event);
53 }
54 }
55
56 /** To be overidden */
57 protected void addEventListener(ObservationManager observationManager)
58 throws RepositoryException {
59 observationManager.addEventListener(this, getEvents(), path, deep,
60 null, null, false);
61 }
62
63 private Session session() {
64 return session;
65 }
66
67 public void setPath(String path) {
68 this.path = path;
69 }
70
71 public void setDeep(Boolean deep) {
72 this.deep = deep;
73 }
74
75 public void setSession(Session session) {
76 this.session = session;
77 }
78
79 }