Author: maartenc
Date: Fri Jul 11 05:24:00 2008
New Revision: 675931

URL: http://svn.apache.org/viewvc?rev=675931&view=rev
Log:
IMPROVEMENT: undeprecate configure task (IVY-849)

Modified:
    ant/ivy/core/trunk/CHANGES.txt
    ant/ivy/core/trunk/build.xml
    ant/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyAntSettings.java
    ant/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyConfigure.java
    ant/ivy/core/trunk/test/java/org/apache/ivy/ant/IvyAntSettingsBuildFile.xml
    ant/ivy/core/trunk/test/java/org/apache/ivy/ant/IvyAntSettingsTest.java
    ant/ivy/core/trunk/test/java/org/apache/ivy/ant/IvyCleanCacheTest.java
    ant/ivy/core/trunk/test/java/org/apache/ivy/ant/IvyConfigureTest.java
    ant/ivy/core/trunk/test/java/org/apache/ivy/ant/IvyDeliverTest.java

Modified: ant/ivy/core/trunk/CHANGES.txt
URL: 
http://svn.apache.org/viewvc/ant/ivy/core/trunk/CHANGES.txt?rev=675931&r1=675930&r2=675931&view=diff
==============================================================================
--- ant/ivy/core/trunk/CHANGES.txt (original)
+++ ant/ivy/core/trunk/CHANGES.txt Fri Jul 11 05:24:00 2008
@@ -77,6 +77,7 @@
 - NEW: Add transitive dependency version and branch override mechanism 
(IVY-784)
 - NEW: Add new packager resolver (IVY-829) (thanks to Archie Cobbs)
 
+- IMPROVEMENT: undeprecate configure task (IVY-849)
 - IMPROVEMENT: Detect missing artifacts on publish asap (IVY-862)
 - IMPROVEMENT: Allow to set the branch at deliver/publish time (IVY-859)
 - IMPROVEMENT: Add defaultconf in publications tag of ivy file (IVY-801)

Modified: ant/ivy/core/trunk/build.xml
URL: 
http://svn.apache.org/viewvc/ant/ivy/core/trunk/build.xml?rev=675931&r1=675930&r2=675931&view=diff
==============================================================================
--- ant/ivy/core/trunk/build.xml (original)
+++ ant/ivy/core/trunk/build.xml Fri Jul 11 05:24:00 2008
@@ -46,7 +46,7 @@
             </classpath>
         </taskdef>
        
-        <ivy:settings id="ivy.instance" override="true"/>
+        <ivy:configure id="ivy.instance" override="true" />
     </target>
     
     <target name="install" depends="init-ivy-home, jar" 
@@ -90,7 +90,7 @@
             <fileset dir="${lib.dir}">
                 <include name="*.jar" />
                 <exclude name="ant.jar" />
-                <exclude name="ant-*.jar" />
+                <exclude name="ant-launcher.jar" />
             </fileset>
             <pathelement location="${core.classes.build.dir}" />
             <pathelement location="${ant.classes.build.dir}" />

Modified: ant/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyAntSettings.java
URL: 
http://svn.apache.org/viewvc/ant/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyAntSettings.java?rev=675931&r1=675930&r2=675931&view=diff
==============================================================================
--- ant/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyAntSettings.java 
(original)
+++ ant/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyAntSettings.java Fri Jul 
11 05:24:00 2008
@@ -23,8 +23,6 @@
 import java.net.MalformedURLException;
 import java.net.URL;
 import java.text.ParseException;
-import java.util.Arrays;
-import java.util.Collection;
 import java.util.Properties;
 
 import org.apache.ivy.Ivy;
@@ -37,10 +35,10 @@
 import org.apache.ivy.util.url.URLHandlerRegistry;
 import org.apache.tools.ant.BuildException;
 import org.apache.tools.ant.Project;
-import org.apache.tools.ant.Task;
 import org.apache.tools.ant.taskdefs.Property;
+import org.apache.tools.ant.types.DataType;
 
