All Downloads are FREE. Search and download functionalities are using the official Maven repository.

jakarta.enterprise.inject.spi.ProducerFactory Maven / Gradle / Ivy

/*
 * JBoss, Home of Professional Open Source
 * Copyright 2013, Red Hat, Inc., and individual contributors
 * by the @authors tag. See the copyright.txt in the distribution for a
 * full listing of individual contributors.
 *
 * 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 jakarta.enterprise.inject.spi;

/**
 * 

* An {@link ProducerFactory} can create an {@link Producer} for a given bean. *

* *

* The {@link ProducerFactory} obtained from {@link BeanManager#getProducerFactory(AnnotatedMethod, Bean)} or * {@link BeanManager#getProducerFactory(AnnotatedField, Bean)} is capable of providing container created * producers. This factory can be wrapped to add behavior to container created producers. *

* *

* For example: *

* *
 * BeanAttributes<MyBean> myBeanAttributes = beanManager.createBeanAttributes(myBeanAnnotatedFieldField);
 * beanManager.createBean(myBeanAttributes, MyBean.class, new ProducerFactory() {
 * 
 *     public <T> Producer<T> createProducer(Bean<T> bean) {
 *         return new WrappingProducer<T>(beanManager.getProducerFactory(myBeanAnnotatedField).createProducer(bean));
 *     }
 * });
 * 
* *

CDI Lite implementations are not required to provide support for {@code ProducerFactory}.

* * @author Pete Muir * @since 1.1 * @param type of the bean containing the producer */ public interface ProducerFactory { /** * Create a new producer for a bean. * * @param bean type * @param bean the bean to create the producer for, or null if creating a non-contextual object * @return the producer */ public Producer createProducer(Bean bean); }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy