• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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.processor.annotationdiscovery.AnnotationFinder;
19 import com.google.auto.value.AutoValue;
20 import com.google.common.collect.ImmutableCollection;
21 import com.google.common.collect.ImmutableSet;
22 import com.squareup.javapoet.ClassName;
23 import javax.lang.model.element.TypeElement;
24 
25 /** Wrapper of basic information for a cross-profile provider class. */
26 @AutoValue
27 public abstract class ValidatorProviderClassInfo {
28 
providerClassElement()29   public abstract TypeElement providerClassElement();
30 
staticTypes()31   public abstract ImmutableCollection<TypeElement> staticTypes();
32 
simpleName()33   public String simpleName() {
34     return providerClassElement().getSimpleName().toString();
35   }
36 
className()37   public ClassName className() {
38     return ClassName.get(providerClassElement());
39   }
40 
create( Context context, TypeElement providerClassElement)41   public static ValidatorProviderClassInfo create(
42       Context context, TypeElement providerClassElement) {
43     CrossProfileProviderAnnotationInfo annotationInfo =
44         AnnotationFinder.extractCrossProfileProviderAnnotationInfo(context, providerClassElement);
45 
46     return new AutoValue_ValidatorProviderClassInfo(
47         providerClassElement, ImmutableSet.copyOf(annotationInfo.staticTypes()));
48   }
49 }
50