-public class IvyAntSettings extends Task {
+public class IvyAntSettings extends DataType {
 
     public static class Credentials {
         private String realm;
@@ -84,24 +82,6 @@
         }
     }
 
-    /**
-     * Use to override a previous definition of settings with the same id 
-     */
-    public static final String OVERRIDE_TRUE = "true";
-    /**
-     * Use to avoid overriding a previous definition of settings with the same 
id
-     */
-    public static final String OVERRIDE_FALSE = "false";
-    /**
-     * Use to raise an error if attempting to override a previous definition 
of settings with the
-     * same id
-     */
-    public static final String OVERRIDE_NOT_ALLOWED = "notallowed";
-
-    private static final Collection OVERRIDE_VALUES = Arrays.asList(new 
String[] {
-            OVERRIDE_TRUE, OVERRIDE_FALSE, OVERRIDE_NOT_ALLOWED
-    });
-
     private Ivy ivyEngine = null;
 
     private File file = null;
@@ -117,8 +97,8 @@
     private String passwd = null;
     
     private String id = "ivy.instance";
-
-    private String override = OVERRIDE_NOT_ALLOWED;
+    
+    private boolean autoRegistered = false;
 
     /**
      * Returns the default ivy settings of this classloader. If it doesn't 
exist yet, a new one is
@@ -144,10 +124,12 @@
         if (defaultInstanceObj == null) {
             project.log("No ivy:settings found for the default reference 
'ivy.instance'.  " 
                     + "A default instance will be used", Project.MSG_INFO);
-            IvyAntSettings defaultInstance = new IvyAntSettings();
-            defaultInstance.setProject(project);
-            defaultInstance.perform();
-            return defaultInstance;
+            
+            IvyAntSettings settings = new IvyAntSettings();
+            settings.setProject(project);
+            project.addReference("ivy.instance", settings);        
+            settings.createIvyEngine();
+            return settings;
         } else {
             return (IvyAntSettings) defaultInstanceObj;
         }
@@ -193,7 +175,16 @@
         userName = format(aUserName);
     }
 
-
+    public void setProject(Project p) {
+        super.setProject(p);
+        
+        if ("ivy.instance".equals(id) && getProject().getReference(id) == 
null) {
+            // register ourselfs as default settings, just in case the id 
attribute is not set
+            getProject().addReference("ivy.instance", this);
+            autoRegistered = true;
+        }
+    }
+    
     private static String format(String str) {
         return str == null ? str : (str.trim().length() == 0 ? null : 
str.trim());
     }
@@ -211,19 +202,15 @@
         this.url = new URL(confUrl);
     }
 
-    public void setOverride(String override) {
-        if (!OVERRIDE_VALUES.contains(override)) {
-            throw new IllegalArgumentException("invalid override value '" + 
override + "'. "
-                + "Valid values are " + OVERRIDE_VALUES);
-        }
-        this.override = override;
-    }
-    
     /*
      * This is usually not necessary to define a reference in Ant, but it's 
the only
      * way to know the id of the settings, which we use to set ant properties.
      */
     public void setId(String id) {
+        if (autoRegistered && getProject().getReference(this.id) == this) {
+            getProject().getReferences().remove(this.id);
+            autoRegistered = false;
+        }
         this.id = id;
     }
     
@@ -231,53 +218,28 @@
         return id;
     }
 
-    /*
-     * public void execute() throws BuildException { 
-     * ensureMessageInitialised(); 
-     * if (getId()==null) {
-     * log("No id specified for the ivy:settings, set the instance as the 
default one",
-     * Project.MSG_DEBUG); getProject().addReference("ivy.instance", this); } 
else {
-     * getProject().addReference(id, this); } }
-     */
-
     /**
      * Return the configured Ivy instance.
      * @return Returns the configured Ivy instance.
      */
     public Ivy getConfiguredIvyInstance() {
         if (ivyEngine == null) {
-            perform();
+            createIvyEngine();
         }
         return ivyEngine;
     }
 
