[jbosstools-commits] JBoss Tools SVN: r23344 - in trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi: internal/core/impl and 2 other directories.

jbosstools-commits at lists.jboss.org jbosstools-commits at lists.jboss.org
Fri Jul 9 08:51:31 EDT 2010


Author: scabanovich
Date: 2010-07-09 08:51:30 -0400 (Fri, 09 Jul 2010)
New Revision: 23344

Modified:
   trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/core/CDIUtil.java
   trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/BeanMethod.java
   trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/ClassBean.java
   trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/InterceptorBindingElement.java
   trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/StereotypeElement.java
   trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/definition/MethodDefinition.java
   trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/validation/CDICoreValidator.java
Log:
https://jira.jboss.org/browse/JBIDE-6550

Modified: trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/core/CDIUtil.java
===================================================================
--- trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/core/CDIUtil.java	2010-07-09 12:44:37 UTC (rev 23343)
+++ trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/core/CDIUtil.java	2010-07-09 12:51:30 UTC (rev 23344)
@@ -260,7 +260,9 @@
 		if(annotated instanceof IStereotyped) {
 			Set<IStereotypeDeclaration> stereoTypeDeclarations = ((IStereotyped)annotated).getStereotypeDeclarations();
 			for (IStereotypeDeclaration stereotypeDeclaration : stereoTypeDeclarations) {
-				getAnnotationDeclaration(stereotypeDeclaration.getStereotype(), annotation);
+				if(getAnnotationDeclaration(stereotypeDeclaration.getStereotype(), annotation) != null) {
+					return stereotypeDeclaration;
+				}
 			}
 		}
 		return null;
@@ -777,6 +779,17 @@
 		return cdiNature;
 	}
 
+	public static Set<IInterceptorBinding> getAllInterceptorBindings(IInterceptorBinded binded) {
+		Set<IInterceptorBindingDeclaration> ds = collectInheritedInterceptorBindingDeclaratios(binded, new HashSet<IInterceptorBindingDeclaration>());
+		Set<IInterceptorBinding> result = new HashSet<IInterceptorBinding>();
+		for (IInterceptorBindingDeclaration d: ds) {
+			IInterceptorBinding b = d.getInterceptorBinding();
+			if(b != null) result.add(b);
+		}
+		return result;
+	}
+
+
 	/**
 	 * Collect all the interceptor binding declarations from the bean class or method including all the inherited bindings.
 	 * @param binded bean class or method

Modified: trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/BeanMethod.java
===================================================================
--- trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/BeanMethod.java	2010-07-09 12:44:37 UTC (rev 23343)
+++ trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/BeanMethod.java	2010-07-09 12:51:30 UTC (rev 23344)
@@ -17,6 +17,7 @@
 import org.eclipse.jdt.core.IMember;
 import org.eclipse.jdt.core.IMethod;
 import org.jboss.tools.cdi.core.CDIConstants;
+import org.jboss.tools.cdi.core.CDIUtil;
 import org.jboss.tools.cdi.core.IBeanMethod;
 import org.jboss.tools.cdi.core.IInterceptorBinding;
 import org.jboss.tools.cdi.core.IInterceptorBindingDeclaration;
@@ -112,6 +113,6 @@
 	 * @see org.jboss.tools.cdi.core.IInterceptorBinded#getInterceptorBindings()
 	 */
 	public Set<IInterceptorBinding> getInterceptorBindings() {
-		return ClassBean.getInterceptorBindings(definition);
+		return CDIUtil.getAllInterceptorBindings(this);
 	}
 }
\ No newline at end of file

Modified: trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/ClassBean.java
===================================================================
--- trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/ClassBean.java	2010-07-09 12:44:37 UTC (rev 23343)
+++ trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/ClassBean.java	2010-07-09 12:51:30 UTC (rev 23344)
@@ -25,6 +25,7 @@
 import org.eclipse.jdt.core.JavaModelException;
 import org.jboss.tools.cdi.core.CDIConstants;
 import org.jboss.tools.cdi.core.CDICorePlugin;
