Done.

Vincent Massol wrote:
> Hi Sergiu,
> 
> First let me say this is cool! :)
> Some minor comments below.
> 
> On Mar 4, 2008, at 10:55 PM, sdumitriu (SVN) wrote:
> 
>> Author: sdumitriu
>> Date: 2008-03-04 22:55:30 +0100 (Tue, 04 Mar 2008)
>> New Revision: 8200
>>
>> Modified:
>>  xwiki-platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/ 
>> XWiki.java
>>  xwiki-platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/ 
>> web/XWikiAction.java
>> Log:
>> XWIKI-1522: Rewrite the notification mechanism
>> Notifications are sent
>>
>>
>> Modified: xwiki-platform/core/trunk/xwiki-core/src/main/java/com/xpn/ 
>> xwiki/XWiki.java
>> ===================================================================
>> --- xwiki-platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/ 
>> XWiki.java   2008-03-04 18:33:04 UTC (rev 8199)
>> +++ xwiki-platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/ 
>> XWiki.java   2008-03-04 21:55:30 UTC (rev 8200)
>> @@ -76,6 +76,11 @@
>> import org.exoplatform.container.RootContainer;
>> import org.hibernate.HibernateException;
>> import org.securityfilter.filter.URLPatternMatcher;
>> +import org.xwiki.observation.ObservationManager;
>> +import org.xwiki.observation.event.ActionExecutionEvent;
>> +import org.xwiki.observation.event.DocumentDeleteEvent;
>> +import org.xwiki.observation.event.DocumentSaveEvent;
>> +import org.xwiki.observation.event.DocumentUpdateEvent;
>>
>> import com.xpn.xwiki.api.Api;
>> import com.xpn.xwiki.api.Document;
>> @@ -1070,14 +1075,37 @@
>>            XWikiDocument originalDocument = doc.getOriginalDocument();
>>
>>            // Notify listeners about the document change
>> -            getNotificationManager().preverify(doc, originalDocument,
>> -                XWikiDocChangeNotificationInterface.EVENT_CHANGE,  
>> context);
>> +            if (originalDocument == null ||  
>> originalDocument.isNew()) {
>> +                getNotificationManager().preverify(doc,  
>> originalDocument,
>> +                    XWikiDocChangeNotificationInterface.EVENT_NEW,  
>> context);
>> +            } else {
>> +                getNotificationManager().preverify(doc,  
>> originalDocument,
>> +                     
>> XWikiDocChangeNotificationInterface.EVENT_CHANGE, context);
>> +            }
>>
>>            getStore().saveXWikiDoc(doc, context);
>>
>> -            // Notify listeners about the document change
>> -            getNotificationManager().verify(doc, originalDocument,
>> -                XWikiDocChangeNotificationInterface.EVENT_CHANGE,  
>> context);
>> +            try {
>> +                ObservationManager om =
>> +                    (ObservationManager)  
>> Utils.getComponent(ObservationManager.ROLE, null,
>> +                        context);
>> +                // Notify listeners about the document change
>> +                if (originalDocument == null ||  
>> originalDocument.isNew()) {
>> +                    getNotificationManager().verify(doc,  
>> originalDocument,
>> +                         
>> XWikiDocChangeNotificationInterface.EVENT_NEW, context);
>> +                    if (om != null) {
>> +                        om.notify(new  
>> DocumentSaveEvent(doc.getFullName()), doc, context);
>> +                    }
> 
> It seems you're using both notification mechanisms, which is fine but  
> I think this warrants some javadoc explanations.
> 
>> +                } else {
>> +                    getNotificationManager().verify(doc,  
>> originalDocument,
>> +                         
>> XWikiDocChangeNotificationInterface.EVENT_CHANGE, context);
>> +                    if (om != null) {
>> +                        om.notify(new  
>> DocumentUpdateEvent(doc.getFullName()), doc, context);
>> +                    }
>> +                }
>> +            } catch (Exception ex) {
>> +                LOG.warn("Failed to send document notifications",  
>> ex);
> 
> Our rule is: no stack trace printing for warnings. Only for errors. I  
> would consider this an error. Also I would put more information in the  
> text like for what document it failed.
> 
>> +            }
>>        } finally {
>>            if ((server != null) && (database != null)) {
>>                context.setDatabase(database);
>> @@ -3406,8 +3434,16 @@
>>                true);
>>        }
>>        getStore().deleteXWikiDoc(doc, context);
>> -        getNotificationManager().verify(new  
>> XWikiDocument(doc.getSpace(), doc.getName()), doc,
>> -            XWikiDocChangeNotificationInterface.EVENT_CHANGE,  
>> context);
>> +        try {
>> +            getNotificationManager().verify(new  
>> XWikiDocument(doc.getSpace(), doc.getName()), doc,
>> +                XWikiDocChangeNotificationInterface.EVENT_DELETE,  
>> context);
>> +            ObservationManager om =
>> +                (ObservationManager)  
>> Utils.getComponent(ObservationManager.ROLE, null,
>> +                    context);
>> +            om.notify(new DocumentDeleteEvent(doc.getFullName()),  
>> doc, context);
>> +        } catch (Exception ex) {
>> +            LOG.warn("Failed to send document notifications", ex);
>> +        }
> 
> Same comments here.
> 
>>    }
>>
>>    public String getDatabase()
>>
>> Modified: xwiki-platform/core/trunk/xwiki-core/src/main/java/com/xpn/ 
>> xwiki/web/XWikiAction.java
>> ===================================================================
>> --- xwiki-platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/ 
>> web/XWikiAction.java 2008-03-04 18:33:04 UTC (rev 8199)
>> +++ xwiki-platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/ 
>> web/XWikiAction.java 2008-03-04 21:55:30 UTC (rev 8200)
>> @@ -35,6 +35,8 @@
>> import org.apache.struts.action.ActionForward;
>> import org.apache.struts.action.ActionMapping;
>> import org.apache.velocity.VelocityContext;
>> +import org.xwiki.observation.ObservationManager;
>> +import org.xwiki.observation.event.ActionExecutionEvent;
>>
>> import com.xpn.xwiki.XWiki;
>> import com.xpn.xwiki.XWikiContext;
>> @@ -284,6 +286,14 @@
>>                } catch (Throwable e) {
>>                    e.printStackTrace();
>>                }
>> +                try {
>> +                    ObservationManager om =
>> +                        (ObservationManager)  
>> Utils.getComponent(ObservationManager.ROLE, null,
>> +                            context);
>> +                    om.notify(new  
>> ActionExecutionEvent(mapping.getName()), context.getDoc(), context);
>> +                } catch (Throwable ex) {
>> +                    LOG.warn("Cannot send notifications", ex);
> 
> Same here too.
> 
>> +                }
>>
>>                if (monitor != null) {
>>                    monitor.endTimer("notify");
> 
> Thanks
> -Vincent

-- 
Sergiu Dumitriu
http://purl.org/net/sergiu/
_______________________________________________
devs mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/devs

Reply via email to