refactor: Decompose NativeDriver to opaque interop drivers #415
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This change adds an abstraction layer over the interop details (such as marshalling strings and handling error response codes) using the typestate pattern to encapsulate the possible operations. This means that all the interaction builders don't need to keep track of interop concerns such as pact handles and interaction handles because those are all encapsulated in the abstraction layer.
Note that HTTP pacts and message pacts are different in that multiple HTTP interactions can be added to a pact before the mock server is started and the file is written, whereas only one message interaction can be configured/verified before the file is written. This creates a slight asymmetry in the API for where the file writing method is defined, but for good reason.
This should pave the way for adding specification v4 support.