org.robolectric.internal.bytecode.ShadowInvalidator Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of sandbox Show documentation
Show all versions of sandbox Show documentation
An alternative Android testing framework.
The newest version!
package org.robolectric.internal.bytecode;
import java.lang.invoke.SwitchPoint;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
public class ShadowInvalidator {
private static final SwitchPoint DUMMY = new SwitchPoint();
static {
SwitchPoint.invalidateAll(new SwitchPoint[] {DUMMY});
}
private Map switchPoints;
public ShadowInvalidator() {
this.switchPoints = new HashMap<>();
}
public SwitchPoint getSwitchPoint(Class> caller) {
return getSwitchPoint(caller.getName());
}
public synchronized SwitchPoint getSwitchPoint(String className) {
SwitchPoint switchPoint = switchPoints.get(className);
if (switchPoint == null) switchPoints.put(className, switchPoint = new SwitchPoint());
return switchPoint;
}
public synchronized void invalidateClasses(Collection classNames) {
if (classNames.isEmpty()) return;
SwitchPoint[] points = new SwitchPoint[classNames.size()];
int i = 0;
for (String className : classNames) {
SwitchPoint switchPoint = switchPoints.put(className, null);
if (switchPoint == null) switchPoint = DUMMY;
points[i++] = switchPoint;
}
SwitchPoint.invalidateAll(points);
}
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy