xref: /aosp_15_r20/external/auto/factory/src/it/functional/src/main/java/com/google/auto/factory/Foo.java (revision 1c2bbba85eccddce6de79cbbf1645fda32e723f0)
1 /*
2  * Copyright 2013 Google 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  *
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  */
16 package com.google.auto.factory;
17 
18 import javax.inject.Provider;
19 
20 @AutoFactory(implementing = FactoryInterface.class)
21 public final class Foo {
22   private final String name;
23   private final Dependency dependency;
24   private final Provider<Dependency> dependencyProvider;
25   private final int primitive;
26   private final int qualifiedPrimitive;
27 
Foo( String name, @Provided Dependency dependency, @Provided @Qualifier Provider<Dependency> dependencyProvider, @Provided int primitive, @Provided @Qualifier int qualifiedPrimitive)28   Foo(
29       String name,
30       @Provided Dependency dependency,
31       @Provided @Qualifier Provider<Dependency> dependencyProvider,
32       @Provided int primitive,
33       @Provided @Qualifier int qualifiedPrimitive) {
34     this.name = name;
35     this.dependency = dependency;
36     this.dependencyProvider = dependencyProvider;
37     this.primitive = primitive;
38     this.qualifiedPrimitive = qualifiedPrimitive;
39   }
40 
41   // Generates second factory method with a different name for the Dependency dependency.
42   // Tests http://b/21632171.
Foo( Object name, @Provided Dependency dependency2, @Provided @Qualifier Provider<Dependency> dependencyProvider, @Provided int primitive, @Provided @Qualifier int qualifiedPrimitive)43   Foo(
44       Object name,
45       @Provided Dependency dependency2,
46       @Provided @Qualifier Provider<Dependency> dependencyProvider,
47       @Provided int primitive,
48       @Provided @Qualifier int qualifiedPrimitive) {
49     this(name.toString(), dependency2, dependencyProvider, primitive, qualifiedPrimitive);
50   }
51 
name()52   String name() {
53     return name;
54   }
55 
dependency()56   Dependency dependency() {
57     return dependency;
58   }
59 
dependencyProvider()60   Provider<Dependency> dependencyProvider() {
61     return dependencyProvider;
62   }
63 
primitive()64   int primitive() {
65     return primitive;
66   }
67 
qualifiedPrimitive()68   int qualifiedPrimitive() {
69     return qualifiedPrimitive;
70   }
71 }
72