aboutsummaryrefslogtreecommitdiff
path: root/robolectric-sandbox
diff options
context:
space:
mode:
authorChristian Williams <christianw@google.com>2017-01-26 18:09:45 -0800
committerChristian Williams <christianw@google.com>2017-02-07 15:08:51 -0800
commit01770cc807ceb7998595d2a8da3c9dcdc1c66616 (patch)
treeb019a71f93fcd823491214106dda25650d4b38a9 /robolectric-sandbox
parent5ec1787d985ea2fd242168831a7956712f809627 (diff)
downloadrobolectric-shadows-01770cc807ceb7998595d2a8da3c9dcdc1c66616.tar.gz
Deprecate ShadowExtractor.
Move ShadowedObject out of shadow-api.
Diffstat (limited to 'robolectric-sandbox')
-rw-r--r--robolectric-sandbox/src/main/java/org/robolectric/internal/bytecode/InstrumentationConfiguration.java2
-rw-r--r--robolectric-sandbox/src/main/java/org/robolectric/internal/bytecode/InvokeDynamicSupport.java1
-rw-r--r--robolectric-sandbox/src/main/java/org/robolectric/internal/bytecode/SandboxClassLoader.java1
-rw-r--r--robolectric-sandbox/src/main/java/org/robolectric/internal/bytecode/ShadowImpl.java5
-rw-r--r--robolectric-sandbox/src/main/java/org/robolectric/internal/bytecode/ShadowedObject.java5
-rw-r--r--robolectric-sandbox/src/test/java/org/robolectric/SandboxClassLoaderTest.java31
6 files changed, 28 insertions, 17 deletions
diff --git a/robolectric-sandbox/src/main/java/org/robolectric/internal/bytecode/InstrumentationConfiguration.java b/robolectric-sandbox/src/main/java/org/robolectric/internal/bytecode/InstrumentationConfiguration.java
index 8521539b8..fd2581ed5 100644
--- a/robolectric-sandbox/src/main/java/org/robolectric/internal/bytecode/InstrumentationConfiguration.java
+++ b/robolectric-sandbox/src/main/java/org/robolectric/internal/bytecode/InstrumentationConfiguration.java
@@ -6,6 +6,7 @@ import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Sets;
import org.robolectric.annotation.internal.DoNotInstrument;
import org.robolectric.annotation.internal.Instrument;
+import org.robolectric.internal.ShadowExtractor;
import org.robolectric.shadow.api.Shadow;
import java.util.Collection;
@@ -30,6 +31,7 @@ public class InstrumentationConfiguration {
Shadow.class.getName(),
// these classes are deprecated and will be removed soon:
+ ShadowExtractor.class.getName(),
"org.robolectric.res.builder.ActivityController",
"org.robolectric.res.builder.ContentProviderController",
"org.robolectric.res.builder.DefaultPackageManager",
diff --git a/robolectric-sandbox/src/main/java/org/robolectric/internal/bytecode/InvokeDynamicSupport.java b/robolectric-sandbox/src/main/java/org/robolectric/internal/bytecode/InvokeDynamicSupport.java
index 9e5489027..0d921bb7f 100644
--- a/robolectric-sandbox/src/main/java/org/robolectric/internal/bytecode/InvokeDynamicSupport.java
+++ b/robolectric-sandbox/src/main/java/org/robolectric/internal/bytecode/InvokeDynamicSupport.java
@@ -1,6 +1,5 @@
package org.robolectric.internal.bytecode;
-import org.robolectric.internal.ShadowedObject;
import org.robolectric.util.ReflectionHelpers;
import java.lang.invoke.CallSite;
diff --git a/robolectric-sandbox/src/main/java/org/robolectric/internal/bytecode/SandboxClassLoader.java b/robolectric-sandbox/src/main/java/org/robolectric/internal/bytecode/SandboxClassLoader.java
index 1f8c7b111..3149ff71c 100644
--- a/robolectric-sandbox/src/main/java/org/robolectric/internal/bytecode/SandboxClassLoader.java
+++ b/robolectric-sandbox/src/main/java/org/robolectric/internal/bytecode/SandboxClassLoader.java
@@ -24,7 +24,6 @@ import org.objectweb.asm.tree.MethodInsnNode;
import org.objectweb.asm.tree.MethodNode;
import org.objectweb.asm.tree.TypeInsnNode;
import org.objectweb.asm.tree.VarInsnNode;
-import org.robolectric.internal.ShadowedObject;
import org.robolectric.util.Logger;
import org.robolectric.util.Util;
diff --git a/robolectric-sandbox/src/main/java/org/robolectric/internal/bytecode/ShadowImpl.java b/robolectric-sandbox/src/main/java/org/robolectric/internal/bytecode/ShadowImpl.java
index e2a114740..f46755761 100644
--- a/robolectric-sandbox/src/main/java/org/robolectric/internal/bytecode/ShadowImpl.java
+++ b/robolectric-sandbox/src/main/java/org/robolectric/internal/bytecode/ShadowImpl.java
@@ -11,6 +11,11 @@ public class ShadowImpl implements IShadow {
}
});
+ @Override
+ public <T> T extract(Object instance) {
+ return (T) ((ShadowedObject) instance).$$robo$getData();
+ }
+
public <T> T newInstanceOf(Class<T> clazz) {
return ReflectionHelpers.callConstructor(clazz);
}
diff --git a/robolectric-sandbox/src/main/java/org/robolectric/internal/bytecode/ShadowedObject.java b/robolectric-sandbox/src/main/java/org/robolectric/internal/bytecode/ShadowedObject.java
new file mode 100644
index 000000000..8d33076a0
--- /dev/null
+++ b/robolectric-sandbox/src/main/java/org/robolectric/internal/bytecode/ShadowedObject.java
@@ -0,0 +1,5 @@
+package org.robolectric.internal.bytecode;
+
+public interface ShadowedObject {
+ Object $$robo$getData();
+}
diff --git a/robolectric-sandbox/src/test/java/org/robolectric/SandboxClassLoaderTest.java b/robolectric-sandbox/src/test/java/org/robolectric/SandboxClassLoaderTest.java
index a55e42f0a..6b398f691 100644
--- a/robolectric-sandbox/src/test/java/org/robolectric/SandboxClassLoaderTest.java
+++ b/robolectric-sandbox/src/test/java/org/robolectric/SandboxClassLoaderTest.java
@@ -4,23 +4,21 @@ import org.jetbrains.annotations.NotNull;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mockito;
-import org.robolectric.internal.bytecode.InvokeDynamic;
-import org.robolectric.shadow.api.Shadow;
-import org.robolectric.internal.bytecode.ShadowConstants;
-import org.robolectric.internal.ShadowExtractor;
-import org.robolectric.internal.bytecode.ShadowImpl;
-import org.robolectric.internal.ShadowedObject;
import org.robolectric.internal.bytecode.ClassHandler;
import org.robolectric.internal.bytecode.ClassInfo;
import org.robolectric.internal.bytecode.InstrumentationConfiguration;
-import org.robolectric.internal.bytecode.SandboxClassLoader;
import org.robolectric.internal.bytecode.Interceptor;
import org.robolectric.internal.bytecode.Interceptors;
import org.robolectric.internal.bytecode.InvocationProfile;
+import org.robolectric.internal.bytecode.InvokeDynamic;
import org.robolectric.internal.bytecode.InvokeDynamicSupport;
import org.robolectric.internal.bytecode.MethodRef;
import org.robolectric.internal.bytecode.RobolectricInternals;
+import org.robolectric.internal.bytecode.SandboxClassLoader;
+import org.robolectric.internal.bytecode.ShadowConstants;
+import org.robolectric.internal.bytecode.ShadowImpl;
import org.robolectric.internal.bytecode.ShadowInvalidator;
+import org.robolectric.shadow.api.Shadow;
import org.robolectric.testing.AChild;
import org.robolectric.testing.AClassThatCallsAMethodReturningAForgettableClass;
import org.robolectric.testing.AClassThatExtendsAClassWithFinalEqualsHashCode;
@@ -64,10 +62,18 @@ import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
-import static java.lang.invoke.MethodHandles.*;
+import static java.lang.invoke.MethodHandles.constant;
+import static java.lang.invoke.MethodHandles.dropArguments;
+import static java.lang.invoke.MethodHandles.insertArguments;
import static java.lang.invoke.MethodType.methodType;
import static org.assertj.core.api.Assertions.assertThat;
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertArrayEquals;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertSame;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
import static org.mockito.Matchers.any;
import static org.mockito.Matchers.anyString;
import static org.mockito.Mockito.mock;
@@ -99,7 +105,7 @@ public class SandboxClassLoaderTest {
assertTrue(Modifier.isPublic(defaultCtor.getModifiers()));
defaultCtor.setAccessible(true);
Object instance = defaultCtor.newInstance();
- assertThat(ShadowExtractor.extract(instance)).isNotNull();
+ assertThat(shadow.extract(instance)).isNotNull();
assertThat(transcript).isEmpty();
}
@@ -591,11 +597,6 @@ public class SandboxClassLoaderTest {
.doNotAcquirePackage("sun.")
.doNotAcquirePackage("com.sun.")
.doNotAcquirePackage("org.robolectric.internal.")
- .doNotAcquireClass(ClassHandler.class)
- .doNotAcquireClass(ClassHandler.Plan.class)
- .doNotAcquireClass(Interceptors.class)
- .doNotAcquireClass(ShadowedObject.class)
- .doNotAcquireClass(ShadowInvalidator.class)
;
return builder;
}