On 4/25/07, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote:
Sorry - just few cents from the dont-know-ivy-yet man ...
Don't be sorry, your input is very valuable!

>So I see 3 options:
>- rename to haltonfailure and keep code as is
>- rename to haltonfailure and actually halt on any failure
>- add haltonfailure which halts on any failure, and keep haltonunresolved

What about having an enumeration here?
Indeed, I often forget about using enumerations instead of boolean
(Stephane Baillez already complained about that, I should learn!).
So this is a fourth option which would IMO at least be a better option
than the third one.

So now maybe the question is more: do we want to have the halt on
unresolved feature (and implement it using option 4), or only halt on
failure (option 2)?
IMO the answer depends on use case justification by Jeffrey.

Xavier


public void setHaltOnFailure(HOFEnum hofEnum) { ... }
class HOFEnum extends EnumeratedAttribue {
    public abstract String[] getValues() {
        return new String[]{
            "true", "failure",
            "unresolved",
            "both",
            "false", "none"
        }
    }
}


Jan



>-----Ursprüngliche Nachricht-----
>Von: Xavier Hanin [mailto:[EMAIL PROTECTED]
>Gesendet: Mittwoch, 25. April 2007 08:45
>An: [email protected]
>Betreff: Re: svn commit: r532027 - in
>/incubator/ivy/core/trunk: CHANGES.txt
>doc/doc/use/install.html
>src/java/org/apache/ivy/ant/IvyInstall.java
>test/java/org/apache/ivy/ant/IvyInstallTest.java
>
>On 4/24/07, Maarten Coene <[EMAIL PROTECTED]> wrote:
>> To keep a more consistent naming, I would prefer to use
>"haltonfailure" instead of "haltonunresolved"
>
>Yes, I was wondering myself if haltonfailure would be better. The
>point is that it doesn't halt on any failure, it halts only on
>unresolved dependencies. So I see 3 options:
>- rename to haltonfailure and keep code as is
>- rename to haltonfailure and actually halt on any failure
>- add haltonfailure which halts on any failure, and keep
>haltonunresolved
>
>WDYT?
>
>Xavier
>
>>
>> regards,
>> Maarten
>>
>> ----- Original Message ----
>> From: "[EMAIL PROTECTED]" <[EMAIL PROTECTED]>
>> To: [EMAIL PROTECTED]
>> Sent: Tuesday, April 24, 2007 7:53:21 PM
>> Subject: svn commit: r532027 - in /incubator/ivy/core/trunk:
>CHANGES.txt doc/doc/use/install.html
>src/java/org/apache/ivy/ant/IvyInstall.java
>test/java/org/apache/ivy/ant/IvyInstallTest.java
>>
>> Author: xavier
>> Date: Tue Apr 24 10:53:20 2007
>> New Revision: 532027
>>
>> URL: http://svn.apache.org/viewvc?view=rev&rev=532027
>> Log:
>> BUG: ivy:install ant task does not fail on error (IVY-475)
>(thanks to Jeffrey Blatttman)
>>
>> Added:
>>
>incubator/ivy/core/trunk/test/java/org/apache/ivy/ant/IvyInstal
>lTest.java
>> Modified:
>>     incubator/ivy/core/trunk/CHANGES.txt
>>     incubator/ivy/core/trunk/doc/doc/use/install.html
>>
>incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyInstall.java
>>
>> Modified: incubator/ivy/core/trunk/CHANGES.txt
>> URL:
>http://svn.apache.org/viewvc/incubator/ivy/core/trunk/CHANGES.t
>xt?view=diff&rev=532027&r1=532026&r2=532027
>>
>===============================================================
>===============
>> --- incubator/ivy/core/trunk/CHANGES.txt (original)
>> +++ incubator/ivy/core/trunk/CHANGES.txt Tue Apr 24 10:53:20 2007
>> @@ -13,6 +13,7 @@
>>       Ingo Adler
>>      Stephane Baillez
>>      Karl Baum
>> +    Jeffrey Blatttman
>>      Matthieu Brouillard
>>      Kristian Cibulskis
>>      Pierre Hägnestrand
>> @@ -43,6 +44,9 @@
>>      Johan Stuyts
>>      John Williams
>>
>> +   version in SVN
>> +=====================================
>> +- BUG: ivy:install ant task does not fail on error
>(IVY-475) (thanks to Jeffrey Blatttman)
>>
>>     2.0.0-alpha1-incubating
>>  =====================================
>>
>> Modified: incubator/ivy/core/trunk/doc/doc/use/install.html
>> URL:
>http://svn.apache.org/viewvc/incubator/ivy/core/trunk/doc/doc/u
>se/install.html?view=diff&rev=532027&r1=532026&r2=532027
>>
>===============================================================
>===============
>> --- incubator/ivy/core/trunk/doc/doc/use/install.html (original)
>> +++ incubator/ivy/core/trunk/doc/doc/use/install.html Tue
>Apr 24 10:53:20 2007
>> @@ -56,6 +56,8 @@
>>          <td>No, defaults to false</td></tr>
>>      <tr><td>matcher</td><td>the name of the matcher to use
>to find the modules to install</td>
>>          <td>No, defaults to exact</td></tr>
>> +    <tr><td>haltonunresolved</td><td>true to fail build on
>unresolved dependencies <span class="since">since 2.0</span></td>
>> +        <td>No, defaults to true</td></tr>
>>  </tbody>
>>  </table>
>>  <h1>Examples</h1>
>>
>> Modified:
>incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyInstall.java
>> URL:
>http://svn.apache.org/viewvc/incubator/ivy/core/trunk/src/java/
>org/apache/ivy/ant/IvyInstall.java?view=diff&rev=532027&r1=5320
>26&r2=532027
>>
>===============================================================
>===============
>> ---
>incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyInstall
>.java (original)
>> +++
>incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyInstall
>.java Tue Apr 24 10:53:20 2007
>> @@ -25,12 +25,13 @@
>>  import org.apache.ivy.plugins.matcher.PatternMatcher;
>>  import org.apache.ivy.util.filter.FilterHelper;
>>  import org.apache.tools.ant.BuildException;
>> -
>> +import org.apache.ivy.core.report.ResolveReport;
>> +import org.apache.tools.ant.BuildException;
>>
>>  /**
>>   * Allow to install a module or a set of module from
>repository to another one.
>> - *
>> - *
>> + *
>> + *
>>   * @author Xavier Hanin
>>   *
>>   */
>> @@ -38,13 +39,14 @@
>>      private String  _organisation;
>>      private String  _module;
>>      private String  _revision;
>> -    private File     _cache;
>> +    private File     _cache;
>>      private boolean _overwrite = false;
>>      private String _from;
>>      private String _to;
>>      private boolean _transitive;
>>      private String _type;
>>      private String _matcher = PatternMatcher.EXACT;
>> +    private boolean _haltOnUnresolved = true;
>>
>>      public void execute() throws BuildException {
>>          Ivy ivy = getIvyInstance();
>> @@ -58,12 +60,12 @@
>>          if (_module == null &&
>PatternMatcher.EXACT.equals(_matcher)) {
>>              throw new BuildException("no module name
>provided for ivy publish task: It can either be set
>explicitely via the attribute 'module' or via 'ivy.module'
>property or a prior call to <resolve/>");
>>          } else if (_module == null &&
>!PatternMatcher.EXACT.equals(_matcher)) {
>> -            _module = PatternMatcher.ANY_EXPRESSION;
>> +            _module = PatternMatcher.ANY_EXPRESSION;
>>          }
>>          if (_revision == null &&
>PatternMatcher.EXACT.equals(_matcher)) {
>>              throw new BuildException("no module revision
>provided for ivy publish task: It can either be set
>explicitely via the attribute 'revision' or via 'ivy.revision'
>property or a prior call to <resolve/>");
>>          } else if (_revision == null &&
>!PatternMatcher.EXACT.equals(_matcher)) {
>> -            _revision = PatternMatcher.ANY_EXPRESSION;
>> +            _revision = PatternMatcher.ANY_EXPRESSION;
>>          }
>>          if (_from == null) {
>>              throw new BuildException("no from resolver
>name: please provide it through parameter 'from'");
>> @@ -72,13 +74,26 @@
>>              throw new BuildException("no to resolver name:
>please provide it through parameter 'to'");
>>          }
>>          ModuleRevisionId mrid =
>ModuleRevisionId.newInstance(_organisation, _module, _revision);
>> +        ResolveReport report;
>>          try {
>> -            ivy.install(mrid, _from, _to, _transitive,
>doValidate(settings), _overwrite,
>FilterHelper.getArtifactTypeFilter(_type), _cache, _matcher);
>> +            report = ivy.install(mrid, _from, _to,
>_transitive, doValidate(settings), _overwrite,
>FilterHelper.getArtifactTypeFilter(_type), _cache, _matcher);
>>          } catch (Exception e) {
>>              throw new BuildException("impossible to install
>"+ mrid +": "+e, e);
>>          }
>> +
>> +        if (report.getUnresolvedDependencies().length > 0
>&& isHaltonunresolved()) {
>> +            throw new
>BuildException(report.getUnresolvedDependencies().length
>> +                    +" unresolved dependencies - see output
>for details");
>> +        }
>>      }
>> -
>> +
>> +    public boolean isHaltonunresolved() {
>> +        return _haltOnUnresolved;
>> +    }
>> +    public void setHaltonunresolved(boolean haltOnUnresolved) {
>> +        _haltOnUnresolved = haltOnUnresolved;
>> +    }
>> +
>>      public File getCache() {
>>          return _cache;
>>      }
>> @@ -134,11 +149,11 @@
>>      public void setType(String type) {
>>          _type = type;
>>      }
>> -
>> +
>>      public String getMatcher() {
>>          return _matcher;
>>      }
>> -
>> +
>>      public void setMatcher(String matcher) {
>>          _matcher = matcher;
>>      }
>>
>> Added:
>incubator/ivy/core/trunk/test/java/org/apache/ivy/ant/IvyInstal
>lTest.java
>> URL:
>http://svn.apache.org/viewvc/incubator/ivy/core/trunk/test/java
>/org/apache/ivy/ant/IvyInstallTest.java?view=auto&rev=532027
>>
>===============================================================
>===============
>> ---
>incubator/ivy/core/trunk/test/java/org/apache/ivy/ant/IvyInstal
>lTest.java (added)
>> +++
>incubator/ivy/core/trunk/test/java/org/apache/ivy/ant/IvyInstal
>lTest.java Tue Apr 24 10:53:20 2007
>> @@ -0,0 +1,101 @@
>> +/*
>> + *  Licensed to the Apache Software Foundation (ASF) under
>one or more
>> + *  contributor license agreements.  See the NOTICE file
>distributed with
>> + *  this work for additional information regarding
>copyright ownership.
>> + *  The ASF licenses this file to You 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.
>> + *
>> + */
>> +package org.apache.ivy.ant;
>> +
>> +import java.io.File;
>> +
>> +import junit.framework.TestCase;
>> +
>> +import org.apache.tools.ant.BuildException;
>> +import org.apache.tools.ant.Project;
>> +import org.apache.tools.ant.taskdefs.Delete;
>> +
>> +
>> +public class IvyInstallTest extends TestCase {
>> +    private File _cache;
>> +    private IvyInstall _install;
>> +    private Project _project;
>> +
>> +    protected void setUp() throws Exception {
>> +        createCache();
>> +        cleanTestLib();
>> +        _project = new Project();
>> +        _project.setProperty("ivy.settings.file",
>"test/repositories/ivysettings.xml");
>> +
>> +        _install = new IvyInstall();
>> +        _install.setProject(_project);
>> +        _install.setCache(_cache);
>> +    }
>> +
>> +    private void createCache() {
>> +        _cache = new File("build/cache");
>> +        _cache.mkdirs();
>> +    }
>> +
>> +    protected void tearDown() throws Exception {
>> +        cleanCache();
>> +        cleanTestLib();
>> +    }
>> +
>> +    private void cleanCache() {
>> +        Delete del = new Delete();
>> +        del.setProject(new Project());
>> +        del.setDir(_cache);
>> +        del.execute();
>> +    }
>> +
>> +    private void cleanTestLib() {
>> +        Delete del = new Delete();
>> +        del.setProject(new Project());
>> +        del.setDir(new File("build/test/lib"));
>> +        del.execute();
>> +    }
>> +
>> +    public void testDependencyNotFoundFailure() {
>> +        _install.setOrganisation("xxx");
>> +        _install.setModule("yyy");
>> +        _install.setRevision("zzz");
>> +        _install.setFrom("test");
>> +        _install.setTo("1");
>> +
>> +        try {
>> +            _install.execute();
>> +            fail("unknown dependency, failure expected
>(haltunresolved=true)");
>> +        } catch (BuildException be) {
>> +            // success
>> +            assertTrue("invalid exception message, it
>should contain '1 unresolved',"
>> +                    +" but it's: '"+be.getMessage()+"'",
>> +                    be.getMessage().indexOf("1 unresolved") != -1);
>> +        }
>> +    }
>> +
>> +    public void testDependencyNotFoundSuccess() {
>> +        _install.setOrganisation("xxx");
>> +        _install.setModule("yyy");
>> +        _install.setRevision("zzz");
>> +        _install.setFrom("test");
>> +        _install.setTo("1");
>> +        _install.setHaltonunresolved(false);
>> +
>> +        try {
>> +            _install.execute();
>> +        } catch (BuildException be) {
>> +            fail("unknown dependency, failure unexepected
>(haltunresolved=false)");
>> +        }
>> +    }
>> +}
>>
>>
>>
>>
>>
>>
>> __________________________________________________
>> Do You Yahoo!?
>> Tired of spam?  Yahoo! Mail has the best spam protection around
>> http://mail.yahoo.com
>>
>
>
>--
>Learn Ivy at ApacheCon: http://www.eu.apachecon.com/
>Manage your dependencies with Ivy!
>http://incubator.apache.org/ivy/
>



--
Learn Ivy at ApacheCon: http://www.eu.apachecon.com/
Manage your dependencies with Ivy!
http://incubator.apache.org/ivy/

Reply via email to