Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
 /*
  * JBoss, Home of Professional Open Source
  * Copyright 2008, 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.resolution;

Author(s):
pmuir
Jozef Hartinger
    private final MetaAnnotationStore metaAnnotationStore;
    private final AssignabilityRules rules;
    public TypeSafeObserverResolver(MetaAnnotationStore metaAnnotationStoreIterable<ObserverMethod<?>> observersWeldConfiguration configuration) {
        super(observersconfiguration);
        this. = metaAnnotationStore;
        this. = EventTypeAssignabilityRules.instance();
    }
    @Override
    protected boolean matches(Resolvable resolvableObserverMethod<?> observer) {
        if (!.matches(observer.getObservedType(), resolvable.getTypes())) {
            return false;
        }
        if (!Beans.containsAllQualifiers(QualifierInstance.of(observer.getObservedQualifiers(), ), resolvable.getQualifiers())) {
            return false;
        }
        if (observer instanceof ExtensionObserverMethodImpl<?, ?>) {
            ExtensionObserverMethodImpl<?, ?> extensionObserver = (ExtensionObserverMethodImpl<?, ?>) observer;
            if (resolvable instanceof ProcessAnnotatedTypeEventResolvable && !extensionObserver.getRequiredAnnotations().isEmpty()) {
                // this is a ProcessAnnotatedType observer method with @WithAnnotations and a resolvable for ProcessAnnotatedType
                ProcessAnnotatedTypeEventResolvable patResolvable = (ProcessAnnotatedTypeEventResolvableresolvable;
                return patResolvable.containsRequiredAnnotations(extensionObserver.getRequiredAnnotations());
            }
        } else {
            return !isContainerLifecycleEvent(resolvable); // container lifecycle events are only delivered to extensions
        }
        return true;
    }
    protected boolean isContainerLifecycleEvent(Resolvable resolvable) {
        for (Type type : resolvable.getTypes()) {
            if (..contains(Reflections.getRawType(type))) {
                return true;
            }
        }
        return false;
    }
    @Override
    protected Set<ObserverMethod<?>> filterResult(Set<ObserverMethod<?>> matched) {
        return matched;
    }
    @Override
    protected Set<ObserverMethod<?>> sortResult(Set<ObserverMethod<?>> matched) {
        return matched;
    }
    @Override
    @SuppressWarnings({ "rawtypes""unchecked" })
    protected ResolvedObservers<?> makeResultImmutable(Set<ObserverMethod<?>> result) {
        return ResolvedObservers.of(Reflections.<Set>cast(result));
    }
        return ;
    }
New to GrepCode? Check out our FAQ X