You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@continuum.apache.org by ev...@apache.org on 2005/11/09 13:30:58 UTC

svn commit: r332026 - in /maven/continuum/trunk: continuum-core/src/main/java/org/apache/maven/continuum/notification/mail/ continuum-notifiers/continuum-notifier-api/src/main/java/org/apache/maven/continuum/notification/ continuum-notifiers/continuum-...

Author: evenisse
Date: Wed Nov  9 04:30:31 2005
New Revision: 332026

URL: http://svn.apache.org/viewcvs?rev=332026&view=rev
Log:
o define build state in message to project state if build result doens't exist
o put shouldNotify method in AbstractContinuumNotifier

Modified:
    maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/notification/mail/MailContinuumNotifier.java
    maven/continuum/trunk/continuum-notifiers/continuum-notifier-api/src/main/java/org/apache/maven/continuum/notification/AbstractContinuumNotifier.java
    maven/continuum/trunk/continuum-notifiers/continuum-notifier-irc/src/main/java/org/apache/maven/continuum/notification/irc/IrcContinuumNotifier.java
    maven/continuum/trunk/continuum-notifiers/continuum-notifier-jabber/src/main/java/org/apache/maven/continuum/notification/jabber/JabberContinuumNotifier.java
    maven/continuum/trunk/continuum-notifiers/continuum-notifier-msn/src/main/java/org/apache/maven/continuum/notification/msn/MsnContinuumNotifier.java

Modified: maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/notification/mail/MailContinuumNotifier.java
URL: http://svn.apache.org/viewcvs/maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/notification/mail/MailContinuumNotifier.java?rev=332026&r1=332025&r2=332026&view=diff
==============================================================================
--- maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/notification/mail/MailContinuumNotifier.java (original)
+++ maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/notification/mail/MailContinuumNotifier.java Wed Nov  9 04:30:31 2005
@@ -317,7 +317,7 @@
 
     private String generateSubject( Project project, BuildResult build )
     {
-        int state = -1;
+        int state = project.getState();
 
         if ( build != null )
         {
@@ -427,39 +427,6 @@
         }
 
         return address;
-    }
-
-    private boolean shouldNotify( BuildResult build, BuildResult previousBuild )
-    {
-        if ( build == null )
-        {
-            return true;
-        }
-
-        // Always send if the project failed
-        if ( build.getState() == ContinuumProjectState.FAILED || build.getState() == ContinuumProjectState.ERROR )
-        {
-            return true;
-        }
-
-        // Send if this is the first build
-        if ( previousBuild == null )
-        {
-            return true;
-        }
-
-        // Send if the state has changed
-        getLogger().info(
-            "Current build state: " + build.getState() + ", previous build state: " + previousBuild.getState() );
-
-        if ( build.getState() != previousBuild.getState() )
-        {
-            return true;
-        }
-
-        getLogger().info( "Same state, not sending mail." );
-
-        return false;
     }
 
     private BuildResult getPreviousBuild( Project project, BuildResult currentBuild )

Modified: maven/continuum/trunk/continuum-notifiers/continuum-notifier-api/src/main/java/org/apache/maven/continuum/notification/AbstractContinuumNotifier.java
URL: http://svn.apache.org/viewcvs/maven/continuum/trunk/continuum-notifiers/continuum-notifier-api/src/main/java/org/apache/maven/continuum/notification/AbstractContinuumNotifier.java?rev=332026&r1=332025&r2=332026&view=diff
==============================================================================
--- maven/continuum/trunk/continuum-notifiers/continuum-notifier-api/src/main/java/org/apache/maven/continuum/notification/AbstractContinuumNotifier.java (original)
+++ maven/continuum/trunk/continuum-notifiers/continuum-notifier-api/src/main/java/org/apache/maven/continuum/notification/AbstractContinuumNotifier.java Wed Nov  9 04:30:31 2005
@@ -21,6 +21,7 @@
 import org.apache.maven.continuum.configuration.ConfigurationService;
 import org.apache.maven.continuum.model.project.BuildResult;
 import org.apache.maven.continuum.model.project.Project;
+import org.apache.maven.continuum.project.ContinuumProjectState;
 import org.codehaus.plexus.notification.notifier.AbstractNotifier;
 
 public abstract class AbstractContinuumNotifier
@@ -59,5 +60,38 @@
         {
             throw new ContinuumException( "Can't obtain the base url from configuration.", e );
         }
+    }
+
+    public boolean shouldNotify( BuildResult build, BuildResult previousBuild )
+    {
+        if ( build == null )
+        {
+            return true;
+        }
+
+        // Always send if the project failed
+        if ( build.getState() == ContinuumProjectState.FAILED || build.getState() == ContinuumProjectState.ERROR )
+        {
+            return true;
+        }
+
+        // Send if this is the first build
+        if ( previousBuild == null )
+        {
+            return true;
+        }
+
+        // Send if the state has changed
+        getLogger().info(
+            "Current build state: " + build.getState() + ", previous build state: " + previousBuild.getState() );
+
+        if ( build.getState() != previousBuild.getState() )
+        {
+            return true;
+        }
+
+        getLogger().info( "Same state, not sending message." );
+
+        return false;
     }
 }