-    public void execute() throws BuildException {
-        if (!OVERRIDE_TRUE.equals(override)) {
-            Object otherRef = getProject().getReference(id);
-            if ((otherRef != null) && (otherRef != this)) {
-                if (OVERRIDE_FALSE.equals(override)) {
-                    verbose("a settings definition is already available for " 
+ id + ": skipping");
-                    return;
-                } else {
-                    // OVERRIDE_NOT_ALLOWED
-                    throw new BuildException(
-                        "overriding a previous definition of ivy:settings with 
the id '" + id + "'" 
-                        + " is not allowed when using override='" + 
OVERRIDE_NOT_ALLOWED + "'.");
-                }
-            }
-        }
-        getProject().addReference(id, this);
+    void createIvyEngine() {
         Property prop = new Property() {
             public void execute() throws BuildException {
                 addProperties(getDefaultProperties());
             }
         };
         prop.setProject(getProject());
+        prop.init();
         prop.execute();
-        createIvyEngine();
-    }
 
-    private void createIvyEngine() {
+        
         IvyAntVariableContainer ivyAntVariableContainer = new 
IvyAntVariableContainer(getProject());
 
         IvySettings settings = new IvySettings(ivyAntVariableContainer);
@@ -384,10 +346,6 @@
         log(msg, Project.MSG_INFO);
     }
 
-    private void warn(String msg) {
-        log(msg, Project.MSG_WARN);
-    }
-
     private void configureURLHandler() {
         // TODO : the credentialStore should also be scoped
         CredentialsStore.INSTANCE.addCredentials(getRealm(), getHost(), 
getUsername(), getPasswd());

Modified: ant/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyConfigure.java
URL: 
http://svn.apache.org/viewvc/ant/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyConfigure.java?rev=675931&r1=675930&r2=675931&view=diff
==============================================================================
--- ant/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyConfigure.java (original)
+++ ant/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyConfigure.java Fri Jul 11 
05:24:00 2008
@@ -17,23 +17,133 @@
  */
 package org.apache.ivy.ant;
 
-import org.apache.ivy.Ivy;
+import java.io.File;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.Arrays;
+import java.util.Collection;
+
 import org.apache.tools.ant.BuildException;
 import org.apache.tools.ant.Project;
+import org.apache.tools.ant.Task;
 
 /**
  * Configure Ivy with an ivysettings.xml file
- * 
- * @deprecated Use the IvyAntSettings instead.
- */
-public class IvyConfigure extends IvyAntSettings {
+ */ 
+public class IvyConfigure extends Task {
+
+    /**
+     * Use to override a previous definition of settings with the same id 
+     */
+    public static final String OVERRIDE_TRUE = "true";
+    /**
+     * Use to avoid overriding a previous definition of settings with the same 
id
+     */
+    public static final String OVERRIDE_FALSE = "false";
+    /**
+     * Use to raise an error if attempting to override a previous definition 
of settings with the
+     * same id
+     */
+    public static final String OVERRIDE_NOT_ALLOWED = "notallowed";
+
+    private static final Collection OVERRIDE_VALUES = Arrays.asList(new 
String[] {
+            OVERRIDE_TRUE, OVERRIDE_FALSE, OVERRIDE_NOT_ALLOWED
+    });
+
+    private String override = OVERRIDE_NOT_ALLOWED;
+    
+    private IvyAntSettings settings = new IvyAntSettings();
+
+    public void setSettingsId(String settingsId) {
+        settings.setId(settingsId);
+    }
+    
+    public String getSettingsId() {
+        return settings.getId();
+    }
+    
+    public void setOverride(String override) {
+        if (!OVERRIDE_VALUES.contains(override)) {
+            throw new IllegalArgumentException("invalid override value '" + 
override + "'. "
+                + "Valid values are " + OVERRIDE_VALUES);
+        }
+        this.override = override;
+    }
+    
+    public String getOverride() {
+        return override;
+    }
+    
+    public File getFile() {
+        return settings.getFile();
+    }
+
+    public void setFile(File file) {
+        settings.setFile(file);
+    }
+
+    public URL getUrl() {
+        return settings.getUrl();
+    }
+
+    public void setUrl(String url) throws MalformedURLException {
+        settings.setUrl(url);
+    }
+
+    public String getRealm() {
+        return settings.getRealm();
+    }
+
+    public void setRealm(String realm) {
+        settings.setRealm(realm);
+    }
+
+    public String getHost() {
+        return settings.getHost();
+    }
+
+    public void setHost(String host) {
+        settings.setHost(host);
+    }
+
+    public String getUserName() {
+        return settings.getUsername();
+    }
+
+    public void setUserName(String userName) {
+        settings.setUsername(userName);
+    }
+
+    public String getPasswd() {
+        return settings.getPasswd();
+    }
+
+    public void setPasswd(String passwd) {
+        settings.setPasswd(passwd);
+    }
+
     public void execute() throws BuildException {
-        log("ivy:configure is deprecated, please use the data type 
ivy:settings instead",
-            Project.MSG_WARN);
-        super.execute();
+        String settingsId = settings.getId();
+        Object otherRef = getProject().getReference(settingsId);
+
+        if ((otherRef != null) && OVERRIDE_NOT_ALLOWED.equals(override)) {
+            throw new BuildException(
+                "Overriding a previous definition of ivy:settings with the id 
'" 
+                + settingsId + "' is not allowed when using override='"
+                + OVERRIDE_NOT_ALLOWED + "'.");
+        }
+        
+        if ((otherRef != null) && OVERRIDE_FALSE.equals(override)) {
+            verbose("A settings definition is already available for " + 
settingsId + ": skipping");
+            return;
+        }
+        
+        settings.setProject(getProject());
+        getProject().addReference(settingsId, settings);        
+        settings.createIvyEngine();
     }
 
-    public Ivy getIvyInstance() {
-        return getConfiguredIvyInstance();
+    private void verbose(String msg) {
+        log(msg, Project.MSG_VERBOSE);
     }
 }

Modified: 
ant/ivy/core/trunk/test/java/org/apache/ivy/ant/IvyAntSettingsBuildFile.xml
URL: 
http://svn.apache.org/viewvc/ant/ivy/core/trunk/test/java/org/apache/ivy/ant/IvyAntSettingsBuildFile.xml?rev=675931&r1=675930&r2=675931&view=diff
==============================================================================
--- ant/ivy/core/trunk/test/java/org/apache/ivy/ant/IvyAntSettingsBuildFile.xml 
(original)
+++ ant/ivy/core/trunk/test/java/org/apache/ivy/ant/IvyAntSettingsBuildFile.xml 
Fri Jul 11 05:24:00 2008
@@ -26,17 +26,17 @@
   </target>
 
   <target name="testOverrideNotSpecified">
-       <ivy:settings id="test1" file="test/repositories/ivysettings.xml" />
+       <ivy:configure settingsId="test1" 
file="test/repositories/ivysettings.xml" />
        <ivy:resolve settingsRef="test1" 
file="test/java/org/apache/ivy/ant/ivy-simple.xml" />
   </target>
 
   <target name="testOverrideSetToFalse">
-       <ivy:settings id="test2" file="test/repositories/ivysettings.xml" 
override="false" />
+       <ivy:configure settingsId="test2" 
file="test/repositories/ivysettings.xml" override="false" />
        <ivy:resolve settingsRef="test2" 
file="test/java/org/apache/ivy/ant/ivy-simple.xml" />
   </target>
          
   <target name="testUnnecessaryDefaultIvyInstance">
-               <ivy:settings id="testUnnecessaryDefaultIvyInstance" 
file="test/repositories/ivysettings.xml" override="true" />
+               <ivy:configure settingsId="testUnnecessaryDefaultIvyInstance" 
file="test/repositories/ivysettings.xml" override="true" />
                <ivy:cachepath settingsRef="testUnnecessaryDefaultIvyInstance" 
file="test/java/org/apache/ivy/ant/ivy-simple.xml" pathid="ptest" />
          </target>
 </project>
\ No newline at end of file

Modified: 
ant/ivy/core/trunk/test/java/org/apache/ivy/ant/IvyAntSettingsTest.java
URL: 
http://svn.apache.org/viewvc/ant/ivy/core/trunk/test/java/org/apache/ivy/ant/IvyAntSettingsTest.java?rev=675931&r1=675930&r2=675931&view=diff
==============================================================================
--- ant/ivy/core/trunk/test/java/org/apache/ivy/ant/IvyAntSettingsTest.java 
(original)
+++ ant/ivy/core/trunk/test/java/org/apache/ivy/ant/IvyAntSettingsTest.java Fri 
Jul 11 05:24:00 2008
@@ -26,23 +26,33 @@
 import org.apache.ivy.plugins.resolver.IvyRepResolver;
 import org.apache.tools.ant.BuildException;
 import org.apache.tools.ant.Project;
+import org.apache.tools.ant.types.Reference;
 
 import junit.framework.TestCase;
 
 public class IvyAntSettingsTest extends TestCase {
-    private IvyAntSettings antSettings;
+    private IvyConfigure antSettings;
     private Project project;
 
     protected void setUp() throws Exception {
         project = new Project();
         project.setProperty("myproperty", "myvalue");
 
-        antSettings = new IvyAntSettings();
+        antSettings = new IvyConfigure();
         antSettings.setProject(project);
     }
     
     private Ivy getIvyInstance() {
-        return antSettings.getConfiguredIvyInstance();
+        IvyTask task = new IvyTask() {
+            public void doExecute() throws BuildException {
+            }};
+        task.setProject(project);
+        task.init();
+        
+        Reference ref = new Reference(antSettings.getSettingsId());
+//        ref.setProject(project);
+        task.setSettingsRef(ref);
+        return task.getIvyInstance();
     }
 
     public void testDefault() throws Exception {
@@ -147,7 +157,7 @@
         String confUrl = 
IvyConfigureTest.class.getResource("ivysettings-props.xml")
                 .toExternalForm();
         antSettings.setUrl(confUrl);
-        antSettings.setId("this.id");
+        antSettings.setSettingsId("this.id");
         
         antSettings.execute();
 
@@ -175,9 +185,9 @@
         Ivy ivy = getIvyInstance();
         assertNotNull(ivy);
 
-        antSettings = new IvyAntSettings();
+        antSettings = new IvyConfigure();
         antSettings.setProject(project);
-        antSettings.setOverride(IvyAntSettings.OVERRIDE_TRUE);
+        antSettings.setOverride("true");
         antSettings.setFile(new File("test/repositories/ivysettings.xml"));
         antSettings.execute();
         assertNotNull(getIvyInstance());
@@ -192,13 +202,13 @@
         Ivy ivy = getIvyInstance();
         assertNotNull(ivy);
 
-        IvyAntSettings newAntSettings = new IvyAntSettings();
+        IvyConfigure newAntSettings = new IvyConfigure();
         newAntSettings.setProject(project);
-        newAntSettings.setOverride(IvyAntSettings.OVERRIDE_FALSE);
+        newAntSettings.setOverride("false");
         newAntSettings.setFile(new File("test/repositories/ivysettings.xml"));
         newAntSettings.execute();
         
-        assertTrue(antSettings == 
project.getReference(newAntSettings.getId()));
+        assertTrue(ivy == getIvyInstance());
     }
 
     public void testOverrideNotAllowed() throws Exception {
@@ -208,9 +218,9 @@
         Ivy ivy = getIvyInstance();
         assertNotNull(ivy);
 
-        antSettings = new IvyAntSettings();
+        antSettings = new IvyConfigure();
         antSettings.setProject(project);
-        antSettings.setOverride(IvyAntSettings.OVERRIDE_NOT_ALLOWED);
+        antSettings.setOverride("notallowed");
         antSettings.setFile(new File("test/repositories/ivysettings.xml"));
         
         try {
@@ -219,7 +229,7 @@
                     + "override=notallowed should raise an exception");
         } catch (BuildException e) {
             assertTrue(e.getMessage().indexOf("notallowed") != -1);
-            assertTrue(e.getMessage().indexOf(antSettings.getId()) != -1);
+            assertTrue(e.getMessage().indexOf(antSettings.getSettingsId()) != 
-1);
         }
     }
 

Modified: ant/ivy/core/trunk/test/java/org/apache/ivy/ant/IvyCleanCacheTest.java
URL: 
http://svn.apache.org/viewvc/ant/ivy/core/trunk/test/java/org/apache/ivy/ant/IvyCleanCacheTest.java?rev=675931&r1=675930&r2=675931&view=diff
==============================================================================
--- ant/ivy/core/trunk/test/java/org/apache/ivy/ant/IvyCleanCacheTest.java 
(original)
+++ ant/ivy/core/trunk/test/java/org/apache/ivy/ant/IvyCleanCacheTest.java Fri 
Jul 11 05:24:00 2008
@@ -37,7 +37,7 @@
         p.setProperty("cache", cacheDir.getAbsolutePath());
         cleanCache = new IvyCleanCache();
         cleanCache.setProject(p);
-        IvyAntSettings settings = new IvyAntSettings();
+        IvyConfigure settings = new IvyConfigure();
         settings.setProject(p);
         settings.setUrl(
             
IvyCleanCacheTest.class.getResource("ivysettings-cleancache.xml").toExternalForm());

Modified: ant/ivy/core/trunk/test/java/org/apache/ivy/ant/IvyConfigureTest.java
URL: 
http://svn.apache.org/viewvc/ant/ivy/core/trunk/test/java/org/apache/ivy/ant/IvyConfigureTest.java?rev=675931&r1=675930&r2=675931&view=diff
==============================================================================
--- ant/ivy/core/trunk/test/java/org/apache/ivy/ant/IvyConfigureTest.java 
(original)
+++ ant/ivy/core/trunk/test/java/org/apache/ivy/ant/IvyConfigureTest.java Fri 
Jul 11 05:24:00 2008
@@ -26,25 +26,36 @@
 import org.apache.ivy.plugins.resolver.DependencyResolver;
 import org.apache.ivy.plugins.resolver.IBiblioResolver;
 import org.apache.ivy.plugins.resolver.IvyRepResolver;
+import org.apache.tools.ant.BuildException;
 import org.apache.tools.ant.Project;
+import org.apache.tools.ant.types.Reference;
 
 /**
  * Test the deprecated IvyConfigureTest and the underlying implementation 
AntIvySettings. When
  * IvyConfigure will be removed, this class should be renamed 
AntIvySettingsTest
  */
 public class IvyConfigureTest extends TestCase {
-    private IvyAntSettings antSettings;
+    private IvyConfigure antSettings;
 
     protected void setUp() throws Exception {
         Project project = new Project();
         project.setProperty("myproperty", "myvalue");
 
-        antSettings = new IvyAntSettings();
+        antSettings = new IvyConfigure();
         antSettings.setProject(project);
     }
 
     private Ivy getIvyInstance() {
-        return antSettings.getConfiguredIvyInstance();
+        IvyTask task = new IvyTask() {
+            public void doExecute() throws BuildException {
+            }};
+        task.setProject(antSettings.getProject());
+        task.init();
+        
+        Reference ref = new Reference(antSettings.getSettingsId());
+//        ref.setProject(antSettings.getProject());
+        task.setSettingsRef(ref);
+        return task.getIvyInstance();
     }
 
     public void testDefault() throws Exception {

Modified: ant/ivy/core/trunk/test/java/org/apache/ivy/ant/IvyDeliverTest.java
URL: 
http://svn.apache.org/viewvc/ant/ivy/core/trunk/test/java/org/apache/ivy/ant/IvyDeliverTest.java?rev=675931&r1=675930&r2=675931&view=diff
==============================================================================
--- ant/ivy/core/trunk/test/java/org/apache/ivy/ant/IvyDeliverTest.java 
(original)
+++ ant/ivy/core/trunk/test/java/org/apache/ivy/ant/IvyDeliverTest.java Fri Jul 
11 05:24:00 2008
@@ -225,11 +225,11 @@
     }
 
     public void testReplaceBranch() throws Exception {
-        IvyAntSettings settings = new IvyAntSettings();
+        IvyConfigure settings = new IvyConfigure();
         settings.setProject(project);
         settings.execute();
         // change the default branch to use
-        
settings.getConfiguredIvyInstance().getSettings().setDefaultBranch("BRANCH1");
+        
IvyAntSettings.getDefaultInstance(project).getConfiguredIvyInstance().getSettings().setDefaultBranch("BRANCH1");
         
         // resolve a module dependencies
         project.setProperty("ivy.dep.file", 
"test/java/org/apache/ivy/ant/ivy-latest.xml");


Reply via email to