hsp wrote:
session.getWorkspace().getObservationManager().addEventListener(
ListenerNodeAddEscribaBase.getInstance(),
Event.NODE_ADDED,
"/",
true,
null,
new String[] {"nt:base"},
false
);
Node nodeGrupo = (Node)session.getItem("/");
nodeGrupo.addNode(nomeNode, "nt:folder");
session.save();
session.logout();
Events are delivered with an asynchronous background thread. This way
the internals of jackrabbit do not have to wait for listener
implementations to complete the commit of changes.
because your code logs out the session immediately after save() it may
happen that the notification of your listener does not happen within
that short period of time. As soon as a session is logged out all its
associated EventListeners are invalidated and are not notified
anymore. This is because the Event instances are bound to the
namespace mappings of the current session. Event.getPath() must return
the namespace prefixes according to the currently set mapping in the
Session. When the session is gone, Event.getPath() would not be able
to return any sensible value anymore.
I doubt there is a practical use case, which requires what you are
doing in your code.
If you really need such a functionality, which I doubt, you may write
an event listener that implements
org.apache.jackrabbit.core.observation.SynchronousEventListener
Implementing classes are guaranteed to get events before save() returns.
regards
marcel