/* * Copyright (C) 2015 Red Hat, Inc. and/or its affiliates. * * 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.jboss.errai.ioc.client.container; import java.lang.annotation.Annotation; import java.util.Set; import org.jboss.errai.ioc.client.api.ActivatedBy; /** * Definition of a managed bean. * * @author Max Barkley <mbarkley@redhat.com> * @author Christian Sadilek <csadilek@redhat.com> */ public interface IOCBeanDef<T> { /** * @param type * Must not be null. * @return True if this bean is assginable to the given type. */ public boolean isAssignableTo(Class<?> type); /** * Returns the type of the bean. * * @see #getBeanClass() * @return the type of the bean. */ public Class<T> getType(); /** * Returns the actual bean class represented by this bean. * * @return the actual type of the bean. */ public Class<?> getBeanClass(); /** * Returns the scope of the bean. * * @returns the annotation type representing the scope of the bean. */ public Class<? extends Annotation> getScope(); /** * Returns any qualifiers associated with the bean. * * @return Must never be null. */ public Set<Annotation> getQualifiers(); /** * Returns true if the beans qualifiers match the specified set of qualifiers. * * @param annotations * the qualifiers to compare * @return returns whether or not the bean matches the set of qualifiers */ public boolean matches(Set<Annotation> annotations); /** * Returns the name of the bean. * * @return the name of the bean. If the bean does not have a name, returns * null. */ public String getName(); /** * Returns true if the bean is activated. All managed beans are activated by * default unless a {@link BeanActivator} was specified using * {@link ActivatedBy} which will be consulted when invoking this method. * * @return true if activated, otherwise false. */ public boolean isActivated(); /** * Returns true if this bean definition was discovered and loaded at runtime from * an external script. * * @return true if dynamic, otherwise false. */ public default boolean isDynamic() { return false; } }