You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by og...@apache.org on 2008/12/12 02:02:13 UTC

svn commit: r725872 - in /maven/mercury/trunk/mercury-ant: ./ mercury-ant-tasks/ mercury-ant-tasks/src/main/java/org/apache/maven/mercury/ant/tasks/ mercury-ant-tasks/src/main/resources/org/apache/maven/mercury/ant/tasks/ mercury-ant-tasks/src/test/jav...

Author: ogusakov
Date: Thu Dec 11 17:02:12 2008
New Revision: 725872

URL: http://svn.apache.org/viewvc?rev=725872&view=rev
Log:
[MERCURY-10, MERCURY-49, MERCURY-50] ant tasks working: classpath & repository writing functionality implemented

Added:
    maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/main/java/org/apache/maven/mercury/ant/tasks/WriteTask.java   (with props)
    maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/test/java/org/apache/maven/mercury/ant/tasks/MecuryAntTest.java   (with props)
Removed:
    maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/test/java/org/apache/maven/mercury/ant/tasks/DependenciesTaskTest.java
Modified:
    maven/mercury/trunk/mercury-ant/mercury-ant-tasks/build.xml
    maven/mercury/trunk/mercury-ant/mercury-ant-tasks/pom.xml
    maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/main/java/org/apache/maven/mercury/ant/tasks/AbstractAntTask.java
    maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/main/java/org/apache/maven/mercury/ant/tasks/Config.java
    maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/main/java/org/apache/maven/mercury/ant/tasks/Messages.properties
    maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/main/java/org/apache/maven/mercury/ant/tasks/ResolveTask.java
    maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/main/resources/org/apache/maven/mercury/ant/tasks/antlib.xml
    maven/mercury/trunk/mercury-ant/pom.xml

Modified: maven/mercury/trunk/mercury-ant/mercury-ant-tasks/build.xml
URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-ant/mercury-ant-tasks/build.xml?rev=725872&r1=725871&r2=725872&view=diff
==============================================================================
--- maven/mercury/trunk/mercury-ant/mercury-ant-tasks/build.xml (original)
+++ maven/mercury/trunk/mercury-ant/mercury-ant-tasks/build.xml Thu Dec 11 17:02:12 2008
@@ -1,15 +1,27 @@
 <project name="test" default="compile" xmlns:merc="antlib:org.apache.maven.mercury.ant.tasks" >
   
   <target name="init">
+
     <property name="config.name" value="conf"/>
     <property name="compiler.version" value="1.5"/>
     
     <property name="src" value="${basedir}/src/test/compile"/>
-    <property name="target" value="${basedir}/target/compile-classes"/>
+
+  	<property name="target" value="${basedir}/target/compile-classes"/>
+    <delete dir="${target}"/>
+    <mkdir dir="${target}"/>
+
+    <property name="jar.target" value="${basedir}/target/compile-target"/>
+    <delete dir="${jar.target}"/>
+    <mkdir dir="${jar.target}"/>
+
+    <property name="local.repo.dir" value="${basedir}/target/test-repo"/>
+    <delete dir="${local.repo.dir}"/>
+    <mkdir dir="${local.repo.dir}"/>
 
   	<merc:config id="conf">
-      <merc:repo id="localRepo" dir="${basedir}/target/test-repo"/>
-      <merc:repo type="m2" id="central" url="http://repo1.maven.org/maven2"/>
+      <merc:repo id="localRepo" dir="${local.repo.dir}"/>
+      <merc:repo id="central"   url="http://repo1.maven.org/maven2"/>
     </merc:config>
 
     <merc:dep id="my-libs">
@@ -24,11 +36,8 @@
                  configid="${config.name}"
                  />
 
-  	<property name="cp" refid="compile-path"/>
-  	<echo>path is ${cp}</echo>
-
-  	<delete dir="${target}"/>
-  	<mkdir dir="${target}"/>
+    <property name="cp" refid="compile-path"/>
+    <echo>path is ${cp}</echo>
 
     <javac srcdir="${src}"
            destdir="${target}"
