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 2006/12/13 10:23:29 UTC

svn commit: r486556 - in /maven/continuum/trunk/continuum-notifiers: ./ continuum-notifier-wagon/ continuum-notifier-wagon/src/ continuum-notifier-wagon/src/main/ continuum-notifier-wagon/src/main/java/ continuum-notifier-wagon/src/main/java/org/ conti...

Author: evenisse
Date: Wed Dec 13 01:23:28 2006
New Revision: 486556

URL: http://svn.apache.org/viewvc?view=rev&rev=486556
Log:
[CONTINUUM-1052] Add a new notifier that will deploy the build result to a given url.
Submitted by: Henry S. Isidro

Added:
    maven/continuum/trunk/continuum-notifiers/continuum-notifier-wagon/   (with props)
    maven/continuum/trunk/continuum-notifiers/continuum-notifier-wagon/pom.xml   (with props)
    maven/continuum/trunk/continuum-notifiers/continuum-notifier-wagon/src/
    maven/continuum/trunk/continuum-notifiers/continuum-notifier-wagon/src/main/
    maven/continuum/trunk/continuum-notifiers/continuum-notifier-wagon/src/main/java/
    maven/continuum/trunk/continuum-notifiers/continuum-notifier-wagon/src/main/java/org/
    maven/continuum/trunk/continuum-notifiers/continuum-notifier-wagon/src/main/java/org/apache/
    maven/continuum/trunk/continuum-notifiers/continuum-notifier-wagon/src/main/java/org/apache/maven/
    maven/continuum/trunk/continuum-notifiers/continuum-notifier-wagon/src/main/java/org/apache/maven/continuum/
    maven/continuum/trunk/continuum-notifiers/continuum-notifier-wagon/src/main/java/org/apache/maven/continuum/notification/
    maven/continuum/trunk/continuum-notifiers/continuum-notifier-wagon/src/main/java/org/apache/maven/continuum/notification/wagon/
    maven/continuum/trunk/continuum-notifiers/continuum-notifier-wagon/src/main/java/org/apache/maven/continuum/notification/wagon/WagonContinuumNotifier.java   (with props)
    maven/continuum/trunk/continuum-notifiers/continuum-notifier-wagon/src/main/resources/
    maven/continuum/trunk/continuum-notifiers/continuum-notifier-wagon/src/main/resources/META-INF/
    maven/continuum/trunk/continuum-notifiers/continuum-notifier-wagon/src/main/resources/META-INF/plexus/
    maven/continuum/trunk/continuum-notifiers/continuum-notifier-wagon/src/main/resources/META-INF/plexus/components.xml   (with props)
    maven/continuum/trunk/continuum-notifiers/continuum-notifier-wagon/src/test/
    maven/continuum/trunk/continuum-notifiers/continuum-notifier-wagon/src/test/java/
    maven/continuum/trunk/continuum-notifiers/continuum-notifier-wagon/src/test/java/org/
    maven/continuum/trunk/continuum-notifiers/continuum-notifier-wagon/src/test/java/org/apache/
    maven/continuum/trunk/continuum-notifiers/continuum-notifier-wagon/src/test/java/org/apache/maven/
    maven/continuum/trunk/continuum-notifiers/continuum-notifier-wagon/src/test/java/org/apache/maven/continuum/
    maven/continuum/trunk/continuum-notifiers/continuum-notifier-wagon/src/test/java/org/apache/maven/continuum/wagon/
    maven/continuum/trunk/continuum-notifiers/continuum-notifier-wagon/src/test/java/org/apache/maven/continuum/wagon/Context.java   (with props)
    maven/continuum/trunk/continuum-notifiers/continuum-notifier-wagon/src/test/java/org/apache/maven/continuum/wagon/MockConfigurationService.java   (with props)
    maven/continuum/trunk/continuum-notifiers/continuum-notifier-wagon/src/test/java/org/apache/maven/continuum/wagon/Servlet.java   (with props)
    maven/continuum/trunk/continuum-notifiers/continuum-notifier-wagon/src/test/java/org/apache/maven/continuum/wagon/ServletServer.java   (with props)
    maven/continuum/trunk/continuum-notifiers/continuum-notifier-wagon/src/test/java/org/apache/maven/continuum/wagon/WagonContinuumNotifierTest.java   (with props)
    maven/continuum/trunk/continuum-notifiers/continuum-notifier-wagon/src/test/resources/
    maven/continuum/trunk/continuum-notifiers/continuum-notifier-wagon/src/test/resources/build-output-directory/
    maven/continuum/trunk/continuum-notifiers/continuum-notifier-wagon/src/test/resources/build-output-directory/2/
    maven/continuum/trunk/continuum-notifiers/continuum-notifier-wagon/src/test/resources/build-output-directory/2/1.log.txt   (with props)
    maven/continuum/trunk/continuum-notifiers/continuum-notifier-wagon/src/test/resources/org/
    maven/continuum/trunk/continuum-notifiers/continuum-notifier-wagon/src/test/resources/org/apache/
    maven/continuum/trunk/continuum-notifiers/continuum-notifier-wagon/src/test/resources/org/apache/maven/
    maven/continuum/trunk/continuum-notifiers/continuum-notifier-wagon/src/test/resources/org/apache/maven/continuum/
    maven/continuum/trunk/continuum-notifiers/continuum-notifier-wagon/src/test/resources/org/apache/maven/continuum/wagon/
    maven/continuum/trunk/continuum-notifiers/continuum-notifier-wagon/src/test/resources/org/apache/maven/continuum/wagon/WagonContinuumNotifierTest.xml   (with props)
    maven/continuum/trunk/continuum-notifiers/continuum-notifier-wagon/src/test/resources/working-directory/
    maven/continuum/trunk/continuum-notifiers/continuum-notifier-wagon/src/test/resources/working-directory/2/
    maven/continuum/trunk/continuum-notifiers/continuum-notifier-wagon/src/test/resources/working-directory/2/pom.xml   (with props)
