details:   https://code.openbravo.com/erp/devel/pi/rev/e74dadb5ea9b
changeset: 35383:e74dadb5ea9b
user:      Carlos Aristu <carlos.aristu <at> openbravo.com>
date:      Wed Jan 30 13:48:11 2019 +0100
summary:   related to issue 40046: make observer be stateless

diffstat:

 
modules/org.openbravo.client.application/src/org/openbravo/client/application/event/RemoveImagesEventHandler.java
 |  33 +++++----
 1 files changed, 18 insertions(+), 15 deletions(-)

diffs (73 lines):

diff -r 3eadc0f13ac9 -r e74dadb5ea9b 
modules/org.openbravo.client.application/src/org/openbravo/client/application/event/RemoveImagesEventHandler.java
--- 
a/modules/org.openbravo.client.application/src/org/openbravo/client/application/event/RemoveImagesEventHandler.java
 Thu Jan 24 17:58:25 2019 +0100
+++ 
b/modules/org.openbravo.client.application/src/org/openbravo/client/application/event/RemoveImagesEventHandler.java
 Wed Jan 30 13:48:11 2019 +0100
@@ -11,7 +11,7 @@
  * under the License.
  * The Original Code is Openbravo ERP.
  * The Initial Developer of the Original Code is Openbravo SLU
- * All portions are Copyright (C) 2014-2015 Openbravo SLU
+ * All portions are Copyright (C) 2014-2019 Openbravo SLU
  * All Rights Reserved.
  * Contributor(s):  ______________________________________.
  ************************************************************************
@@ -42,7 +42,6 @@
 
   private static Entity[] entities = getImageEntities();
   private static final String DUMMY_IMAGE_ID = 
"2FA7212E426F11E5A151FEFF819CDC9F";
-  private Image dummyImage = null;
 
   @Override
   protected Entity[] getObservedEntities() {
@@ -66,7 +65,7 @@
           // If the property is mandatory replace the current image with a 
dummy one to prevent
           // breaking the not null constraint
           // See issue https://issues.openbravo.com/view.php?id=30571
-          event.setCurrentState(imageProperty, getDummyImage());
+          event.setCurrentState(imageProperty, getDummyImage(true));
         }
         if (bob != null) {
           String selectedProduct = event.getId();
@@ -87,18 +86,18 @@
    * Returns a dummy image (AD_Image instance) that will be named 
DUMMY_IMAGE_NAME and will not have
    * binary data
    * 
+   * @param createIfNotExists
+   *          a flag to force the creation of the dummy image in case it does 
not exist
+   * 
    * @return a dummy image
    */
-  private Image getDummyImage() {
-    // If not chached yet, obtain it, otherwise just return the cached one
-    if (dummyImage == null) {
-      OBCriteria<Image> dummyImageCriteria = 
OBDal.getInstance().createCriteria(Image.class);
-      dummyImageCriteria.add(Restrictions.eq(Image.PROPERTY_ID, 
DUMMY_IMAGE_ID));
-      dummyImage = (Image) dummyImageCriteria.uniqueResult();
-      // If it is not already created, do it
-      if (dummyImage == null) {
-        dummyImage = createDummyImage();
-      }
+  private Image getDummyImage(boolean createIfNotExists) {
+    OBCriteria<Image> dummyImageCriteria = 
OBDal.getInstance().createCriteria(Image.class);
+    dummyImageCriteria.add(Restrictions.idEq(DUMMY_IMAGE_ID));
+    Image dummyImage = (Image) dummyImageCriteria.uniqueResult();
+    // If it is not already created, do it
+    if (dummyImage == null && createIfNotExists) {
+      dummyImage = createDummyImage();
     }
     return dummyImage;
   }
@@ -108,8 +107,12 @@
    * 
    * @return the dummy image
    */
-  private Image createDummyImage() {
-    Image dummy = OBProvider.getInstance().get(Image.class);
+  private synchronized Image createDummyImage() {
+    Image dummy = getDummyImage(false);
+    if (dummy != null) {
+      return dummy;
+    }
+    dummy = OBProvider.getInstance().get(Image.class);
     dummy.setId(DUMMY_IMAGE_ID);
     dummy.setName("DummyImageForDeletedRows");
     dummy.setNewOBObject(true);


_______________________________________________
Openbravo-commits mailing list
Openbravo-commits@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/openbravo-commits

Reply via email to