@@ -37,6 +46,20 @@
            source="${compiler.version}"
            target="${compiler.version}"
     />
+    
+    
+    <jar destfile="${jar.target}/t.jar"
+         basedir="${target}"
+    />
+
+  </target>
+
+  <target name="deploy" depends="compile">
+    <merc:write repoid="localRepo"
+                name="t:t:1.0"
+                file="${jar.target}/t.jar"
+      />
+
   </target>
   
 </project>
\ No newline at end of file

Modified: maven/mercury/trunk/mercury-ant/mercury-ant-tasks/pom.xml
URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-ant/mercury-ant-tasks/pom.xml?rev=725872&r1=725871&r2=725872&view=diff
==============================================================================
--- maven/mercury/trunk/mercury-ant/mercury-ant-tasks/pom.xml (original)
+++ maven/mercury/trunk/mercury-ant/mercury-ant-tasks/pom.xml Thu Dec 11 17:02:12 2008
@@ -22,6 +22,16 @@
       </dependency>
     
       <!-- Mercury deps -->
+
+      <dependency>
+        <groupId>org.apache.maven.mercury</groupId>
+        <artifactId>mercury-artifact</artifactId>
+      </dependency>
+      
+      <dependency>
+        <groupId>org.apache.maven.mercury</groupId>
+        <artifactId>mercury-external</artifactId>
+      </dependency>
       
       <dependency>
         <groupId>org.apache.maven.mercury</groupId>
@@ -49,13 +59,19 @@
         <groupId>org.apache.maven</groupId>
         <artifactId>maven-mercury</artifactId>
       </dependency>
-       
+
       <dependency>
         <groupId>org.apache.maven.mercury</groupId>
         <artifactId>mercury-transport-http</artifactId>
         <classifier>tests</classifier>
         <scope>test</scope>
       </dependency>
+
+      <dependency>
+        <groupId>org.apache.ant</groupId>
+        <artifactId>ant-testutil</artifactId>
+        <scope>test</scope>
+      </dependency>
   
   </dependencies>
 

Modified: maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/main/java/org/apache/maven/mercury/ant/tasks/AbstractAntTask.java
URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/main/java/org/apache/maven/mercury/ant/tasks/AbstractAntTask.java?rev=725872&r1=725871&r2=725872&view=diff
==============================================================================
--- maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/main/java/org/apache/maven/mercury/ant/tasks/AbstractAntTask.java (original)
+++ maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/main/java/org/apache/maven/mercury/ant/tasks/AbstractAntTask.java Thu Dec 11 17:02:12 2008
@@ -1,5 +1,6 @@
 package org.apache.maven.mercury.ant.tasks;
 
