|
22 | 22 | import org.apache.commons.logging.Log;
|
23 | 23 | import org.apache.commons.logging.LogFactory;
|
24 | 24 | import org.broadleafcommerce.common.crossapp.service.CrossAppAuthService;
|
| 25 | +import org.broadleafcommerce.common.extension.ExtensionResultHolder; |
25 | 26 | import org.broadleafcommerce.common.util.BLCRequestUtils;
|
26 | 27 | import org.broadleafcommerce.common.web.AbstractBroadleafWebRequestProcessor;
|
27 | 28 | import org.broadleafcommerce.common.web.BroadleafWebRequestProcessor;
|
@@ -74,6 +75,9 @@ public class CartStateRequestProcessor extends AbstractBroadleafWebRequestProces
|
74 | 75 |
|
75 | 76 | private final String mergeCartResponseKey = "bl_merge_cart_response";
|
76 | 77 |
|
| 78 | + @Resource(name = "blCartStateRequestProcessorExtensionManager") |
| 79 | + protected CartStateRequestProcessorExtensionManager extensionManager; |
| 80 | + |
77 | 81 | @Resource(name = "blOrderService")
|
78 | 82 | protected OrderService orderService;
|
79 | 83 |
|
@@ -106,21 +110,29 @@ public void process(WebRequest request) {
|
106 | 110 | return;
|
107 | 111 | }
|
108 | 112 |
|
109 |
| - Order cart = getOverrideCart(request); |
| 113 | + ExtensionResultHolder<Order> erh = new ExtensionResultHolder<Order>(); |
| 114 | + extensionManager.getProxy().lookupOrCreateCart(request, customer, erh); |
110 | 115 |
|
111 |
| - if (cart == null && mergeCartNeeded(customer, request)) { |
112 |
| - if (LOG.isDebugEnabled()) { |
113 |
| - LOG.debug("Merge cart required, calling mergeCart " + customer.getId()); |
| 116 | + Order cart; |
| 117 | + if (erh.getResult() != null) { |
| 118 | + cart = erh.getResult(); |
| 119 | + } else { |
| 120 | + cart = getOverrideCart(request); |
| 121 | + |
| 122 | + if (cart == null && mergeCartNeeded(customer, request)) { |
| 123 | + if (LOG.isDebugEnabled()) { |
| 124 | + LOG.debug("Merge cart required, calling mergeCart " + customer.getId()); |
| 125 | + } |
| 126 | + cart = mergeCart(customer, request); |
| 127 | + } else if (cart == null) { |
| 128 | + cart = orderService.findCartForCustomer(customer); |
114 | 129 | }
|
115 |
| - cart = mergeCart(customer, request); |
116 |
| - } else if (cart == null) { |
117 |
| - cart = orderService.findCartForCustomer(customer); |
118 |
| - } |
119 | 130 |
|
120 |
| - if (cart == null) { |
121 |
| - cart = orderService.getNullOrder(); |
122 |
| - } else { |
123 |
| - updateCartService.updateAndValidateCart(cart); |
| 131 | + if (cart == null) { |
| 132 | + cart = orderService.getNullOrder(); |
| 133 | + } else { |
| 134 | + updateCartService.updateAndValidateCart(cart); |
| 135 | + } |
124 | 136 | }
|
125 | 137 |
|
126 | 138 | request.setAttribute(cartRequestAttributeName, cart, WebRequest.SCOPE_REQUEST);
|
|
0 commit comments