Jean-Sebastien,
What happens to the model object that is being constructed when this error
occurs?
I'm assuming this is a reference or a wire of some kind?
Yours, Mike.
Jean-Sebastien Delfino wrote:
I'm changing the throw new IncompatibleInterfaceContractException()
statements in the composite builders to log statements. I need to do
that for three reasons:
- Throwing that exception abruptly stops further processing, preventing
us to continue validating the composite and log other relevant errors.
- That exception stops the composite builder and prevents me to build a
domain composite when there's an incompatible interface in part of the
domain.
- We're handling most other similar errors as logs so I'm not sure why
we've kept that one as a thrown exception, for example in the following
code:
boolean isCompatible =
interfaceContractMapper.isCompatible(compositeServiceInterfaceContract,promotedServiceInterfaceContract);
if(!isCompatible){
throw new
IncompatibleInterfaceContractException("Interface of composite service
"+promotedServiceName +" must be subset of the interface declared by
promoted component service.", compositeServiceInterfaceContract,
promotedServiceInterfaceContract);
}
}
} else {
warning("PromotedServiceNotFound", composite,
composite.getName().toString(), promotedServiceName);
if a "PromotedServiceNotFound" error is considered benign enough to just
be logged, then an "IncompatibleInterface" situation (in that case the
promoted service was found, so we're in a better shape here) is a good
candidate for logging as well :)