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