+import org.apache.tools.ant.BuildException;
 import org.apache.tools.ant.Task;
 
 /**
@@ -12,18 +13,19 @@
 public class AbstractAntTask
 extends Task
 {
-  private String name;
-  
-  public String getName()
+  protected boolean _failOnError = true;
+  //----------------------------------------------------------------------------------------
+  public void setFailonerror( boolean failonerror )
   {
-    return name;
+    this._failOnError = failonerror;
   }
-
-  public void setName( String name )
+  //----------------------------------------------------------------------------------------
+  protected void throwIfEnabled( String msg )
+  throws BuildException
   {
-    this.name = name;
+    if( _failOnError )
+      throw new BuildException( msg );
   }
-  
-  
-
+  //----------------------------------------------------------------------------------------
+  //----------------------------------------------------------------------------------------
 }

Modified: maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/main/java/org/apache/maven/mercury/ant/tasks/Config.java
URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/main/java/org/apache/maven/mercury/ant/tasks/Config.java?rev=725872&r1=725871&r2=725872&view=diff
==============================================================================
--- maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/main/java/org/apache/maven/mercury/ant/tasks/Config.java (original)
+++ maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/main/java/org/apache/maven/mercury/ant/tasks/Config.java Thu Dec 11 17:02:12 2008
@@ -24,17 +24,22 @@
 public class Config
 extends AbstractDataType
 {
-  Collection<Repo> _repositories;
+  Collection<Repo> _repos;
+  
+  Collection<Repository> _repositories;
   
   public Collection<Repository> getRepositories()
   throws MalformedURLException
   {
-    if( Util.isEmpty( _repositories ) )
+    if( Util.isEmpty( _repos ) )
       return null;
     
-    Collection<Repository> repos = new ArrayList<Repository>( _repositories.size() );
+    if( _repositories != null )
+      return _repositories;
+    
+    _repositories = new ArrayList<Repository>( _repos.size() );
     
-    for( Repo repo : _repositories )
+    for( Repo repo : _repos )
     {
       if( repo.isLocal() )
       {
@@ -42,7 +47,7 @@
         
         LocalRepositoryM2 r = new LocalRepositoryM2( repo.getId(), new File( repo._dir ), dp  );
         
-        repos.add( r );
+        _repositories.add( r );
       }
       else
       {
@@ -52,21 +57,21 @@
         
         RemoteRepositoryM2 r  = new RemoteRepositoryM2( server, dp  );
         
-        repos.add( r );
+        _repositories.add( r );
       }
     }
-    
-    return repos;
+
+    return _repositories;
   }
   
   public Repo createRepo()
   {
-    if( _repositories == null )
-    _repositories = new ArrayList<Repo>(4);
+    if( _repos == null )
+    _repos = new ArrayList<Repo>(4);
     
     Repo r = new Repo();
     
-    _repositories.add( r );
+    _repos.add( r );
     
     return r;
   }

Modified: maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/main/java/org/apache/maven/mercury/ant/tasks/Messages.properties
URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/main/java/org/apache/maven/mercury/ant/tasks/Messages.properties?rev=725872&r1=725871&r2=725872&view=diff
==============================================================================
--- maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/main/java/org/apache/maven/mercury/ant/tasks/Messages.properties (original)
+++ maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/main/java/org/apache/maven/mercury/ant/tasks/Messages.properties Thu Dec 11 17:02:12 2008
@@ -1,5 +1,8 @@
 resolve.task.name=Mercury dependency resolver
 resolve.task.desc=this task prepares a list of dependencies, resolves them and injects into a path
+
+write.task.name=Mercury write to repository task
+write.task.desc=this task writes a binary into specified repository
 #=======================================================================================================
 config.id.mandatory=configid attribute is mandatory, cannot create repositories without it
 config.id.object.null=object pointed by {0} is null 
@@ -14,3 +17,10 @@
 empty.map=internal error - please report to the authors: bucket map cannot be empty at this juncture - found {0}
 empty.map.2=internal error 2 - please report to the authors: bucket map cannot be empty at this juncture - found {0}
 
+write.repo.id.mandatory=repo id is mandatory for write task - none supplied
+write.repo.not.found=Repository {0} not yet declared in the build file.
+write.file.mandatory=file is mandatory for write task - none supplied
+write.file.not.found=File {0} foes not exist - cannot write it to the repository {1}
+write.no.name.no.pom=write task desperately needs either name or pom to deploy file {0} to {1}
+write.no.name.no.pom=write task desperately needs only name or pom, not both, to deploy file {0} to {1}
+write.pom.not.supported=write task does not support pom yet. Saw one deploying file {0} to {1}

Modified: maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/main/java/org/apache/maven/mercury/ant/tasks/ResolveTask.java
URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/main/java/org/apache/maven/mercury/ant/tasks/ResolveTask.java?rev=725872&r1=725871&r2=725872&view=diff
==============================================================================
--- maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/main/java/org/apache/maven/mercury/ant/tasks/ResolveTask.java (original)
+++ maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/main/java/org/apache/maven/mercury/ant/tasks/ResolveTask.java Thu Dec 11 17:02:12 2008
@@ -1,11 +1,7 @@
 package org.apache.maven.mercury.ant.tasks;
 
 import java.io.File;
-import java.io.IOException;
-import java.net.MalformedURLException;
-import java.util.ArrayList;
 import java.util.Collection;
-import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
@@ -16,14 +12,11 @@
 import org.apache.maven.mercury.metadata.DependencyBuilder;
 import org.apache.maven.mercury.metadata.DependencyBuilderFactory;
 import org.apache.maven.mercury.repository.api.ArtifactResults;
-import org.apache.maven.mercury.repository.api.LocalRepository;
 import org.apache.maven.mercury.repository.api.Repository;
-import org.apache.maven.mercury.repository.api.RepositoryException;
 import org.apache.maven.mercury.repository.virtual.VirtualRepositoryReader;
 import org.apache.maven.mercury.util.Util;
 import org.apache.tools.ant.BuildException;
 import org.apache.tools.ant.types.FileList;
-import org.apache.tools.ant.types.FileSet;
 import org.apache.tools.ant.types.Path;
 import org.codehaus.plexus.lang.DefaultLanguage;
 import org.codehaus.plexus.lang.Language;
@@ -70,12 +63,6 @@
     return TASK_NAME;
   }
   //----------------------------------------------------------------------------------------
-  private void throwIfEnabled( String msg )
-  {
-    if( _failOnError )
-      throw new BuildException( msg );
-  }
-  //----------------------------------------------------------------------------------------
   @Override
   public void execute()
   throws BuildException
@@ -238,11 +225,6 @@
         return;
     }
   }
-  
-  public void setFailonerror( boolean failonerror )
-  {
-    this._failOnError = failonerror;
-  }
 
   public void setConfigid( String configid )
   {

Added: maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/main/java/org/apache/maven/mercury/ant/tasks/WriteTask.java
URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/main/java/org/apache/maven/mercury/ant/tasks/WriteTask.java?rev=725872&view=auto
==============================================================================
--- maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/main/java/org/apache/maven/mercury/ant/tasks/WriteTask.java (added)
+++ maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/main/java/org/apache/maven/mercury/ant/tasks/WriteTask.java Thu Dec 11 17:02:12 2008
@@ -0,0 +1,218 @@
+package org.apache.maven.mercury.ant.tasks;
+
+import java.io.File;
+import java.io.IOException;
+import java.net.MalformedURLException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Hashtable;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.maven.mercury.artifact.Artifact;
+import org.apache.maven.mercury.artifact.ArtifactBasicMetadata;
+import org.apache.maven.mercury.artifact.ArtifactMetadata;
+import org.apache.maven.mercury.artifact.ArtifactScopeEnum;
+import org.apache.maven.mercury.artifact.DefaultArtifact;
+import org.apache.maven.mercury.metadata.DependencyBuilder;
+import org.apache.maven.mercury.metadata.DependencyBuilderFactory;
+import org.apache.maven.mercury.repository.api.ArtifactResults;
+import org.apache.maven.mercury.repository.api.LocalRepository;
+import org.apache.maven.mercury.repository.api.Repository;
+import org.apache.maven.mercury.repository.api.RepositoryException;
+import org.apache.maven.mercury.repository.virtual.VirtualRepositoryReader;
+import org.apache.maven.mercury.util.Util;
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.types.FileList;
+import org.apache.tools.ant.types.FileSet;
+import org.apache.tools.ant.types.Path;
+import org.codehaus.plexus.lang.DefaultLanguage;
+import org.codehaus.plexus.lang.Language;
+import org.omg.stub.java.rmi._Remote_Stub;
+
+/**
+ *
+ *
+ * @author Oleg Gusakov
+ * @version $Id$
+ *
+ */
+public class WriteTask
+extends AbstractAntTask
+{
+  private static final Language _lang = new DefaultLanguage( WriteTask.class );
+  
+  public static final String TASK_NAME = _lang.getMessage( "write.task.name" );
+  public static final String TASK_DESC = _lang.getMessage( "write.task.desc" );
+  
+  private String _repoid;
+  private String _file;
+  private String _name;
+  private String _pom;
+  //----------------------------------------------------------------------------------------
+  @Override
+  public String getDescription()
+  {
+    return TASK_DESC;
+  }
+
+  @Override
+  public String getTaskName()
+  {
+    return TASK_NAME;
+  }
+  //----------------------------------------------------------------------------------------
+  private Repository findRepo()
+  throws BuildException
+  {
+    Hashtable<String, Object> refs = getProject().getReferences();
+    
+    for( String key : refs.keySet() )
+    {
+      Object o = refs.get(key);
+      
+      if( o == null )
+        continue;
+      
+      if( ! Config.class.isAssignableFrom( o.getClass() ) )
+        continue;
+      
+      Config conf = (Config)o;
+      
+      Collection<Repository> repos;
+      try
+      {
+        repos = conf.getRepositories();
+      }
+      catch( MalformedURLException e )
+      {
+        throw new BuildException( e );
+      }
+      
+      if( Util.isEmpty( repos ) )
+        continue;
+      
+      for( Repository r : repos )
+        if( _repoid.equals( r.getId() ) )
+          return r;
+    }
+    
+    return null;
+  }
+  //----------------------------------------------------------------------------------------
+  @Override
+  public void execute()
+  throws BuildException
+  {
+    if( _repoid == null )
+    {
+      throwIfEnabled( _lang.getMessage( "write.repo.id.mandatory" ) );
+      return;
+    }
+    
+    Repository repo = findRepo();
+    
+    if( repo == null )
+    {
+      throwIfEnabled( _lang.getMessage( "write.repo.not.found", _repoid ) );
+      return;
+    }
+    
+    if( _file == null )
+    {
+      throwIfEnabled( _lang.getMessage( "write.file.mandatory" ) );
+      return;
+    }
+    
+    File file = new File( _file );
+    
+    if( !file.exists() )
+    {
+      throwIfEnabled( _lang.getMessage( "write.file.not.found", _file, _repoid ) );
+      return;
+    }
+    
+    if( Util.isEmpty( _name ) && Util.isEmpty( _pom ) )
+    {
+      throwIfEnabled( _lang.getMessage( "write.no.name.no.pom", _file, _repoid ) );
+      return;
+    }
+
+    if( !Util.isEmpty( _name ) && !Util.isEmpty( _pom ) )
+    {
+      throwIfEnabled( _lang.getMessage( "write.no.name.no.pom", _file, _repoid ) );
+      return;
+    }
+
+    if( !Util.isEmpty( _pom ) )
+    {
+      throwIfEnabled( _lang.getMessage( "write.pom.not.supported", _file, _repoid ) );
+      return;
+    }
+
+    try
+    {
+      DefaultArtifact a = null;
+      
+      File pom = null;
+      
+      if( !Util.isEmpty( _name ) )
+      {
+        a = new DefaultArtifact( new ArtifactBasicMetadata(_name) );
+        
+        String pomStr = 
+"?xml version='1.0' encoding='UTF-8'?>\n"
++"<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'>\n"
++"<modelVersion>4.0.0</modelVersion>\n"
++"<groupId>"+a.getGroupId()+"</groupId>\n"
++"<artifactId>"+a.getArtifactId()+"</artifactId>\n"
++ ( Util.isEmpty( a.getClassifier() ) ? "" : "<classifier>"+a.getClassifier()+"</classifier>\n" )
++"<version>"+a.getVersion()+"</version>\n"
++ ( Util.isEmpty( a.getType() ) ? "" : "<packaging>"+a.getType()+"</packaging>\n" )
++"</project>\n"
+                ;
+
+        a.setPomBlob( pomStr.getBytes() );
+
+        a.setFile( file );
+        
+        ArrayList<Artifact> al = new ArrayList<Artifact>(1);
+        al.add( a );
+        
+        repo.getWriter().writeArtifacts( al );
+      }
+      else
+      {
+        throwIfEnabled( _lang.getMessage( "write.pom.not.supported", _file, _repoid ) );
+        return;
+      }
+        
+    }
+    catch( Exception e )
+    {
+      throwIfEnabled( e.getMessage() );
+    }
+  }
+
+  public void setRepoid( String repoid )
+  {
+    this._repoid = repoid;
+  }
+
+  public void setFile( String file )
+  {
+    this._file = file;
+  }
+
+  public void setName( String name )
+  {
+    this._name = name;
+  }
+
+  public void setPom( String pom )
+  {
+    this._pom = pom;
+  }
+  
+}
\ No newline at end of file

