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