103b81a6b931a06c7697e422b218e3734a7f262cclimpbizkit/**
203b81a6b931a06c7697e422b218e3734a7f262cclimpbizkit * Copyright (C) 2009 Google Inc.
303b81a6b931a06c7697e422b218e3734a7f262cclimpbizkit *
403b81a6b931a06c7697e422b218e3734a7f262cclimpbizkit * Licensed under the Apache License, Version 2.0 (the "License");
503b81a6b931a06c7697e422b218e3734a7f262cclimpbizkit * you may not use this file except in compliance with the License.
603b81a6b931a06c7697e422b218e3734a7f262cclimpbizkit * You may obtain a copy of the License at
703b81a6b931a06c7697e422b218e3734a7f262cclimpbizkit *
803b81a6b931a06c7697e422b218e3734a7f262cclimpbizkit * http://www.apache.org/licenses/LICENSE-2.0
903b81a6b931a06c7697e422b218e3734a7f262cclimpbizkit *
1003b81a6b931a06c7697e422b218e3734a7f262cclimpbizkit * Unless required by applicable law or agreed to in writing, software
1103b81a6b931a06c7697e422b218e3734a7f262cclimpbizkit * distributed under the License is distributed on an "AS IS" BASIS,
1203b81a6b931a06c7697e422b218e3734a7f262cclimpbizkit * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1303b81a6b931a06c7697e422b218e3734a7f262cclimpbizkit * See the License for the specific language governing permissions and
1403b81a6b931a06c7697e422b218e3734a7f262cclimpbizkit * limitations under the License.
1503b81a6b931a06c7697e422b218e3734a7f262cclimpbizkit */
1603b81a6b931a06c7697e422b218e3734a7f262cclimpbizkit
175ae41eb77073b47e75c2dcf3766137f2352fbaf9limpbizkitpackage com.google.inject.internal;
1803b81a6b931a06c7697e422b218e3734a7f262cclimpbizkit
19132a5db7c643b8f367eb5f09024cf13ea37c9831sberlinimport com.google.inject.spi.ProvisionListenerBinding;
20ee79246d47f0e4a0a4f86543809135620487332dlimpbizkitimport com.google.inject.spi.TypeListenerBinding;
2103b81a6b931a06c7697e422b218e3734a7f262cclimpbizkit
2203b81a6b931a06c7697e422b218e3734a7f262cclimpbizkit/**
235ae41eb77073b47e75c2dcf3766137f2352fbaf9limpbizkit * Handles {@code Binder#bindListener} commands.
2403b81a6b931a06c7697e422b218e3734a7f262cclimpbizkit *
2503b81a6b931a06c7697e422b218e3734a7f262cclimpbizkit * @author jessewilson@google.com (Jesse Wilson)
2603b81a6b931a06c7697e422b218e3734a7f262cclimpbizkit */
27132a5db7c643b8f367eb5f09024cf13ea37c9831sberlinfinal class ListenerBindingProcessor extends AbstractProcessor {
2803b81a6b931a06c7697e422b218e3734a7f262cclimpbizkit
29132a5db7c643b8f367eb5f09024cf13ea37c9831sberlin  ListenerBindingProcessor(Errors errors) {
3003b81a6b931a06c7697e422b218e3734a7f262cclimpbizkit    super(errors);
3103b81a6b931a06c7697e422b218e3734a7f262cclimpbizkit  }
3203b81a6b931a06c7697e422b218e3734a7f262cclimpbizkit
33ee79246d47f0e4a0a4f86543809135620487332dlimpbizkit  @Override public Boolean visit(TypeListenerBinding binding) {
34ee79246d47f0e4a0a4f86543809135620487332dlimpbizkit    injector.state.addTypeListener(binding);
3503b81a6b931a06c7697e422b218e3734a7f262cclimpbizkit    return true;
3603b81a6b931a06c7697e422b218e3734a7f262cclimpbizkit  }
37132a5db7c643b8f367eb5f09024cf13ea37c9831sberlin
38132a5db7c643b8f367eb5f09024cf13ea37c9831sberlin  @Override public Boolean visit(ProvisionListenerBinding binding) {
39132a5db7c643b8f367eb5f09024cf13ea37c9831sberlin    injector.state.addProvisionListener(binding);
40132a5db7c643b8f367eb5f09024cf13ea37c9831sberlin    return true;
41132a5db7c643b8f367eb5f09024cf13ea37c9831sberlin  }
4203b81a6b931a06c7697e422b218e3734a7f262cclimpbizkit}