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 :)

Reply via email to