public final class JvmSdkFeatures
extends io.sphere.sdk.models.Base
SDK implementation classes extends Base
which provides default implementations for the methods by using
reflection following the suggestions of
Effective Java.
Domain models are no plain old Java objects, since the client does not poses control over them but needs to send update commands to SPHERE.IO, so setters would pretend a functionality which is not possible.
Clients for other cloud services provide setters and synchronize the model in the background. This approach still blocks the caller thread and makes it hard to impossible to tune error handling, timeouts and recover strategies. Our approach makes it explicit, that an operation can be performed in the background, takes time and might fail.
Since domain models are interfaces, you can use them in design patterns or add convenience methods.
The clients and the models are interfaces, so they can be replaced with test doubles. In addition the SDK provides builders and JSON converters to create models for unit tests.
For example QueryDsl
helps to formulate valid queries and discover
for which attributes can be in which way queried and sorted.