Propchange: maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/main/java/org/apache/maven/mercury/ant/tasks/WriteTask.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/main/java/org/apache/maven/mercury/ant/tasks/WriteTask.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Modified: maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/main/resources/org/apache/maven/mercury/ant/tasks/antlib.xml
URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/main/resources/org/apache/maven/mercury/ant/tasks/antlib.xml?rev=725872&r1=725871&r2=725872&view=diff
==============================================================================
--- maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/main/resources/org/apache/maven/mercury/ant/tasks/antlib.xml (original)
+++ maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/main/resources/org/apache/maven/mercury/ant/tasks/antlib.xml Thu Dec 11 17:02:12 2008
@@ -3,6 +3,7 @@
 <antlib>
 
   <taskdef name="resolve" classname="org.apache.maven.mercury.ant.tasks.ResolveTask"/>
+  <taskdef name="write"   classname="org.apache.maven.mercury.ant.tasks.WriteTask"/>
 
   <typedef name="dep"    classname="org.apache.maven.mercury.ant.tasks.Dep"/>
   <typedef name="config" classname="org.apache.maven.mercury.ant.tasks.Config"/>

Added: maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/test/java/org/apache/maven/mercury/ant/tasks/MecuryAntTest.java
URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/test/java/org/apache/maven/mercury/ant/tasks/MecuryAntTest.java?rev=725872&view=auto
==============================================================================
--- maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/test/java/org/apache/maven/mercury/ant/tasks/MecuryAntTest.java (added)
+++ maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/test/java/org/apache/maven/mercury/ant/tasks/MecuryAntTest.java Thu Dec 11 17:02:12 2008
@@ -0,0 +1,227 @@
+package org.apache.maven.mercury.ant.tasks;
+
+import java.io.File;
+
+import org.apache.maven.mercury.spi.http.server.SimpleTestServer;
+import org.apache.maven.mercury.util.FileUtil;
+import org.apache.tools.ant.BuildFileTest;
+import org.apache.tools.ant.Project;
+import org.apache.tools.ant.Target;
+import org.apache.tools.ant.types.Path;
+
+/**
+ *
+ *
+ * @author Oleg Gusakov
+ * @version $Id$
+ *
+ */
+public class MecuryAntTest
+extends BuildFileTest 
+{
+  static final String _localRepoDir = "./target/repo";
+  
+  static final String _writeRepoDir = "./target/test-repo";
+  static       File   _writeRepoDirFile;
+  
+  static final String _compileDir = "./target/compile-classes";
+  static       File   _compileDirFile;
+  
+  static final String _jarDir = "./target/compile-target";
+  static       File   _jarDirFile;
+
+  static final String _remoteRepoDir = "./target/test-classes/remoteRepo";
+  static final String _remoteRepoUrlPrefix = "http://localhost:";
+  static final String _remoteRepoUrlSufix = "/repo";
+
+  static final String _pathId = "class-path";
+  
+  SimpleTestServer _jetty;
+  String _port;
+    
+  Resolver _resolver;
+  Config   _config;
+  Dep      _dep;
+  
+  Dep.Dependency _asm;
+  Dep.Dependency _ant;
+    
+  //-----------------------------------
+  final class Resolver
+  extends ResolveTask
+  {
+    @SuppressWarnings("deprecation")
+    public Resolver()
+    {
+      project = new Project();
+      project.init();
+      target = new Target();
+    }
+  }
+  //-----------------------------------
+  final class Writer
+  extends WriteTask
+  {
+    @SuppressWarnings("deprecation")
+    public Writer()
+    {
+      project = new Project();
+      project.init();
+      target = new Target();
+    }
+  }
+  //-----------------------------------
+  public MecuryAntTest( String name )
+  {
+    super( name );
+  }
+  //-----------------------------------
+  @Override
+  protected void setUp()
+  throws Exception
+  {
+    _dep = new Dep();
+    _dep.setId( "my-lib" );
+    
+    _asm = _dep.createDependency();
+    _asm.setName( "asm:asm-xml:3.0" );
+    
+    _ant = _dep.createDependency();
+    _ant.setName( "ant:ant:1.6.5" );
+    
+    _config = new Config();
+    _config.setId( "conf" );
+    
+    File lrDir = new File( _localRepoDir );
+    FileUtil.delete( lrDir );
+    lrDir.mkdirs();
+    
+    Config.Repo localRepo = _config.createRepo();
+    localRepo.setId( "localRepo" );
+    localRepo.setDir( _localRepoDir );
+    
+    File rrDir = new File( _remoteRepoDir );
+    _jetty = new SimpleTestServer( rrDir, _remoteRepoUrlSufix );
+    _jetty.start();
+    _port = ""+_jetty.getPort();
+    
+    Config.Repo remoteRepo = _config.createRepo();
+    remoteRepo.setId( "remoteRepo" );
+    remoteRepo.setUrl( _remoteRepoUrlPrefix + _port + _remoteRepoUrlSufix );
+        
+    _resolver = new Resolver();
+    _resolver.setDepid( _dep.getId() );
+    _resolver.setConfigid( _config.getId() );
+    
+    _resolver.setPathid( _pathId );
+    
+    Project project = _resolver.getProject();
+    
+    project.addReference( _config.getId(), _config );
+    project.addReference( _dep.getId(), _dep );
+
+    System.setProperty( "ant.home", ".src/test/apache-ant-1.6.5" );
+    
+    configureProject("build.xml");
+
+    _writeRepoDirFile = new File( _writeRepoDir );
+    FileUtil.delete( _writeRepoDirFile );
+    _writeRepoDirFile.mkdirs();
+    
+    _compileDirFile   = new File( _compileDir );
+    FileUtil.delete( _compileDirFile );
+    _compileDirFile.mkdirs();
+    
+    _jarDirFile       = new File( _jarDir );
+    FileUtil.delete( _jarDirFile );
+    _jarDirFile.mkdirs();
+  }
+  //-----------------------------------
+  @Override
+  protected void tearDown()
+  throws Exception
+  {
+    _jetty.stop();
+    _jetty.destroy();
+    
+    System.out.println("Jetty on :"+_port+" destroyed\n<========\n\n");
+  }
+  //-----------------------------------
+  public void testReadDependencies()
+  {
+    String title = "resolver";
+    System.out.println("========> start "+title);
+    System.out.flush();
+    
+    _resolver.execute();
+    
+    Project pr = _resolver.getProject();
+    
+    Path path = (Path)pr.getReference( _pathId );
+    
+    assertNotNull( path );
+    
+    String [] list = path.list();
+    
+    assertNotNull( list );
+
+    assertEquals( 6, list.length );
+    
+//    System.out.println("\n==== Files found ====");
+//    for( String s : list )
+//      System.out.println(s);
+    
+    File af = new File( _localRepoDir, "/ant/ant/1.6.5/ant-1.6.5.jar" );
+    assertTrue( af.exists() );
+    
+    af = new File( _localRepoDir, "/asm/asm-util/3.0/asm-util-3.0.jar" );
+    assertTrue( af.exists() );
+    
+    af = new File( _localRepoDir, "/asm/asm-xml/3.0/asm-xml-3.0.jar" );
+    assertTrue( af.exists() );
+    
+    af = new File( _localRepoDir, "/asm/asm-tree/3.0/asm-tree-3.0.jar" );
+    assertTrue( af.exists() );
+    
+    af = new File( _localRepoDir, "/asm/asm/3.0/asm-3.0.jar" );
+    assertTrue( af.exists() );
+    
+  }
+  //-----------------------------------
+  public void testCompile()
+  {
+    String title = "compile";
+    System.out.println("========> start "+title);
+    System.out.flush();
+    
+    File af = new File( _compileDirFile, "T.class" );
+ 
+    assertFalse( af.exists() );
+
+    File jar = new File( _jarDirFile, "t.jar" );
+    
+    assertFalse( jar.exists() );
+    
+    executeTarget("compile");
+    
+    assertTrue( af.exists() );
+
+    assertTrue( jar.exists() );
+  }
+  //-----------------------------------
+  public void testWriteToRepository()
+  {
+    String title = "write";
+    System.out.println("========> start "+title);
+    System.out.flush();
+    
+    File af = new File( _writeRepoDirFile, "/t/t/1.0/t-1.0.jar" );
+ 
+    assertFalse( af.exists() );
+    
+    executeTarget("deploy");
+    
+    assertTrue( af.exists() );
+  }
+  //-----------------------------------
+}

