You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@maven.apache.org by "Michael Osipov (Jira)" <ji...@apache.org> on 2022/05/28 22:00:00 UTC

[jira] [Commented] (MSHARED-1045) MSHARED-1024 breaks binary backwards compatibility

    [ https://issues.apache.org/jira/browse/MSHARED-1045?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17543546#comment-17543546 ] 

Michael Osipov commented on MSHARED-1045:
-----------------------------------------

Please report upstream.

> MSHARED-1024 breaks binary backwards compatibility
> --------------------------------------------------
>
>                 Key: MSHARED-1045
>                 URL: https://issues.apache.org/jira/browse/MSHARED-1045
>             Project: Maven Shared Components
>          Issue Type: Bug
>            Reporter: Andrei Silviu Dragnea
>            Assignee: Michael Osipov
>            Priority: Major
>
> [https://github.com/apache/maven-reporting-api/pull/2] breaks binary backwards compatibility of interface `MavenReport`, because replacing `org.codehaus.doxia.sink.Sink` with `org.apache.maven.doxia.sink.Sink` changes the signature of method:
> {code:java}
> void generate( Sink sink, Locale locale ) throws MavenReportException;{code}
> So nothing compiled against version `3.0` of the `maven-reporting-api` works with `3.1.0` anymore.
> I suggest either reverting this commit in a new release or updating the code in a backwards-compatible manner with two mutually recursive default implementations for both the old and new signature (this requires Java 8 support though):
>  
> {code:java}
> @Deprecated
> default void generate( org.codehaus.doxia.sink.Sink sink, Locale locale ) throws MavenReportException {
>     generate((Sink) sink, locale);
> }
> default void generate( Sink sink, Locale locale ) throws MavenReportException {
>     generate((org.codehaus.doxia.sink.Sink) sink, locale);
> } {code}
> The solution above can result in `ClassCastException`s though, because some `org.apache.maven.doxia.sink.Sink` maybe do not implement `org.codehaus.doxia.sink`. I do not know any way of safely evolving the type of an input parameter for a method.



--
This message was sent by Atlassian Jira
(v8.20.7#820007)