+import org.jboss.tools.cdi.core.CDIUtil;
 import org.jboss.tools.cdi.core.IAnnotationDeclaration;
 import org.jboss.tools.cdi.core.IBeanMethod;
 import org.jboss.tools.cdi.core.IClassBean;
@@ -39,7 +40,6 @@
 import org.jboss.tools.cdi.core.IScopeDeclaration;
 import org.jboss.tools.cdi.core.IStereotype;
 import org.jboss.tools.cdi.core.IStereotypeDeclaration;
-import org.jboss.tools.cdi.core.IStereotyped;
 import org.jboss.tools.cdi.core.ITypeDeclaration;
 import org.jboss.tools.cdi.internal.core.impl.definition.AbstractMemberDefinition;
 import org.jboss.tools.cdi.internal.core.impl.definition.FieldDefinition;
@@ -195,22 +195,12 @@
 		return result;
 	}
 
-	public static Set<IInterceptorBinding> getInterceptorBindings(AbstractMemberDefinition definition) {
-		// TODO collect bindings from stereotypes. See https://jira.jboss.org/browse/JBIDE-6550 
-		Set<IInterceptorBinding> result = new HashSet<IInterceptorBinding>();
-		Set<IInterceptorBindingDeclaration> declarations = getInterceptorBindingDeclarations(definition);
-		for (IInterceptorBindingDeclaration declaration: declarations) {
-			result.add(declaration.getInterceptorBinding());
-		}
-		return result;
-	}
-
 	/*
 	 * (non-Javadoc)
 	 * @see org.jboss.tools.cdi.core.IClassBean#getInterceptorBindings()
 	 */
 	public Set<IInterceptorBinding> getInterceptorBindings() {
-		return getInterceptorBindings(definition);
+		return CDIUtil.getAllInterceptorBindings(this);
 	}
 
 	public Set<IBeanMethod> getObserverMethods() {

Modified: trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/InterceptorBindingElement.java
===================================================================
--- trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/InterceptorBindingElement.java	2010-07-09 12:44:37 UTC (rev 23343)
+++ trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/InterceptorBindingElement.java	2010-07-09 12:51:30 UTC (rev 23344)
@@ -12,6 +12,7 @@
 
 import java.util.Set;
 
+import org.jboss.tools.cdi.core.CDIUtil;
 import org.jboss.tools.cdi.core.IInterceptorBinding;
 import org.jboss.tools.cdi.core.IInterceptorBindingDeclaration;
 
@@ -37,6 +38,6 @@
 	 * @see org.jboss.tools.cdi.core.IInterceptorBinded#getInterceptorBindings()
 	 */
 	public Set<IInterceptorBinding> getInterceptorBindings() {
-		return ClassBean.getInterceptorBindings(definition);
+		return CDIUtil.getAllInterceptorBindings(this);
 	}
 }
\ No newline at end of file

Modified: trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/StereotypeElement.java
===================================================================
--- trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/StereotypeElement.java	2010-07-09 12:44:37 UTC (rev 23343)
+++ trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/StereotypeElement.java	2010-07-09 12:51:30 UTC (rev 23344)
@@ -16,6 +16,7 @@
 import java.util.Set;
 
 import org.eclipse.jdt.core.IAnnotation;
+import org.jboss.tools.cdi.core.CDIUtil;
 import org.jboss.tools.cdi.core.IAnnotationDeclaration;
 import org.jboss.tools.cdi.core.IInterceptorBinding;
 import org.jboss.tools.cdi.core.IInterceptorBindingDeclaration;
