This is the first phase of the provider refactor. The goal of this phase is to remove the strong type checking for the Remote and RemoteParameter types, and instead move to a flag property namespace. This eliminates some of the benefits of strong type checking, but since the client never even sees these types (thanks to RemoteUtil), there's less benefit than one would normally expect.
The reason we're doing this is we want to make the providers much more loosely coupled with titan-server, to the point where they can run in separate processes and built from separate repos. Having a tight dependency on the titan-server type system makes this much more brittle. One change made in support of this direction is to ditch the validateOperation() method, which was only different for the nop provider and nothing else. This was just made a special case for nop since it's really only for testing.
Future work will further remove any dependencies such that the provider interfaces only operate on maps and strings, without any tight coupling.
Testing
gradle build test integrationTest endtoendTest (including engine tests).
Proposed Changes
This is the first phase of the provider refactor. The goal of this phase is to remove the strong type checking for the Remote and RemoteParameter types, and instead move to a flag property namespace. This eliminates some of the benefits of strong type checking, but since the client never even sees these types (thanks to RemoteUtil), there's less benefit than one would normally expect.
The reason we're doing this is we want to make the providers much more loosely coupled with titan-server, to the point where they can run in separate processes and built from separate repos. Having a tight dependency on the titan-server type system makes this much more brittle. One change made in support of this direction is to ditch the validateOperation() method, which was only different for the nop provider and nothing else. This was just made a special case for nop since it's really only for testing.
Future work will further remove any dependencies such that the provider interfaces only operate on maps and strings, without any tight coupling.
Testing
gradle build test integrationTest endtoendTest
(including engine tests).