• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2024 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 com.android.adservices.shared.meta_testing;
18 
19 import com.android.adservices.shared.testing.DynamicLogger;
20 import com.android.adservices.shared.testing.Logger;
21 
22 import java.util.Objects;
23 
24 /**
25  * Helper class used to wrap an object
26  *
27  * @param <T> class being wrapped
28  */
29 public abstract class Wrapper<T> {
30 
31     protected final Logger mLog;
32 
33     private T mWrapped;
34 
35     /** Default constructor, sets logger. */
Wrapper()36     public Wrapper() {
37         this(/* checkLogger= */ false, /* logger= */ null);
38     }
39 
40     /** Constructor with a custom logger. */
Wrapper(Logger logger)41     public Wrapper(Logger logger) {
42         this(/* checkLogger= */ true, logger);
43     }
44 
Wrapper(boolean checkLogger, Logger logger)45     private Wrapper(boolean checkLogger, Logger logger) {
46         if (logger != null) {
47             mLog = logger;
48         } else if (!checkLogger) {
49             mLog = new Logger(DynamicLogger.getInstance(), getClass());
50         } else {
51             throw new NullPointerException("logger cannot be null");
52         }
53     }
54 
55     /** Sets the wrapped object. */
setWrapped(T wrapped)56     public final void setWrapped(T wrapped) {
57         mWrapped = Objects.requireNonNull(wrapped, "wrapped object cannot be null");
58     }
59 
60     /** Gets the wrapped object. */
getWrapped()61     public final T getWrapped() {
62         if (mWrapped == null) {
63             throw new IllegalStateException("setWrapped() not called");
64         }
65         return mWrapped;
66     }
67 
68     @Override
toString()69     public String toString() {
70         return mLog.getTag() + "[wrapped=" + mWrapped + "]";
71     }
72 }
73