public void testGetComponentForHotswap() throws Exception { S2Container container = new S2ContainerImpl(); container.setHotswapMode(true); ComponentDefImpl cd = new ComponentDefImpl(FooImpl.class); cd.setInstanceDef(InstanceDefFactory.PROTOTYPE); container.register(cd); container.init(); Hotswap hotswap = cd.getHotswap(); Thread.sleep(500); Foo foo = (Foo) container.getComponent(Foo.class); hotswap.getFile().setLastModified(new Date().getTime()); Foo foo2 = (Foo) container.getComponent(Foo.class); assertNotSame("1", foo.getClass(), foo2.getClass()); assertFalse("1", foo2 instanceof FooImpl); }
public void testDeployForHotswap() throws Exception { MockServletContextImpl ctx = new MockServletContextImpl("s2jsf-example"); HttpServletRequest request = ctx.createRequest("/hello.html"); S2Container container = new S2ContainerImpl(); container.setHotswapMode(true); container.setRequest(request); ComponentDef cd = new ComponentDefImpl(Foo.class, "foo"); container.register(cd); container.init(); ComponentDeployer deployer = new SessionComponentDeployer(cd); Foo foo = (Foo) deployer.deploy(); Hotswap hotswap = cd.getHotswap(); Thread.sleep(500); hotswap.getFile().setLastModified(new Date().getTime()); assertNotSame("1", foo.getClass(), deployer.deploy().getClass()); }
/** * Asserts that arguments can be resolved from lambda expressions for simple functional interfaces * that contain multiple type parameters. */ public void shouldResolveMultiArguments() { BiFunction<String, Long, Integer> biFn = (str1, str2) -> Integer.valueOf(str1 + str2); BiConsumer<String, String> consumer1 = (s1, s2) -> {}; BiConsumer<String, Long> consumer2 = (s1, s2) -> {}; Foo<String, Long, Integer, Double> foo = (a, b, c) -> 2.0; Bar<String, Long, Integer, Double> bar = (a, b, c) -> {}; assertEquals( TypeResolver.resolveRawArguments(BiFunction.class, biFn.getClass()), new Class<?>[] {String.class, Long.class, Integer.class}); assertEquals( TypeResolver.resolveRawArguments(BiConsumer.class, consumer1.getClass()), new Class<?>[] {String.class, String.class}); assertEquals( TypeResolver.resolveRawArguments(BiConsumer.class, consumer2.getClass()), new Class<?>[] {String.class, Long.class}); assertEquals( TypeResolver.resolveRawArguments(Foo.class, foo.getClass()), new Class<?>[] {String.class, Long.class, Integer.class, Double.class}); assertEquals( TypeResolver.resolveRawArguments(Bar.class, bar.getClass()), new Class<?>[] {String.class, Long.class, Integer.class, Unknown.class}); }
public static void runTest() { SystemOut.println("TestReflection"); Foo foo = new Foo(); Visualizer.visualize("foo", foo.getClass(), foo); }