| /** |
| * Copyright (C) 2009 Google Inc. |
| * |
| * 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 com.google.inject.spi; |
| |
| import com.google.inject.TypeLiteral; |
| |
| /** |
| * Listens for Guice to encounter injectable types. If a given type has its constructor injected in |
| * one situation but only its methods and fields injected in another, Guice will notify this |
| * listener once. |
| * |
| * <p>Useful for extra type checking, {@linkplain TypeEncounter#register(InjectionListener) |
| * registering injection listeners}, and {@linkplain TypeEncounter#bindInterceptor( |
| * com.google.inject.matcher.Matcher, org.aopalliance.intercept.MethodInterceptor[]) |
| * binding method interceptors}. |
| * |
| * @since 2.0 |
| */ |
| public interface TypeListener { |
| |
| /** |
| * Invoked when Guice encounters a new type eligible for constructor or members injection. |
| * Called during injector creation (or afterwords if Guice encounters a type at run time and |
| * creates a JIT binding). |
| * |
| * @param type encountered by Guice |
| * @param encounter context of this encounter, enables reporting errors, registering injection |
| * listeners and binding method interceptors for {@code type}. |
| * |
| * @param <I> the injectable type |
| */ |
| <I> void hear(TypeLiteral<I> type, TypeEncounter<I> encounter); |
| |
| } |