Adding a new method to a public interface breaks anyone else implementing that 
interface, for example Spring.

Adding a new method with a default implementation (except in the case where it 
is purely a composure of existing methods) isn't great either, you would 
probably have to throw Unsupported exception in the default implementation, 
which just pushes the mismatch from compile-time to runtime.  Default methods 
can also still be problematic if existing implementations of the interface 
happened to already have a method with the same name.

One option for adding new public methods would be to make a proposal for a new 
major version Geode 2.0.

Another option to consider is creating a new interface (rather than adding to 
existing interface).  Then change existing impl classes to implement both.

 -Owen

On 11/23/21, 10:33 AM, "Anilkumar Gingade" <aging...@vmware.com> wrote:

    Alberto,

    I don’t think the intention is to avoid, discourage adding a new 
method...As you have seen any changes to the API or adding a new API has 
implications on other parts of the product, it is good to validate/verify and 
address the dependency across the product and get everything working in 
accordance (without breaking any compatibility). If you have any requirement 
please propose through RFC and get an approval.

    -Anil. 

    On 11/23/21, 8:44 AM, "Alberto Gomez" <alberto.go...@est.tech> wrote:

        Hi,

        After the introduction of GEODE-9702 
(https://nam04.safelinks.protection.outlook.com/?url=https%3A%2F%2Fissues.apache.org%2Fjira%2Fbrowse%2FGEODE-9702&amp;data=04%7C01%7Conichols%40vmware.com%7C702629f1dee24c5f348a08d9aeafce3c%7Cb39138ca3cee4b4aa4d6cd83d9dd62f0%7C0%7C0%7C637732892374729426%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000&amp;sdata=eIIHIcdxkuNpUfHLVQEDW61XA5YaH7%2FZjTo8oURCkc0%3D&amp;reserved=0),
 adding a new method to a public interface will make the 
api-check-test-openjdk11 fail even if a default implementation is provided.

        My question is if the goal of this change is to forbid this type of 
changes in minor versions or if there is a process to follow in order for 
changes of this type to be added.

        I wanted to propose (in an RFC) the addition of a new parameter to the 
create gateway sender command that would require adding a new method to the 
GatewaySender interface as well as to other public interfaces and I was 
wondering if this will be possible at all, and if so, how should I proceed with 
it.

        Thanks,

        Alberto



Reply via email to