Modified: maven/continuum/trunk/continuum-notifiers/continuum-notifier-irc/src/main/java/org/apache/maven/continuum/notification/irc/IrcContinuumNotifier.java
URL: http://svn.apache.org/viewcvs/maven/continuum/trunk/continuum-notifiers/continuum-notifier-irc/src/main/java/org/apache/maven/continuum/notification/irc/IrcContinuumNotifier.java?rev=332026&r1=332025&r2=332026&view=diff
==============================================================================
--- maven/continuum/trunk/continuum-notifiers/continuum-notifier-irc/src/main/java/org/apache/maven/continuum/notification/irc/IrcContinuumNotifier.java (original)
+++ maven/continuum/trunk/continuum-notifiers/continuum-notifier-irc/src/main/java/org/apache/maven/continuum/notification/irc/IrcContinuumNotifier.java Wed Nov  9 04:30:31 2005
@@ -185,7 +185,7 @@
     private String generateMessage( Project project, BuildResult build )
         throws ContinuumException
     {
-        int state = -1;
+        int state = project.getState();
 
         if ( build != null )
         {
@@ -214,39 +214,6 @@
         }
 
         return message + " " + getReportUrl( project, build, configurationService );
-    }
-
-    private boolean shouldNotify( BuildResult build, BuildResult previousBuild )
-    {
-        if ( build == null )
-        {
-            return true;
-        }
-
-        // Always send if the project failed
-        if ( build.getState() == ContinuumProjectState.FAILED || build.getState() == ContinuumProjectState.ERROR )
-        {
-            return true;
-        }
-
-        // Send if this is the first build
-        if ( previousBuild == null )
-        {
-            return true;
-        }
-
-        // Send if the state has changed
-        getLogger().info(
-            "Current build state: " + build.getState() + ", previous build state: " + previousBuild.getState() );
-
-        if ( build.getState() != previousBuild.getState() )
-        {
-            return true;
-        }
-
-        getLogger().info( "Same state, not sending message." );
-
-        return false;
     }
 
     private BuildResult getPreviousBuild( Project project, BuildResult currentBuild )

Modified: maven/continuum/trunk/continuum-notifiers/continuum-notifier-jabber/src/main/java/org/apache/maven/continuum/notification/jabber/JabberContinuumNotifier.java
URL: http://svn.apache.org/viewcvs/maven/continuum/trunk/continuum-notifiers/continuum-notifier-jabber/src/main/java/org/apache/maven/continuum/notification/jabber/JabberContinuumNotifier.java?rev=332026&r1=332025&r2=332026&view=diff
==============================================================================
--- maven/continuum/trunk/continuum-notifiers/continuum-notifier-jabber/src/main/java/org/apache/maven/continuum/notification/jabber/JabberContinuumNotifier.java (original)
+++ maven/continuum/trunk/continuum-notifiers/continuum-notifier-jabber/src/main/java/org/apache/maven/continuum/notification/jabber/JabberContinuumNotifier.java Wed Nov  9 04:30:31 2005
@@ -23,11 +23,14 @@
 import org.apache.maven.continuum.notification.AbstractContinuumNotifier;
 import org.apache.maven.continuum.notification.ContinuumNotificationDispatcher;
 import org.apache.maven.continuum.project.ContinuumProjectState;
+import org.apache.maven.continuum.store.ContinuumStore;
+import org.apache.maven.continuum.store.ContinuumStoreException;
 import org.codehaus.plexus.jabber.JabberClient;
 import org.codehaus.plexus.jabber.JabberClientException;
 import org.codehaus.plexus.notification.NotificationException;
 
 import java.util.Iterator;
+import java.util.List;
 import java.util.Map;
 import java.util.Properties;
 import java.util.Set;
@@ -53,6 +56,11 @@
      */
     private ConfigurationService configurationService;
 
+    /**
+     * @plexus.configuration
+     */
+    private ContinuumStore store;
+
     // ----------------------------------------------------------------------
     // Configuration
     // ----------------------------------------------------------------------
