├── .factorypath
├── .gitignore
├── .settings
├── org.eclipse.core.resources.prefs
├── org.eclipse.jdt.apt.core.prefs
├── org.eclipse.jdt.core.prefs
└── org.eclipse.m2e.core.prefs
├── LICENSE.txt
├── README.md
├── lint.xml
├── pom.xml
├── project.properties
└── src
└── main
├── AndroidManifest.xml
└── java
└── com
└── fizzbuzz
└── android
└── dagger
├── InjectingActionBarActivity.java
├── InjectingActivity.java
├── InjectingActivityModule.java
├── InjectingAppWidgetProvider.java
├── InjectingApplication.java
├── InjectingBroadcastReceiver.java
├── InjectingDialogFragment.java
├── InjectingFragment.java
├── InjectingFragmentActivity.java
├── InjectingFragmentModule.java
├── InjectingListFragment.java
├── InjectingPreferenceActivity.java
├── InjectingPreferenceFragment.java
├── InjectingService.java
├── Injector.java
├── LoggingManager.java
└── Preconditions.java
/.factorypath:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .idea/
2 | bin/
3 | gen/
4 | target/
5 | tmp/
6 | *.iml
7 |
8 |
--------------------------------------------------------------------------------
/.settings/org.eclipse.core.resources.prefs:
--------------------------------------------------------------------------------
1 | eclipse.preferences.version=1
2 | encoding//src/main/java=UTF-8
3 | encoding/=UTF-8
4 | encoding/src=UTF-8
5 |
--------------------------------------------------------------------------------
/.settings/org.eclipse.jdt.apt.core.prefs:
--------------------------------------------------------------------------------
1 | eclipse.preferences.version=1
2 | org.eclipse.jdt.apt.aptEnabled=true
3 | org.eclipse.jdt.apt.genSrcDir=target\\generated-sources\\annotations
4 | org.eclipse.jdt.apt.reconcileEnabled=true
5 |
--------------------------------------------------------------------------------
/.settings/org.eclipse.jdt.core.prefs:
--------------------------------------------------------------------------------
1 | eclipse.preferences.version=1
2 | org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
3 | org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
4 | org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
5 | org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
6 | org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
7 | org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
8 | org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
9 | org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
10 | org.eclipse.jdt.core.compiler.compliance=1.6
11 | org.eclipse.jdt.core.compiler.debug.lineNumber=generate
12 | org.eclipse.jdt.core.compiler.debug.localVariable=generate
13 | org.eclipse.jdt.core.compiler.debug.sourceFile=generate
14 | org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
15 | org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
16 | org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
17 | org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
18 | org.eclipse.jdt.core.compiler.problem.deadCode=warning
19 | org.eclipse.jdt.core.compiler.problem.deprecation=warning
20 | org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
21 | org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
22 | org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
23 | org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
24 | org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
25 | org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
26 | org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
27 | org.eclipse.jdt.core.compiler.problem.fatalOptionalError=disabled
28 | org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
29 | org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
30 | org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
31 | org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
32 | org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
33 | org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
34 | org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
35 | org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning
36 | org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=warning
37 | org.eclipse.jdt.core.compiler.problem.localVariableHiding=warning
38 | org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
39 | org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
40 | org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
41 | org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
42 | org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=warning
43 | org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
44 | org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
45 | org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
46 | org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
47 | org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
48 | org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
49 | org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore
50 | org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
51 | org.eclipse.jdt.core.compiler.problem.nullReference=warning
52 | org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
53 | org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
54 | org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
55 | org.eclipse.jdt.core.compiler.problem.parameterAssignment=warning
56 | org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
57 | org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning
58 | org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=warning
59 | org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
60 | org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
61 | org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
62 | org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
63 | org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
64 | org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
65 | org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
66 | org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
67 | org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
68 | org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
69 | org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
70 | org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
71 | org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
72 | org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
73 | org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
74 | org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
75 | org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
76 | org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=ignore
77 | org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
78 | org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
79 | org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
80 | org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=warning
81 | org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
82 | org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
83 | org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
84 | org.eclipse.jdt.core.compiler.problem.unusedImport=warning
85 | org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
86 | org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
87 | org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=warning
88 | org.eclipse.jdt.core.compiler.problem.unusedParameter=warning
89 | org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
90 | org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
91 | org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
92 | org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
93 | org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
94 | org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
95 | org.eclipse.jdt.core.compiler.processAnnotations=enabled
96 | org.eclipse.jdt.core.compiler.source=1.6
97 |
--------------------------------------------------------------------------------
/.settings/org.eclipse.m2e.core.prefs:
--------------------------------------------------------------------------------
1 | activeProfiles=
2 | eclipse.preferences.version=1
3 | resolveWorkspaceProjects=true
4 | version=1
5 |
--------------------------------------------------------------------------------
/LICENSE.txt:
--------------------------------------------------------------------------------
1 |
2 | Apache License
3 | Version 2.0, January 2004
4 | http://www.apache.org/licenses/
5 |
6 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
7 |
8 | 1. Definitions.
9 |
10 | "License" shall mean the terms and conditions for use, reproduction,
11 | and distribution as defined by Sections 1 through 9 of this document.
12 |
13 | "Licensor" shall mean the copyright owner or entity authorized by
14 | the copyright owner that is granting the License.
15 |
16 | "Legal Entity" shall mean the union of the acting entity and all
17 | other entities that control, are controlled by, or are under common
18 | control with that entity. For the purposes of this definition,
19 | "control" means (i) the power, direct or indirect, to cause the
20 | direction or management of such entity, whether by contract or
21 | otherwise, or (ii) ownership of fifty percent (50%) or more of the
22 | outstanding shares, or (iii) beneficial ownership of such entity.
23 |
24 | "You" (or "Your") shall mean an individual or Legal Entity
25 | exercising permissions granted by this License.
26 |
27 | "Source" form shall mean the preferred form for making modifications,
28 | including but not limited to software source code, documentation
29 | source, and configuration files.
30 |
31 | "Object" form shall mean any form resulting from mechanical
32 | transformation or translation of a Source form, including but
33 | not limited to compiled object code, generated documentation,
34 | and conversions to other media types.
35 |
36 | "Work" shall mean the work of authorship, whether in Source or
37 | Object form, made available under the License, as indicated by a
38 | copyright notice that is included in or attached to the work
39 | (an example is provided in the Appendix below).
40 |
41 | "Derivative Works" shall mean any work, whether in Source or Object
42 | form, that is based on (or derived from) the Work and for which the
43 | editorial revisions, annotations, elaborations, or other modifications
44 | represent, as a whole, an original work of authorship. For the purposes
45 | of this License, Derivative Works shall not include works that remain
46 | separable from, or merely link (or bind by name) to the interfaces of,
47 | the Work and Derivative Works thereof.
48 |
49 | "Contribution" shall mean any work of authorship, including
50 | the original version of the Work and any modifications or additions
51 | to that Work or Derivative Works thereof, that is intentionally
52 | submitted to Licensor for inclusion in the Work by the copyright owner
53 | or by an individual or Legal Entity authorized to submit on behalf of
54 | the copyright owner. For the purposes of this definition, "submitted"
55 | means any form of electronic, verbal, or written communication sent
56 | to the Licensor or its representatives, including but not limited to
57 | communication on electronic mailing lists, source code control systems,
58 | and issue tracking systems that are managed by, or on behalf of, the
59 | Licensor for the purpose of discussing and improving the Work, but
60 | excluding communication that is conspicuously marked or otherwise
61 | designated in writing by the copyright owner as "Not a Contribution."
62 |
63 | "Contributor" shall mean Licensor and any individual or Legal Entity
64 | on behalf of whom a Contribution has been received by Licensor and
65 | subsequently incorporated within the Work.
66 |
67 | 2. Grant of Copyright License. Subject to the terms and conditions of
68 | this License, each Contributor hereby grants to You a perpetual,
69 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable
70 | copyright license to reproduce, prepare Derivative Works of,
71 | publicly display, publicly perform, sublicense, and distribute the
72 | Work and such Derivative Works in Source or Object form.
73 |
74 | 3. Grant of Patent License. Subject to the terms and conditions of
75 | this License, each Contributor hereby grants to You a perpetual,
76 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable
77 | (except as stated in this section) patent license to make, have made,
78 | use, offer to sell, sell, import, and otherwise transfer the Work,
79 | where such license applies only to those patent claims licensable
80 | by such Contributor that are necessarily infringed by their
81 | Contribution(s) alone or by combination of their Contribution(s)
82 | with the Work to which such Contribution(s) was submitted. If You
83 | institute patent litigation against any entity (including a
84 | cross-claim or counterclaim in a lawsuit) alleging that the Work
85 | or a Contribution incorporated within the Work constitutes direct
86 | or contributory patent infringement, then any patent licenses
87 | granted to You under this License for that Work shall terminate
88 | as of the date such litigation is filed.
89 |
90 | 4. Redistribution. You may reproduce and distribute copies of the
91 | Work or Derivative Works thereof in any medium, with or without
92 | modifications, and in Source or Object form, provided that You
93 | meet the following conditions:
94 |
95 | (a) You must give any other recipients of the Work or
96 | Derivative Works a copy of this License; and
97 |
98 | (b) You must cause any modified files to carry prominent notices
99 | stating that You changed the files; and
100 |
101 | (c) You must retain, in the Source form of any Derivative Works
102 | that You distribute, all copyright, patent, trademark, and
103 | attribution notices from the Source form of the Work,
104 | excluding those notices that do not pertain to any part of
105 | the Derivative Works; and
106 |
107 | (d) If the Work includes a "NOTICE" text file as part of its
108 | distribution, then any Derivative Works that You distribute must
109 | include a readable copy of the attribution notices contained
110 | within such NOTICE file, excluding those notices that do not
111 | pertain to any part of the Derivative Works, in at least one
112 | of the following places: within a NOTICE text file distributed
113 | as part of the Derivative Works; within the Source form or
114 | documentation, if provided along with the Derivative Works; or,
115 | within a display generated by the Derivative Works, if and
116 | wherever such third-party notices normally appear. The contents
117 | of the NOTICE file are for informational purposes only and
118 | do not modify the License. You may add Your own attribution
119 | notices within Derivative Works that You distribute, alongside
120 | or as an addendum to the NOTICE text from the Work, provided
121 | that such additional attribution notices cannot be construed
122 | as modifying the License.
123 |
124 | You may add Your own copyright statement to Your modifications and
125 | may provide additional or different license terms and conditions
126 | for use, reproduction, or distribution of Your modifications, or
127 | for any such Derivative Works as a whole, provided Your use,
128 | reproduction, and distribution of the Work otherwise complies with
129 | the conditions stated in this License.
130 |
131 | 5. Submission of Contributions. Unless You explicitly state otherwise,
132 | any Contribution intentionally submitted for inclusion in the Work
133 | by You to the Licensor shall be under the terms and conditions of
134 | this License, without any additional terms or conditions.
135 | Notwithstanding the above, nothing herein shall supersede or modify
136 | the terms of any separate license agreement you may have executed
137 | with Licensor regarding such Contributions.
138 |
139 | 6. Trademarks. This License does not grant permission to use the trade
140 | names, trademarks, service marks, or product names of the Licensor,
141 | except as required for reasonable and customary use in describing the
142 | origin of the Work and reproducing the content of the NOTICE file.
143 |
144 | 7. Disclaimer of Warranty. Unless required by applicable law or
145 | agreed to in writing, Licensor provides the Work (and each
146 | Contributor provides its Contributions) on an "AS IS" BASIS,
147 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
148 | implied, including, without limitation, any warranties or conditions
149 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
150 | PARTICULAR PURPOSE. You are solely responsible for determining the
151 | appropriateness of using or redistributing the Work and assume any
152 | risks associated with Your exercise of permissions under this License.
153 |
154 | 8. Limitation of Liability. In no event and under no legal theory,
155 | whether in tort (including negligence), contract, or otherwise,
156 | unless required by applicable law (such as deliberate and grossly
157 | negligent acts) or agreed to in writing, shall any Contributor be
158 | liable to You for damages, including any direct, indirect, special,
159 | incidental, or consequential damages of any character arising as a
160 | result of this License or out of the use or inability to use the
161 | Work (including but not limited to damages for loss of goodwill,
162 | work stoppage, computer failure or malfunction, or any and all
163 | other commercial damages or losses), even if such Contributor
164 | has been advised of the possibility of such damages.
165 |
166 | 9. Accepting Warranty or Additional Liability. While redistributing
167 | the Work or Derivative Works thereof, You may choose to offer,
168 | and charge a fee for, acceptance of support, warranty, indemnity,
169 | or other liability obligations and/or rights consistent with this
170 | License. However, in accepting such obligations, You may act only
171 | on Your own behalf and on Your sole responsibility, not on behalf
172 | of any other Contributor, and only if You agree to indemnify,
173 | defend, and hold each Contributor harmless for any liability
174 | incurred by, or claims asserted against, such Contributor by reason
175 | of your accepting any such warranty or additional liability.
176 |
177 | END OF TERMS AND CONDITIONS
178 |
179 | APPENDIX: How to apply the Apache License to your work.
180 |
181 | To apply the Apache License to your work, attach the following
182 | boilerplate notice, with the fields enclosed by brackets "[]"
183 | replaced with your own identifying information. (Don't include
184 | the brackets!) The text should be enclosed in the appropriate
185 | comment syntax for the file format. We also recommend that a
186 | file or class name and description of purpose be included on the
187 | same "printed page" as the copyright notice for easier
188 | identification within third-party archives.
189 |
190 | Copyright [yyyy] [name of copyright owner]
191 |
192 | Licensed under the Apache License, Version 2.0 (the "License");
193 | you may not use this file except in compliance with the License.
194 | You may obtain a copy of the License at
195 |
196 | http://www.apache.org/licenses/LICENSE-2.0
197 |
198 | Unless required by applicable law or agreed to in writing, software
199 | distributed under the License is distributed on an "AS IS" BASIS,
200 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
201 | See the License for the specific language governing permissions and
202 | limitations under the License.
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | ##fb-android-dagger
2 |
3 | A set of helper classes for using [dagger](https://github.com/square/dagger) with Android components such as
4 | Applications, Activities, Fragments, BroadcastReceivers, and Services.
5 |
6 | Maven users:
7 |
8 | ```xml
9 |
10 | com.fizz-buzz
11 | fb-android-dagger
12 | 1.0.6
13 |
14 | ```
15 |
16 | Note: this project's POM specifies dependencies for the Android SDK and the support v4 library using the
17 | group IDs, artifact IDs, and version numbers created by the [Maven Android SDK Deployer]
18 | (https://github.com/mosabua/maven-android-sdk-deployer), as opposed to the ones in Maven Central, which contains
19 | artifacts that are unofficial and out of date. If you want to use the ones in Maven Central anyway, just update
20 | those dependencies in the POM.
21 |
22 |
23 | ####Overview
24 |
25 | fb-android-dagger provides a set of base classes for using dagger in Android applications. It follows a convention exemplified by Square's sample application, whereby a base class calls getModules() to gather the set of modules that its subclass(es) need to be part of the graph, then creates an object graph from those modules and injects itself.
26 |
27 | The following classes are provided, each implementing this technique in the method indicated in parentheses:
28 |
29 | - `InjectingApplication` (onCreate)
30 | - `InjectingBroadcastReceiver` (onReceive)
31 | - `InjectingAppWidgetProvider` (onReceive)
32 | - `InjectingService` (onCreate)
33 | - `InjectingActivity` (onCreate)
34 | - `InjectingActionBarActivity` (onCreate)
35 | - `InjectingFragmentActivity` (onCreate)
36 | - `InjectingPreferenceActivity` (onCreate)
37 | - `InjectingFragment` (onAttach)
38 | - `InjectingListFragment` (onAttach)
39 | - `InjectingDialogFragment` (onAttach)
40 |
41 | ####The graphs
42 |
43 | `InjectingApplication` creates an application-scope graph.
44 |
45 | `InjectingBroadcastReciever`, `InjectingAppWidgetProvider`, `InjectingService`, and the various `Injecting...Activity` classes each extend the application-scope graph with their own module(s), resulting in a graph scoped to their own component.
46 |
47 | The various `Injecting...Fragment` classes extend their corresponding activity's graph.
48 |
49 | ####Modules
50 |
51 | Each component type has an associated module:
52 | - `InjectingActivityModule`
53 | - `InjectingServiceModule`
54 | - `InjectingBroadcastRecieverModule`
55 | - `InjectingActivityModule`
56 | - `InjectingFragmentModule`
57 |
58 | The last two are shared by the `Injecting...Activity` classes and the `Injecting...Fragment` classes, respectively. These modules define provider methods which enable injection of objects relevant to their component type. They all have a provider that returns the component itself in the form of an Injector interface:
59 |
60 | ```java
61 | public interface Injector {
62 | public ObjectGraph getObjectGraph();
63 | public void inject(Object target);
64 | }
65 | ```
66 |
67 | Qualifier annotations defined in the various modules allow for specific components' injectors to be accessed:
68 |
69 | ```java
70 | class Foo1 {
71 | @Inject @Application Injector appInjector;
72 | @Inject @Activity Injector activityInjector;
73 | @Inject @Fragment Injector fragInjector;
74 | //...
75 | }
76 | ```
77 |
78 | Application and Activity Contexts are similarly accessible:
79 |
80 | ```java
81 | class Foo2 {
82 | @Inject @Application Context appContext;
83 | @Inject @Activity Context activityContext;
84 | // ...
85 | }
86 | ```
87 |
88 | ...as are the typed components themselves:
89 |
90 | ```java
91 | class Foo3 {
92 | @Inject Application theApp;
93 | @Inject Activity myActivity;
94 | @Inject Fragment myFragment;
95 | // ...
96 | }
97 | ```
98 |
99 |
100 |
101 | ####Developed by
102 |
103 | Andy Dennie - andy@fizz-buzz.com
104 |
105 | ####License
106 |
107 | Copyright 2014 Fizz Buzz LLC
108 |
109 | Licensed under the Apache License, Version 2.0 (the "License");
110 | you may not use this file except in compliance with the License.
111 | You may obtain a copy of the License at
112 |
113 | http://www.apache.org/licenses/LICENSE-2.0
114 |
115 | Unless required by applicable law or agreed to in writing, software
116 | distributed under the License is distributed on an "AS IS" BASIS,
117 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
118 | See the License for the specific language governing permissions and
119 | limitations under the License.
120 |
--------------------------------------------------------------------------------
/lint.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/pom.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 4.0.0
4 |
5 |
6 | org.sonatype.oss
7 | oss-parent
8 | 7
9 |
10 |
11 |
12 | com.fizz-buzz
13 | fb-android-dagger
14 | 1.0.8-SNAPSHOT
15 | aar
16 | fb-android-dagger
17 | A helper library for using dagger on Android
18 | https://github.com/adennie/fb-android-dagger
19 |
20 |
21 | 22
22 |
23 |
24 | 5.1_r1
25 | 22.0.0
26 | 1.2.1
27 | 1.7.7
28 |
29 |
30 | 4.1.1
31 | 3.2
32 | 1.3.1
33 | 2.5.1
34 | 2.18
35 |
36 |
37 |
38 |
39 | http://github.com/adennie/fb-android-dagger/
40 | scm:git:https://github.com/adennie/fb-android-dagger.git
41 | scm:git:https://github.com/adennie/fb-android-dagger.git
42 | HEAD
43 |
44 |
45 |
46 | GitHub Issues
47 | http://github.com/adennie/fb-android-dagger/issues
48 |
49 |
50 |
51 |
52 | Apache 2.0
53 | http://www.apache.org/licenses/LICENSE-2.0.txt
54 |
55 |
56 |
57 |
58 | Fizz Buzz LLC
59 | http://fizz-buzz.com
60 |
61 |
62 |
63 |
64 | Andy Dennie
65 | andy@fizz-buzz.com
66 | www.andydennie.com
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 | com.android.support
75 | support-v4
76 | ${android-sdk-build-tools.version}
77 | aar
78 |
79 |
80 |
81 | com.android.support
82 | appcompat-v7
83 | ${android-sdk-build-tools.version}
84 | aar
85 |
86 |
87 |
88 | com.squareup.dagger
89 | dagger
90 | ${dagger.version}
91 |
92 |
93 |
94 | org.slf4j
95 | slf4j-android
96 | ${slf4j-android.version}
97 |
98 |
99 |
100 |
101 | android
102 | android
103 | ${android.version}
104 | provided
105 |
106 |
107 | commons-logging
108 | commons-logging
109 |
110 |
111 |
112 |
113 |
114 | com.squareup.dagger
115 | dagger-compiler
116 | ${dagger.version}
117 | provided
118 |
119 |
120 |
121 |
122 |
123 |
124 |
125 | maven-compiler-plugin
126 | ${maven-compiler-plugin-version}
127 |
128 | 1.6
129 | 1.6
130 |
131 |
132 |
133 | com.squareup.dagger
134 | dagger-compiler
135 | ${dagger.version}
136 |
137 |
138 |
139 |
140 |
141 | com.simpligility.maven.plugins
142 | android-maven-plugin
143 | ${android-maven-plugin.version}
144 | true
145 |
146 |
147 | true
148 |
149 | ${android-target-sdk}
150 |
151 |
152 |
153 |
154 |
155 | org.apache.maven.plugins
156 | maven-surefire-plugin
157 | ${maven-surefire-plugin.version}
158 |
159 |
160 |
161 | org.apache.maven.plugins
162 | maven-enforcer-plugin
163 | ${maven-enforcer-plugin.version}
164 |
165 |
166 | enforce
167 |
168 |
169 |
170 |
171 |
172 |
173 | enforce
174 |
175 |
176 |
177 |
178 |
179 |
180 | org.apache.maven.plugins
181 | maven-release-plugin
182 | ${maven-release-plugin.version}
183 |
184 |
185 | @{project.version}
186 |
187 |
188 |
189 |
190 |
191 |
192 |
--------------------------------------------------------------------------------
/project.properties:
--------------------------------------------------------------------------------
1 | # This file is automatically generated by Android Tools.
2 | # Do not modify this file -- YOUR CHANGES WILL BE ERASED!
3 | #
4 | # This file must be checked in Version Control Systems.
5 | #
6 | # To customize properties used by the Ant build system use,
7 | # "ant.properties", and override values to adapt the script to your
8 | # project structure.
9 |
10 | android.library=true
11 | # Project target.
12 | target=android-22
13 |
--------------------------------------------------------------------------------
/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/src/main/java/com/fizzbuzz/android/dagger/InjectingActionBarActivity.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2014 Fizz Buzz LLC
3 | *
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 | * http://www.apache.org/licenses/LICENSE-2.0
8 | * Unless required by applicable law or agreed to in writing, software
9 | * distributed under the License is distributed on an "AS IS" BASIS,
10 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11 | * See the License for the specific language governing permissions and
12 | * limitations under the License.
13 | */
14 |
15 | /*
16 | * Copyright (c) 2013 Fizz Buzz LLC
17 | *
18 | * Licensed under the Apache License, Version 2.0 (the "License");
19 | * you may not use this file except in compliance with the License.
20 | * You may obtain a copy of the License at
21 | * http://www.apache.org/licenses/LICENSE-2.0
22 | * Unless required by applicable law or agreed to in writing, software
23 | * distributed under the License is distributed on an "AS IS" BASIS,
24 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
25 | * See the License for the specific language governing permissions and
26 | * limitations under the License.
27 | */
28 |
29 | package com.fizzbuzz.android.dagger;
30 |
31 | import android.support.v7.app.ActionBarActivity;
32 | import dagger.ObjectGraph;
33 |
34 | import java.util.ArrayList;
35 | import java.util.List;
36 |
37 | import static com.fizzbuzz.android.dagger.Preconditions.checkState;
38 |
39 | /**
40 | * Manages an ObjectGraph on behalf of a ActionBarActivity. This graph is created by extending the application-scope
41 | * graph with ActionBarActivity-specific module(s).
42 | */
43 | public class InjectingActionBarActivity
44 | extends ActionBarActivity
45 | implements Injector {
46 | private ObjectGraph mObjectGraph;
47 |
48 | // implement Injector interface
49 |
50 | /**
51 | * Gets this ActionBarActivity's object graph.
52 | *
53 | * @return the object graph
54 | */
55 | @Override
56 | public final ObjectGraph getObjectGraph() {
57 | return mObjectGraph;
58 | }
59 |
60 | /**
61 | * Injects a target object using this ActionBarActivity's object graph.
62 | *
63 | * @param target the target object
64 | */
65 | @Override
66 | public void inject(Object target) {
67 | checkState(mObjectGraph != null, "object graph must be assigned prior to calling inject");
68 | mObjectGraph.inject(target);
69 | }
70 |
71 | /**
72 | * Creates an object graph for this ActionBarActivity by extending the application-scope object graph with the
73 | * modules returned by {@link #getModules()}.
74 | *
75 | * Injects this ActionBarActivity using the created graph.
76 | */
77 | @Override
78 | protected void onCreate(android.os.Bundle savedInstanceState) {
79 | // expand the application graph with the activity-specific module(s)
80 | ObjectGraph appGraph = ((Injector) getApplication()).getObjectGraph();
81 | List