Propchange: maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/test/java/org/apache/maven/mercury/ant/tasks/MecuryAntTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/mercury/trunk/mercury-ant/mercury-ant-tasks/src/test/java/org/apache/maven/mercury/ant/tasks/MecuryAntTest.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Modified: maven/mercury/trunk/mercury-ant/pom.xml
URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-ant/pom.xml?rev=725872&r1=725871&r2=725872&view=diff
==============================================================================
--- maven/mercury/trunk/mercury-ant/pom.xml (original)
+++ maven/mercury/trunk/mercury-ant/pom.xml Thu Dec 11 17:02:12 2008
@@ -27,7 +27,8 @@
 
   <properties>
 
-    <ant.version>1.6.5</ant.version>
+    <ant.version>1.7.0</ant.version>
+    <antunit.version>1.1</antunit.version>
     <mercury.version>1.0.0-alpha-3-SNAPSHOT</mercury.version>
     <maven.version>3.0-SNAPSHOT</maven.version>
 
@@ -56,6 +57,18 @@
       </dependency>
     
       <!-- Mercury deps -->
+
+      <dependency>
+        <groupId>org.apache.maven.mercury</groupId>
+        <artifactId>mercury-artifact</artifactId>
+        <version>${mercury.version}</version>
+      </dependency>
+      
+      <dependency>
+        <groupId>org.apache.maven.mercury</groupId>
+        <artifactId>mercury-external</artifactId>
+        <version>${mercury.version}</version>
+      </dependency>
       
       <dependency>
         <groupId>org.apache.maven.mercury</groupId>
@@ -104,6 +117,20 @@
         <version>${mercury.version}</version>
         <scope>test</scope>
       </dependency>
+
+      <dependency>
+        <groupId>org.apache.ant</groupId>
+        <artifactId>ant-launcher</artifactId>
+          <version>${ant.version}</version>
+          <scope>test</scope>
+      </dependency>
+      
+      <dependency>
+        <groupId>org.apache.ant</groupId>
+        <artifactId>ant-testutil</artifactId>
+        <version>${ant.version}</version>
+        <scope>test</scope>
+      </dependency>
       
     </dependencies>