1 /* 2 * Copyright 2021 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 * https://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.android.enterprise.connectedapps.processor.containers; 17 18 import com.google.android.enterprise.connectedapps.annotations.CustomParcelableWrapper; 19 import com.google.android.enterprise.connectedapps.processor.GeneratorUtilities; 20 import com.google.auto.value.AutoValue; 21 import javax.lang.model.element.TypeElement; 22 23 /** Wrapper around information contained in a {@link CustomParcelableWrapper} annotation. */ 24 @AutoValue 25 public abstract class ParcelableWrapperAnnotationInfo { 26 originalType()27 public abstract TypeElement originalType(); 28 extractFromParcelableWrapperAnnotation( Context context, CustomParcelableWrapper customParcelableWrapperAnnotation)29 public static ParcelableWrapperAnnotationInfo extractFromParcelableWrapperAnnotation( 30 Context context, CustomParcelableWrapper customParcelableWrapperAnnotation) { 31 if (customParcelableWrapperAnnotation == null) { 32 throw new NullPointerException("parcelableWrapperAnnotation must not be null"); 33 } 34 35 TypeElement originalType = 36 GeneratorUtilities.extractClassFromAnnotation( 37 context.types(), customParcelableWrapperAnnotation::originalType); 38 39 return new AutoValue_ParcelableWrapperAnnotationInfo(originalType); 40 } 41 } 42