org.eclipse.sisu.BeanEntry Maven / Gradle / Ivy
/*******************************************************************************
* Copyright (c) 2010-present Sonatype, Inc.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Stuart McCulloch (Sonatype, Inc.) - initial API and implementation
*******************************************************************************/
package org.eclipse.sisu;
import java.lang.annotation.Annotation;
import java.util.Map.Entry;
import javax.inject.Provider;
import javax.inject.Qualifier;
/**
* Describes Qualified bean implementations of T:
*
*
*
* @Inject
* Iterable<BeanEntry<Named, Command>> commands;
*
*
* Use this when you want to know more about available beans; especially if you want to avoid creating instances.
*
* @see org.eclipse.sisu.inject.BeanLocator
*/
public interface BeanEntry
extends Entry
{
/**
* Returns the @{@link Qualifier} annotation associated with this particular bean.
*
* @return Qualifier annotation
*/
Q getKey();
/**
* Returns the associated instance of the bean; returns same instance for each call.
*
* @return Bean instance (lazily-created)
*/
T getValue();
/**
* Returns the underlying {@link Provider}; may support creation of multiple instances.
*
* @return Bean provider
*/
Provider getProvider();
/**
* Returns a human-readable description of the bean; see @{@link Description}.
*
* @return Human-readable description
* @see Description
*/
String getDescription();
/**
* Attempts to find the implementation type without creating the bean instance.
*
* @return Implementation type; {@code null} if the type cannot be determined
*/
Class getImplementationClass();
/**
* Returns an arbitrary object that indicates where this bean was configured.
*
* @return Source location
*/
Object getSource();
/**
* Returns the bean's rank; higher ranked beans override lower ranked beans.
*
* @return Assigned rank
* @see Priority
*/
int getRank();
}