Our current model of how capabilities are known is rather flawed, with constants being defined/used left and right – without a reasonable basic model behind them.
Create a netconf.api.capabilities.ProtocolCapability enum and populate it with the current contents of https://www.iana.org/assignments/netconf-capability-urns/netconf-capability-urns.xhtml#netconf-capability-urns-1 . This enumeration should expose this basic interface:
enum ProtocolCapability { WRITABLE_RUNNING(":writable-running", "urn:ietf:params:netconf:capability:writable-running:1.0"), ...; public @NonNull String capabilityName() { // returns ":writable-running" } public @NonNull String capabilityURN() { // returns "urn:ietf:params:netconf:capability:writable-running:1.0" } }
Also create a companion ProtocolCapabilityURN static holder class for the individual URN strings and migrate constants.