2362N/A * Copyright (c) 2003, 2006, Oracle and/or its affiliates. All rights reserved. 0N/A * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 0N/A * This code is free software; you can redistribute it and/or modify it 0N/A * under the terms of the GNU General Public License version 2 only, as 2362N/A * published by the Free Software Foundation. Oracle designates this 0N/A * particular file as subject to the "Classpath" exception as provided 2362N/A * by Oracle in the LICENSE file that accompanied this code. 0N/A * This code is distributed in the hope that it will be useful, but WITHOUT 0N/A * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 0N/A * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 0N/A * version 2 for more details (a copy is included in the LICENSE file that 0N/A * accompanied this code). 0N/A * You should have received a copy of the GNU General Public License version 0N/A * 2 along with this work; if not, write to the Free Software Foundation, 0N/A * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 2362N/A * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 2362N/A * or visit www.oracle.com if you need additional information or have any 0N/A * This abstract class implements a weak cache that holds table data. 0N/A * <p>The table data is stored in an instance of 0N/A * {@link SnmpCachedData}, which is kept in a {@link WeakReference}. 0N/A * If the WeakReference is null or empty, the cached data is recomputed.</p> 0N/A * <p><b>NOTE: This class is not synchronized, subclasses must implement 0N/A * the appropriate synchronization when needed.</b></p> 0N/A * Interval of time in ms during which the cached table data 0N/A * is considered valid. 0N/A * A weak refernce holding cached table data. 0N/A * true if the given cached table data is obsolete. 0N/A * Returns the cached table data. 0N/A * Returns null if the cached data is obsolete, or if there is no 0N/A * cached data, or if the cached data was garbage collected. 0N/A * @return a still valid cached data or null. 0N/A * Returns the cached table data, if it is still valid, 0N/A * or recompute it if it is obsolete. 0N/A * When cache data is recomputed, store it in the weak reference, 0N/A * unless {@link #validity} is 0: then the data will not be stored 0N/A * This method calls {@link #isObsolete(SnmpCachedData)} to determine 0N/A * whether the cached data is obsolete, and { 0N/A * {@link #updateCachedDatas(Object)} to recompute it. 0N/A * @param context A context object. 0N/A * @return the valid cached data, or the recomputed table data. 0N/A * Recompute cached data. 0N/A * @param context A context object, as passed to 0N/A * {@link #getTableDatas(Object)} 0N/A * Return a table handler that holds the table data. 0N/A * This method should return the cached table data if it is still 0N/A * valid, recompute it and cache the new value if it's not.