1 /*
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 
17 package com.android.codegentest;
18 
19 import android.annotation.NonNull;
20 import android.os.Parcel;
21 import android.os.Parcelable;
22 
23 import com.android.internal.util.DataClass;
24 
25 /**
26  * An example of deeply nested data classes
27  */
28 public class SampleWithNestedDataClasses {
29 
30     int mFoo = 0;
31 
32     @DataClass(genEqualsHashCode = true)
33     public static class NestedDataClass implements Parcelable {
34 
35         @NonNull String mBar;
36 
37 
38 
39         // Code below generated by codegen v1.0.23.
40         //
41         // DO NOT MODIFY!
42         // CHECKSTYLE:OFF Generated code
43         //
44         // To regenerate run:
45         // $ codegen $ANDROID_BUILD_TOP/frameworks/base/tests/Codegen/src/com/android/codegentest/SampleWithNestedDataClasses.java
46         //
47         // To exclude the generated code from IntelliJ auto-formatting enable (one-time):
48         //   Settings > Editor > Code Style > Formatter Control
49         //@formatter:off
50 
51 
52         @DataClass.Generated.Member
NestedDataClass( @onNull String bar)53         public NestedDataClass(
54                 @NonNull String bar) {
55             this.mBar = bar;
56             com.android.internal.util.AnnotationValidations.validate(
57                     NonNull.class, null, mBar);
58 
59             // onConstructed(); // You can define this method to get a callback
60         }
61 
62         @DataClass.Generated.Member
getBar()63         public @NonNull String getBar() {
64             return mBar;
65         }
66 
67         @Override
68         @DataClass.Generated.Member
equals(@ndroid.annotation.Nullable Object o)69         public boolean equals(@android.annotation.Nullable Object o) {
70             // You can override field equality logic by defining either of the methods like:
71             // boolean fieldNameEquals(NestedDataClass other) { ... }
72             // boolean fieldNameEquals(FieldType otherValue) { ... }
73 
74             if (this == o) return true;
75             if (o == null || getClass() != o.getClass()) return false;
76             @SuppressWarnings("unchecked")
77             NestedDataClass that = (NestedDataClass) o;
78             //noinspection PointlessBooleanExpression
79             return true
80                     && java.util.Objects.equals(mBar, that.mBar);
81         }
82 
83         @Override
84         @DataClass.Generated.Member
hashCode()85         public int hashCode() {
86             // You can override field hashCode logic by defining methods like:
87             // int fieldNameHashCode() { ... }
88 
89             int _hash = 1;
90             _hash = 31 * _hash + java.util.Objects.hashCode(mBar);
91             return _hash;
92         }
93 
94         @Override
95         @DataClass.Generated.Member
writeToParcel(@onNull Parcel dest, int flags)96         public void writeToParcel(@NonNull Parcel dest, int flags) {
97             // You can override field parcelling by defining methods like:
98             // void parcelFieldName(Parcel dest, int flags) { ... }
99 
100             dest.writeString(mBar);
101         }
102 
103         @Override
104         @DataClass.Generated.Member
describeContents()105         public int describeContents() { return 0; }
106 
107         /** @hide */
108         @SuppressWarnings({"unchecked", "RedundantCast"})
109         @DataClass.Generated.Member
NestedDataClass(@onNull Parcel in)110         protected NestedDataClass(@NonNull Parcel in) {
111             // You can override field unparcelling by defining methods like:
112             // static FieldType unparcelFieldName(Parcel in) { ... }
113 
114             String bar = in.readString();
115 
116             this.mBar = bar;
117             com.android.internal.util.AnnotationValidations.validate(
118                     NonNull.class, null, mBar);
119 
120             // onConstructed(); // You can define this method to get a callback
121         }
122 
123         @DataClass.Generated.Member
124         public static final @NonNull Parcelable.Creator<NestedDataClass> CREATOR
125                 = new Parcelable.Creator<NestedDataClass>() {
126             @Override
127             public NestedDataClass[] newArray(int size) {
128                 return new NestedDataClass[size];
129             }
130 
131             @Override
132             public NestedDataClass createFromParcel(@NonNull Parcel in) {
133                 return new NestedDataClass(in);
134             }
135         };
136 
137         @DataClass.Generated(
138                 time = 1616541545539L,
139                 codegenVersion = "1.0.23",
140                 sourceFile = "frameworks/base/tests/Codegen/src/com/android/codegentest/SampleWithNestedDataClasses.java",
141                 inputSignatures = " @android.annotation.NonNull java.lang.String mBar\nclass NestedDataClass extends java.lang.Object implements [android.os.Parcelable]\n@com.android.internal.util.DataClass(genEqualsHashCode=true)")
142         @Deprecated
__metadata()143         private void __metadata() {}
144 
145 
146         //@formatter:on
147         // End of generated code
148 
149     }
150 
151     @DataClass(genEqualsHashCode = true)
152     public static class NestedDataClass2 implements Parcelable {
153 
154         @NonNull String mBaz;
155 
156         @DataClass(genEqualsHashCode = true)
157         public static class NestedDataClass3 implements Parcelable {
158 
159             @NonNull long mBaz2;
160 
161 
162 
163             // Code below generated by codegen v1.0.23.
164             //
165             // DO NOT MODIFY!
166             // CHECKSTYLE:OFF Generated code
167             //
168             // To regenerate run:
169             // $ codegen $ANDROID_BUILD_TOP/frameworks/base/tests/Codegen/src/com/android/codegentest/SampleWithNestedDataClasses.java
170             //
171             // To exclude the generated code from IntelliJ auto-formatting enable (one-time):
172             //   Settings > Editor > Code Style > Formatter Control
173             //@formatter:off
174 
175 
176             @DataClass.Generated.Member
NestedDataClass3( @onNull long baz2)177             public NestedDataClass3(
178                     @NonNull long baz2) {
179                 this.mBaz2 = baz2;
180                 com.android.internal.util.AnnotationValidations.validate(
181                         NonNull.class, null, mBaz2);
182 
183                 // onConstructed(); // You can define this method to get a callback
184             }
185 
186             @DataClass.Generated.Member
getBaz2()187             public @NonNull long getBaz2() {
188                 return mBaz2;
189             }
190 
191             @Override
192             @DataClass.Generated.Member
equals(@ndroid.annotation.Nullable Object o)193             public boolean equals(@android.annotation.Nullable Object o) {
194                 // You can override field equality logic by defining either of the methods like:
195                 // boolean fieldNameEquals(NestedDataClass3 other) { ... }
196                 // boolean fieldNameEquals(FieldType otherValue) { ... }
197 
198                 if (this == o) return true;
199                 if (o == null || getClass() != o.getClass()) return false;
200                 @SuppressWarnings("unchecked")
201                 NestedDataClass3 that = (NestedDataClass3) o;
202                 //noinspection PointlessBooleanExpression
203                 return true
204                         && mBaz2 == that.mBaz2;
205             }
206 
207             @Override
208             @DataClass.Generated.Member
hashCode()209             public int hashCode() {
210                 // You can override field hashCode logic by defining methods like:
211                 // int fieldNameHashCode() { ... }
212 
213                 int _hash = 1;
214                 _hash = 31 * _hash + Long.hashCode(mBaz2);
215                 return _hash;
216             }
217 
218             @Override
219             @DataClass.Generated.Member
writeToParcel(@onNull Parcel dest, int flags)220             public void writeToParcel(@NonNull Parcel dest, int flags) {
221                 // You can override field parcelling by defining methods like:
222                 // void parcelFieldName(Parcel dest, int flags) { ... }
223 
224                 dest.writeLong(mBaz2);
225             }
226 
227             @Override
228             @DataClass.Generated.Member
describeContents()229             public int describeContents() { return 0; }
230 
231             /** @hide */
232             @SuppressWarnings({"unchecked", "RedundantCast"})
233             @DataClass.Generated.Member
NestedDataClass3(@onNull Parcel in)234             protected NestedDataClass3(@NonNull Parcel in) {
235                 // You can override field unparcelling by defining methods like:
236                 // static FieldType unparcelFieldName(Parcel in) { ... }
237 
238                 long baz2 = in.readLong();
239 
240                 this.mBaz2 = baz2;
241                 com.android.internal.util.AnnotationValidations.validate(
242                         NonNull.class, null, mBaz2);
243 
244                 // onConstructed(); // You can define this method to get a callback
245             }
246 
247             @DataClass.Generated.Member
248             public static final @NonNull Parcelable.Creator<NestedDataClass3> CREATOR
249                     = new Parcelable.Creator<NestedDataClass3>() {
250                 @Override
251                 public NestedDataClass3[] newArray(int size) {
252                     return new NestedDataClass3[size];
253                 }
254 
255                 @Override
256                 public NestedDataClass3 createFromParcel(@NonNull Parcel in) {
257                     return new NestedDataClass3(in);
258                 }
259             };
260 
261             @DataClass.Generated(
262                     time = 1616541545548L,
263                     codegenVersion = "1.0.23",
264                     sourceFile = "frameworks/base/tests/Codegen/src/com/android/codegentest/SampleWithNestedDataClasses.java",
265                     inputSignatures = " @android.annotation.NonNull long mBaz2\nclass NestedDataClass3 extends java.lang.Object implements [android.os.Parcelable]\n@com.android.internal.util.DataClass(genEqualsHashCode=true)")
266             @Deprecated
__metadata()267             private void __metadata() {}
268 
269 
270             //@formatter:on
271             // End of generated code
272 
273         }
274 
275 
276 
277         // Code below generated by codegen v1.0.23.
278         //
279         // DO NOT MODIFY!
280         // CHECKSTYLE:OFF Generated code
281         //
282         // To regenerate run:
283         // $ codegen $ANDROID_BUILD_TOP/frameworks/base/tests/Codegen/src/com/android/codegentest/SampleWithNestedDataClasses.java
284         //
285         // To exclude the generated code from IntelliJ auto-formatting enable (one-time):
286         //   Settings > Editor > Code Style > Formatter Control
287         //@formatter:off
288 
289 
290         @DataClass.Generated.Member
NestedDataClass2( @onNull String baz)291         public NestedDataClass2(
292                 @NonNull String baz) {
293             this.mBaz = baz;
294             com.android.internal.util.AnnotationValidations.validate(
295                     NonNull.class, null, mBaz);
296 
297             // onConstructed(); // You can define this method to get a callback
298         }
299 
300         @DataClass.Generated.Member
getBaz()301         public @NonNull String getBaz() {
302             return mBaz;
303         }
304 
305         @Override
306         @DataClass.Generated.Member
equals(@ndroid.annotation.Nullable Object o)307         public boolean equals(@android.annotation.Nullable Object o) {
308             // You can override field equality logic by defining either of the methods like:
309             // boolean fieldNameEquals(NestedDataClass2 other) { ... }
310             // boolean fieldNameEquals(FieldType otherValue) { ... }
311 
312             if (this == o) return true;
313             if (o == null || getClass() != o.getClass()) return false;
314             @SuppressWarnings("unchecked")
315             NestedDataClass2 that = (NestedDataClass2) o;
316             //noinspection PointlessBooleanExpression
317             return true
318                     && java.util.Objects.equals(mBaz, that.mBaz);
319         }
320 
321         @Override
322         @DataClass.Generated.Member
hashCode()323         public int hashCode() {
324             // You can override field hashCode logic by defining methods like:
325             // int fieldNameHashCode() { ... }
326 
327             int _hash = 1;
328             _hash = 31 * _hash + java.util.Objects.hashCode(mBaz);
329             return _hash;
330         }
331 
332         @Override
333         @DataClass.Generated.Member
writeToParcel(@onNull Parcel dest, int flags)334         public void writeToParcel(@NonNull Parcel dest, int flags) {
335             // You can override field parcelling by defining methods like:
336             // void parcelFieldName(Parcel dest, int flags) { ... }
337 
338             dest.writeString(mBaz);
339         }
340 
341         @Override
342         @DataClass.Generated.Member
describeContents()343         public int describeContents() { return 0; }
344 
345         /** @hide */
346         @SuppressWarnings({"unchecked", "RedundantCast"})
347         @DataClass.Generated.Member
NestedDataClass2(@onNull Parcel in)348         protected NestedDataClass2(@NonNull Parcel in) {
349             // You can override field unparcelling by defining methods like:
350             // static FieldType unparcelFieldName(Parcel in) { ... }
351 
352             String baz = in.readString();
353 
354             this.mBaz = baz;
355             com.android.internal.util.AnnotationValidations.validate(
356                     NonNull.class, null, mBaz);
357 
358             // onConstructed(); // You can define this method to get a callback
359         }
360 
361         @DataClass.Generated.Member
362         public static final @NonNull Parcelable.Creator<NestedDataClass2> CREATOR
363                 = new Parcelable.Creator<NestedDataClass2>() {
364             @Override
365             public NestedDataClass2[] newArray(int size) {
366                 return new NestedDataClass2[size];
367             }
368 
369             @Override
370             public NestedDataClass2 createFromParcel(@NonNull Parcel in) {
371                 return new NestedDataClass2(in);
372             }
373         };
374 
375         @DataClass.Generated(
376                 time = 1616541545552L,
377                 codegenVersion = "1.0.23",
378                 sourceFile = "frameworks/base/tests/Codegen/src/com/android/codegentest/SampleWithNestedDataClasses.java",
379                 inputSignatures = " @android.annotation.NonNull java.lang.String mBaz\nclass NestedDataClass2 extends java.lang.Object implements [android.os.Parcelable]\n@com.android.internal.util.DataClass(genEqualsHashCode=true)")
380         @Deprecated
__metadata()381         private void __metadata() {}
382 
383 
384         //@formatter:on
385         // End of generated code
386 
387     }
388 
someCode()389     void someCode() {}
390 }
391