| /* |
| * Copyright (c) 2010, 2018 Oracle and/or its affiliates. All rights reserved. |
| * |
| * This program and the accompanying materials are made available under the |
| * terms of the Eclipse Public License v. 2.0, which is available at |
| * http://www.eclipse.org/legal/epl-2.0. |
| * |
| * This Source Code may also be made available under the following Secondary |
| * Licenses when the conditions for such availability set forth in the |
| * Eclipse Public License v. 2.0 are satisfied: GNU General Public License, |
| * version 2 with the GNU Classpath Exception, which is available at |
| * https://www.gnu.org/software/classpath/license.html. |
| * |
| * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 |
| */ |
| |
| package test.extension; |
| |
| import jakarta.enterprise.event.Observes; |
| import jakarta.enterprise.inject.spi.AfterBeanDiscovery; |
| import jakarta.enterprise.inject.spi.BeanManager; |
| import jakarta.enterprise.inject.spi.BeforeBeanDiscovery; |
| import jakarta.enterprise.inject.spi.Extension; |
| import jakarta.enterprise.inject.spi.ProcessAnnotatedType; |
| |
| import test.beans.DuplicateTestBean; |
| |
| public class MyExtension implements Extension{ |
| public static boolean beforeBeanDiscoveryCalled = false; |
| public static boolean afterBeanDiscoveryCalled = false; |
| public static boolean processAnnotatedTypeCalled = false; |
| |
| void beforeBeanDiscovery(@Observes BeforeBeanDiscovery bdd){ |
| System.out.println("MyExtension::beforeBeanDiscovery" + bdd); |
| beforeBeanDiscoveryCalled = true; |
| } |
| |
| <T> void processAnnotatedType(@Observes ProcessAnnotatedType<T> pat){ |
| System.out.println("MyExtension:Process annotated type" + pat.getAnnotatedType().getBaseType()); |
| processAnnotatedTypeCalled = true; |
| //Vetoing the processing of DuplicateTestBean |
| //If this is not vetoed, at the InjectionPoint in Servlet, there would be |
| //an ambiguous dependency due to TestBean and DuplicateTestBean |
| if (pat.getAnnotatedType().getBaseType().equals(DuplicateTestBean.class)){ |
| pat.veto(); |
| } |
| } |
| |
| void afterBeanDiscovery(@Observes AfterBeanDiscovery abd, BeanManager bm){ |
| System.out.println("MyExtension: abd: " + abd + " BeanManager: " + bm); |
| |
| if (bm != null) { |
| //ensure a valid BeanManager is injected |
| afterBeanDiscoveryCalled = true; |
| } |
| } |
| } |