112 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
			
		
		
	
	
			112 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
| package androidx.lifecycle;
 | |
| 
 | |
| import java.io.Closeable;
 | |
| import java.io.IOException;
 | |
| import java.util.Arrays;
 | |
| import java.util.HashMap;
 | |
| import java.util.Iterator;
 | |
| import java.util.LinkedHashSet;
 | |
| import java.util.Map;
 | |
| import java.util.Set;
 | |
| 
 | |
| /* loaded from: classes.dex */
 | |
| public abstract class ViewModel {
 | |
|     private final Map<String, Object> mBagOfTags;
 | |
|     private volatile boolean mCleared;
 | |
|     private final Set<Closeable> mCloseables;
 | |
| 
 | |
|     protected void onCleared() {
 | |
|     }
 | |
| 
 | |
|     public ViewModel() {
 | |
|         this.mBagOfTags = new HashMap();
 | |
|         this.mCloseables = new LinkedHashSet();
 | |
|         this.mCleared = false;
 | |
|     }
 | |
| 
 | |
|     public ViewModel(Closeable... closeableArr) {
 | |
|         this.mBagOfTags = new HashMap();
 | |
|         LinkedHashSet linkedHashSet = new LinkedHashSet();
 | |
|         this.mCloseables = linkedHashSet;
 | |
|         this.mCleared = false;
 | |
|         linkedHashSet.addAll(Arrays.asList(closeableArr));
 | |
|     }
 | |
| 
 | |
|     public void addCloseable(Closeable closeable) {
 | |
|         if (this.mCleared) {
 | |
|             closeWithRuntimeException(closeable);
 | |
|             return;
 | |
|         }
 | |
|         Set<Closeable> set = this.mCloseables;
 | |
|         if (set != null) {
 | |
|             synchronized (set) {
 | |
|                 this.mCloseables.add(closeable);
 | |
|             }
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     final void clear() {
 | |
|         this.mCleared = true;
 | |
|         Map<String, Object> map = this.mBagOfTags;
 | |
|         if (map != null) {
 | |
|             synchronized (map) {
 | |
|                 Iterator<Object> it = this.mBagOfTags.values().iterator();
 | |
|                 while (it.hasNext()) {
 | |
|                     closeWithRuntimeException(it.next());
 | |
|                 }
 | |
|             }
 | |
|         }
 | |
|         Set<Closeable> set = this.mCloseables;
 | |
|         if (set != null) {
 | |
|             synchronized (set) {
 | |
|                 Iterator<Closeable> it2 = this.mCloseables.iterator();
 | |
|                 while (it2.hasNext()) {
 | |
|                     closeWithRuntimeException(it2.next());
 | |
|                 }
 | |
|             }
 | |
|             this.mCloseables.clear();
 | |
|         }
 | |
|         onCleared();
 | |
|     }
 | |
| 
 | |
|     /* JADX WARN: Multi-variable type inference failed */
 | |
|     <T> T setTagIfAbsent(String str, T t) {
 | |
|         Object obj;
 | |
|         synchronized (this.mBagOfTags) {
 | |
|             obj = this.mBagOfTags.get(str);
 | |
|             if (obj == 0) {
 | |
|                 this.mBagOfTags.put(str, t);
 | |
|             }
 | |
|         }
 | |
|         if (obj != 0) {
 | |
|             t = obj;
 | |
|         }
 | |
|         if (this.mCleared) {
 | |
|             closeWithRuntimeException(t);
 | |
|         }
 | |
|         return t;
 | |
|     }
 | |
| 
 | |
|     <T> T getTag(String str) {
 | |
|         T t;
 | |
|         Map<String, Object> map = this.mBagOfTags;
 | |
|         if (map == null) {
 | |
|             return null;
 | |
|         }
 | |
|         synchronized (map) {
 | |
|             t = (T) this.mBagOfTags.get(str);
 | |
|         }
 | |
|         return t;
 | |
|     }
 | |
| 
 | |
|     private static void closeWithRuntimeException(Object obj) {
 | |
|         if (obj instanceof Closeable) {
 | |
|             try {
 | |
|                 ((Closeable) obj).close();
 | |
|             } catch (IOException e) {
 | |
|                 throw new RuntimeException(e);
 | |
|             }
 | |
|         }
 | |
|     }
 | |
| }
 |