Indeed, this breaks the ABI, since it removes the constructors. I want to propose a solution that doesn't break the ABI:
1) Leave the previous Contractor class and it's DBus interface as they are, make their methods return empty hashmaps, and add the proper deprecation annotations. In other words, leave the previous contractor ABI untouched.
2) In addition to (1), Modify the class name for the new Contractor API. Instead of Granite.Services.Contractor we could use something like Granite.Services.ContractorProxy (please let me know if you can figure out a better name!) for the new API. This way we only add symbols without removing or modifying any previous symbol.
Indeed, this breaks the ABI, since it removes the constructors. I want to propose a solution that doesn't break the ABI:
1) Leave the previous Contractor class and it's DBus interface as they are, make their methods return empty hashmaps, and add the proper deprecation annotations. In other words, leave the previous contractor ABI untouched.
2) In addition to (1), Modify the class name for the new Contractor API. Instead of Granite. Services. Contractor we could use something like Granite. Services. ContractorProxy (please let me know if you can figure out a better name!) for the new API. This way we only add symbols without removing or modifying any previous symbol.