package org.red5.server.api; /* * RED5 Open Source Flash Server - http://code.google.com/p/red5/ * * Copyright (c) 2006-2010 by respective authors (see below). All rights reserved. * * This library is free software; you can redistribute it and/or modify it under the * terms of the GNU Lesser General Public License as published by the Free Software * Foundation; either version 2.1 of the License, or (at your option) any later * version. * * This library is distributed in the hope that it will be useful, but WITHOUT ANY * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License along * with this library; if not, write to the Free Software Foundation, Inc., * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ import java.util.Map; import java.util.Set; import org.red5.server.jmx.mxbeans.AttributeStoreMXBean; /** * Base interface for all API objects with attributes * * @author The Red5 Project (red5@osflash.org) * @author Luke Hubbard (luke@codegent.com) */ public interface IAttributeStore extends AttributeStoreMXBean { /** * Get the attribute names. The resulting set will be read-only. * * @return set containing all attribute names */ public Set<String> getAttributeNames(); /** * Get the attributes. The resulting map will be read-only. * * @return map containing all attributes */ public Map<String, Object> getAttributes(); /** * Set an attribute on this object. * * @param name the name of the attribute to change * @param value the new value of the attribute * @return true if the attribute value changed otherwise false */ public boolean setAttribute(String name, Object value); /** * Set multiple attributes on this object. * * @param values the attributes to set */ public void setAttributes(Map<String, Object> values); /** * Set multiple attributes on this object. * * @param values the attributes to set */ public void setAttributes(IAttributeStore values); /** * Return the value for a given attribute. * * @param name the name of the attribute to get * @return the attribute value or null if the attribute doesn't exist */ public Object getAttribute(String name); /** * Return the value for a given attribute and set it if it doesn't exist. * * <p> * This is a utility function that internally performs the following code: * <p> * <code> * if (!hasAttribute(name)) setAttribute(name, defaultValue);<br> * return getAttribute(name);<br> * </code> * </p> * </p> * * @param name the name of the attribute to get * @param defaultValue the value of the attribute to set if the attribute doesn't * exist * @return the attribute value */ public Object getAttribute(String name, Object defaultValue); /** * Check the object has an attribute. * * @param name the name of the attribute to check * @return true if the attribute exists otherwise false */ public boolean hasAttribute(String name); /** * Remove an attribute. * * @param name the name of the attribute to remove * @return true if the attribute was found and removed otherwise false */ public boolean removeAttribute(String name); /** * Remove all attributes. */ public void removeAttributes(); }