diff --git a/org.adempiere.base/src/org/compiere/model/MAcctSchema.java b/org.adempiere.base/src/org/compiere/model/MAcctSchema.java index 58bd6f7dde..842b88c744 100644 --- a/org.adempiere.base/src/org/compiere/model/MAcctSchema.java +++ b/org.adempiere.base/src/org/compiere/model/MAcctSchema.java @@ -137,7 +137,7 @@ public class MAcctSchema extends X_C_AcctSchema } // getClientAcctSchema /** Cache of Client AcctSchema Arrays **/ - private static CCache s_schema = new CCache(I_AD_ClientInfo.Table_Name, 3, 120, true); // 3 clients + private static CCache s_schema = new CCache(I_AD_ClientInfo.Table_Name, I_AD_ClientInfo.Table_Name+"|MAcctSchema[]", 3, 120, true); // 3 clients /** Cache of AcctSchemas **/ private static CCache s_cache = new CCache(Table_Name, 3, 120, true); // 3 accounting schemas diff --git a/org.adempiere.base/src/org/compiere/model/MAlertProcessor.java b/org.adempiere.base/src/org/compiere/model/MAlertProcessor.java index 93c2e3d457..d1b30129d0 100644 --- a/org.adempiere.base/src/org/compiere/model/MAlertProcessor.java +++ b/org.adempiere.base/src/org/compiere/model/MAlertProcessor.java @@ -83,7 +83,7 @@ public class MAlertProcessor extends X_AD_AlertProcessor } // MAlertProcessor /** Cache: AD_AlertProcessor -> Alerts array */ - private static CCache s_cacheAlerts = new CCache(I_AD_Alert.Table_Name, "AD_Alert_ForProcessor", 10, false); + private static CCache s_cacheAlerts = new CCache(I_AD_Alert.Table_Name, "AD_Alert|AlertProcessor", 10, false); /** * Get Server ID diff --git a/org.adempiere.base/src/org/compiere/model/MCountry.java b/org.adempiere.base/src/org/compiere/model/MCountry.java index 5ed796dc90..80244437c9 100644 --- a/org.adempiere.base/src/org/compiere/model/MCountry.java +++ b/org.adempiere.base/src/org/compiere/model/MCountry.java @@ -113,12 +113,13 @@ public class MCountry extends X_C_Country * Set Default Language to Client Language * @param ctx context */ - private static void loadAllCountries (Properties ctx) + private static synchronized void loadAllCountries (Properties ctx) { MClient client = MClient.get (ctx); MLanguage lang = MLanguage.get(ctx, client.getAD_Language()); // - s_countries = new CCache(Table_Name, 250); + if (s_countries == null) + s_countries = new CCache(Table_Name, 250); List countries = new Query(ctx, Table_Name, "", null) .setOnlyActiveRecords(true) .list(); @@ -183,7 +184,7 @@ public class MCountry extends X_C_Country /** Country Cache */ private static CCache s_countries = null; /** Default Country */ - private static CCache s_default = new CCache(Table_Name, 3); + private static CCache s_default = new CCache(Table_Name, Table_Name+"|Default", 3); /** Static Logger */ private static CLogger s_log = CLogger.getCLogger (MCountry.class); // Default DisplaySequence */ diff --git a/org.adempiere.base/src/org/compiere/model/MProcess.java b/org.adempiere.base/src/org/compiere/model/MProcess.java index 8e07379176..090e42f0f4 100644 --- a/org.adempiere.base/src/org/compiere/model/MProcess.java +++ b/org.adempiere.base/src/org/compiere/model/MProcess.java @@ -106,7 +106,7 @@ public class MProcess extends X_AD_Process /** Cache ID */ private static CCache s_cache = new CCache(Table_Name, 20); /** Cache UUID */ - private static CCache s_cacheUU = new CCache(Table_Name, 20); + private static CCache s_cacheUU = new CCache(Table_Name, Table_Name+"|AD_Process_UU", 20); /************************************************************************** diff --git a/org.adempiere.base/src/org/compiere/model/MProductCategory.java b/org.adempiere.base/src/org/compiere/model/MProductCategory.java index 505012bac0..27ff1a214b 100644 --- a/org.adempiere.base/src/org/compiere/model/MProductCategory.java +++ b/org.adempiere.base/src/org/compiere/model/MProductCategory.java @@ -115,7 +115,7 @@ public class MProductCategory extends X_M_Product_Category /** Categopry Cache */ private static CCache s_cache = new CCache(Table_Name, 20); /** Product Cache */ - private static CCache s_products = new CCache(I_M_Product.Table_Name, Table_Name + ".M_Product", 100); + private static CCache s_products = new CCache(I_M_Product.Table_Name, Table_Name + "|M_Product", 100); /** Static Logger */ private static CLogger s_log = CLogger.getCLogger (MProductCategory.class); diff --git a/org.adempiere.base/src/org/compiere/model/MStatusLine.java b/org.adempiere.base/src/org/compiere/model/MStatusLine.java index 3b314dfa61..00ede25210 100644 --- a/org.adempiere.base/src/org/compiere/model/MStatusLine.java +++ b/org.adempiere.base/src/org/compiere/model/MStatusLine.java @@ -51,7 +51,7 @@ public class MStatusLine extends X_AD_StatusLine private static CLogger s_log = CLogger.getCLogger(MStatusLine.class); /** Status Line Cache */ private static CCache s_cache = new CCache(Table_Name, 10); - private static CCache s_cachew = new CCache(Table_Name, 10); + private static CCache s_cachew = new CCache(Table_Name, Table_Name+"|MStatusLine[]", 10); /** * Standard Constructor diff --git a/org.adempiere.base/src/org/compiere/model/PO.java b/org.adempiere.base/src/org/compiere/model/PO.java index a62b4e32e1..885c3636fd 100644 --- a/org.adempiere.base/src/org/compiere/model/PO.java +++ b/org.adempiere.base/src/org/compiere/model/PO.java @@ -1890,7 +1890,7 @@ public abstract class PO } // setAD_User_ID /** Cache */ - private static CCache trl_cache = new CCache("po_trl", 5); + private static CCache trl_cache = new CCache("PO_Trl", 5); public String get_Translation (String columnName, String AD_Language) { diff --git a/org.adempiere.base/src/org/compiere/util/Env.java b/org.adempiere.base/src/org/compiere/util/Env.java index e065e3ae55..0ef171534c 100644 --- a/org.adempiere.base/src/org/compiere/util/Env.java +++ b/org.adempiere.base/src/org/compiere/util/Env.java @@ -1936,7 +1936,7 @@ public final class Env /** Window Cache */ private static CCache s_windowsvo - = new CCache(I_AD_Window.Table_Name, 10); + = new CCache(I_AD_Window.Table_Name, I_AD_Window.Table_Name+"|GridWindowVO", 10); /** * Get Window Model diff --git a/org.adempiere.base/src/org/compiere/util/Msg.java b/org.adempiere.base/src/org/compiere/util/Msg.java index e3d9400f7a..e23d712d75 100644 --- a/org.adempiere.base/src/org/compiere/util/Msg.java +++ b/org.adempiere.base/src/org/compiere/util/Msg.java @@ -21,11 +21,14 @@ import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.text.MessageFormat; +import java.util.HashMap; import java.util.Iterator; +import java.util.Map; import java.util.Properties; import java.util.logging.Level; import org.compiere.Adempiere; +import org.compiere.model.I_AD_Element; import org.compiere.model.I_AD_Message; /** @@ -67,18 +70,18 @@ public final class Msg } // Mag /** The Map */ - private CCache> m_languages - = new CCache>(null, "msg_lang", 2, 0, false); + private Map> m_languages + = new HashMap>(); - private CCache> m_elementCache - = new CCache>(null, "msg_element", 2, 0, false); + private Map> m_elementCache + = new HashMap>(); /** * Get Language specific Message Map * @param ad_language Language Key * @return HashMap of Language */ - private CCache getMsgMap (String ad_language) + private synchronized CCache getMsgMap (String ad_language) { String AD_Language = ad_language; if (AD_Language == null || AD_Language.length() == 0) @@ -89,7 +92,7 @@ public final class Msg return retValue; // Load Language - retValue = initMsg(AD_Language); + retValue = initMsg(AD_Language, retValue); if (retValue != null) { m_languages.put(AD_Language, retValue); @@ -98,17 +101,17 @@ public final class Msg return retValue; } // getMsgMap - private CCache getElementMap (String ad_language) + private synchronized CCache getElementMap (String ad_language) { String AD_Language = ad_language; if (AD_Language == null || AD_Language.length() == 0) AD_Language = Language.getBaseAD_Language(); // Do we have the language ? CCache retValue = (CCache)m_elementCache.get(AD_Language); - if (retValue != null && retValue.size() > 0) + if (retValue != null) return retValue; - retValue = new CCache("element", 100, 0, false, 0); + retValue = new CCache(I_AD_Element.Table_Name, I_AD_Element.Table_Name + "|" + AD_Language, 100, 0, false, 0); m_elementCache.put(AD_Language, retValue); return retValue; } @@ -121,10 +124,10 @@ public final class Msg * @param AD_Language Language * @return Cache HashMap */ - private CCache initMsg (String AD_Language) + private CCache initMsg (String AD_Language, CCache msg) { - // Trace.printStack(); - CCache msg = new CCache(I_AD_Message.Table_Name, MAP_SIZE, 0, false, 0); + if (msg == null) + msg = new CCache(I_AD_Message.Table_Name, I_AD_Message.Table_Name + "|" + AD_Language, MAP_SIZE, 0, false, 0); // if (!DB.isConnected()) { @@ -183,7 +186,7 @@ public final class Msg /** * Reset Message cache */ - public void reset() + public synchronized void reset() { if (m_languages == null) return; @@ -195,14 +198,13 @@ public final class Msg CCache hm = iterator.next(); hm.reset(); } - m_languages.clear(); } // reset /** * Return an array of the installed Languages * @return Array of loaded Languages or null */ - public String[] getLanguages() + public synchronized String[] getLanguages() { if (m_languages == null) return null; @@ -216,11 +218,11 @@ public final class Msg * @param language Language code * @return true, if language is loaded */ - public boolean isLoaded (String language) + public synchronized boolean isLoaded (String language) { if (m_languages == null) return false; - return m_languages.containsKey(language); + return m_languages.get(language) != null && !m_languages.get(language).isEmpty(); } // isLoaded /** diff --git a/org.adempiere.base/src/org/compiere/wf/MWorkflow.java b/org.adempiere.base/src/org/compiere/wf/MWorkflow.java index 5583fc6935..e774e1d6be 100644 --- a/org.adempiere.base/src/org/compiere/wf/MWorkflow.java +++ b/org.adempiere.base/src/org/compiere/wf/MWorkflow.java @@ -145,9 +145,9 @@ public class MWorkflow extends X_AD_Workflow /** Single Cache */ - private static CCache s_cache = new CCache(Table_Name, 20); + private static CCache s_cache = new CCache(Table_Name, Table_Name+"|Language_Workflow", 20); /** Document Value Cache */ - private static CCache s_cacheDocValue = new CCache (Table_Name, Table_Name+"_Document_Value", 5); + private static CCache s_cacheDocValue = new CCache (Table_Name, Table_Name+"|AD_Client_Table", 5); /** Static Logger */ private static CLogger s_log = CLogger.getCLogger (MWorkflow.class); diff --git a/org.adempiere.server/src/main/servlet/org/compiere/web/AdempiereMonitor.java b/org.adempiere.server/src/main/servlet/org/compiere/web/AdempiereMonitor.java index 1e56f04d49..8c55a572eb 100644 --- a/org.adempiere.server/src/main/servlet/org/compiere/web/AdempiereMonitor.java +++ b/org.adempiere.server/src/main/servlet/org/compiere/web/AdempiereMonitor.java @@ -1454,7 +1454,9 @@ public class AdempiereMonitor extends HttpServlet line.addElement(new th().addElement("Node Id")); } for (CacheInfo ccache : instances) - { + { + if (ccache.getName().endsWith("|CCacheListener")) + continue; line = new tr(); line.addElement(new td().addElement(WebEnv.getCellContent(ccache.getName()))); line.addElement(new td().addElement(WebEnv.getCellContent(ccache.getTableName()))); diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/AEnv.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/AEnv.java index 8be3ac7d80..72bcdc3a8f 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/AEnv.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/AEnv.java @@ -291,7 +291,7 @@ public final class AEnv CCache cache = windowCache.get(sessionID); if (cache == null) { - cache = new CCache(I_AD_Window.Table_Name, 10); + cache = new CCache(I_AD_Window.Table_Name, I_AD_Window.Table_Name+"|GridWindowVO|Session", 10); windowCache.put(sessionID, cache); } cache.put(AD_Window_ID, mWindowVO); diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/editor/WTableDirEditor.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/editor/WTableDirEditor.java index 3082baac46..ca27170704 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/editor/WTableDirEditor.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/editor/WTableDirEditor.java @@ -901,7 +901,7 @@ ContextMenuListener, IZoomableEditor private WTableDirEditor editor; protected CCacheListener(String tableName, WTableDirEditor editor) { - super(tableName, tableName, 0, true); + super(tableName, tableName+"|CCacheListener", 0, 0, true); this.editor = editor; }