• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2023 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 android.car.user;
18 
19 import android.annotation.NonNull;
20 import android.annotation.Nullable;
21 import android.annotation.SystemApi;
22 import android.os.Parcelable;
23 
24 import com.android.car.internal.util.DataClass;
25 
26 import java.util.Objects;
27 
28 /**
29  * User creation request.
30  *
31  * @hide
32  */
33 @DataClass(
34         genParcelable = true,
35         genConstructor = false,
36         genAidl = true)
37 @SystemApi
38 public final class UserCreationRequest implements Parcelable {
39 
40     private final @Nullable String mName;
41     private final boolean mAdmin;
42     private final boolean mGuest;
43     private final boolean mEphemeral;
44 
UserCreationRequest(Builder builder)45     private UserCreationRequest(Builder builder) {
46         this.mName = builder.mName;
47         this.mAdmin = builder.mAdmin;
48         this.mGuest = builder.mGuest;
49         this.mEphemeral = builder.mEphemeral;
50     }
51 
52     /** Builder for {@link UserCreationRequest}. */
53     public static final class Builder {
54         private String mName;
55         private boolean mAdmin;
56         private boolean mGuest;
57         private boolean mEphemeral;
58 
59         /**
60          * Sets user name.
61          */
setName(@onNull String name)62         public @NonNull Builder setName(@NonNull String name) {
63             mName = Objects.requireNonNull(name, "Name should not be null.");
64             return this;
65         }
66 
67         /**
68          * Sets user as an admin user.
69          */
setAdmin()70         public @NonNull Builder setAdmin() {
71             mAdmin = true;
72             return this;
73         }
74 
75         /**
76          * Sets user as a guest user.
77          */
setGuest()78         public @NonNull Builder setGuest() {
79             mGuest = true;
80             return this;
81         }
82 
83         /**
84          * Sets user as a Ephemeral user.
85          */
setEphemeral()86         public @NonNull Builder setEphemeral() {
87             mEphemeral = true;
88             return this;
89         }
90 
91         /** Builds and returns a {@link UserCreationRequest}. */
build()92         public @NonNull UserCreationRequest build() {
93             if (mGuest && mAdmin) {
94                 // Guest can't be admin user.
95                 throw new IllegalArgumentException("Guest user can't be admin");
96             }
97 
98             return new UserCreationRequest(this);
99         }
100     }
101 
102     @Override
toString()103     public String toString() {
104         return "UserCreationRequest { "
105                 + "name = " + mName + ", "
106                 + "admin = " + mAdmin + ", "
107                 + "guest = " + mGuest + ", "
108                 + "ephemeral = " + mEphemeral + ", "
109                 + " }";
110     }
111 
112 
113 
114 
115     // Code below generated by codegen v1.0.23.
116     //
117     // DO NOT MODIFY!
118     // CHECKSTYLE:OFF Generated code
119     //
120     // To regenerate run:
121     // $ codegen $ANDROID_BUILD_TOP/packages/services/Car/car-lib/src/android/car/user/UserCreationRequest.java
122     //
123     // To exclude the generated code from IntelliJ auto-formatting enable (one-time):
124     //   Settings > Editor > Code Style > Formatter Control
125     //@formatter:off
126 
127 
128     @DataClass.Generated.Member
getName()129     public @Nullable String getName() {
130         return mName;
131     }
132 
133     @DataClass.Generated.Member
isAdmin()134     public boolean isAdmin() {
135         return mAdmin;
136     }
137 
138     @DataClass.Generated.Member
isGuest()139     public boolean isGuest() {
140         return mGuest;
141     }
142 
143     @DataClass.Generated.Member
isEphemeral()144     public boolean isEphemeral() {
145         return mEphemeral;
146     }
147 
148     @Override
149     @DataClass.Generated.Member
writeToParcel(@onNull android.os.Parcel dest, int flags)150     public void writeToParcel(@NonNull android.os.Parcel dest, int flags) {
151         // You can override field parcelling by defining methods like:
152         // void parcelFieldName(Parcel dest, int flags) { ... }
153 
154         byte flg = 0;
155         if (mAdmin) flg |= 0x2;
156         if (mGuest) flg |= 0x4;
157         if (mEphemeral) flg |= 0x8;
158         if (mName != null) flg |= 0x1;
159         dest.writeByte(flg);
160         if (mName != null) dest.writeString(mName);
161     }
162 
163     @Override
164     @DataClass.Generated.Member
describeContents()165     public int describeContents() { return 0; }
166 
167     /** @hide */
168     @SuppressWarnings({"unchecked", "RedundantCast"})
169     @DataClass.Generated.Member
UserCreationRequest(@onNull android.os.Parcel in)170     /* package-private */ UserCreationRequest(@NonNull android.os.Parcel in) {
171         // You can override field unparcelling by defining methods like:
172         // static FieldType unparcelFieldName(Parcel in) { ... }
173 
174         byte flg = in.readByte();
175         boolean admin = (flg & 0x2) != 0;
176         boolean guest = (flg & 0x4) != 0;
177         boolean ephemeral = (flg & 0x8) != 0;
178         String name = (flg & 0x1) == 0 ? null : in.readString();
179 
180         this.mName = name;
181         this.mAdmin = admin;
182         this.mGuest = guest;
183         this.mEphemeral = ephemeral;
184 
185         // onConstructed(); // You can define this method to get a callback
186     }
187 
188     @DataClass.Generated.Member
189     public static final @NonNull Parcelable.Creator<UserCreationRequest> CREATOR
190             = new Parcelable.Creator<UserCreationRequest>() {
191         @Override
192         public UserCreationRequest[] newArray(int size) {
193             return new UserCreationRequest[size];
194         }
195 
196         @Override
197         public UserCreationRequest createFromParcel(@NonNull android.os.Parcel in) {
198             return new UserCreationRequest(in);
199         }
200     };
201 
202     @DataClass.Generated(
203             time = 1677736413834L,
204             codegenVersion = "1.0.23",
205             sourceFile = "packages/services/Car/car-lib/src/android/car/user/UserCreationRequest.java",
206             inputSignatures = "private final @android.annotation.Nullable java.lang.String mName\nprivate final  boolean mAdmin\nprivate final  boolean mGuest\nprivate final  boolean mEphemeral\nclass UserCreationRequest extends java.lang.Object implements [android.os.Parcelable]\nprivate  java.lang.String mName\nprivate  boolean mAdmin\nprivate  boolean mGuest\nprivate  boolean mEphemeral\npublic @android.car.annotation.ApiRequirements @android.annotation.NonNull android.car.user.UserCreationRequest.Builder setName(java.lang.String)\npublic @android.car.annotation.ApiRequirements @android.annotation.NonNull android.car.user.UserCreationRequest.Builder setAdmin()\npublic @android.car.annotation.ApiRequirements @android.annotation.NonNull android.car.user.UserCreationRequest.Builder setGuest()\npublic @android.car.annotation.ApiRequirements @android.annotation.NonNull android.car.user.UserCreationRequest.Builder setEphemeral()\npublic @android.car.annotation.ApiRequirements @android.annotation.NonNull android.car.user.UserCreationRequest build()\nclass Builder extends java.lang.Object implements []\n@com.android.car.internal.util.DataClass(genParcelable=true, genConstructor=false, genAidl=true)")
207     @Deprecated
__metadata()208     private void __metadata() {}
209 
210 
211     //@formatter:on
212     // End of generated code
213 
214 }
215