1c3f928404a91cf837d809dcc465ba43442bc1198limpbizkit/** 2c3f928404a91cf837d809dcc465ba43442bc1198limpbizkit * Copyright (C) 2008 Google Inc. 3c3f928404a91cf837d809dcc465ba43442bc1198limpbizkit * 4c3f928404a91cf837d809dcc465ba43442bc1198limpbizkit * Licensed under the Apache License, Version 2.0 (the "License"); 5c3f928404a91cf837d809dcc465ba43442bc1198limpbizkit * you may not use this file except in compliance with the License. 6c3f928404a91cf837d809dcc465ba43442bc1198limpbizkit * You may obtain a copy of the License at 7c3f928404a91cf837d809dcc465ba43442bc1198limpbizkit * 8c3f928404a91cf837d809dcc465ba43442bc1198limpbizkit * http://www.apache.org/licenses/LICENSE-2.0 9c3f928404a91cf837d809dcc465ba43442bc1198limpbizkit * 10c3f928404a91cf837d809dcc465ba43442bc1198limpbizkit * Unless required by applicable law or agreed to in writing, software 11c3f928404a91cf837d809dcc465ba43442bc1198limpbizkit * distributed under the License is distributed on an "AS IS" BASIS, 12c3f928404a91cf837d809dcc465ba43442bc1198limpbizkit * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13c3f928404a91cf837d809dcc465ba43442bc1198limpbizkit * See the License for the specific language governing permissions and 14c3f928404a91cf837d809dcc465ba43442bc1198limpbizkit * limitations under the License. 15c3f928404a91cf837d809dcc465ba43442bc1198limpbizkit */ 16c3f928404a91cf837d809dcc465ba43442bc1198limpbizkit 17c3f928404a91cf837d809dcc465ba43442bc1198limpbizkitpackage com.google.inject.spi; 18c3f928404a91cf837d809dcc465ba43442bc1198limpbizkit 19c3f928404a91cf837d809dcc465ba43442bc1198limpbizkitimport com.google.inject.Injector; 20c3f928404a91cf837d809dcc465ba43442bc1198limpbizkitimport com.google.inject.Key; 21b7a02b02d81c830d148355c90bc309bcd66fb592sberlin 22c3f928404a91cf837d809dcc465ba43442bc1198limpbizkitimport java.util.List; 23c3f928404a91cf837d809dcc465ba43442bc1198limpbizkitimport java.util.Set; 24c3f928404a91cf837d809dcc465ba43442bc1198limpbizkit 25c3f928404a91cf837d809dcc465ba43442bc1198limpbizkit/** 26c3f928404a91cf837d809dcc465ba43442bc1198limpbizkit * A private collection of elements that are hidden from the enclosing injector or module by 27c3f928404a91cf837d809dcc465ba43442bc1198limpbizkit * default. See {@link com.google.inject.PrivateModule PrivateModule} for details. 28c3f928404a91cf837d809dcc465ba43442bc1198limpbizkit * 29c3f928404a91cf837d809dcc465ba43442bc1198limpbizkit * @author jessewilson@google.com (Jesse Wilson) 30c3f928404a91cf837d809dcc465ba43442bc1198limpbizkit * @since 2.0 31c3f928404a91cf837d809dcc465ba43442bc1198limpbizkit */ 32c3f928404a91cf837d809dcc465ba43442bc1198limpbizkitpublic interface PrivateElements extends Element { 33c3f928404a91cf837d809dcc465ba43442bc1198limpbizkit 34c3f928404a91cf837d809dcc465ba43442bc1198limpbizkit /** 35c3f928404a91cf837d809dcc465ba43442bc1198limpbizkit * Returns the configuration information in this private environment. 36c3f928404a91cf837d809dcc465ba43442bc1198limpbizkit */ 37c3f928404a91cf837d809dcc465ba43442bc1198limpbizkit List<Element> getElements(); 38c3f928404a91cf837d809dcc465ba43442bc1198limpbizkit 39c3f928404a91cf837d809dcc465ba43442bc1198limpbizkit /** 40c3f928404a91cf837d809dcc465ba43442bc1198limpbizkit * Returns the child injector that hosts these private elements, or null if the elements haven't 41c3f928404a91cf837d809dcc465ba43442bc1198limpbizkit * been used to create an injector. 42c3f928404a91cf837d809dcc465ba43442bc1198limpbizkit */ 43c3f928404a91cf837d809dcc465ba43442bc1198limpbizkit Injector getInjector(); 44c3f928404a91cf837d809dcc465ba43442bc1198limpbizkit 45c3f928404a91cf837d809dcc465ba43442bc1198limpbizkit /** 46c3f928404a91cf837d809dcc465ba43442bc1198limpbizkit * Returns the unique exposed keys for these private elements. 47c3f928404a91cf837d809dcc465ba43442bc1198limpbizkit */ 48c3f928404a91cf837d809dcc465ba43442bc1198limpbizkit Set<Key<?>> getExposedKeys(); 49aa07ab09a27d4b83e66fb1666e7c780821ed106dlimpbizkit 50aa07ab09a27d4b83e66fb1666e7c780821ed106dlimpbizkit /** 51aa07ab09a27d4b83e66fb1666e7c780821ed106dlimpbizkit * Returns an arbitrary object containing information about the "place" where this key was 52aa07ab09a27d4b83e66fb1666e7c780821ed106dlimpbizkit * exposed. Used by Guice in the production of descriptive error messages. 53aa07ab09a27d4b83e66fb1666e7c780821ed106dlimpbizkit * 54aa07ab09a27d4b83e66fb1666e7c780821ed106dlimpbizkit * <p>Tools might specially handle types they know about; {@code StackTraceElement} is a good 55aa07ab09a27d4b83e66fb1666e7c780821ed106dlimpbizkit * example. Tools should simply call {@code toString()} on the source object if the type is 56aa07ab09a27d4b83e66fb1666e7c780821ed106dlimpbizkit * unfamiliar. 57aa07ab09a27d4b83e66fb1666e7c780821ed106dlimpbizkit * 58aa07ab09a27d4b83e66fb1666e7c780821ed106dlimpbizkit * @param key one of the keys exposed by this module. 59aa07ab09a27d4b83e66fb1666e7c780821ed106dlimpbizkit */ 60aa07ab09a27d4b83e66fb1666e7c780821ed106dlimpbizkit Object getExposedSource(Key<?> key); 61c3f928404a91cf837d809dcc465ba43442bc1198limpbizkit} 62