svn commit: r1798353 - in /ofbiz/ofbiz-framework/trunk/applications: content/src/main/java/org/apache/ofbiz/content/survey/SurveyWrapper.java product/src/main/java/org/apache/ofbiz/product/product/ProductEvents.java

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

svn commit: r1798353 - in /ofbiz/ofbiz-framework/trunk/applications: content/src/main/java/org/apache/ofbiz/content/survey/SurveyWrapper.java product/src/main/java/org/apache/ofbiz/product/product/ProductEvents.java

jleroux@apache.org
Author: jleroux
Date: Sun Jun 11 10:12:32 2017
New Revision: 1798353

URL: http://svn.apache.org/viewvc?rev=1798353&view=rev
Log:
Fixed: ERROR: Cannot do a find that returns an EntityListIterator with no
transaction in place
(OFBIZ-9286)

While "Use try-with-resources statement wherever it's possible" I missed that
you must begin the transaction before the try-with-resources, this fixes last
cases, lesson learned!

Modified:
    ofbiz/ofbiz-framework/trunk/applications/content/src/main/java/org/apache/ofbiz/content/survey/SurveyWrapper.java
    ofbiz/ofbiz-framework/trunk/applications/product/src/main/java/org/apache/ofbiz/product/product/ProductEvents.java

Modified: ofbiz/ofbiz-framework/trunk/applications/content/src/main/java/org/apache/ofbiz/content/survey/SurveyWrapper.java
URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/applications/content/src/main/java/org/apache/ofbiz/content/survey/SurveyWrapper.java?rev=1798353&r1=1798352&r2=1798353&view=diff
==============================================================================
--- ofbiz/ofbiz-framework/trunk/applications/content/src/main/java/org/apache/ofbiz/content/survey/SurveyWrapper.java (original)
+++ ofbiz/ofbiz-framework/trunk/applications/content/src/main/java/org/apache/ofbiz/content/survey/SurveyWrapper.java Sun Jun 11 10:12:32 2017
@@ -43,6 +43,7 @@ import org.apache.ofbiz.entity.GenericEn
 import org.apache.ofbiz.entity.GenericValue;
 import org.apache.ofbiz.entity.condition.EntityCondition;
 import org.apache.ofbiz.entity.condition.EntityOperator;
+import org.apache.ofbiz.entity.transaction.GenericTransactionException;
 import org.apache.ofbiz.entity.transaction.TransactionUtil;
 import org.apache.ofbiz.entity.util.EntityListIterator;
 import org.apache.ofbiz.entity.util.EntityQuery;
@@ -398,8 +399,12 @@ public class SurveyWrapper {
         List<GenericValue> resp = null;
         boolean beganTransaction = false;
         int maxRows = startIndex + number;
-        try (EntityListIterator eli = this.getEli(question, maxRows)) {
+        try {
             beganTransaction = TransactionUtil.begin();
+        } catch (GenericTransactionException gte) {
+            Debug.logError(gte, "Unable to begin transaction", module);
+        }
+        try (EntityListIterator eli = this.getEli(question, maxRows)) {
             if (startIndex > 0 && number > 0) {
                 resp = eli.getPartialList(startIndex, number);
             } else {
@@ -574,9 +579,13 @@ public class SurveyWrapper {
         // index 2 = average
 
         boolean beganTransaction = false;
-        try (EntityListIterator eli = this.getEli(question, -1)) {
+        try {
             beganTransaction = TransactionUtil.begin();
-
+        } catch (GenericTransactionException gte) {
+            Debug.logError(gte, "Unable to begin transaction", module);
+        }
+        
+        try (EntityListIterator eli = this.getEli(question, -1)) {
             if (eli != null) {
                 GenericValue value;
                 while (((value = eli.next()) != null)) {
@@ -660,8 +669,13 @@ public class SurveyWrapper {
         long total = 0;
 
         boolean beganTransaction = false;
-        try (EntityListIterator eli = this.getEli(question, -1)) {
+        try {
             beganTransaction = TransactionUtil.begin();
+        } catch (GenericTransactionException gte) {
+            Debug.logError(gte, "Unable to begin transaction", module);
+        }
+
+        try (EntityListIterator eli = this.getEli(question, -1)) {
             if (eli != null) {
                 GenericValue value;
                 while (((value = eli.next()) != null)) {

Modified: ofbiz/ofbiz-framework/trunk/applications/product/src/main/java/org/apache/ofbiz/product/product/ProductEvents.java
URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/applications/product/src/main/java/org/apache/ofbiz/product/product/ProductEvents.java?rev=1798353&r1=1798352&r2=1798353&view=diff
==============================================================================
--- ofbiz/ofbiz-framework/trunk/applications/product/src/main/java/org/apache/ofbiz/product/product/ProductEvents.java (original)
+++ ofbiz/ofbiz-framework/trunk/applications/product/src/main/java/org/apache/ofbiz/product/product/ProductEvents.java Sun Jun 11 10:12:32 2017
@@ -113,9 +113,13 @@ public class ProductEvents {
         int errProds = 0;
 
         boolean beganTx = false;
-        try (EntityListIterator  entityListIterator = EntityQuery.use(delegator).from("Product").where(condition).queryIterator()) {
+        try {
             // begin the transaction
             beganTx = TransactionUtil.begin(7200);
+        } catch (GenericTransactionException gte) {
+            Debug.logError(gte, "Unable to begin transaction", module);
+        }
+        try (EntityListIterator  entityListIterator = EntityQuery.use(delegator).from("Product").where(condition).queryIterator()) {
             try {
                 if (Debug.infoOn()) {
                     long count = EntityQuery.use(delegator).from("Product").where(condition).queryCount();
@@ -126,7 +130,7 @@ public class ProductEvents {
                 Map<String, String> messageMap = UtilMisc.toMap("gee", gee.toString());
                 errMsg = UtilProperties.getMessage(resource,"productevents.error_getting_product_list", messageMap, UtilHttp.getLocale(request));
                 request.setAttribute("_ERROR_MESSAGE_", errMsg);
-                throw gee;
+                return "error";
             }
 
             GenericValue product;