fix nullsafe FIXMEs for DynamicFromMap.java and mark nullsafe

Summary:
Gone trough all the FIXMEs added in the previous diff by the nullsafe tool, marked the class as nullsafe and ensured no remaining violations.
Changelog: [Android][Fixed] Made DynamicFromMap.java nullsafe

Reviewed By: alanleedev

Differential Revision: D72384077

fbshipit-source-id: 70fb921fed06e9f89eb69c558692d1d7705fe2e5
This commit is contained in:
Gijs Weterings
2025-04-09 09:07:30 -07:00
committed by Facebook GitHub Bot
parent fe2c8fc057
commit dcb2dbb2c3
@@ -9,9 +9,11 @@ package com.facebook.react.bridge;
import androidx.annotation.Nullable;
import androidx.core.util.Pools.SimplePool;
import com.facebook.infer.annotation.Nullsafe;
import java.util.Objects;
/** Implementation of Dynamic wrapping a ReadableMap. */
@Nullsafe(Nullsafe.Mode.LOCAL)
class DynamicFromMap implements Dynamic {
private static final ThreadLocal<SimplePool<DynamicFromMap>> sPool =
new ThreadLocal<SimplePool<DynamicFromMap>>() {
@@ -28,8 +30,11 @@ class DynamicFromMap implements Dynamic {
private DynamicFromMap() {}
public static DynamicFromMap create(ReadableMap map, String name) {
// NULLSAFE_FIXME[Nullable Dereference]
DynamicFromMap dynamic = sPool.get().acquire();
SimplePool<DynamicFromMap> poolValueHolder = sPool.get();
DynamicFromMap dynamic = null;
if (poolValueHolder != null) {
dynamic = poolValueHolder.acquire();
}
if (dynamic == null) {
dynamic = new DynamicFromMap();
}
@@ -42,8 +47,10 @@ class DynamicFromMap implements Dynamic {
public void recycle() {
mMap = null;
mName = null;
// NULLSAFE_FIXME[Nullable Dereference]
sPool.get().release(this);
SimplePool<DynamicFromMap> poolValueHolder = sPool.get();
if (poolValueHolder != null) {
poolValueHolder.release(this);
}
}
@Override
@@ -79,20 +86,18 @@ class DynamicFromMap implements Dynamic {
}
@Override
public String asString() {
public @Nullable String asString() {
if (mMap == null || mName == null) {
throw new IllegalStateException("This dynamic value has been recycled");
}
// NULLSAFE_FIXME[Return Not Nullable]
return mMap.getString(mName);
}
@Override
public ReadableArray asArray() {
public @Nullable ReadableArray asArray() {
if (mMap == null || mName == null) {
throw new IllegalStateException("This dynamic value has been recycled");
}
// NULLSAFE_FIXME[Return Not Nullable]
return mMap.getArray(mName);
}