/** * Update the history store with the value of an an read, write or execute operation. Also, the * timestamp of the insertion is recorded. Also, the recorded history values are added to the * given json value. * * @param pJmxReq request for which an entry should be added in this history store * @param pJson the JSONObject to which to add the history. */ public synchronized void updateAndAdd(JmxRequest pJmxReq, JSONObject pJson) { long timestamp = System.currentTimeMillis() / 1000; pJson.put(KEY_TIMESTAMP, timestamp); JmxRequest.Type type = pJmxReq.getType(); if (type == EXEC || type == WRITE) { HistoryEntry entry = historyStore.get(new HistoryKey(pJmxReq)); if (entry != null) { synchronized (entry) { // A history data to json object for the response pJson.put(KEY_HISTORY, entry.jsonifyValues()); // Update history for next time if (type == EXEC) { entry.add(pJson.get(KEY_VALUE), timestamp); } else if (type == WRITE) { // The new value to set as string representation entry.add(pJmxReq.getValue(), timestamp); } } } } else if (type == READ) { updateReadHistory(pJmxReq, pJson, timestamp); } }
private void addAttributeFromSingleValue( JSONObject pHistMap, String pAttrName, HistoryKey pKey, Object pValue, long pTimestamp) { HistoryEntry entry = getEntry(pKey, pValue, pTimestamp); if (entry != null) { synchronized (entry) { pHistMap.put(pAttrName, entry.jsonifyValues()); entry.add(pValue, pTimestamp); } } }
private HistoryEntry getEntry(HistoryKey pKey, Object pValue, long pTimestamp) { HistoryEntry entry = historyStore.get(pKey); if (entry != null) { return entry; } // Now try all known patterns and add lazily the key for (HistoryKey key : patterns.keySet()) { if (key.matches(pKey)) { entry = new HistoryEntry(patterns.get(key)); entry.add(pValue, pTimestamp); historyStore.put(pKey, entry); return entry; } } return null; }