Solved
Question Regarding Session in Event Listener
Hi All,
I have a question regarding event listener. We have a event listener which listen to delete node event and perform some activity say "send email".While code review i found this, although this code is working fine i am not convinced with the session being handled here :
@Activate protected void activate(ComponentContext context) { try{ final String path="/content/dam/"; Session session = repository.loginAdministrative(repository.getDefaultWorkspace()); observationManager = session.getWorkspace().getObservationManager(); observationManager.addEventListener(this, Event.PROPERTY_REMOVED, path, true, null, null, true); checkOutProperty = OsgiUtil.toString(context.getProperties() .get(ASSET_LOCK_PROPNAME_UPDATE), ASSET_LOCK_PROPNAME_DEFAULT); if (session != null && session.isLive()) { session.save(); } } catch (RepositoryException e) { if(LOG.isErrorEnabled()){ LOG.error("Error Occured in activate method of Property Removed Listener class:" + e.getMessage()); } }catch (Exception e) { if(LOG.isErrorEnabled()){ LOG.error("Error Occured in activate method of Property Removed Listener class:"+e.getMessage()); } } } @Deactivate protected void deactivate(ComponentContext componentContext) { try { if (observationManager != null) { observationManager.removeEventListener(this); } } catch (RepositoryException e) { if(LOG.isErrorEnabled()){ LOG.error("Error Occured " + e); } } catch (Exception e) { if(LOG.isErrorEnabled()){ LOG.error(e.getMessage()); } } }Questions:
* Best practice would be to create session object private to this class and should be logout in deactivate method ?
* Once an event is added in Observation Manager...do we really need session object ?. I was expecting if we should logout from session there.
Regards,
D