Modified:
    maven/continuum/trunk/continuum-notifiers/pom.xml

Propchange: maven/continuum/trunk/continuum-notifiers/continuum-notifier-wagon/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Wed Dec 13 01:23:28 2006
@@ -0,0 +1,2 @@
+*.iml
+target

Added: maven/continuum/trunk/continuum-notifiers/continuum-notifier-wagon/pom.xml
URL: http://svn.apache.org/viewvc/maven/continuum/trunk/continuum-notifiers/continuum-notifier-wagon/pom.xml?view=auto&rev=486556
==============================================================================
--- maven/continuum/trunk/continuum-notifiers/continuum-notifier-wagon/pom.xml (added)
+++ maven/continuum/trunk/continuum-notifiers/continuum-notifier-wagon/pom.xml Wed Dec 13 01:23:28 2006
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <parent>
+    <artifactId>continuum-notifiers</artifactId>
+    <groupId>org.apache.maven.continuum</groupId>
+    <version>1.1-SNAPSHOT</version>
+  </parent>
+  <modelVersion>4.0.0</modelVersion>
+  <artifactId>continuum-notifier-wagon</artifactId>
+  <name>Continuum Wagon Notifier</name>
+  <dependencies>
+    <dependency>
+      <groupId>org.apache.maven</groupId>
+      <artifactId>maven-project</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.codehaus.plexus</groupId>
+      <artifactId>plexus-notification</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.continuum</groupId>
+      <artifactId>continuum-core</artifactId>
+      <version>${pom.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.continuum</groupId>
+      <artifactId>continuum-notifier-api</artifactId>
+      <version>${pom.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.wagon</groupId>
+      <artifactId>wagon-webdav</artifactId>
+      <version>1.0-alpha-6</version>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>it.could</groupId>
+      <artifactId>webdav</artifactId>
+      <version>0.4</version>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.mortbay.jetty</groupId>
+      <artifactId>jetty</artifactId>
+      <version>4.2.12</version>
+      <scope>test</scope>
+    </dependency>
+  </dependencies>
+</project>

Propchange: maven/continuum/trunk/continuum-notifiers/continuum-notifier-wagon/pom.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/continuum/trunk/continuum-notifiers/continuum-notifier-wagon/pom.xml
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/continuum/trunk/continuum-notifiers/continuum-notifier-wagon/src/main/java/org/apache/maven/continuum/notification/wagon/WagonContinuumNotifier.java
URL: http://svn.apache.org/viewvc/maven/continuum/trunk/continuum-notifiers/continuum-notifier-wagon/src/main/java/org/apache/maven/continuum/notification/wagon/WagonContinuumNotifier.java?view=auto&rev=486556
==============================================================================
--- maven/continuum/trunk/continuum-notifiers/continuum-notifier-wagon/src/main/java/org/apache/maven/continuum/notification/wagon/WagonContinuumNotifier.java (added)
+++ maven/continuum/trunk/continuum-notifiers/continuum-notifier-wagon/src/main/java/org/apache/maven/continuum/notification/wagon/WagonContinuumNotifier.java Wed Dec 13 01:23:28 2006
@@ -0,0 +1,346 @@
+package org.apache.maven.continuum.notification.wagon;
+
+/*
+ * Copyright 2001-2006 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import java.io.File;
+import java.io.IOException;
+import java.util.Map;
+import java.util.Properties;
+import java.util.Set;
+
+import org.apache.maven.artifact.manager.WagonManager;
+import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.artifact.repository.DefaultArtifactRepository;
+import org.apache.maven.artifact.repository.layout.DefaultRepositoryLayout;
+import org.apache.maven.continuum.ContinuumException;
+import org.apache.maven.continuum.configuration.ConfigurationException;
+import org.apache.maven.continuum.configuration.ConfigurationService;
+import org.apache.maven.continuum.model.project.BuildDefinition;
+import org.apache.maven.continuum.model.project.BuildResult;
+import org.apache.maven.continuum.model.project.Project;
+import org.apache.maven.continuum.model.project.ProjectNotifier;
+import org.apache.maven.continuum.notification.AbstractContinuumNotifier;
+import org.apache.maven.continuum.notification.ContinuumNotificationDispatcher;
+import org.apache.maven.model.DistributionManagement;
+import org.apache.maven.model.Site;
+import org.apache.maven.profiles.DefaultProfileManager;
+import org.apache.maven.profiles.ProfileManager;
+import org.apache.maven.project.MavenProject;
+import org.apache.maven.project.MavenProjectBuilder;
+import org.apache.maven.project.ProjectBuildingException;
+import org.apache.maven.settings.MavenSettingsBuilder;
+import org.apache.maven.settings.Settings;
+import org.apache.maven.wagon.CommandExecutionException;
+import org.apache.maven.wagon.CommandExecutor;
+import org.apache.maven.wagon.ConnectionException;
+import org.apache.maven.wagon.ResourceDoesNotExistException;
+import org.apache.maven.wagon.TransferFailedException;
+import org.apache.maven.wagon.UnsupportedProtocolException;
+import org.apache.maven.wagon.Wagon;
+import org.apache.maven.wagon.authentication.AuthenticationException;
+import org.apache.maven.wagon.authorization.AuthorizationException;
+import org.apache.maven.wagon.observers.Debug;
+import org.apache.maven.wagon.proxy.ProxyInfo;
+import org.apache.maven.wagon.repository.Repository;
+import org.codehaus.plexus.PlexusConstants;
+import org.codehaus.plexus.PlexusContainer;
+import org.codehaus.plexus.context.Context;
+import org.codehaus.plexus.context.ContextException;
+import org.codehaus.plexus.notification.NotificationException;
+import org.codehaus.plexus.personality.plexus.lifecycle.phase.Contextualizable;
+import org.codehaus.plexus.util.StringUtils;
+import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
+
+/**
+ * @author <a href="mailto:hisidro@exist.com">Henry Isidro</a>
+ * @author <a href="mailto:nramirez@exist.com">Napoleon Esmundo C. Ramirez</a>
+ */
+public class WagonContinuumNotifier
+    extends AbstractContinuumNotifier
+    implements Contextualizable
+{
+    public static final String KEY_BUILD_DEFINITION = "build-definition";
+
+    public static final String BUILD_OUTPUT_FILE_NAME = "buildresult.txt";
+    
+    private static final String CONTEXT_MAVEN_PROJECT = "CONTEXT_MAVEN_PROJECT";
+    
+    /**
+     * @plexus.requirement
+     */
+    private ConfigurationService configurationService;
+    
+    /**
+     * @plexus.requirement
+     */
+    private WagonManager wagonManager;
+    
+    /**
+     * @plexus.requirement
+     */
+    private MavenProjectBuilder projectBuilder;
+    
+    /**
+     * @plexus.requirement
+     */
+    private MavenSettingsBuilder settingsBuilder;
+    
+    /**
+     * @plexus.configuration
+     */
+    private String localRepository;
+    
+    
+    private Settings settings;
+    
+    private ProfileManager profileManager;
+    
+    private PlexusContainer container;
+    
+    
+    public void sendNotification( String source, Set recipients, Map configuration, Map context )
+        throws NotificationException
+    {
+        Project project = (Project) context.get( ContinuumNotificationDispatcher.CONTEXT_PROJECT );
+
+        ProjectNotifier projectNotifier =
+            (ProjectNotifier) context.get( ContinuumNotificationDispatcher.CONTEXT_PROJECT_NOTIFIER );
+
+        BuildResult build = (BuildResult) context.get( ContinuumNotificationDispatcher.CONTEXT_BUILD );
+        
+        BuildDefinition buildDefinition = (BuildDefinition) context.get( KEY_BUILD_DEFINITION );
+        
+        // ----------------------------------------------------------------------
+        // If there wasn't any building done, don't notify
+        // ----------------------------------------------------------------------
+        if ( build == null )
+        {
+            return;
+        }
+        
+        // ----------------------------------------------------------------------
+        // Deloy build result to given url 
+        // ----------------------------------------------------------------------
+        try
+        {
+            /*
+             * acquire the MavenProject associated to the Project in context
+             */
+            MavenProject mavenProject = getMavenProject( project, buildDefinition );
+            configuration.put( CONTEXT_MAVEN_PROJECT, mavenProject );
+            
+            if ( source.equals( ContinuumNotificationDispatcher.MESSAGE_ID_BUILD_COMPLETE ) )
+            {
+                buildComplete( project, projectNotifier, build, configuration );
+            }
+        }
+        catch ( ContinuumException e )
+        {
+            throw new NotificationException( "Error while notifiying.", e );
+        }
+    }
+    
+    private void buildComplete( Project project, ProjectNotifier projectNotifier, BuildResult build, Map configuration )
+        throws ContinuumException
+    {
+        MavenProject mavenProject = (MavenProject) configuration.get( CONTEXT_MAVEN_PROJECT );
+        
+        DistributionManagement distributionManagement = mavenProject.getDistributionManagement();
+        if ( distributionManagement == null )
+        {
+            throw new ContinuumException( "Missing distribution management information in the project" );
+        }
+
+        Site site = distributionManagement.getSite();
+        if ( site == null )
+        {
+            throw new ContinuumException( "Missing site information in the distribution management element in the project.." );
+        }
+
+        String url = site.getUrl();
+        String id = site.getId();
+        if ( url == null )
+        {
+            throw new ContinuumException( "The URL to the site is missing in the project descriptor." );
+        }
+
+        Repository repository = new Repository( id, url );
+
+        Wagon wagon;
+        try
+        {
+            wagon = wagonManager.getWagon( repository.getProtocol() );
+        }
+        catch ( UnsupportedProtocolException e )
+        {
+            throw new ContinuumException( "Unsupported protocol: '" + repository.getProtocol() + "'", e );
+        }
+
+        if ( !wagon.supportsDirectoryCopy() )
+        {
+            throw new ContinuumException( "Wagon protocol '" + repository.getProtocol() + "' doesn't support directory copying" );
+        }
+
+        try
+        {
+            if ( getLogger().isDebugEnabled() )
+            {
+                Debug debug = new Debug();
+
+                wagon.addSessionListener( debug );
+                wagon.addTransferListener( debug );
+            }
+
+            ProxyInfo proxyInfo = wagonManager.getProxy( repository.getProtocol() );
+            
+            if ( proxyInfo != null )
+            {
+                wagon.connect( repository, wagonManager.getAuthenticationInfo( id ), proxyInfo );
+            }
+            else
+            {
+                wagon.connect( repository, wagonManager.getAuthenticationInfo( id ) );
+            }
+            
+            File buildOutputFile = configurationService.getBuildOutputFile( build.getId(), build.getProject().getId() );
+
+            wagon.put( buildOutputFile, BUILD_OUTPUT_FILE_NAME );
+
+            // TODO: current wagon uses zip which will use the umask on remote host instead of honouring our settings
+            //  Force group writeable
+            if ( wagon instanceof CommandExecutor )
+            {
+                CommandExecutor exec = (CommandExecutor) wagon;
+                exec.executeCommand( "chmod -Rf g+w " + repository.getBasedir() );
+            }
+        }
+        catch ( ConfigurationException e )
+        {
+            throw new ContinuumException( "Error uploading build results to deployed site.", e );
+        }
+        catch ( ResourceDoesNotExistException e )
+        {
+            throw new ContinuumException( "Error uploading site", e );
+        }
+        catch ( TransferFailedException e )
+        {
+            throw new ContinuumException( "Error uploading site", e );
+        }
+        catch ( AuthorizationException e )
+        {
+            throw new ContinuumException( "Error uploading site", e );
+        }
+        catch ( ConnectionException e )
+        {
+            throw new ContinuumException( "Error uploading site", e );
+        }
+        catch ( AuthenticationException e )
+        {
+            throw new ContinuumException( "Error uploading site", e );
+        }
+        catch ( CommandExecutionException e )
+        {
+            throw new ContinuumException( "Error uploading site", e );
+        }
+        finally
+        {
+            try
+            {
+                wagon.disconnect();
+            }
+            catch ( ConnectionException e )
+            {
+                getLogger().error( "Error disconnecting wagon - ignored", e );
+            }
+        }
+    }
+    
+    public void sendNotification( String arg0, Set arg1, Properties arg2 )
+        throws NotificationException
+    {
+        throw new NotificationException( "Not implemented." );
+    }
+    
+    private MavenProject getMavenProject( Project project, BuildDefinition buildDefinition )
+        throws ContinuumException
+    {
+        File projectWorkingDir = new File( configurationService.getWorkingDirectory(), Integer.toString( project.getId() ) );
+        File pomFile = new File( projectWorkingDir, buildDefinition.getBuildFile() );
+        
+        MavenProject mavenProject = null;
+        
+        try
+        {
+            mavenProject = projectBuilder.build( pomFile, getLocalRepository(), getProfileManager( settings ) );
+        }
+        catch ( ProjectBuildingException e )
+        {
+            throw new ContinuumException( "Unable to acquire the MavenProject in " + pomFile.getAbsolutePath(), e);
+        }
+        
+        return mavenProject;
+    }
+    
+    private Settings getSettings()
+    {
+        if ( settings == null )
+        {
+            try
+            {
+                settings = settingsBuilder.buildSettings();
+            }
+            catch ( IOException e )
+            {
+                getLogger().error( "Failed to get Settings" , e);
+            }
+            catch ( XmlPullParserException e )
+            {
+                getLogger().error( "Failed to get Settings" , e);
+            }
+        }
+    
+        return settings;
+    }
+    
+    private ArtifactRepository getLocalRepository()
+    {
+        String repo = localRepository;
+        
+        if ( getSettings() != null && !StringUtils.isEmpty( getSettings().getLocalRepository() ) )
+        {
+            repo = getSettings().getLocalRepository();
+        }
+        
+        return new DefaultArtifactRepository( "local-repository", "file://" + repo, new DefaultRepositoryLayout() );
+    }
+
+    private ProfileManager getProfileManager( Settings settings )
+    {
+        if ( profileManager == null )
+        {
+            profileManager = new DefaultProfileManager( container, getSettings() );
+        }
+
+        return profileManager;
+    }
+    
+    public void contextualize( Context context )
+        throws ContextException
+    {
+        container = (PlexusContainer) context.get( PlexusConstants.PLEXUS_KEY );
+    }
+}

Propchange: maven/continuum/trunk/continuum-notifiers/continuum-notifier-wagon/src/main/java/org/apache/maven/continuum/notification/wagon/WagonContinuumNotifier.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/continuum/trunk/continuum-notifiers/continuum-notifier-wagon/src/main/java/org/apache/maven/continuum/notification/wagon/WagonContinuumNotifier.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/continuum/trunk/continuum-notifiers/continuum-notifier-wagon/src/main/resources/META-INF/plexus/components.xml
URL: http://svn.apache.org/viewvc/maven/continuum/trunk/continuum-notifiers/continuum-notifier-wagon/src/main/resources/META-INF/plexus/components.xml?view=auto&rev=486556
==============================================================================
--- maven/continuum/trunk/continuum-notifiers/continuum-notifier-wagon/src/main/resources/META-INF/plexus/components.xml (added)
+++ maven/continuum/trunk/continuum-notifiers/continuum-notifier-wagon/src/main/resources/META-INF/plexus/components.xml Wed Dec 13 01:23:28 2006
@@ -0,0 +1,4 @@
+<component-set>
+  <components>
+  </components>
+</component-set>
\ No newline at end of file

Propchange: maven/continuum/trunk/continuum-notifiers/continuum-notifier-wagon/src/main/resources/META-INF/plexus/components.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/continuum/trunk/continuum-notifiers/continuum-notifier-wagon/src/main/resources/META-INF/plexus/components.xml
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/continuum/trunk/continuum-notifiers/continuum-notifier-wagon/src/test/java/org/apache/maven/continuum/wagon/Context.java
URL: http://svn.apache.org/viewvc/maven/continuum/trunk/continuum-notifiers/continuum-notifier-wagon/src/test/java/org/apache/maven/continuum/wagon/Context.java?view=auto&rev=486556
==============================================================================
--- maven/continuum/trunk/continuum-notifiers/continuum-notifier-wagon/src/test/java/org/apache/maven/continuum/wagon/Context.java (added)
+++ maven/continuum/trunk/continuum-notifiers/continuum-notifier-wagon/src/test/java/org/apache/maven/continuum/wagon/Context.java Wed Dec 13 01:23:28 2006
@@ -0,0 +1,50 @@
+package org.apache.maven.continuum.wagon;
+
+/*
+ * Copyright 2001-2006 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import java.util.List;
+
+import org.apache.maven.wagon.authentication.AuthenticationInfo;
+
+/**
+ * Context
+ * 
+ * @author <a href="mailto:joakim@erdfelt.com">Joakim Erdfelt</a>
+ */
+public class Context
+{
+    private String id;
+
+    private AuthenticationInfo authenticationInfo;
+
+    private List servlets;
+
+    public String getId()
+    {
+        return id;
+    }
+
+    public AuthenticationInfo getAuthenticationInfo()
+    {
+        return authenticationInfo;
+    }
+
+    public List getServlets()
+    {
+        return servlets;
+    }
+}

Propchange: maven/continuum/trunk/continuum-notifiers/continuum-notifier-wagon/src/test/java/org/apache/maven/continuum/wagon/Context.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/continuum/trunk/continuum-notifiers/continuum-notifier-wagon/src/test/java/org/apache/maven/continuum/wagon/Context.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/continuum/trunk/continuum-notifiers/continuum-notifier-wagon/src/test/java/org/apache/maven/continuum/wagon/MockConfigurationService.java
URL: http://svn.apache.org/viewvc/maven/continuum/trunk/continuum-notifiers/continuum-notifier-wagon/src/test/java/org/apache/maven/continuum/wagon/MockConfigurationService.java?view=auto&rev=486556
==============================================================================
--- maven/continuum/trunk/continuum-notifiers/continuum-notifier-wagon/src/test/java/org/apache/maven/continuum/wagon/MockConfigurationService.java (added)
+++ maven/continuum/trunk/continuum-notifiers/continuum-notifier-wagon/src/test/java/org/apache/maven/continuum/wagon/MockConfigurationService.java Wed Dec 13 01:23:28 2006
@@ -0,0 +1,170 @@
+package org.apache.maven.continuum.wagon;
+
+/*
+ * Copyright 2001-2006 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import java.io.File;
+import java.util.Map;
+
+import org.apache.maven.continuum.configuration.ConfigurationException;
+import org.apache.maven.continuum.configuration.ConfigurationLoadingException;
+import org.apache.maven.continuum.configuration.ConfigurationService;
+import org.apache.maven.continuum.configuration.ConfigurationStoringException;
+
+/**
+ * Mock class for testing WagonContinuumNotifier's call to ConfigurationService.getBuildOutputFile()
+ * 
+ * @author <a href="mailto:nramirez@exist">Napoleon Esmundo C. Ramirez</a>
+ *
+ */
+public class MockConfigurationService implements ConfigurationService
+{
+    private String basedir;
+    
+    public MockConfigurationService()
+    {
+        basedir = System.getProperty( "basedir" );
+    }
+    
+    public File getBuildOutputDirectory()
+    {
+        return new File( basedir, "src/test/resources" + "/" + "build-output-directory" );
+    }
+    
+    public File getBuildOutputFile( int buildId, int projectId )
+        throws ConfigurationException
+    {
+        File dir = new File( getBuildOutputDirectory(), Integer.toString( projectId ) );
+        
+        if ( !dir.exists() && !dir.mkdirs() )
+        {
+            throw new ConfigurationException( "Could not make the build output directory: " + "'" + dir.getAbsolutePath() + "'." );
+        }
+        
+        return new File( dir, buildId + ".log.txt" );
+    }
+    
+    public File getWorkingDirectory()
+    {
+        return new File( basedir, "src/test/resources" + "/" + "working-directory" );
+    }
+
+    public File getApplicationHome()
+    {
+        return null;
+    }
+
+    public boolean isInitialized()
+    {
+        return false;
+    }
+
+    public void setInitialized( boolean initialized )
+    {
+    }
+
+    public String getUrl()
+    {
+        return null;
+    }
+
+    public void setUrl( String url )
+    {
+    }
+
+    public void setBuildOutputDirectory( File buildOutputDirectory )
+    {
+    }
+
+    public void setWorkingDirectory( File workingDirectory )
+    {
+    }
+
+    public File getDeploymentRepositoryDirectory()
+    {
+        return null;
+    }
+
+    public void setDeploymentRepositoryDirectory( File deploymentRepositoryDirectory )
+    {
+    }
+
+    public void setJdks( Map jdks )
+    {
+    }
+
+    public String getCompanyLogo()
+    {
+        return null;
+    }
+
+    public void setCompanyLogo( String companyLogoUrl )
+    {
+    }
+
+    public String getCompanyName()
+    {
+        return null;
+    }
+
+    public void setCompanyName( String companyName )
+    {
+    }
+
+    public String getCompanyUrl()
+    {
+        return null;
+    }
+
+    public void setCompanyUrl( String companyUrl )
+    {
+    }
+
+    public boolean isGuestAccountEnabled()
+    {
+        return false;
+    }
+
+    public void setGuestAccountEnabled( boolean enabled )
+    {
+    }
+
+    public String getBuildOutput( int buildId, int projectId )
+        throws ConfigurationException
+    {
+        return null;
+    }
+
+    public File getFile( String filename )
+    {
+        return null;
+    }
+
+    public boolean isLoaded()
+    {
+        return false;
+    }
+
+    public void load()
+        throws ConfigurationLoadingException
+    {
+    }
+
+    public void store()
+        throws ConfigurationStoringException
+    {
+    }
+}
\ No newline at end of file

Propchange: maven/continuum/trunk/continuum-notifiers/continuum-notifier-wagon/src/test/java/org/apache/maven/continuum/wagon/MockConfigurationService.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/continuum/trunk/continuum-notifiers/continuum-notifier-wagon/src/test/java/org/apache/maven/continuum/wagon/MockConfigurationService.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/continuum/trunk/continuum-notifiers/continuum-notifier-wagon/src/test/java/org/apache/maven/continuum/wagon/Servlet.java
URL: http://svn.apache.org/viewvc/maven/continuum/trunk/continuum-notifiers/continuum-notifier-wagon/src/test/java/org/apache/maven/continuum/wagon/Servlet.java?view=auto&rev=486556
==============================================================================
--- maven/continuum/trunk/continuum-notifiers/continuum-notifier-wagon/src/test/java/org/apache/maven/continuum/wagon/Servlet.java (added)
+++ maven/continuum/trunk/continuum-notifiers/continuum-notifier-wagon/src/test/java/org/apache/maven/continuum/wagon/Servlet.java Wed Dec 13 01:23:28 2006
@@ -0,0 +1,55 @@
+package org.apache.maven.continuum.wagon;
+
+/*
+ * Copyright 2001-2006 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import java.util.Properties;
+
+/**
+ * Servlet
+ * 
+ * @author <a href="mailto:joakim@erdfelt.com">Joakim Erdfelt</a>
+ */
+public class Servlet
+{
+    private String id;
+
+    private Properties parameters;
+
+    private String path;
+    
+    private String servlet;
+
+    public String getId()
+    {
+        return id;
+    }
+
+    public Properties getParameters()
+    {
+        return parameters;
+    }
+
+    public String getPath()
+    {
+        return path;
+    }
+
+    public String getServlet()
+    {
+        return servlet;
+    }
+}

Propchange: maven/continuum/trunk/continuum-notifiers/continuum-notifier-wagon/src/test/java/org/apache/maven/continuum/wagon/Servlet.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/continuum/trunk/continuum-notifiers/continuum-notifier-wagon/src/test/java/org/apache/maven/continuum/wagon/Servlet.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/continuum/trunk/continuum-notifiers/continuum-notifier-wagon/src/test/java/org/apache/maven/continuum/wagon/ServletServer.java
URL: http://svn.apache.org/viewvc/maven/continuum/trunk/continuum-notifiers/continuum-notifier-wagon/src/test/java/org/apache/maven/continuum/wagon/ServletServer.java?view=auto&rev=486556
==============================================================================
--- maven/continuum/trunk/continuum-notifiers/continuum-notifier-wagon/src/test/java/org/apache/maven/continuum/wagon/ServletServer.java (added)
+++ maven/continuum/trunk/continuum-notifiers/continuum-notifier-wagon/src/test/java/org/apache/maven/continuum/wagon/ServletServer.java Wed Dec 13 01:23:28 2006
@@ -0,0 +1,149 @@
+package org.apache.maven.continuum.wagon;
+
+/*
+ * Copyright 2001-2006 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+
+import org.apache.maven.wagon.authentication.AuthenticationInfo;
+import org.codehaus.plexus.personality.plexus.lifecycle.phase.Initializable;
+import org.codehaus.plexus.personality.plexus.lifecycle.phase.InitializationException;
+import org.codehaus.plexus.personality.plexus.lifecycle.phase.Startable;
+import org.codehaus.plexus.personality.plexus.lifecycle.phase.StartingException;
+import org.codehaus.plexus.personality.plexus.lifecycle.phase.StoppingException;
+import org.mortbay.http.BasicAuthenticator;
+import org.mortbay.http.HashUserRealm;
+import org.mortbay.http.SecurityConstraint;
+import org.mortbay.http.SocketListener;
+import org.mortbay.http.handler.SecurityHandler;
+import org.mortbay.jetty.Server;
+import org.mortbay.jetty.servlet.ServletHolder;
+import org.mortbay.jetty.servlet.ServletHttpContext;
+import org.mortbay.util.MultiException;
+
+/**
+ * Plexus Component to start a Jetty Server with servlet settings.
+ * 
+ * @author <a href="mailto:joakim@erdfelt.com">Joakim Erdfelt</a>
+ */
+public class ServletServer
+    implements Initializable, Startable
+{
+    public static final String ROLE = ServletServer.class.getName();
+    
+    private Server server;
+
+    private int port;
+
+    private List contexts;
+
+    public void initialize()
+        throws InitializationException
+    {
+        server = new Server();
+
+        SocketListener listener = new SocketListener();
+        listener.setPort( port );
+
+        server.addListener( listener );
+
+        if ( contexts != null )
+        {
+            try
+            {
+                Iterator itcontext = contexts.iterator();
+
+                while ( itcontext.hasNext() )
+                {
+                    Context wdc = (Context) itcontext.next();
+
+                    ServletHttpContext context = (ServletHttpContext) server.getContext( wdc.getId() );
+
+                    initContext( wdc, context );
+                }
+            }
+            catch ( Exception e )
+            {
+                throw new InitializationException( "Unable to initialize.", e );
+            }
+        }
+    }
+
+    private void initContext( Context wdc, ServletHttpContext context )
+        throws ClassNotFoundException, InstantiationException, IllegalAccessException
+    {
+        AuthenticationInfo authenticationInfo = wdc.getAuthenticationInfo();
+        if ( authenticationInfo != null )
+        {
+            HashUserRealm userRealm = new HashUserRealm( "basic" );
+            userRealm.put( authenticationInfo.getUserName(), authenticationInfo.getPassword() );
+            context.getHttpServer().addRealm( userRealm );
+
+            context.setAuthenticator( new BasicAuthenticator() );
+            context.addSecurityConstraint( "/*", new SecurityConstraint( "any", SecurityConstraint.ANY_ROLE ) );
+            context.addHandler( new SecurityHandler() );
+        }
+
+        Iterator itpaths = wdc.getServlets().iterator();
+        while ( itpaths.hasNext() )
+        {
+            Servlet servlet = (Servlet) itpaths.next();
+            initServlet( context, servlet );
+        }
+    }
+
+    private void initServlet( ServletHttpContext context, Servlet path )
+        throws ClassNotFoundException, InstantiationException, IllegalAccessException
+    {
+        ServletHolder servlet = context.addServlet( path.getId(), path.getPath(), path.getServlet() );
+
+        Iterator itparams = path.getParameters().entrySet().iterator();
+        while ( itparams.hasNext() )
+        {
+            Map.Entry entry = (Entry) itparams.next();
+            servlet.setInitParameter( (String) entry.getKey(), (String) entry.getValue() );
+        }
+    }
+
+    public void start()
+        throws StartingException
+    {
+        try
+        {
+            server.start();
+        }
+        catch ( MultiException e )
+        {
+            throw new StartingException( "Error starting the jetty webdav server: ", e );
+        }
+    }
+
+    public void stop()
+        throws StoppingException
+    {
+        try
+        {
+            server.stop();
+        }
+        catch ( InterruptedException e )
+        {
+            throw new StoppingException( "Error stopping the jetty webdav server: ", e );
+        }
+    }
+}

Propchange: maven/continuum/trunk/continuum-notifiers/continuum-notifier-wagon/src/test/java/org/apache/maven/continuum/wagon/ServletServer.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/continuum/trunk/continuum-notifiers/continuum-notifier-wagon/src/test/java/org/apache/maven/continuum/wagon/ServletServer.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/continuum/trunk/continuum-notifiers/continuum-notifier-wagon/src/test/java/org/apache/maven/continuum/wagon/WagonContinuumNotifierTest.java
URL: http://svn.apache.org/viewvc/maven/continuum/trunk/continuum-notifiers/continuum-notifier-wagon/src/test/java/org/apache/maven/continuum/wagon/WagonContinuumNotifierTest.java?view=auto&rev=486556
==============================================================================
--- maven/continuum/trunk/continuum-notifiers/continuum-notifier-wagon/src/test/java/org/apache/maven/continuum/wagon/WagonContinuumNotifierTest.java (added)
+++ maven/continuum/trunk/continuum-notifiers/continuum-notifier-wagon/src/test/java/org/apache/maven/continuum/wagon/WagonContinuumNotifierTest.java Wed Dec 13 01:23:28 2006
@@ -0,0 +1,99 @@
+package org.apache.maven.continuum.wagon;
+
+/*
+ * Copyright 2001-2006 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+
+import org.apache.maven.continuum.model.project.BuildDefinition;
+import org.apache.maven.continuum.model.project.BuildResult;
+import org.apache.maven.continuum.model.project.Project;
+import org.apache.maven.continuum.notification.ContinuumNotificationDispatcher;
+import org.apache.maven.continuum.notification.wagon.WagonContinuumNotifier;
+import org.apache.maven.continuum.project.ContinuumProjectState;
+import org.codehaus.plexus.PlexusTestCase;
+import org.codehaus.plexus.notification.notifier.Notifier;
+
+/**
+ * @author <a href="mailto:nramirez@exist">Napoleon Esmundo C. Ramirez</a>
+ */
+public class WagonContinuumNotifierTest
+    extends PlexusTestCase
+{
+    private ServletServer server;
+    
+    private Notifier notifier;
+    
+    private Project project;
+    
+    private BuildResult build;
+    
+    private BuildDefinition buildDefinition;
+    
+    private Map context;
+    
+    
+    public void setUp()
+        throws Exception
+    {
+        super.setUp();
+        
+        server = (ServletServer) lookup( ServletServer.ROLE );
+        notifier = (Notifier) lookup( Notifier.ROLE, "wagon" );
+        
+        project = new Project();
+        project.setId( 2 );
+        
+        build = new BuildResult();
+        build.setId( 1 );
+        build.setProject( project );
+        build.setStartTime( System.currentTimeMillis() );
+        build.setEndTime( System.currentTimeMillis() + 1234567 );
+        build.setState( ContinuumProjectState.OK );
+        build.setTrigger( ContinuumProjectState.TRIGGER_FORCED );
+        build.setExitCode( 0 );
+        
+        buildDefinition = new BuildDefinition();
+        buildDefinition.setBuildFile( "pom.xml" );
+        
+        context = new HashMap();
+        context.put( ContinuumNotificationDispatcher.CONTEXT_PROJECT, project );
+        context.put( ContinuumNotificationDispatcher.CONTEXT_BUILD, build );
+        context.put( WagonContinuumNotifier.KEY_BUILD_DEFINITION, buildDefinition );
+        
+        String basedir = System.getProperty( "basedir" );
+        if ( basedir == null )
+        {
+            throw new Exception( "basedir must be defined" );
+        }
+    }
+    
+    public void testSendNotification()
+        throws Exception
+    {
+        notifier.sendNotification( ContinuumNotificationDispatcher.MESSAGE_ID_BUILD_COMPLETE, new HashSet(), new HashMap(), context );
+    }
+    
+    protected void tearDown()
+        throws Exception
+    {
+        release( server );
+    }
+    
+    
+}

Propchange: maven/continuum/trunk/continuum-notifiers/continuum-notifier-wagon/src/test/java/org/apache/maven/continuum/wagon/WagonContinuumNotifierTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/continuum/trunk/continuum-notifiers/continuum-notifier-wagon/src/test/java/org/apache/maven/continuum/wagon/WagonContinuumNotifierTest.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/continuum/trunk/continuum-notifiers/continuum-notifier-wagon/src/test/resources/build-output-directory/2/1.log.txt
URL: http://svn.apache.org/viewvc/maven/continuum/trunk/continuum-notifiers/continuum-notifier-wagon/src/test/resources/build-output-directory/2/1.log.txt?view=auto&rev=486556
==============================================================================
--- maven/continuum/trunk/continuum-notifiers/continuum-notifier-wagon/src/test/resources/build-output-directory/2/1.log.txt (added)
+++ maven/continuum/trunk/continuum-notifiers/continuum-notifier-wagon/src/test/resources/build-output-directory/2/1.log.txt Wed Dec 13 01:23:28 2006
@@ -0,0 +1,2 @@
+This is a WagonContinuumNotifier test file expected to be deployed at the url specified in the distributionManagement.site 
+section of the pom.

Propchange: maven/continuum/trunk/continuum-notifiers/continuum-notifier-wagon/src/test/resources/build-output-directory/2/1.log.txt
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/continuum/trunk/continuum-notifiers/continuum-notifier-wagon/src/test/resources/build-output-directory/2/1.log.txt
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/continuum/trunk/continuum-notifiers/continuum-notifier-wagon/src/test/resources/org/apache/maven/continuum/wagon/WagonContinuumNotifierTest.xml
URL: http://svn.apache.org/viewvc/maven/continuum/trunk/continuum-notifiers/continuum-notifier-wagon/src/test/resources/org/apache/maven/continuum/wagon/WagonContinuumNotifierTest.xml?view=auto&rev=486556
==============================================================================
--- maven/continuum/trunk/continuum-notifiers/continuum-notifier-wagon/src/test/resources/org/apache/maven/continuum/wagon/WagonContinuumNotifierTest.xml (added)
+++ maven/continuum/trunk/continuum-notifiers/continuum-notifier-wagon/src/test/resources/org/apache/maven/continuum/wagon/WagonContinuumNotifierTest.xml Wed Dec 13 01:23:28 2006
@@ -0,0 +1,67 @@
+<plexus>
+  <components>
+    <component>
+      <role>org.apache.maven.continuum.wagon.ServletServer</role>
+      <implementation>org.apache.maven.continuum.wagon.ServletServer</implementation>
+      <configuration>
+        <port>10007</port>
+        <contexts>
+          <context>
+            <id>/dav</id>
+            <servlets>
+              <servlet>
+                <id>LOCALREPO</id>
+                <path>/*</path>
+                <servlet>it.could.webdav.DAVServlet</servlet>
+                <parameters>
+                  <property>
+                    <name>rootPath</name>
+                      <value>${basedir}/target</value>
+                  </property>
+                  <property>
+                    <name>xmlOnly</name>
+                    <value>false</value>
+                  </property>
+                </parameters>
+              </servlet>
+            </servlets>
+          </context>
+        </contexts>
+      </configuration>
+    </component>
+    
+    <component>
+      <role>org.codehaus.plexus.notification.notifier.Notifier</role>
+      <role-hint>wagon</role-hint>
+      <implementation>org.apache.maven.continuum.notification.wagon.WagonContinuumNotifier</implementation>
+      <requirements>
+        <requirement>
+          <role>org.apache.maven.continuum.configuration.ConfigurationService</role>
+        </requirement>
+        <requirement>
+          <role>org.apache.maven.artifact.manager.WagonManager</role>
+        </requirement>
+        <requirement>
+          <role>org.apache.maven.project.MavenProjectBuilder</role>
+        </requirement>
+        <requirement>
+          <role>org.apache.maven.settings.MavenSettingsBuilder</role>
+        </requirement>
+      </requirements>
+      <configuration>
+        <localRepository>~/.m2/repository</localRepository>
+      </configuration>
+    </component>
+    
+    <component>
+      <role>org.apache.maven.continuum.configuration.ConfigurationService</role>
+      <implementation>org.apache.maven.continuum.wagon.MockConfigurationService</implementation>
+    </component>
+    
+    <component>
+      <role>org.apache.maven.artifact.manager.WagonManager</role>
+      <implementation>org.apache.maven.artifact.manager.DefaultWagonManager</implementation>
+    </component>
+    
+  </components>
+</plexus>
\ No newline at end of file

Propchange: maven/continuum/trunk/continuum-notifiers/continuum-notifier-wagon/src/test/resources/org/apache/maven/continuum/wagon/WagonContinuumNotifierTest.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/continuum/trunk/continuum-notifiers/continuum-notifier-wagon/src/test/resources/org/apache/maven/continuum/wagon/WagonContinuumNotifierTest.xml
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/continuum/trunk/continuum-notifiers/continuum-notifier-wagon/src/test/resources/working-directory/2/pom.xml
URL: http://svn.apache.org/viewvc/maven/continuum/trunk/continuum-notifiers/continuum-notifier-wagon/src/test/resources/working-directory/2/pom.xml?view=auto&rev=486556
==============================================================================
--- maven/continuum/trunk/continuum-notifiers/continuum-notifier-wagon/src/test/resources/working-directory/2/pom.xml (added)
+++ maven/continuum/trunk/continuum-notifiers/continuum-notifier-wagon/src/test/resources/working-directory/2/pom.xml Wed Dec 13 01:23:28 2006
@@ -0,0 +1,14 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>groupId</groupId>
+  <artifactId>artifactId</artifactId>
+  <packaging>jar</packaging>
+  <version>1.0</version>
+  <distributionManagement>
+    <site>
+      <id>wagon-notification</id>
+      <name>Wagon Notification</name>
+      <url>dav:http://localhost:10007/dav</url>
+    </site>
+  </distributionManagement>
+</project>
\ No newline at end of file

Propchange: maven/continuum/trunk/continuum-notifiers/continuum-notifier-wagon/src/test/resources/working-directory/2/pom.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/continuum/trunk/continuum-notifiers/continuum-notifier-wagon/src/test/resources/working-directory/2/pom.xml
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Modified: maven/continuum/trunk/continuum-notifiers/pom.xml
URL: http://svn.apache.org/viewvc/maven/continuum/trunk/continuum-notifiers/pom.xml?view=diff&rev=486556&r1=486555&r2=486556
==============================================================================
--- maven/continuum/trunk/continuum-notifiers/pom.xml (original)
+++ maven/continuum/trunk/continuum-notifiers/pom.xml Wed Dec 13 01:23:28 2006
@@ -13,6 +13,7 @@
     <module>continuum-notifier-irc</module>
     <module>continuum-notifier-jabber</module>
     <module>continuum-notifier-msn</module>
+    <module>continuum-notifier-wagon</module>
   </modules>
   <dependencies>
     <dependency>