blob: 03f0424203d4a805f55f84cf212a0ce92d2c0504 [file] [log] [blame]
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.tez.runtime.common.objectregistry;
/**
* Preliminary version of a simple shared object cache to re-use
* objects across multiple tasks within the same container/JVM.
*/
public interface ObjectRegistry {
/**
* Insert or update object into the registry. This will remove an object
* associated with the same key with a different life-cycle as there is only
* one instance of an Object stored for a given key irrespective of the
* life-cycle attached to the Object.
* @param lifeCycle What life-cycle is the Object valid for
* @param key Key to identify the Object
* @param value Object to be inserted
* @return Previous Object associated with the key attached if present
* else null. Could return the same object if the object was associated with
* the same key for a different life-cycle.
*/
public Object add(ObjectLifeCycle lifeCycle, String key, Object value);
/**
* Return the object associated with the provided key
* @param key Key to find object
* @return Object if found else null
*/
public Object get(String key);
/**
* Delete the object associated with the provided key
* @param lifeCycle What life-cycle is the Object valid for
* @param key Key to find object
* @return True if an object was found and removed
*/
public boolean delete(String key);
}