Author: jaz
Date: Wed Mar 28 14:21:02 2007 New Revision: 523465 URL: http://svn.apache.org/viewvc?view=rev&rev=523465 Log: due to the nature of the checkout helper's payment processing events; it is necessary to disable transaction to appear like we are operating under an event style processing. The actual payment processing code should be reviewed and converted over to a service based structure Modified: ofbiz/trunk/applications/order/src/org/ofbiz/order/order/OrderServices.java Modified: ofbiz/trunk/applications/order/src/org/ofbiz/order/order/OrderServices.java URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/order/src/org/ofbiz/order/order/OrderServices.java?view=diff&rev=523465&r1=523464&r2=523465 ============================================================================== --- ofbiz/trunk/applications/order/src/org/ofbiz/order/order/OrderServices.java (original) +++ ofbiz/trunk/applications/order/src/org/ofbiz/order/order/OrderServices.java Wed Mar 28 14:21:02 2007 @@ -34,6 +34,8 @@ import org.ofbiz.entity.GenericEntity; import org.ofbiz.entity.GenericEntityException; import org.ofbiz.entity.GenericValue; +import org.ofbiz.entity.transaction.TransactionUtil; +import org.ofbiz.entity.transaction.GenericTransactionException; import org.ofbiz.entity.condition.EntityCondition; import org.ofbiz.entity.condition.EntityConditionList; import org.ofbiz.entity.condition.EntityExpr; @@ -58,6 +60,8 @@ import org.ofbiz.service.ServiceUtil; import org.ofbiz.workflow.WfUtil; +import javax.transaction.Transaction; + /** * Order Processing Services */ @@ -4099,30 +4103,46 @@ LocalDispatcher dispatcher = dctx.getDispatcher(); GenericDelegator delegator = dctx.getDelegator(); - ShoppingCart cart = (ShoppingCart) context.get("shoppingCart"); - GenericValue userLogin = cart.getUserLogin(); - Boolean manualHold = (Boolean) context.get("manualHold"); - if (manualHold == null) { - manualHold = Boolean.FALSE; - } + Transaction trans = null; + try { + // disable transaction procesing + trans = TransactionUtil.suspend(); - String productStoreId = cart.getProductStoreId(); - - GenericValue productStore = ProductStoreWorker.getProductStore(productStoreId, delegator); - CheckOutHelper coh = new CheckOutHelper(dispatcher, delegator, cart); + // get the cart + ShoppingCart cart = (ShoppingCart) context.get("shoppingCart"); + GenericValue userLogin = cart.getUserLogin(); + Boolean manualHold = (Boolean) context.get("manualHold"); + if (manualHold == null) { + manualHold = Boolean.FALSE; + } - // process payment - Map payResp; - try { - payResp = coh.processPayment(productStore, userLogin, false, manualHold.booleanValue()); - } catch (GeneralException e) { - Debug.logError(e, module); + String productStoreId = cart.getProductStoreId(); + + GenericValue productStore = ProductStoreWorker.getProductStore(productStoreId, delegator); + CheckOutHelper coh = new CheckOutHelper(dispatcher, delegator, cart); + + // process payment + Map payResp; + try { + payResp = coh.processPayment(productStore, userLogin, false, manualHold.booleanValue()); + } catch (GeneralException e) { + Debug.logError(e, module); + return ServiceUtil.returnError(e.getMessage()); + } + if (ServiceUtil.isError(payResp)) { + return ServiceUtil.returnError(ServiceUtil.getErrorMessage(payResp)); + } + + return ServiceUtil.returnSuccess(); + } catch (GenericTransactionException e) { return ServiceUtil.returnError(e.getMessage()); + } finally { + // resume transaction + try { + TransactionUtil.resume(trans); + } catch (GenericTransactionException e) { + Debug.logWarning(e, e.getMessage(), module); + } } - if (ServiceUtil.isError(payResp)) { - return ServiceUtil.returnError(ServiceUtil.getErrorMessage(payResp)); - } - - return ServiceUtil.returnSuccess(); } } |
Free forum by Nabble | Edit this page |