Here's a japicmp report on binary incompatibilities between Ivy 2.4.0 and
the snapshot build from the PR branch (which is rebased on latest master):
none of them break binary compatibility. Would anybody comment the rest of
incompatibilities? I am guilty of breaking ModuleRules, but that was for
the same reason: arrays of generics do not work in Java.

Gintas

***! MODIFIED CLASS: PUBLIC org.apache.ivy.core.module.id.ModuleRules  (not
serializable)
    ***! MODIFIED METHOD: PUBLIC java.util.List (<-java.lang.Object[])
getRules(org.apache.ivy.core.module.id.ModuleId)
    ***! MODIFIED METHOD: PUBLIC java.util.List (<-java.lang.Object[])
getRules(org.apache.ivy.core.module.id.ModuleRevisionId,
org.apache.ivy.util.filter.Filter)
***! MODIFIED CLASS: PUBLIC
org.apache.ivy.osgi.updatesite.UpdateSiteLoader  (not serializable)
    ---! REMOVED CONSTRUCTOR: PUBLIC(-)
UpdateSiteLoader(org.apache.ivy.core.cache.RepositoryCacheManager,
org.apache.ivy.core.event.EventManager,
org.apache.ivy.core.cache.CacheResourceOptions)
***! MODIFIED CLASS: PUBLIC FINAL
org.apache.ivy.plugins.circular.CircularDependencyHelper  (not serializable)
    ---! REMOVED METHOD: PUBLIC(-) STATIC(-)
org.apache.ivy.core.module.id.ModuleRevisionId[]
toMrids(org.apache.ivy.core.module.descriptor.ModuleDescriptor[])
***! MODIFIED CLASS: PUBLIC FINAL org.apache.ivy.util.FileUtil  (not
serializable)
    ---! REMOVED METHOD: PUBLIC(-) STATIC(-) void copy(java.net.URL,
java.io.File, org.apache.ivy.util.CopyProgressListener)
        ---  REMOVED EXCEPTION: java.io.IOException
    ---! REMOVED METHOD: PUBLIC(-) STATIC(-) void copy(java.io.File,
java.net.URL, org.apache.ivy.util.CopyProgressListener)
        ---  REMOVED EXCEPTION: java.io.IOException
    ---! REMOVED METHOD: PUBLIC(-) STATIC(-) void symlink(java.io.File,
java.io.File, org.apache.ivy.util.CopyProgressListener, boolean)
        ---  REMOVED EXCEPTION: java.io.IOException
    ---! REMOVED METHOD: PUBLIC(-) STATIC(-) void
symlinkInMass(java.util.Map, boolean)
        ---  REMOVED EXCEPTION: java.io.IOException
***! MODIFIED CLASS: PACKAGE_PROTECTED (<- PUBLIC)
org.apache.ivy.util.url.HttpClientHandler  (not serializable)
    ***! MODIFIED CONSTRUCTOR: PACKAGE_PROTECTED (<- PUBLIC)
HttpClientHandler()
    ---! REMOVED METHOD: PUBLIC(-) int getHttpClientMajorVersion()
---! REMOVED INTERFACE: PUBLIC(-) ABSTRACT(-) STATIC(-)
org.apache.ivy.util.url.HttpClientHandler$HttpClientHelper  (not
serializable)
    ---! REMOVED METHOD: PUBLIC(-) ABSTRACT(-) int
getHttpClientMajorVersion()
    ---! REMOVED METHOD: PUBLIC(-) ABSTRACT(-) long
getResponseContentLength(org.apache.commons.httpclient.HttpMethodBase)



2017-07-28 20:34 GMT+02:00 Gintautas Grigelionis <g.grigelio...@gmail.com>:

> It's not a new method, it's a change of signature. The old method is still
> there. If an implementation disregards the abstract class, which contains
> the replacement, it would still work, right?
>
> Gintas
>
> 2017-07-28 18:55 GMT+02:00 Stefan Bodewig <bode...@apache.org>:
>
>> On 2017-07-28, Jaikiran Pai wrote:
>>
>> > Ivy has a DependencyResolver interface which is the central piece of
>> > contract/interface for extending Ivy (any external usage for that
>> > matter).
>>
>> I'm not at all familiar with Ivy and the eco system that might exist
>> around it. How likely is it that anybody has implemented this interface
>> in a an extension? And how likely does such an extension not subclass
>> AbstractResolver?
>>
>> Adding methods to an interface usually means a backwards incompatible
>> change that requires a new major version when using semantic versioning
>> (not sure whether Ivy uses semver, Ant itself doesn't).
>>
>> > Instead, what I think we could do is add that method to the
>> > implementing class(es) internally (like the AbstractResolver - the PR
>> > does that already). Of course at some places within our code, if we
>> > want to use the newer generics based method, we will probably end up
>> > doing a type check on the resolver instance to see if it's a
>> > AbstractResolver which has that new method, but I think that should be
>> > fine for now.
>>
>> Alternatively add a new interface with that method that extends
>> DependencyResolver and is implemented by AbstractResolver and check for
>> the new interface rather than AbstractResolver?
>>
>> Stefan
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: dev-unsubscr...@ant.apache.org
>> For additional commands, e-mail: dev-h...@ant.apache.org
>>
>>
>

Reply via email to