/** * Creates a new instance of {@link InvokeProxetta}. */ public static InvokeProxetta invokeProxetta() { return new InvokeProxetta(); }
/** * {@inheritDoc} */ @Override protected WorkData process(final ClassReader cr, final TargetClassInfoReader targetClassInfoReader) { InvokeClassBuilder icb = new InvokeClassBuilder( destClassWriter, proxetta.getAspects(new InvokeAspect[0]), resolveClassNameSuffix(), requestedProxyClassName, targetClassInfoReader); cr.accept(icb, 0); return icb.getWorkData(); }
@Test void testCurrentTimeMillis() { TimeClass timeClass = (TimeClass) Proxetta.invokeProxetta().withAspects(new InvokeAspect() { @Override public boolean apply(MethodInfo methodInfo) { return methodInfo.isTopLevelMethod(); } @Override public InvokeReplacer pointcut(InvokeInfo invokeInfo) { if ( invokeInfo.getClassName().equals("java.lang.System") && invokeInfo.getMethodName().equals("currentTimeMillis") ) { return InvokeReplacer.with(MySystem.class, "currentTimeMillis"); } return null; } }).proxy().setTarget(TimeClass.class).newInstance(); long time = timeClass.time(); assertEquals(10823, time); }
@Test void testWimp() { Wimp wimp = (Wimp) Proxetta.invokeProxetta().withAspect(new InvokeAspect() { @Override public boolean apply(MethodInfo methodInfo) { return methodInfo.isTopLevelMethod(); } @Override public InvokeReplacer pointcut(InvokeInfo invokeInfo) { return InvokeReplacer.NONE; } }).proxy().setTarget(Wimp.class).newInstance(); int i = wimp.foo(); assertEquals(0, i); String txt = wimp.aaa(3, null, null); assertEquals("int3WelcomeToJodd", txt); txt = wimp.ccc(3, "XXX", 1, null); assertEquals(">4:String:4long:4XXX:ccc:Wimp", txt); }
@Test void testInterface() { InvokeProxetta proxetta = initProxetta(); try { proxetta.proxy().setTarget(Inter.class).newInstance(); fail("error"); } catch (ProxettaException ignore) { } }
public InvokeProxettaBuilder builder(Class target) { InvokeProxettaBuilder builder = builder(); builder.setTarget(target); return builder; }
protected InvokeProxetta initProxetta() { return Proxetta.invokeProxetta().withAspects( invokeInfo -> { if (invokeInfo.getMethodName().equals("invvirtual")) {
@Test void testSuper() { InvokeProxetta proxetta = initProxetta(); try { proxetta.proxy().setTarget(OneWithSuper.class).define(); fail("error"); } catch (ProxettaException ignore) { } }
public InvokeProxettaBuilder builder(Class target, String targetProxyClassName) { InvokeProxettaBuilder builder = builder(); builder.setTarget(target); builder.setTargetProxyClassName(targetProxyClassName); return builder; }
/** * Specifies invoke replacement aspects and creates this <code>Proxetta</code> instance. */ public static InvokeProxetta withAspects(InvokeAspect... aspects) { return new InvokeProxetta(aspects); }
/** * {@inheritDoc} */ @Override protected WorkData process(ClassReader cr, TargetClassInfoReader targetClassInfoReader) { InvokeClassBuilder icb = new InvokeClassBuilder( destClassWriter, invokeProxetta.getAspects(), resolveClassNameSuffix(), requestedProxyClassName, targetClassInfoReader); cr.accept(icb, 0); return icb.getWorkData(); }
byte[] klazz = proxetta.proxy().setTarget(One.class).create();
/** * Creates a new instance of {@link InvokeProxetta}. */ public static InvokeProxetta invokeProxetta() { return new InvokeProxetta(); }
/** * {@inheritDoc} */ @Override protected WorkData process(final ClassReader cr, final TargetClassInfoReader targetClassInfoReader) { InvokeClassBuilder icb = new InvokeClassBuilder( destClassWriter, proxetta.getAspects(new InvokeAspect[0]), resolveClassNameSuffix(), requestedProxyClassName, targetClassInfoReader); cr.accept(icb, 0); return icb.getWorkData(); }