" and name: " + fulfillmentGroup.getFulfillmentOption().getName());
}
@Override
public FulfillmentEstimationResponse estimateCostForFulfillmentGroup(FulfillmentGroup fulfillmentGroup, Set<FulfillmentOption> options) throws FulfillmentPriceException {
FulfillmentEstimationResponse response = new FulfillmentEstimationResponse();
HashMap<FulfillmentOption, Money> prices = new HashMap<FulfillmentOption, Money>();
response.setFulfillmentOptionPrices(prices);
for (FulfillmentPricingProvider provider : providers) {
//Leave it up to the providers to determine if they can respond to a pricing estimate. If they can't, or if one or more of the options that are passed in can't be responded
//to, then the response from the pricing provider should not include the options that it could not respond to.
try {
FulfillmentEstimationResponse processorResponse = provider.estimateCostForFulfillmentGroup(fulfillmentGroup, options);
if (processorResponse != null
&& processorResponse.getFulfillmentOptionPrices() != null
&& processorResponse.getFulfillmentOptionPrices().size() > 0) {
prices.putAll(processorResponse.getFulfillmentOptionPrices());
}
} catch (FulfillmentPriceException e) {
//Shouldn't completely fail the rest of the estimation on a pricing exception. Another provider might still
//be able to respond
String errorMessage = "FulfillmentPriceException thrown when trying to estimate fulfillment costs from ";