/*
 * Copyright 2002-2018 the original author or authors.
 *
 * Licensed 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.springframework.core;

import org.springframework.lang.Nullable;

Interface defining a generic contract for attaching and accessing metadata to/from arbitrary objects.
Author:Rob Harrop
Since:2.0
/** * Interface defining a generic contract for attaching and accessing metadata * to/from arbitrary objects. * * @author Rob Harrop * @since 2.0 */
public interface AttributeAccessor {
Set the attribute defined by name to the supplied value. If value is null, the attribute is removed.

In general, users should take care to prevent overlaps with other metadata attributes by using fully-qualified names, perhaps using class or package names as prefix.

Params:
  • name – the unique attribute key
  • value – the attribute value to be attached
/** * Set the attribute defined by {@code name} to the supplied {@code value}. * If {@code value} is {@code null}, the attribute is {@link #removeAttribute removed}. * <p>In general, users should take care to prevent overlaps with other * metadata attributes by using fully-qualified names, perhaps using * class or package names as prefix. * @param name the unique attribute key * @param value the attribute value to be attached */
void setAttribute(String name, @Nullable Object value);
Get the value of the attribute identified by name. Return null if the attribute doesn't exist.
Params:
  • name – the unique attribute key
Returns:the current value of the attribute, if any
/** * Get the value of the attribute identified by {@code name}. * Return {@code null} if the attribute doesn't exist. * @param name the unique attribute key * @return the current value of the attribute, if any */
@Nullable Object getAttribute(String name);
Remove the attribute identified by name and return its value. Return null if no attribute under name is found.
Params:
  • name – the unique attribute key
Returns:the last value of the attribute, if any
/** * Remove the attribute identified by {@code name} and return its value. * Return {@code null} if no attribute under {@code name} is found. * @param name the unique attribute key * @return the last value of the attribute, if any */
@Nullable Object removeAttribute(String name);
Return true if the attribute identified by name exists. Otherwise return false.
Params:
  • name – the unique attribute key
/** * Return {@code true} if the attribute identified by {@code name} exists. * Otherwise return {@code false}. * @param name the unique attribute key */
boolean hasAttribute(String name);
Return the names of all attributes.
/** * Return the names of all attributes. */
String[] attributeNames(); }