List of usage examples for org.springframework.cglib.proxy Enhancer setCallbackFilter
public void setCallbackFilter(CallbackFilter filter)
From source file:org.reindeer.redis.jedis.JedisFactoryBean.java
@Override public Jedis getObject() throws Exception { if (jedis != null) { return jedis; }//from w ww .j a va 2 s .c om Enhancer en = new Enhancer(); en.setSuperclass(Jedis.class); en.setCallbackFilter(finalizeFilter); en.setCallbacks(new Callback[] { NoOp.INSTANCE, jedisCallback }); jedis = (Jedis) en.create(new Class[] { String.class }, new Object[] { "JedisProxy" }); return jedis; }
From source file:org.reindeer.redis.shard.ShardedJedisFactoryBean.java
@Override public ShardedJedis getObject() throws Exception { if (jedis != null) { return jedis; }/* w ww .j a va 2 s . c om*/ Enhancer en = new Enhancer(); en.setSuperclass(ShardedJedis.class); en.setCallbackFilter(finalizeFilter); en.setCallbacks(new Callback[] { NoOp.INSTANCE, jedisCallback }); jedis = (ShardedJedis) en.create(new Class[] { List.class }, new Object[] { Arrays.asList(new JedisShardInfo("shardedJedisProxy")) }); return jedis; }
From source file:com.example.post.MyConfigurationClassEnhancer.java
/** * Creates a new CGLIB {@link Enhancer} instance. *//*w ww . ja v a2 s. c om*/ private Enhancer newEnhancer(Class<?> superclass, ClassLoader classLoader) { Enhancer enhancer = new Enhancer(); enhancer.setSuperclass(superclass); //enhancer.setInterfaces(new Class<?>[] {EnhancedConfiguration.class}); enhancer.setUseFactory(false); enhancer.setNamingPolicy(SpringNamingPolicy.INSTANCE); //enhancer.setStrategy(new BeanFactoryAwareGeneratorStrategy(classLoader)); enhancer.setCallbackFilter(CALLBACK_FILTER); enhancer.setCallbackTypes(CALLBACK_FILTER.getCallbackTypes()); return enhancer; }
From source file:org.springframework.aop.framework.CglibAopProxy.java
@Override public Object getProxy(@Nullable ClassLoader classLoader) { if (logger.isDebugEnabled()) { logger.debug("Creating CGLIB proxy: target source is " + this.advised.getTargetSource()); }//from w w w .ja va 2 s . c om try { Class<?> rootClass = this.advised.getTargetClass(); Assert.state(rootClass != null, "Target class must be available for creating a CGLIB proxy"); Class<?> proxySuperClass = rootClass; if (ClassUtils.isCglibProxyClass(rootClass)) { proxySuperClass = rootClass.getSuperclass(); Class<?>[] additionalInterfaces = rootClass.getInterfaces(); for (Class<?> additionalInterface : additionalInterfaces) { this.advised.addInterface(additionalInterface); } } // Validate the class, writing log messages as necessary. validateClassIfNecessary(proxySuperClass, classLoader); // Configure CGLIB Enhancer... Enhancer enhancer = createEnhancer(); if (classLoader != null) { enhancer.setClassLoader(classLoader); if (classLoader instanceof SmartClassLoader && ((SmartClassLoader) classLoader).isClassReloadable(proxySuperClass)) { enhancer.setUseCache(false); } } enhancer.setSuperclass(proxySuperClass); enhancer.setInterfaces(AopProxyUtils.completeProxiedInterfaces(this.advised)); enhancer.setNamingPolicy(SpringNamingPolicy.INSTANCE); enhancer.setStrategy(new ClassLoaderAwareUndeclaredThrowableStrategy(classLoader)); Callback[] callbacks = getCallbacks(rootClass); Class<?>[] types = new Class<?>[callbacks.length]; for (int x = 0; x < types.length; x++) { types[x] = callbacks[x].getClass(); } // fixedInterceptorMap only populated at this point, after getCallbacks call above enhancer.setCallbackFilter(new ProxyCallbackFilter(this.advised.getConfigurationOnlyCopy(), this.fixedInterceptorMap, this.fixedInterceptorOffset)); enhancer.setCallbackTypes(types); // Generate the proxy class and create a proxy instance. return createProxyClassAndInstance(enhancer, callbacks); } catch (CodeGenerationException | IllegalArgumentException ex) { throw new AopConfigException( "Could not generate CGLIB subclass of class [" + this.advised.getTargetClass() + "]: " + "Common causes of this problem include using a final class or a non-visible class", ex); } catch (Throwable ex) { // TargetSource.getTarget() failed throw new AopConfigException("Unexpected AOP exception", ex); } }
From source file:org.springframework.context.annotation.ConfigurationClassEnhancer.java
/** * Creates a new CGLIB {@link Enhancer} instance. *//*from ww w . ja v a 2 s .c om*/ private Enhancer newEnhancer(Class<?> superclass, @Nullable ClassLoader classLoader) { Enhancer enhancer = new Enhancer(); enhancer.setSuperclass(superclass); enhancer.setInterfaces(new Class<?>[] { EnhancedConfiguration.class }); enhancer.setUseFactory(false); enhancer.setNamingPolicy(SpringNamingPolicy.INSTANCE); enhancer.setStrategy(new BeanFactoryAwareGeneratorStrategy(classLoader)); enhancer.setCallbackFilter(CALLBACK_FILTER); enhancer.setCallbackTypes(CALLBACK_FILTER.getCallbackTypes()); return enhancer; }