diff options
author | Christian Williams <christianw@google.com> | 2017-01-26 18:09:45 -0800 |
---|---|---|
committer | Christian Williams <christianw@google.com> | 2017-02-07 15:08:51 -0800 |
commit | 01770cc807ceb7998595d2a8da3c9dcdc1c66616 (patch) | |
tree | b019a71f93fcd823491214106dda25650d4b38a9 /robolectric-sandbox | |
parent | 5ec1787d985ea2fd242168831a7956712f809627 (diff) | |
download | robolectric-shadows-01770cc807ceb7998595d2a8da3c9dcdc1c66616.tar.gz |
Deprecate ShadowExtractor.
Move ShadowedObject out of shadow-api.
Diffstat (limited to 'robolectric-sandbox')
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; } |