Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  * JBoss, Home of Professional Open Source
  * Copyright 2010, Red Hat, Inc. and/or its affiliates, and individual
  * contributors by the @authors tag. See the copyright.txt in the
  * distribution for a full listing of individual contributors.
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * See the License for the specific language governing permissions and
 * limitations under the License.
package org.jboss.weld.bean.proxy;
Method handler for decorated beans

Pete Muir
Marius Bogoevici
    private static final long serialVersionUID = 4577632640130385060L;
    public DecoratorProxyMethodHandler(SerializableContextualInstance<Decorator<Object>, ObjectdecoratorInstanceObject delegateInstance) {
        this. = decoratorInstance;


self the proxy instance.
method the overridden method declared in the super class or interface.
proceed the forwarder method for invoking the overridden method. It is null if the overridden method is abstract or declared in the interface.
args an array of objects containing the values of the arguments passed in the method invocation on the proxy instance. If a parameter type is a primitive type, the type of the array element is a wrapper class.
the resulting value of the method invocation.
java.lang.Throwable if the method invocation fails.
    protected Object doInvoke(Object selfMethod methodMethod proceedObject[] argsthrows Throwable {
        Decorator<Objectdecorator = .getContextual().get();
        if (decorator instanceof WeldDecorator<?>) {
            WeldDecorator<?> weldDecorator = (WeldDecorator<?>) decorator;
            return doInvoke(weldDecorator.getInstance(), methodargs);
        } else {
            throw ..unexpectedUnwrappedCustomDecorator(decorator);
    private Object doInvoke(WeldDecorator<?> weldDecoratorObject decoratorInstanceMethod methodObject[] argsthrows Throwable {
        if (!method.isAnnotationPresent(Inject.class)) {
            InvokableAnnotatedMethod<?> decoratorMethod = weldDecorator.getDecoratorMethod(method);
            if (decoratorMethod != null) {
                try {
                    return decoratorMethod.invokeOnInstance(decoratorInstanceargs);
                } catch (InvocationTargetException e) {
                    throw e.getCause();
        return Reflections.invokeAndUnwrap(getTargetInstance(), methodargs);
New to GrepCode? Check out our FAQ X