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;