blob: bd32a1f235816b18b9f739c02fb9e388e4c4e1ca [file] [log] [blame]
cgrubera04c2962014-09-29 16:32:25 -07001/*
ronshapiro5dde42d2016-06-17 09:03:35 -07002 * Copyright (C) 2012 The Dagger Authors.
cgrubera04c2962014-09-29 16:32:25 -07003 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
dpb1b65b6a2016-07-11 12:11:24 -070016
cgrubera04c2962014-09-29 16:32:25 -070017package dagger;
18
ronshapirofbb68402016-08-31 06:44:45 -070019import dagger.internal.Beta;
ronshapiro2e2d3272019-02-07 10:39:44 -080020import java.lang.annotation.Documented;
cgrubera04c2962014-09-29 16:32:25 -070021import java.lang.annotation.ElementType;
22import java.lang.annotation.Retention;
23import java.lang.annotation.RetentionPolicy;
24import java.lang.annotation.Target;
25
26/**
27 * Annotates a class that contributes to the object graph.
28 */
ronshapiro2e2d3272019-02-07 10:39:44 -080029@Documented
cgrubera04c2962014-09-29 16:32:25 -070030@Retention(RetentionPolicy.RUNTIME)
31@Target(ElementType.TYPE)
32public @interface Module {
33 /**
cgrubera04c2962014-09-29 16:32:25 -070034 * Additional {@code @Module}-annotated classes from which this module is
35 * composed. The de-duplicated contributions of the modules in
36 * {@code includes}, and of their inclusions recursively, are all contributed
37 * to the object graph.
38 */
cgruber70f720b2015-04-06 11:44:57 -070039 Class<?>[] includes() default {};
ronshapirofbb68402016-08-31 06:44:45 -070040
41 /**
ronshapiro71a79732016-09-06 11:39:04 -070042 * Any {@link Subcomponent}- or {@code @ProductionSubcomponent}-annotated classes which should be
43 * children of the component in which this module is installed. A subcomponent may be listed in
44 * more than one module in a component.
ronshapiroaae8de12016-09-07 13:04:52 -070045 *
46 * @since 2.7
ronshapirofbb68402016-08-31 06:44:45 -070047 */
48 @Beta
49 Class<?>[] subcomponents() default {};
cgrubera04c2962014-09-29 16:32:25 -070050}