public synchronized void addAndActivateTest(Class<?> newTestClass) { Class<?> keyClass = ProxyUtils.getUnproxiedClass(newTestClass); if (!activeMocksByTestClass.containsKey(keyClass)) { activeMocksByTestClass.put(keyClass, new HashSet<Class<?>>()); } if (!activeAlternativesByTestClass.containsKey(keyClass)) { activeAlternativesByTestClass.put(keyClass, new HashSet<Class<?>>()); } this.activeTest = keyClass; }
/** * @param currentClass current class * @return class of the real implementation */ public static Class getUnproxiedClass(Class currentClass) { if (isProxiedClass(currentClass)) { return currentClass.getSuperclass(); } return currentClass; }
public static List<Class<?>> getProxyAndBaseTypes(Class<?> proxyClass) { List<Class<?>> result = new ArrayList<Class<?>>(); result.add(proxyClass); if (isInterfaceProxy(proxyClass)) { for (Class<?> currentInterface : proxyClass.getInterfaces()) { if (proxyClass.getName().startsWith(currentInterface.getName())) { result.add(currentInterface); } } } else { Class unproxiedClass = proxyClass.getSuperclass(); result.add(unproxiedClass); while (isProxiedClass(unproxiedClass)) { unproxiedClass = unproxiedClass.getSuperclass(); result.add(unproxiedClass); } } return result; }
@Test public void testGetProxyAndBaseTypes() { List<Class<?>> list = ProxyUtils.getProxyAndBaseTypes(myInterface.getClass()); Assert.assertEquals(list.size(), 2); Assert.assertTrue(ProxyUtils.isProxiedClass(list.get(0))); Assert.assertEquals(MyInterfaceImpl.class, list.get(1)); }
@Override public Object invoke(final Object proxy, final Method method, final Object[] args) throws Throwable List<Class<?>> candidates = ProxyUtils.getProxyAndBaseTypes(proxy.getClass()); final RepositoryMetadata repositoryMetadata = metadataHandler.lookupMetadata(candidates);
public static List<Class<?>> getProxyAndBaseTypes(Class<?> proxyClass) { List<Class<?>> result = new ArrayList<Class<?>>(); result.add(proxyClass); if (isInterfaceProxy(proxyClass)) { result.addAll(Arrays.asList(proxyClass.getInterfaces())); } else { result.add(proxyClass.getSuperclass()); } return result; }
EntityViewManagerRef entityViewManagerRef = null; try { List<Class<?>> candidates = ProxyUtils.getProxyAndBaseTypes(proxy.getClass()); EntityViewRepositoryComponent repo; try {
@Test public void testIsIntefaceProxy() { Object proxy = Proxy.newProxyInstance(myDependentScopedBean.getClass().getClassLoader(), new Class[] { MyInterface.class }, new InvocationHandler() { @Override public Object invoke(Object arg0, Method arg1, Object[] arg2) throws Throwable { return null; } }); Assert.assertTrue(ProxyUtils.isInterfaceProxy(proxy.getClass())); }
@PostConstruct protected void init() { Class<? extends Deactivatable> windowContextQuotaHandlerClass = ProxyUtils.getUnproxiedClass(windowContextQuotaHandler.getClass()); this.windowContextQuotaHandlerEnabled = ClassDeactivationUtils.isActivated(windowContextQuotaHandlerClass); }
/** * @param currentClass current class * @return class of the real implementation */ public static Class getUnproxiedClass(Class currentClass) { Class unproxiedClass = currentClass; while (isProxiedClass(unproxiedClass)) { unproxiedClass = unproxiedClass.getSuperclass(); } return unproxiedClass; }
public static List<Class<?>> getProxyAndBaseTypes(Class<?> proxyClass) { List<Class<?>> result = new ArrayList<Class<?>>(); result.add(proxyClass); if (isInterfaceProxy(proxyClass)) { for (Class<?> currentInterface : proxyClass.getInterfaces()) { if (proxyClass.getName().startsWith(currentInterface.getName())) { result.add(currentInterface); } } } else { Class unproxiedClass = proxyClass.getSuperclass(); result.add(unproxiedClass); while (isProxiedClass(unproxiedClass)) { unproxiedClass = unproxiedClass.getSuperclass(); result.add(unproxiedClass); } } return result; }
EntityViewManagerRef entityViewManagerRef = null; try { List<Class<?>> candidates = ProxyUtils.getProxyAndBaseTypes(proxy.getClass()); EntityViewRepositoryComponent repo; try {
@Test public void testIsNotIntefaceProxy() { Assert.assertFalse(ProxyUtils.isInterfaceProxy(myDependentScopedBean.getClass())); }
private <T extends Annotation> T getAnnotation(InvocationContext invocationContext, Class<T> annotationType) { Class unproxiedClass = getUnproxiedClass(invocationContext.getTarget().getClass()); T annotation = (T) unproxiedClass.getAnnotation(annotationType); Method invocationContextMethod = invocationContext.getMethod(); if (annotation == null) { annotation = invocationContextMethod.getAnnotation(annotationType); } if (annotation == null) { throw new IllegalArgumentException("No annotation [" + annotationType + "] found in type [" + unproxiedClass + "] or method [" + invocationContextMethod + "."); } return annotation; }
/** * @param currentClass current class * @return class of the real implementation */ public static Class getUnproxiedClass(Class currentClass) { Class unproxiedClass = currentClass; while (isProxiedClass(unproxiedClass)) { unproxiedClass = unproxiedClass.getSuperclass(); } return unproxiedClass; }
EntityViewManagerRef entityViewManagerRef = null; try { List<Class<?>> candidates = ProxyUtils.getProxyAndBaseTypes(proxy.getClass()); EntityViewRepositoryComponent repo; try {
private <T extends Annotation> T getAnnotation(InvocationContext invocationContext, Class<T> annotationType) { Class unproxiedClass = getUnproxiedClass(invocationContext.getTarget().getClass()); T annotation = (T) unproxiedClass.getAnnotation(annotationType); Method invocationContextMethod = invocationContext.getMethod(); if (annotation == null) { annotation = invocationContextMethod.getAnnotation(annotationType); } if (annotation == null) { throw new IllegalArgumentException("No annotation [" + annotationType + "] found in type [" + unproxiedClass + "] or method [" + invocationContextMethod + "."); } return annotation; }
private Converter managedOrDefaultConverter(Converter defaultResult) { if (!this.containerManagedConvertersEnabled) { return defaultResult; } if (defaultResult == null) { return null; } Converter result = ManagedArtifactResolver.resolveManagedConverter(defaultResult.getClass()); if (result == null) { return defaultResult; } if (result instanceof DeltaSpikeProxy || ProxyUtils.isProxiedClass(result.getClass())) { return result; } else { return new ConverterWrapper(result, this.fullStateSavingFallbackEnabled); } }
private <T extends Annotation> T getAnnotation(InvocationContext invocationContext, Class<T> annotationType) { Class unproxiedClass = getUnproxiedClass(invocationContext.getTarget().getClass()); T annotation = (T) unproxiedClass.getAnnotation(annotationType); Method invocationContextMethod = invocationContext.getMethod(); if (annotation == null) { annotation = invocationContextMethod.getAnnotation(annotationType); } if (annotation == null) { throw new IllegalArgumentException("No annotation [" + annotationType + "] found in type [" + unproxiedClass + "] or method [" + invocationContextMethod + "."); } return annotation; }
private Converter managedOrDefaultConverter(Converter defaultResult) { if (!this.containerManagedConvertersEnabled) { return defaultResult; } if (defaultResult == null) { return null; } Converter result = ManagedArtifactResolver.resolveManagedConverter(defaultResult.getClass()); if (result == null) { return defaultResult; } if (result instanceof DeltaSpikeProxy || ProxyUtils.isProxiedClass(result.getClass())) { return result; } else { return new ConverterWrapper(result, this.fullStateSavingFallbackEnabled); } }