diff options
| author | Ashley Rose <ashleyrose@google.com> | 2019-02-04 22:28:51 +0000 |
|---|---|---|
| committer | Android (Google) Code Review <android-gerrit@google.com> | 2019-02-04 22:28:51 +0000 |
| commit | aed477d58a178dfa8c63755b17d9d0407b916347 (patch) | |
| tree | 33561d3836c4fe210d83b6d1bcbdc908ceffb669 /core/java | |
| parent | a17c3d32dadd52dd2c9964448fd86158584d22e6 (diff) | |
| parent | a4850c440592f96599ea33eb75722ecde933be12 (diff) | |
Merge "Add InspectionCompanionProvider"
Diffstat (limited to 'core/java')
| -rw-r--r-- | core/java/android/view/inspector/GeneratedInspectionCompanionProvider.java | 47 | ||||
| -rw-r--r-- | core/java/android/view/inspector/InspectionCompanionProvider.java | 37 |
2 files changed, 84 insertions, 0 deletions
diff --git a/core/java/android/view/inspector/GeneratedInspectionCompanionProvider.java b/core/java/android/view/inspector/GeneratedInspectionCompanionProvider.java new file mode 100644 index 000000000000..8faae1f1da98 --- /dev/null +++ b/core/java/android/view/inspector/GeneratedInspectionCompanionProvider.java @@ -0,0 +1,47 @@ +/* + * Copyright 2019 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.view.inspector; + +import android.annotation.NonNull; +import android.annotation.Nullable; + +/** + * An inspection companion provider that loads pre-generated inspection companions + * + * @see android.processor.view.inspector.PlatformInspectableProcessor + */ +public class GeneratedInspectionCompanionProvider implements InspectionCompanionProvider { + /** + * The suffix used for the generated class + */ + private static final String COMPANION_SUFFIX = "$$InspectionCompanion"; + + @Override + @Nullable + @SuppressWarnings("unchecked") + public <T> InspectionCompanion<T> provide(@NonNull Class<T> cls) { + final String companionName = cls.getName() + COMPANION_SUFFIX; + + try { + final Class<InspectionCompanion<T>> companionClass = + (Class<InspectionCompanion<T>>) cls.getClassLoader().loadClass(companionName); + return companionClass.newInstance(); + } catch (ClassNotFoundException | InstantiationException | IllegalAccessException e) { + return null; + } + } +} diff --git a/core/java/android/view/inspector/InspectionCompanionProvider.java b/core/java/android/view/inspector/InspectionCompanionProvider.java new file mode 100644 index 000000000000..c08f49c611ee --- /dev/null +++ b/core/java/android/view/inspector/InspectionCompanionProvider.java @@ -0,0 +1,37 @@ +/* + * Copyright 2019 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package android.view.inspector; + +import android.annotation.NonNull; +import android.annotation.Nullable; + +/** + * An interface for services that can provide inspection companions for a class. + */ +public interface InspectionCompanionProvider { + /** + * Provide an {@link InspectionCompanion} for the supplied class. + * + * Implementing classes must not cache companion instances, and should instantiate a new one + * for each request. + * + * @param cls A {@link Class} representing the inspectable type + * @param <T> The type to find the companion for + * @return The inspection companion for the supplied type + */ + @Nullable + <T> InspectionCompanion<T> provide(@NonNull Class<T> cls); +} |
