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

javax.enterprise.inject.spi.ProcessObserverMethod Maven / Gradle / Ivy

There is a newer version: 62
Show newest version
/*
 * JBoss, Home of Professional Open Source
 * Copyright 2010, 2015, 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 javax.enterprise.inject.spi;

import javax.enterprise.inject.spi.configurator.ObserverMethodConfigurator;

/**
 * 

* The container fires an event of this type for each {@linkplain javax.enterprise.event.Observes observer method} of each * enabled bean, before registering the {@link javax.enterprise.inject.spi.ObserverMethod} object. *

*

* For a custom implementation of {@link ObserverMethod}, the container must raise an event of type {@link ProcessSyntheticObserverMethod}. *

*

* Any observer of this event is permitted to wrap and/or replace the {@link javax.enterprise.inject.spi.ObserverMethod} by calling either {@link #setObserverMethod(ObserverMethod)} or {@link #configureObserverMethod()}. * If both methods are called within an observer notification an {@link IllegalStateException} is thrown. * The container must use the final value of this property, after all observers have been called, he container must use the final * value of this property, after all observers have been called, whenever it performs observer resolution. *

*

* If any observer method of a {@code ProcessObserverMethod} event throws an exception, the exception is treated as a definition * error by the container. *

* * @see ObserverMethod * @author Gavin King * @author David Allen * @author Antoine Sabot-Durand * @param The type of the event being observed * @param The bean type containing the observer method */ public interface ProcessObserverMethod { /** * The {@link javax.enterprise.inject.spi.AnnotatedMethod} representing the observer method. * *

* If invoked upon a {@link ProcessSyntheticObserverMethod} event, non-portable behavior results and the returned value should be ignored. *

* * @return the {@link javax.enterprise.inject.spi.AnnotatedMethod} representing the observer method * @throws IllegalStateException if called outside of the observer method invocation */ public AnnotatedMethod getAnnotatedMethod(); /** * The {@link javax.enterprise.inject.spi.ObserverMethod} object that will be used by the container to invoke the observer * when a matching event is fired. * * @return the {@link javax.enterprise.inject.spi.ObserverMethod} object that will be used by the container to call the * observer method * @throws IllegalStateException if called outside of the observer method invocation */ public ObserverMethod getObserverMethod(); /** * Registers a definition error with the container, causing the container to abort deployment after bean discovery is * complete. * * @param t A {@link java.lang.Throwable} representing the definition error * @throws IllegalStateException if called outside of the observer method invocation */ public void addDefinitionError(Throwable t); /** * Replaces the {@link javax.enterprise.inject.spi.ObserverMethod}. * * @param observerMethod the new {@link javax.enterprise.inject.spi.ObserverMethod} object to use * @throws IllegalStateException if called outside of the observer method invocation * * @since 2.0 */ public void setObserverMethod(ObserverMethod observerMethod); /** * Returns a {@link ObserverMethodConfigurator} initialized with the {@link ObserverMethod} processed by this event, * to configure a new ObserverMethod that will replace the original one at the end of the observer invocation. * * Each call returns the same ObserverMethodConfigurator * * @return a non reusable {@link ObserverMethodConfigurator} to configure the replacing ObserverMethod * @throws IllegalStateException if called outside of the observer method invocation * @since 2.0 */ public ObserverMethodConfigurator configureObserverMethod(); /** * Forces the container to ignore the observer method. * * @throws IllegalStateException if called outside of the observer method invocation * @since 2.0 */ public void veto(); }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy