/******************************************************************************* * Copyright (c) 2010 Red Hat, Inc. * Distributed under license by Red Hat, Inc. All rights reserved. * This program is made available under the terms of the * Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Red Hat, Inc. - initial API and implementation ******************************************************************************/ package org.jboss.tools.cdi.internal.core.impl; import java.util.ArrayList; import java.util.Collection; import java.util.List; import org.eclipse.jdt.core.IType; import org.jboss.tools.cdi.core.CDIConstants; import org.jboss.tools.cdi.core.IBean; import org.jboss.tools.cdi.core.IInjectionPoint; import org.jboss.tools.cdi.core.IQualifier; import org.jboss.tools.cdi.core.IQualifierDeclaration; import org.jboss.tools.cdi.core.IScope; import org.jboss.tools.cdi.core.IScopeDeclaration; import org.jboss.tools.cdi.core.IStereotypeDeclaration; import org.jboss.tools.common.java.IAnnotationDeclaration; import org.jboss.tools.common.java.IJavaSourceReference; import org.jboss.tools.common.java.IParametedType; import org.jboss.tools.common.java.ITypeDeclaration; import org.jboss.tools.common.text.ITextSourceReference; /** * 10.3.2. The built-in Event * The container must provide a built-in bean with: * Event<X> in its set of bean types, for every Java type X that does not contain a type variable, * every event qualifier type in its set of qualifier types, * scope @ Dependent, * no bean EL name * * @author Viacheslav Kabanovich * */ public class EventBean extends CDIElement implements IBean { IParametedType type; IInjectionPoint point = null; Collection<IQualifier> qualifiers = null; public EventBean(IParametedType type, IInjectionPoint point) { this.type = type; this.point = point; } public IScope getScope() { return getCDIProject().getScope(CDIConstants.DEPENDENT_ANNOTATION_TYPE_NAME); } public Collection<IScopeDeclaration> getScopeDeclarations() { return new ArrayList<IScopeDeclaration>(0); } public Collection<IStereotypeDeclaration> getStereotypeDeclarations() { return new ArrayList<IStereotypeDeclaration>(0); } public List<IAnnotationDeclaration> getAnnotations() { return new ArrayList<IAnnotationDeclaration>(0); } public IAnnotationDeclaration getAnnotation(String annotationTypeName) { return null; } public IJavaSourceReference getAnnotationPosition(String annotationTypeName) { return null; } public boolean isAnnotationPresent(String annotationTypeName) { return false; } public IType getBeanClass() { return type.getType(); } public String getName() { return null; } public ITextSourceReference getNameLocation(boolean stereotypeLocation) { return null; } public Collection<IParametedType> getLegalTypes() { return getAllTypes(); } public Collection<IParametedType> getAllTypes() { ArrayList<IParametedType> result = new ArrayList<IParametedType>(1); result.add(type); return result; } public Collection<ITypeDeclaration> getAllTypeDeclarations() { return new ArrayList<ITypeDeclaration>(0); } public Collection<ITypeDeclaration> getRestrictedTypeDeclaratios() { return new ArrayList<ITypeDeclaration>(); } public Collection<IQualifierDeclaration> getQualifierDeclarations() { return new ArrayList<IQualifierDeclaration>(); } public Collection<IQualifierDeclaration> getQualifierDeclarations(boolean includeInherited) { return new ArrayList<IQualifierDeclaration>(); } public Collection<IQualifier> getQualifiers() { if(qualifiers == null) { computeQualifiers(); } return qualifiers; } void computeQualifiers() { Collection<IQualifier> qs = null; if(point instanceof InjectionPointParameter) { qs = ((InjectionPointParameter)point).getQualifiers(); } else if(point != null) { qs = new ArrayList<IQualifier>(); for (IQualifierDeclaration d: point.getQualifierDeclarations()) { IQualifier q = d.getQualifier(); if(q != null && !qs.contains(q)) qs.add(q); } } qualifiers = qs; } public boolean isAlternative() { return false; } public boolean isSelectedAlternative() { return false; } public IAnnotationDeclaration getAlternativeDeclaration() { return null; } public Collection<IInjectionPoint> getInjectionPoints() { return new ArrayList<IInjectionPoint>(0); } public IBean getSpecializedBean() { return null; } public IAnnotationDeclaration getSpecializesAnnotationDeclaration() { return null; } public boolean isSpecializing() { return false; } public boolean isDependent() { return true; } public boolean isEnabled() { return true; } public boolean isNullable() { return false; } /* * (non-Javadoc) * @see org.jboss.tools.cdi.core.IBean#getSimpleJavaName() */ @Override public String getElementName() { if(type!=null) { return type.getSimpleName(); } return ""; } @Override public void open() { } }