1 package org
.argeo
.server
.jcr
;
3 import javax
.jcr
.Repository
;
4 import javax
.jcr
.RepositoryException
;
5 import javax
.jcr
.Session
;
6 import javax
.jcr
.SimpleCredentials
;
7 import javax
.jcr
.observation
.Event
;
8 import javax
.jcr
.observation
.EventIterator
;
9 import javax
.jcr
.observation
.EventListener
;
10 import javax
.jcr
.observation
.ObservationManager
;
12 import org
.apache
.commons
.logging
.Log
;
13 import org
.apache
.commons
.logging
.LogFactory
;
14 import org
.argeo
.ArgeoException
;
16 /** To be overridden */
17 public class DefaultJcrListener
implements EventListener
{
18 private final static Log log
= LogFactory
.getLog(DefaultJcrListener
.class);
19 private Session session
;
20 private Repository repository
;
21 private String path
= "/";
22 private Boolean deep
= true;
23 private String username
= "demo";
24 private String password
= "demo";
28 addEventListener(session().getWorkspace().getObservationManager());
29 if (log
.isDebugEnabled())
30 log
.debug("Registered JCR event listener on " + path
);
31 } catch (Exception e
) {
32 throw new ArgeoException("Cannot register event listener", e
);
38 session().getWorkspace().getObservationManager()
39 .removeEventListener(this);
40 if (log
.isDebugEnabled())
41 log
.debug("Unregistered JCR event listener on " + path
);
42 } catch (Exception e
) {
43 throw new ArgeoException("Cannot unregister event listener", e
);
47 /** Default is listen to all events */
48 protected Integer
getEvents() {
49 return Event
.NODE_ADDED
| Event
.NODE_REMOVED
| Event
.PROPERTY_ADDED
50 | Event
.PROPERTY_CHANGED
| Event
.PROPERTY_REMOVED
;
53 /** To be overidden */
54 public void onEvent(EventIterator events
) {
55 while (events
.hasNext()) {
56 Event event
= events
.nextEvent();
61 /** To be overidden */
62 protected void addEventListener(ObservationManager observationManager
)
63 throws RepositoryException
{
64 observationManager
.addEventListener(this, getEvents(), path
, deep
,
68 protected Session
session() {
71 session
= repository
.login(new SimpleCredentials(username
,
72 password
.toCharArray()));
73 } catch (Exception e
) {
74 throw new ArgeoException("Cannot open session", e
);
79 public void setRepository(Repository repository
) {
80 this.repository
= repository
;
83 public void setUsername(String username
) {
84 this.username
= username
;
87 public void setPassword(String password
) {
88 this.password
= password
;
91 public void setPath(String path
) {
95 public void setDeep(Boolean deep
) {