1c112063529baac332325fde0f2616e04dd073aeecrazyboblee/**
2c112063529baac332325fde0f2616e04dd073aeecrazyboblee * Copyright (C) 2007 Google Inc.
3c112063529baac332325fde0f2616e04dd073aeecrazyboblee *
4c112063529baac332325fde0f2616e04dd073aeecrazyboblee * Licensed under the Apache License, Version 2.0 (the "License");
5c112063529baac332325fde0f2616e04dd073aeecrazyboblee * you may not use this file except in compliance with the License.
6c112063529baac332325fde0f2616e04dd073aeecrazyboblee * You may obtain a copy of the License at
7c112063529baac332325fde0f2616e04dd073aeecrazyboblee *
8c112063529baac332325fde0f2616e04dd073aeecrazyboblee * http://www.apache.org/licenses/LICENSE-2.0
9c112063529baac332325fde0f2616e04dd073aeecrazyboblee *
10c112063529baac332325fde0f2616e04dd073aeecrazyboblee * Unless required by applicable law or agreed to in writing, software
11c112063529baac332325fde0f2616e04dd073aeecrazyboblee * distributed under the License is distributed on an "AS IS" BASIS,
12c112063529baac332325fde0f2616e04dd073aeecrazyboblee * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13c112063529baac332325fde0f2616e04dd073aeecrazyboblee * See the License for the specific language governing permissions and
14c112063529baac332325fde0f2616e04dd073aeecrazyboblee * limitations under the License.
15c112063529baac332325fde0f2616e04dd073aeecrazyboblee */
16c112063529baac332325fde0f2616e04dd073aeecrazyboblee
17c112063529baac332325fde0f2616e04dd073aeecrazybobleepackage example.xml;
18c112063529baac332325fde0f2616e04dd073aeecrazyboblee
19c112063529baac332325fde0f2616e04dd073aeecrazybobleeimport com.google.inject.Guice;
20c112063529baac332325fde0f2616e04dd073aeecrazybobleeimport com.google.inject.AbstractModule;
21c112063529baac332325fde0f2616e04dd073aeecrazybobleeimport com.google.inject.Injector;
22c112063529baac332325fde0f2616e04dd073aeecrazybobleeimport java.net.URL;
23c112063529baac332325fde0f2616e04dd073aeecrazyboblee
24c112063529baac332325fde0f2616e04dd073aeecrazyboblee/**
25c112063529baac332325fde0f2616e04dd073aeecrazyboblee *
26c112063529baac332325fde0f2616e04dd073aeecrazyboblee *
27c112063529baac332325fde0f2616e04dd073aeecrazyboblee */
28c112063529baac332325fde0f2616e04dd073aeecrazybobleepublic class Main {
29c112063529baac332325fde0f2616e04dd073aeecrazyboblee
30c112063529baac332325fde0f2616e04dd073aeecrazyboblee  public static void main(String[] args) {
31c112063529baac332325fde0f2616e04dd073aeecrazyboblee    final URL xmlUrl = Main.class.getResource("phone.xml");
32c112063529baac332325fde0f2616e04dd073aeecrazyboblee
33c112063529baac332325fde0f2616e04dd073aeecrazyboblee    Injector injector = Guice.createInjector(new AbstractModule() {
34c112063529baac332325fde0f2616e04dd073aeecrazyboblee      protected void configure() {
35c112063529baac332325fde0f2616e04dd073aeecrazyboblee        bind(Contacts.class).to(SimCard.class);
36c112063529baac332325fde0f2616e04dd073aeecrazyboblee        install(new XmlBeanModule(xmlUrl));
37c112063529baac332325fde0f2616e04dd073aeecrazyboblee      }
38c112063529baac332325fde0f2616e04dd073aeecrazyboblee    });
39c112063529baac332325fde0f2616e04dd073aeecrazyboblee
40c112063529baac332325fde0f2616e04dd073aeecrazyboblee    Phone phone = injector.getInstance(Phone.class);
41c112063529baac332325fde0f2616e04dd073aeecrazyboblee
42c112063529baac332325fde0f2616e04dd073aeecrazyboblee    if (phone.getContacts() == null) {
43c112063529baac332325fde0f2616e04dd073aeecrazyboblee      throw new AssertionError();
44c112063529baac332325fde0f2616e04dd073aeecrazyboblee    } else {
45c112063529baac332325fde0f2616e04dd073aeecrazyboblee      System.out.println("It worked!");
46c112063529baac332325fde0f2616e04dd073aeecrazyboblee    }
47c112063529baac332325fde0f2616e04dd073aeecrazyboblee  }
48c112063529baac332325fde0f2616e04dd073aeecrazyboblee}
49