Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
 /*
  * JBoss, Home of Professional Open Source
  * Copyright 2014, Red Hat, Inc., 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
 * http://www.apache.org/licenses/LICENSE-2.0
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package org.jboss.weld.injection;
import static org.jboss.weld.util.reflection.Reflections.isPackagePrivate;
import static org.jboss.weld.util.reflection.Reflections.isPrivate;
import  java.util.Objects;
MethodInjectionPoint that invokes virtual methods.

Parameters:
<T>
<X>
Author(s):
Jozef Hartinger
    private volatile Map<Class<?>, Methodmethods;
    VirtualMethodInjectionPoint(EnhancedAnnotatedMethod<T, X> enhancedMethodBean<?> declaringBeanClass<?> declaringComponentClass,
            Class<? extends AnnotationspecialParameterMarkerInjectionPointFactory factoryBeanManagerImpl manager) {
        super(enhancedMethoddeclaringBeandeclaringComponentClassspecialParameterMarkerfactorymanager);
        this. = Collections.<Class<?>, Method>singletonMap(getAnnotated().getJavaMember().getDeclaringClass(), );
    }
    @Override
    protected Method getMethod(Object receiverthrows NoSuchMethodException {
        final Map<Class<?>, Methodmethods = this.;
        Method method = this..get(receiver.getClass());
        if (method == null) {
            // the same method may be written to the map twice, but that is ok
            // lookupMethod is very slow
            Method delegate = getAnnotated().getJavaMember();
            if (isPrivate(delegate) || (isPackagePrivate(delegate.getModifiers()) && !Objects.equals(delegate.getDeclaringClass().getPackage(), receiver.getClass().getPackage()))) {
                method = // overriding does not apply to private methods and package-private methods where the subclass is in a different package
            } else {
                method = SecurityActions.lookupMethod(receiver.getClass(), delegate.getName(), delegate.getParameterTypes());
                SecurityActions.ensureAccessible(method);
            }
            final Map<Class<?>, MethodnewMethods = ImmutableMap.<Class<?>, Method>builder().putAll(methods).put(receiver.getClass(), method).build();
            this. = newMethods;
        }
        return method;
    }
New to GrepCode? Check out our FAQ X