@@ -126,7 +134,7 @@
     private String generateMessage( Project project, BuildResult build )
         throws ContinuumException
     {
-        int state = -1;
+        int state = project.getState();
 
         if ( build != null )
         {
@@ -162,6 +170,17 @@
     {
         String message;
 
+        // ----------------------------------------------------------------------
+        // Check if the mail should be sent at all
+        // ----------------------------------------------------------------------
+
+        BuildResult previousBuild = getPreviousBuild( project, build );
+
+        if ( !shouldNotify( build, previousBuild ) )
+        {
+            return;
+        }
+
         try
         {
             message = generateMessage( project, build );
@@ -218,6 +237,39 @@
 
             }
         }
+    }
+
+    private BuildResult getPreviousBuild( Project project, BuildResult currentBuild )
+        throws NotificationException
+    {
+        try
+        {
+            // TODO: prefer to remove this and get them up front
+            if ( project.getId() > 0 )
+            {
+                project = store.getProjectWithBuilds( project.getId() );
+            }
+        }
+        catch ( ContinuumStoreException e )
+        {
+            throw new NotificationException( "Unable to obtain project builds", e );
+        }
+        List builds = project.getBuildResults();
+
+        if ( builds.size() < 2 )
+        {
+            return null;
+        }
+
+        BuildResult build = (BuildResult) builds.get( builds.size() - 1 );
+
+        if ( currentBuild != null && build.getId() != currentBuild.getId() )
+        {
+            throw new NotificationException( "INTERNAL ERROR: The current build wasn't the first in the build list. " +
+                "Current build: '" + currentBuild.getId() + "', " + "first build: '" + build.getId() + "'." );
+        }
+
+        return (BuildResult) builds.get( builds.size() - 2 );
     }
 
     public void sendNotification( String arg0, Set arg1, Properties arg2 )

Modified: maven/continuum/trunk/continuum-notifiers/continuum-notifier-msn/src/main/java/org/apache/maven/continuum/notification/msn/MsnContinuumNotifier.java
URL: http://svn.apache.org/viewcvs/maven/continuum/trunk/continuum-notifiers/continuum-notifier-msn/src/main/java/org/apache/maven/continuum/notification/msn/MsnContinuumNotifier.java?rev=332026&r1=332025&r2=332026&view=diff
==============================================================================
--- maven/continuum/trunk/continuum-notifiers/continuum-notifier-msn/src/main/java/org/apache/maven/continuum/notification/msn/MsnContinuumNotifier.java (original)
+++ maven/continuum/trunk/continuum-notifiers/continuum-notifier-msn/src/main/java/org/apache/maven/continuum/notification/msn/MsnContinuumNotifier.java Wed Nov  9 04:30:31 2005
@@ -23,11 +23,14 @@
 import org.apache.maven.continuum.notification.AbstractContinuumNotifier;
 import org.apache.maven.continuum.notification.ContinuumNotificationDispatcher;
 import org.apache.maven.continuum.project.ContinuumProjectState;
+import org.apache.maven.continuum.store.ContinuumStore;
+import org.apache.maven.continuum.store.ContinuumStoreException;
 import org.codehaus.plexus.msn.MsnClient;
 import org.codehaus.plexus.msn.MsnException;
 import org.codehaus.plexus.notification.NotificationException;
 
 import java.util.Iterator;
+import java.util.List;
 import java.util.Map;
 import java.util.Properties;
 import java.util.Set;
@@ -53,6 +56,11 @@
      */
     private ConfigurationService configurationService;
 
+    /**
+     * @plexus.configuration
+     */
+    private ContinuumStore store;
+
     // ----------------------------------------------------------------------
     // Configuration
     // ----------------------------------------------------------------------
@@ -110,7 +118,12 @@
     private String generateMessage( Project project, BuildResult build )
         throws ContinuumException
     {
-        int state = build.getState();
+        int state = project.getState();
+
+        if ( build != null )
+        {
+            state = build.getState();
+        }
 
         String message;
 
@@ -141,6 +154,17 @@
     {
         String message;
 
+        // ----------------------------------------------------------------------
+        // Check if the message should be sent at all
+        // ----------------------------------------------------------------------
+
+        BuildResult previousBuild = getPreviousBuild( project, build );
+
+        if ( !shouldNotify( build, previousBuild ) )
+        {
+            return;
+        }
+
         try
         {
             message = generateMessage( project, build );
@@ -180,6 +204,39 @@
 
             }
         }
+    }
+
+    private BuildResult getPreviousBuild( Project project, BuildResult currentBuild )
+        throws NotificationException
+    {
+        try
+        {
+            // TODO: prefer to remove this and get them up front
+            if ( project.getId() > 0 )
+            {
+                project = store.getProjectWithBuilds( project.getId() );
+            }
+        }
+        catch ( ContinuumStoreException e )
+        {
+            throw new NotificationException( "Unable to obtain project builds", e );
+        }
+        List builds = project.getBuildResults();
+
+        if ( builds.size() < 2 )
+        {
+            return null;
+        }
+
+        BuildResult build = (BuildResult) builds.get( builds.size() - 1 );
+
+        if ( currentBuild != null && build.getId() != currentBuild.getId() )
+        {
+            throw new NotificationException( "INTERNAL ERROR: The current build wasn't the first in the build list. " +
+                "Current build: '" + currentBuild.getId() + "', " + "first build: '" + build.getId() + "'." );
+        }
+
+        return (BuildResult) builds.get( builds.size() - 2 );
     }
 
     /**