@@ -63,7 +64,7 @@
 	 * @see org.jboss.tools.cdi.core.IInterceptorBinded#getInterceptorBindings()
 	 */
 	public Set<IInterceptorBinding> getInterceptorBindings() {
-		return ClassBean.getInterceptorBindings(definition);
+		return CDIUtil.getAllInterceptorBindings(this);
 	}
 
 	/*

Modified: trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/definition/MethodDefinition.java
===================================================================
--- trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/definition/MethodDefinition.java	2010-07-09 12:44:37 UTC (rev 23343)
+++ trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/definition/MethodDefinition.java	2010-07-09 12:51:30 UTC (rev 23344)
@@ -11,6 +11,7 @@
 package org.jboss.tools.cdi.internal.core.impl.definition;
 
 import java.util.ArrayList;
+import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
 
@@ -19,9 +20,13 @@
 import org.eclipse.jdt.core.ISourceRange;
 import org.eclipse.jdt.core.IType;
 import org.jboss.tools.cdi.core.CDIConstants;
+import org.jboss.tools.cdi.core.IAnnotationDeclaration;
 import org.jboss.tools.cdi.core.IInterceptorBinding;
+import org.jboss.tools.cdi.core.IInterceptorBindingDeclaration;
+import org.jboss.tools.cdi.core.IStereotypeDeclaration;
 import org.jboss.tools.cdi.internal.core.impl.AnnotationDeclaration;
 import org.jboss.tools.cdi.internal.core.impl.ClassBean;
+import org.jboss.tools.cdi.internal.core.impl.InterceptorBindingDeclaration;
 import org.jboss.tools.cdi.internal.core.impl.ParametedType;
 import org.jboss.tools.common.model.project.ext.impl.ValueInfo;
 import org.jboss.tools.common.model.util.EclipseJavaUtil;
@@ -136,12 +141,27 @@
 
 	@Override
 	public boolean isCDIAnnotated() {
-		return super.isCDIAnnotated() || isDisposer() || isObserver() || getPreDestroyMethod() != null || getPostConstructorMethod() != null || !getInterceptorBindings().isEmpty();
+		return super.isCDIAnnotated() || isDisposer() || isObserver() || getPreDestroyMethod() != null || getPostConstructorMethod() != null || !getInterceptorBindings().isEmpty() || hasStereotypeDeclarations();
 	}
 
 	public Set<IInterceptorBinding> getInterceptorBindings() {
-		return ClassBean.getInterceptorBindings(this);
+		Set<IInterceptorBinding> result = new HashSet<IInterceptorBinding>();
+		Set<IInterceptorBindingDeclaration> declarations = ClassBean.getInterceptorBindingDeclarations(this);
+		for (IInterceptorBindingDeclaration declaration: declarations) {
+			result.add(declaration.getInterceptorBinding());
+		}
+		return result;
 	}
+
+	public boolean hasStereotypeDeclarations() {
+		List<IAnnotationDeclaration> as = getAnnotations();
+		for (IAnnotationDeclaration a: as) {
+			if(a instanceof IStereotypeDeclaration) {
+				return true;
+			}
+		}
+		return false;
+	}
  
 	public List<ParameterDefinition> getParameters() {
 		return parameters;

Modified: trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/validation/CDICoreValidator.java
===================================================================
--- trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/validation/CDICoreValidator.java	2010-07-09 12:44:37 UTC (rev 23343)
+++ trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/validation/CDICoreValidator.java	2010-07-09 12:51:30 UTC (rev 23344)
@@ -411,12 +411,14 @@
 		 */
 		try {
 			if(hasConflictedInterceptorBindings(bean)) {
+				//TODO consider putting markers to interceptor bindings/stereotype declarations.
 				ITextSourceReference reference = CDIUtil.convertToSourceReference(bean.getBeanClass().getNameRange());
 				addError(CDIValidationMessages.CONFLICTING_INTERCEPTOR_BINDINGS, CDIPreferences.CONFLICTING_INTERCEPTOR_BINDINGS, reference, bean.getResource());
 			}
 			Set<IBeanMethod> methods = bean.getAllMethods();
 			for (IBeanMethod method : methods) {
 				if(hasConflictedInterceptorBindings(method)) {
+					//TODO consider putting markers to interceptor bindings/stereotype declarations.
 					ITextSourceReference reference = CDIUtil.convertToSourceReference(method.getMethod().getNameRange());
 					addError(CDIValidationMessages.CONFLICTING_INTERCEPTOR_BINDINGS, CDIPreferences.CONFLICTING_INTERCEPTOR_BINDINGS, reference, bean.getResource());
 				}



More information about the jbosstools-commits mailing list