/** * Returns correct action class name. Detects Proxetta classes. */ protected String getActionClassName(final Object action) { Class clazz = action.getClass(); clazz = ProxettaUtil.resolveTargetClass(clazz); return clazz.getName(); }
/** * Returns target class if proxetta applied on given class. * If not, returns given class as result. */ public static Class resolveTargetClass(final Class proxy) { final String name = proxy.getName(); if (name.endsWith(ProxettaNames.proxyClassNameSuffix)) { return proxy.getSuperclass(); } if (name.endsWith(ProxettaNames.wrapperClassNameSuffix)) { return getTargetWrapperType(proxy); } return proxy; }
/** * Injects target instance into proxy using default target field name. * @see #injectTargetIntoWrapper(Object, Object, String) */ public static void injectTargetIntoWrapper(final Object target, final Object wrapper) { injectTargetIntoWrapper(target, wrapper, ProxettaNames.wrapperTargetFieldName); }
/** * Creates proxy object. */ protected C createProxyObject(Class<C> target) { target = ProxettaUtil.resolveTargetClass(target); Class proxyClass = cache.get(target); if (proxyClass == null) { proxyClass = proxetta.defineProxy(target); cache.put(target, proxyClass); } C proxy; try { proxy = (C) ClassUtil.newInstance(proxyClass); } catch (Exception ex) { throw new PathrefException(ex); } return proxy; }
/** * Injects target into wrapper. */ public void injectTargetIntoWrapper(final Object target, final Object wrapper) { ProxettaUtil.injectTargetIntoWrapper(target, wrapper, targetFieldName); }
/** * Returns target class if proxetta applied on given class. * If not, returns given class as result. */ public static Class resolveTargetClass(final Class proxy) { final String name = proxy.getName(); if (name.endsWith(ProxettaNames.proxyClassNameSuffix)) { return proxy.getSuperclass(); } if (name.endsWith(ProxettaNames.wrapperClassNameSuffix)) { return getTargetWrapperType(proxy); } return proxy; }
/** * Creates new proxified instance of target. * Proxy classes are cached. If given target is also * proxified, it's real target will be used. */ @SuppressWarnings({"unchecked"}) public Methref(Class<C> target) { target = ProxettaUtil.resolveTargetClass(target); Class proxyClass = cache.get(target); if (proxyClass == null) { proxyClass = proxetta.defineProxy(target); cache.put(target, proxyClass); } C proxy; try { proxy = (C) ClassUtil.newInstance(proxyClass); } catch (Exception ex) { throw new MethrefException(ex); } this.instance = proxy; }
/** * Injects target instance into proxy using default target field name. * @see #injectTargetIntoWrapper(Object, Object, String) */ public static void injectTargetIntoWrapper(final Object target, final Object wrapper) { injectTargetIntoWrapper(target, wrapper, ProxettaNames.wrapperTargetFieldName); }
ProxettaUtil.resolveTargetClass(ar.getActionClass()), 2) + '#' + ar.getActionClassMethod().getName();
/** * Injects target into wrapper. */ public void injectTargetIntoWrapper(final Object target, final Object wrapper) { ProxettaUtil.injectTargetIntoWrapper(target, wrapper, targetFieldName); }
assertEquals(CalcImpl.class, ProxettaUtil.resolveTargetClass(object.getClass())); assertEquals(1, calc2Class.getInterfaces().length);
assertEquals(BigFatJoe.class, ProxettaUtil.resolveTargetClass(bigFatJoe.getClass()));
/** * Returns correct action class name. Detects Proxetta classes. */ protected String getActionClassName(final Object action) { Class clazz = action.getClass(); clazz = ProxettaUtil.resolveTargetClass(clazz); return clazz.getName(); }
/** * Creates proxy object. */ protected C createProxyObject(Class<C> target) { target = ProxettaUtil.resolveTargetClass(target); Class proxyClass = cache.get(target); if (proxyClass == null) { proxyClass = proxetta.defineProxy(target); cache.put(target, proxyClass); } C proxy; try { proxy = (C) ClassUtil.newInstance(proxyClass); } catch (Exception ex) { throw new PathrefException(ex); } return proxy; }
/** * Creates new proxified instance of target. * Proxy classes are cached. If given target is also * proxified, it's real target will be used. */ @SuppressWarnings({"unchecked"}) public Methref(Class<C> target) { target = ProxettaUtil.resolveTargetClass(target); Class proxyClass = cache.get(target); if (proxyClass == null) { proxyClass = proxetta.defineProxy(target); cache.put(target, proxyClass); } C proxy; try { proxy = (C) ClassUtil.newInstance(proxyClass); } catch (Exception ex) { throw new MethrefException(ex); } this.instance = proxy; }
ProxettaUtil.resolveTargetClass(ar.getActionClass()), 2) + '#' + ar.getActionClassMethod().getName();