You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by da...@apache.org on 2018/09/20 21:25:56 UTC

[isis] 01/02: ISIS-1974: backports synchronisation fix

This is an automated email from the ASF dual-hosted git repository.

danhaywood pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git

commit be330aad8f34c69b375d09a83726d3deb860fb21
Author: Andi Huber <ah...@apache.org>
AuthorDate: Thu Sep 20 07:50:57 2018 +0200

    ISIS-1974: backports synchronisation fix
---
 .../core/runtime/services/i18n/po/PoWriter.java    | 25 +++++++++++++---------
 1 file changed, 15 insertions(+), 10 deletions(-)

diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/i18n/po/PoWriter.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/i18n/po/PoWriter.java
index 562ac51..d7d6b3e 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/i18n/po/PoWriter.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/i18n/po/PoWriter.java
@@ -20,11 +20,14 @@ package org.apache.isis.core.runtime.services.i18n.po;
 
 import java.util.SortedMap;
 import java.util.SortedSet;
+
 import com.google.common.collect.Maps;
 import com.google.common.collect.Sets;
+
 import org.joda.time.LocalDateTime;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+
 import org.apache.isis.applib.services.i18n.TranslationService;
 import org.apache.isis.core.runtime.system.context.IsisContext;
 
@@ -33,13 +36,10 @@ class PoWriter extends PoAbstract {
     public static Logger LOG = LoggerFactory.getLogger(PoWriter.class);
 
     private static class Block {
-        private final String msgId;
         private final SortedSet<String> contexts = Sets.newTreeSet();
         private String msgIdPlural;
 
-        private Block(final String msgId) {
-            this.msgId = msgId;
-        }
+        private Block() { }
     }
 
     private final SortedMap<String, Block> blocksByMsgId = Maps.newTreeMap();
@@ -48,7 +48,7 @@ class PoWriter extends PoAbstract {
         super(translationServicePo, TranslationService.Mode.WRITE);
     }
 
-    //region > shutdown
+    // -- shutdown
 
     @Override
     void shutdown() {
@@ -109,16 +109,19 @@ class PoWriter extends PoAbstract {
         buf.append("\"Plural-Forms: nplurals=2; plural=n != 1;\\n\"").append("\n");
         buf.append("\n\n");
     }
-    //endregion
 
 
+
+    @Override
     public String translate(final String context, final String msgId) {
 
         if(msgId == null) {
             return null;
         }
         final Block block = blockFor(msgId);
-        block.contexts.add(context);
+        synchronized(block) {
+            block.contexts.add(context);
+        }
 
         return msgId;
     }
@@ -130,8 +133,10 @@ class PoWriter extends PoAbstract {
             return null;
         }
         final Block block = blockFor(msgId);
-        block.contexts.add(context);
-        block.msgIdPlural = msgIdPlural;
+        synchronized(block) {
+            block.contexts.add(context);
+            block.msgIdPlural = msgIdPlural;    
+        }
 
         return null;
     }
@@ -139,7 +144,7 @@ class PoWriter extends PoAbstract {
     private synchronized Block blockFor(final String msgId) {
         Block block = blocksByMsgId.get(msgId);
         if(block == null) {
-            block = new Block(msgId);
+            block = new Block(/*msgId*/);
             blocksByMsgId.put(msgId, block);
         }
         return block;