Package net.sf.cglib.proxy

Examples of net.sf.cglib.proxy.MethodInterceptor


        generator.setSuperclass(Object.class);
        generator.setInterfaces(new Class<?>[] { intfs });

        generator.setCallbacks(new Callback[] {
                // default callback
                new MethodInterceptor() {
                    public Object intercept(Object obj, Method method, Object[] args, MethodProxy proxy)
                            throws Throwable {
                        return proxy.invokeSuper(obj, args);
                    }
                },

                // toString callback
                new MethodInterceptor() {
                    public Object intercept(Object obj, Method method, Object[] args, MethodProxy proxy)
                            throws Throwable {
                        MapBuilder mb = new MapBuilder().setPrintCount(true).setSortKeys(true);

                        for (Map.Entry<Method, FastMethod> entry : methodMappings.entrySet()) {
                            mb.append(
                                    entry.getKey().getName(),
                                    getSimpleMethodSignature(entry.getValue().getJavaMethod(), false, true, true, false));
                        }

                        return new ToStringBuilder().append(intfs.getName()).append(mb).toString();
                    }
                },

                // proxied callback
                new MethodInterceptor() {
                    public Object intercept(Object obj, Method method, Object[] args, MethodProxy proxy)
                            throws Throwable {
                        FastMethod realMethod = assertNotNull(methodMappings.get(method), "unknown method: %s", method);
                        return realMethod.invoke(null, args);
                    }
View Full Code Here


            generator.setSuperclass(superclass);
            generator.setInterfaces(interfaces.toArray(new Class<?>[interfaces.size()]));

            generator.setCallbacks(new Callback[] {
                    // callback 0: invoke super
                    new MethodInterceptor() {
                        public Object intercept(Object obj, Method method, Object[] args, MethodProxy proxy)
                                throws Throwable {
                            return proxy.invokeSuper(obj, args);
                        }
                    },

                    // callback 1: invoke base object
                    new MethodInterceptor() {
                        public Object intercept(Object obj, Method method, Object[] args, MethodProxy proxy)
                                throws Throwable {
                            if (baseObject == null || !method.getDeclaringClass().isAssignableFrom(baseObject.getClass())) {
                                if (method.getDeclaringClass().isAssignableFrom(superclass)) {
                                    return proxy.invokeSuper(obj, args);
                                } else {
                                    throw new UnsupportedOperationException(getSimpleMethodSignature(method, true));
                                }
                            }

                            return proxy.invoke(baseObject, args);
                        }
                    },

                    // callback 2: invoke overrided method
                    new MethodInterceptor() {
                        public Object intercept(Object obj, Method method, Object[] args, MethodProxy proxy)
                                throws Throwable {
                            FastMethod overridedMethod = overridedMethods.get(getSignature(method, null));

                            try {
View Full Code Here

        generator.setSuperclass(Object.class);
        generator.setInterfaces(new Class<?>[] { intfs });

        generator.setCallbacks(new Callback[] {
                // default callback
                new MethodInterceptor() {
                    public Object intercept(Object obj, Method method, Object[] args, MethodProxy proxy)
                            throws Throwable {
                        return proxy.invokeSuper(obj, args);
                    }
                },

                // toString callback
                new MethodInterceptor() {
                    public Object intercept(Object obj, Method method, Object[] args, MethodProxy proxy)
                            throws Throwable {
                        MapBuilder mb = new MapBuilder().setPrintCount(true).setSortKeys(true);

                        for (Map.Entry<Method, FastMethod> entry : methodMappings.entrySet()) {
                            mb.append(
                                    entry.getKey().getName(),
                                    getSimpleMethodSignature(entry.getValue().getJavaMethod(), false, true, true, false));
                        }

                        return new ToStringBuilder().append(intfs.getName()).append(mb).toString();
                    }
                },

                // proxied callback
                new MethodInterceptor() {
                    public Object intercept(Object obj, Method method, Object[] args, MethodProxy proxy)
                            throws Throwable {
                        FastMethod realMethod = assertNotNull(methodMappings.get(method), "unknown method: %s", method);
                        return realMethod.invoke(null, args);
                    }
View Full Code Here

    }

    public static <T> T recordDefaults(Class<T> type)
    {
        final T instance = newDefaultInstance(type);
        T proxy = (T) Enhancer.create(type, new Class[]{$$RecordingConfigProxy.class}, new MethodInterceptor()
        {
            private final ConcurrentMap<Method, Object> invokedMethods = new MapMaker().makeMap();

            @Override
            public Object intercept(Object proxy, Method method, Object[] args, MethodProxy methodProxy)
View Full Code Here

    public void destroyProxy(Object proxy) {
        if (proxy == null) {
            return;
        }

        MethodInterceptor methodInterceptor = (MethodInterceptor) interceptors.remove(proxy);
        if (methodInterceptor != null) {
            doDestroy(methodInterceptor);
        }
    }
View Full Code Here

    public boolean isProxy(Object proxy) {
        return interceptors.containsKey(proxy);
    }

    public AbstractName getProxyTarget(Object proxy) {
        MethodInterceptor methodInterceptor = (MethodInterceptor) interceptors.get(proxy);
        if (methodInterceptor == null) {
            return null;
        }
        return getAbstractName(methodInterceptor);
    }
View Full Code Here

        return enhancer;
    }

    protected <T> MethodInterceptor cglibMethodInterceptor(final MethodInvocation<? super T> handler) {
        return new MethodInterceptor() {
            public Object intercept(Object proxy, Method method, Object[] args, final MethodProxy methodProxy) {
                return handler.intercept((T) proxy, method, args, new SuperMethod() {
                    public Object invoke(Object proxy, Object[] args) {
                        try {
                            logger.debug("proxy invoke, proxy {}, method {}", proxy, methodProxy);
View Full Code Here

* @author Lukas Fryc
*/
public final class Interceptors {

    public static <T> T any(Class<T> type) {
        return (T) ClassImposterizer.INSTANCE.imposterise(new MethodInterceptor() {
            @Override
            public Object intercept(Object obj, Method method, Object[] args, MethodProxy proxy) throws Throwable {
                return null;
            }
        }, type);
View Full Code Here

     * @param type the type of the generated proxy
     * @param interceptor the interceptor for intercepting methods executed on generated proxy
     * @return proxy for executing methods which shoyld be intercepted by given interceptor
     */
    public <T> T interceptInvocation(Class<T> type, final Interceptor interceptor) {
        return (T) ClassImposterizer.INSTANCE.imposterise(new MethodInterceptor() {
            @Override
            public Object intercept(Object obj, Method method, Object[] args, MethodProxy proxy) throws Throwable {
                registerMethodInterceptor(method, interceptor);
                return null;
            }
View Full Code Here

        }

        private Logger createDefaultRootLogger() {
            Enhancer enhancer = new Enhancer();
            enhancer.setSuperclass(Logger.class);
            enhancer.setCallback(new MethodInterceptor() {
                @Override
                public Object intercept(Object o, Method method, Object[] objects, MethodProxy methodProxy) throws Throwable {
                    synchronized (getManager()) {
                        if (configMayHaveChanged) {
                            configMayHaveChanged = false;
View Full Code Here

TOP

Related Classes of net.sf.cglib.proxy.MethodInterceptor

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.