[ 
https://issues.apache.org/jira/browse/MSHARED-1045?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Michael Osipov reassigned MSHARED-1045:
---------------------------------------

    Assignee:     (was: Michael Osipov)

> 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
>            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)

Reply via email to