blob: 2de848c83eda2c7b86c5515ec13f24ff76e5b726 [file] [log] [blame]
Eugene Susla3156a4c2019-07-25 14:05:12 -07001/*
2 * Copyright (C) 2019 The Android Open Source Project
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
17package com.android.codegentest;
18
19import android.annotation.NonNull;
Eugene Susla20b6e642019-09-30 15:15:19 -070020import android.os.Parcel;
21import android.os.Parcelable;
Eugene Susla3156a4c2019-07-25 14:05:12 -070022import android.os.SystemClock;
23
24import com.android.internal.util.DataClass;
25
26import java.util.concurrent.TimeUnit;
27
Eugene Susla20b6e642019-09-30 15:15:19 -070028@DataClass(genBuilder = true, genAidl = false, genToString = true)
29public class SampleWithCustomBuilder implements Parcelable {
Eugene Susla3156a4c2019-07-25 14:05:12 -070030
31 long delayAmount = 0;
32 @NonNull
33 TimeUnit delayUnit = TimeUnit.MILLISECONDS;
34
35 long creationTimestamp = SystemClock.uptimeMillis();
36
37 /**
38 * You can declare a class named {@code BaseBuilder} to have the generated builder extend from
39 * it instead.
40 *
41 * Same rules apply where defining a non-abstract method will suppress the generation of a
42 * method with the same signature.
43 *
44 * For abstract generatable methods, implementations are generated as normal, but original
45 * visibility is used, allowing you to hide methods.
46 *
47 * Here for example, we hide {@link #setDelayUnit} and {@link #setDelayAmount} from public API,
48 * replacing it with {@link #setDelay} instead.
49 */
50 // Suppress setter generation for a field that is not supposed to come from user input.
51 @DataClass.Suppress("setCreationTimestamp")
52 static abstract class BaseBuilder {
53
54 /**
55 * Hide methods by declaring them with reduced (package-private) visibility.
56 */
57 abstract Builder setDelayAmount(long value);
58
59 /**
60 * Alternatively, hide methods by using @hide, to hide them from public API only.
61 *
62 * @hide
63 */
64 public abstract Builder setDelayUnit(TimeUnit value);
65
66 /**
67 * Can provide additional method on the builder, e.g. as a replacement for the ones we've
68 * just hidden.
69 */
70 public Builder setDelay(long amount, TimeUnit unit) {
71 setDelayAmount(amount);
72 setDelayUnit(unit);
73 return (Builder) this;
74 }
75 }
76
77
Eugene Susla20b6e642019-09-30 15:15:19 -070078 private static TimeUnit unparcelDelayUnit(Parcel p) {
79 return TimeUnit.values()[p.readInt()];
80 }
Eugene Susla3156a4c2019-07-25 14:05:12 -070081
Eugene Susla20b6e642019-09-30 15:15:19 -070082 private void parcelDelayUnit(Parcel p, int flags) {
83 p.writeInt(delayUnit.ordinal());
84 }
85
86
87
Eugene Suslaf7450422019-11-18 16:09:52 -080088 // Code below generated by codegen v1.0.14.
Eugene Susla3156a4c2019-07-25 14:05:12 -070089 //
90 // DO NOT MODIFY!
Eugene Suslac49e8ee2019-10-01 11:49:15 -070091 // CHECKSTYLE:OFF Generated code
Eugene Susla3156a4c2019-07-25 14:05:12 -070092 //
93 // To regenerate run:
94 // $ codegen $ANDROID_BUILD_TOP/frameworks/base/tests/Codegen/src/com/android/codegentest/SampleWithCustomBuilder.java
Eugene Suslaf821caa2019-10-04 14:51:29 -070095 //
96 // To exclude the generated code from IntelliJ auto-formatting enable (one-time):
97 // Settings > Editor > Code Style > Formatter Control
98 //@formatter:off
Eugene Suslac49e8ee2019-10-01 11:49:15 -070099
Eugene Susla3156a4c2019-07-25 14:05:12 -0700100
101 @DataClass.Generated.Member
102 /* package-private */ SampleWithCustomBuilder(
103 long delayAmount,
104 @NonNull TimeUnit delayUnit,
105 long creationTimestamp) {
106 this.delayAmount = delayAmount;
107 this.delayUnit = delayUnit;
108 com.android.internal.util.AnnotationValidations.validate(
109 NonNull.class, null, delayUnit);
110 this.creationTimestamp = creationTimestamp;
111
112 // onConstructed(); // You can define this method to get a callback
113 }
114
115 @DataClass.Generated.Member
116 public long getDelayAmount() {
117 return delayAmount;
118 }
119
120 @DataClass.Generated.Member
121 public @NonNull TimeUnit getDelayUnit() {
122 return delayUnit;
123 }
124
125 @DataClass.Generated.Member
126 public long getCreationTimestamp() {
127 return creationTimestamp;
128 }
129
Eugene Susla20b6e642019-09-30 15:15:19 -0700130 @Override
131 @DataClass.Generated.Member
132 public String toString() {
133 // You can override field toString logic by defining methods like:
134 // String fieldNameToString() { ... }
135
136 return "SampleWithCustomBuilder { " +
137 "delayAmount = " + delayAmount + ", " +
138 "delayUnit = " + delayUnit + ", " +
139 "creationTimestamp = " + creationTimestamp +
140 " }";
141 }
142
143 @Override
144 @DataClass.Generated.Member
Eugene Susla1bfb5e72019-10-16 10:12:47 -0700145 public void writeToParcel(@NonNull Parcel dest, int flags) {
Eugene Susla20b6e642019-09-30 15:15:19 -0700146 // You can override field parcelling by defining methods like:
147 // void parcelFieldName(Parcel dest, int flags) { ... }
148
149 dest.writeLong(delayAmount);
150 parcelDelayUnit(dest, flags);
151 dest.writeLong(creationTimestamp);
152 }
153
154 @Override
155 @DataClass.Generated.Member
156 public int describeContents() { return 0; }
157
Eugene Susla8cb1a412019-10-03 17:22:44 -0700158 /** @hide */
159 @SuppressWarnings({"unchecked", "RedundantCast"})
160 @DataClass.Generated.Member
Eugene Susla1bfb5e72019-10-16 10:12:47 -0700161 protected SampleWithCustomBuilder(@NonNull Parcel in) {
Eugene Susla8cb1a412019-10-03 17:22:44 -0700162 // You can override field unparcelling by defining methods like:
163 // static FieldType unparcelFieldName(Parcel in) { ... }
164
165 long _delayAmount = in.readLong();
166 TimeUnit _delayUnit = unparcelDelayUnit(in);
167 long _creationTimestamp = in.readLong();
168
169 this.delayAmount = _delayAmount;
170 this.delayUnit = _delayUnit;
171 com.android.internal.util.AnnotationValidations.validate(
172 NonNull.class, null, delayUnit);
173 this.creationTimestamp = _creationTimestamp;
174
175 // onConstructed(); // You can define this method to get a callback
176 }
177
Eugene Susla20b6e642019-09-30 15:15:19 -0700178 @DataClass.Generated.Member
179 public static final @NonNull Parcelable.Creator<SampleWithCustomBuilder> CREATOR
180 = new Parcelable.Creator<SampleWithCustomBuilder>() {
181 @Override
182 public SampleWithCustomBuilder[] newArray(int size) {
183 return new SampleWithCustomBuilder[size];
184 }
185
186 @Override
Eugene Susla1bfb5e72019-10-16 10:12:47 -0700187 public SampleWithCustomBuilder createFromParcel(@NonNull Parcel in) {
Eugene Susla8cb1a412019-10-03 17:22:44 -0700188 return new SampleWithCustomBuilder(in);
Eugene Susla20b6e642019-09-30 15:15:19 -0700189 }
190 };
191
Eugene Susla3156a4c2019-07-25 14:05:12 -0700192 /**
193 * A builder for {@link SampleWithCustomBuilder}
194 */
195 @SuppressWarnings("WeakerAccess")
196 @DataClass.Generated.Member
197 public static class Builder extends BaseBuilder {
198
199 private long delayAmount;
200 private @NonNull TimeUnit delayUnit;
201 private long creationTimestamp;
202
203 private long mBuilderFieldsSet = 0L;
204
205 public Builder() {
206 }
207
208 @DataClass.Generated.Member
209 @Override
210 @NonNull Builder setDelayAmount(long value) {
211 checkNotUsed();
212 mBuilderFieldsSet |= 0x1;
213 delayAmount = value;
214 return this;
215 }
216
217 @DataClass.Generated.Member
218 @Override
219 public @NonNull Builder setDelayUnit(@NonNull TimeUnit value) {
220 checkNotUsed();
221 mBuilderFieldsSet |= 0x2;
222 delayUnit = value;
223 return this;
224 }
225
226 /** Builds the instance. This builder should not be touched after calling this! */
Eugene Susla322e8b12019-10-22 17:32:08 -0700227 public @NonNull SampleWithCustomBuilder build() {
Eugene Susla3156a4c2019-07-25 14:05:12 -0700228 checkNotUsed();
229 mBuilderFieldsSet |= 0x8; // Mark builder used
230
231 if ((mBuilderFieldsSet & 0x1) == 0) {
232 delayAmount = 0;
233 }
234 if ((mBuilderFieldsSet & 0x2) == 0) {
235 delayUnit = TimeUnit.MILLISECONDS;
236 }
237 if ((mBuilderFieldsSet & 0x4) == 0) {
238 creationTimestamp = SystemClock.uptimeMillis();
239 }
240 SampleWithCustomBuilder o = new SampleWithCustomBuilder(
241 delayAmount,
242 delayUnit,
243 creationTimestamp);
244 return o;
245 }
246
247 private void checkNotUsed() {
248 if ((mBuilderFieldsSet & 0x8) != 0) {
249 throw new IllegalStateException(
250 "This Builder should not be reused. Use a new Builder instance instead");
251 }
252 }
253 }
254
255 @DataClass.Generated(
Eugene Suslaf7450422019-11-18 16:09:52 -0800256 time = 1574122835982L,
257 codegenVersion = "1.0.14",
Eugene Susla3156a4c2019-07-25 14:05:12 -0700258 sourceFile = "frameworks/base/tests/Codegen/src/com/android/codegentest/SampleWithCustomBuilder.java",
Eugene Susla20b6e642019-09-30 15:15:19 -0700259 inputSignatures = " long delayAmount\n @android.annotation.NonNull java.util.concurrent.TimeUnit delayUnit\n long creationTimestamp\nprivate static java.util.concurrent.TimeUnit unparcelDelayUnit(android.os.Parcel)\nprivate void parcelDelayUnit(android.os.Parcel,int)\nclass SampleWithCustomBuilder extends java.lang.Object implements [android.os.Parcelable]\n@com.android.internal.util.DataClass(genBuilder=true, genAidl=false, genToString=true)\nabstract com.android.codegentest.SampleWithCustomBuilder.Builder setDelayAmount(long)\npublic abstract com.android.codegentest.SampleWithCustomBuilder.Builder setDelayUnit(java.util.concurrent.TimeUnit)\npublic com.android.codegentest.SampleWithCustomBuilder.Builder setDelay(long,java.util.concurrent.TimeUnit)\nclass BaseBuilder extends java.lang.Object implements []")
Eugene Susla3156a4c2019-07-25 14:05:12 -0700260 @Deprecated
261 private void __metadata() {}
262
Eugene Susla322e8b12019-10-22 17:32:08 -0700263
264 //@formatter:on
265 // End of generated code
266
Eugene Susla3156a4c2019-07-25 14:05:12 -0700267}