1 /*
2  * Copyright 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 sample.experimental;
18 
19 @SuppressWarnings({"unused", "WeakerAccess", "deprecation"})
20 class UseJavaExperimentalFromJava {
21     /**
22      * Unsafe call into an experimental class.
23      */
getDateUnsafe()24     int getDateUnsafe() {
25         DateProvider dateProvider = new DateProvider();
26         return dateProvider.getDate();
27     }
28 
29     @ExperimentalDateTime
getDateExperimental()30     int getDateExperimental() {
31         DateProvider dateProvider = new DateProvider();
32         return dateProvider.getDate();
33     }
34 
35     @androidx.annotation.experimental.UseExperimental(markerClass = ExperimentalDateTime.class)
getDateUseExperimental()36     int getDateUseExperimental() {
37         DateProvider dateProvider = new DateProvider();
38         return dateProvider.getDate();
39     }
40 
displayDate()41     void displayDate() {
42         System.out.println("" + getDateUnsafe());
43     }
44 
45     // Tests involving multiple experimental markers.
46 
47     /**
48      * Unsafe call into an experimental class.
49      */
50     @ExperimentalDateTime
getDateExperimentalLocationUnsafe()51     int getDateExperimentalLocationUnsafe() {
52         DateProvider dateProvider = new DateProvider();
53         LocationProvider locationProvider = new LocationProvider();
54         return dateProvider.getDate() + locationProvider.getLocation();
55     }
56 
57     @ExperimentalDateTime
58     @ExperimentalLocation
getDateAndLocationExperimental()59     int getDateAndLocationExperimental() {
60         DateProvider dateProvider = new DateProvider();
61         LocationProvider locationProvider = new LocationProvider();
62         return dateProvider.getDate() + locationProvider.getLocation();
63     }
64 
65     @androidx.annotation.experimental.UseExperimental(markerClass = ExperimentalDateTime.class)
66     @ExperimentalLocation
getDateUseExperimentalLocationExperimental()67     int getDateUseExperimentalLocationExperimental() {
68         DateProvider dateProvider = new DateProvider();
69         LocationProvider locationProvider = new LocationProvider();
70         return dateProvider.getDate() + locationProvider.getLocation();
71     }
72 
73     @androidx.annotation.experimental.UseExperimental(
74             markerClass = { ExperimentalDateTime.class, ExperimentalLocation.class })
getDateAndLocationUseExperimental()75     int getDateAndLocationUseExperimental() {
76         DateProvider dateProvider = new DateProvider();
77         LocationProvider locationProvider = new LocationProvider();
78         return dateProvider.getDate() + locationProvider.getLocation();
79     }
80 }
81