From 19847dc4cee2e15f004d06c35da89a63d3d1a9b6 Mon Sep 17 00:00:00 2001 From: Carlos Ruiz Date: Wed, 12 Apr 2017 23:49:59 +0200 Subject: [PATCH] IDEMPIERE-3329 Issue with cached translations / integrate from Nicolas Micoud --- org.adempiere.base/src/org/compiere/model/PO.java | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/org.adempiere.base/src/org/compiere/model/PO.java b/org.adempiere.base/src/org/compiere/model/PO.java index 8d9543df63..2605db0c63 100644 --- a/org.adempiere.base/src/org/compiere/model/PO.java +++ b/org.adempiere.base/src/org/compiere/model/PO.java @@ -1909,7 +1909,7 @@ public abstract class PO + ", ID=" + m_IDs[0]); } - String key = get_TableName() + "." + columnName + "|" + get_ID() + "|" + AD_Language; + String key = getTrlCacheKey(columnName, AD_Language); String retValue = null; if (! reload && trl_cache.containsKey(key)) { retValue = trl_cache.get(key); @@ -1942,6 +1942,11 @@ public abstract class PO return retValue; } // get_Translation + /** Return the key used in the translation cache */ + private String getTrlCacheKey(String columnName, String AD_Language) { + return get_TableName() + "." + columnName + "|" + get_ID() + "|" + AD_Language; + } + /** * Get Translation of column * @param ctx context @@ -3645,6 +3650,14 @@ public abstract class PO else sqlcols.append(value.toString()); sqlcols.append(","); + + // Reset of related translation cache entries + String[] availableLanguages = Language.getNames(); + for (String langName : availableLanguages) { + Language language = Language.getLanguage(langName); + String key = getTrlCacheKey(columnName, language.getAD_Language()); + trl_cache.remove(key); + } } } StringBuilder whereid = new StringBuilder(" WHERE ").append(keyColumn).append("=").append(get_ID());