[jbosstools-commits] JBoss Tools SVN: r22514 - 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
Thu Jun 3 10:28:18 EDT 2010


Author: scabanovich
Date: 2010-06-03 10:28:16 -0400 (Thu, 03 Jun 2010)
New Revision: 22514

Added:
   trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/definition/AnnotationMemberDefinition.java
Modified:
   trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/core/IQualifier.java
   trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/CDIProject.java
   trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/QualifierElement.java
   trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/definition/AbstractTypeDefinition.java
   trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/definition/AnnotationDefinition.java
   trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/definition/FieldDefinition.java
   trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/definition/ParametedTypeFactory.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-6401

Modified: trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/core/IQualifier.java
===================================================================
--- trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/core/IQualifier.java	2010-06-03 13:32:55 UTC (rev 22513)
+++ trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/core/IQualifier.java	2010-06-03 14:28:16 UTC (rev 22514)
@@ -10,11 +10,21 @@
  ******************************************************************************/
 package org.jboss.tools.cdi.core;
 
+import java.util.Set;
+
+import org.eclipse.jdt.core.IMethod;
+
 /**
  * Represents an interceptor binding type.
  * 
  * @author Viacheslav Kabanovich
  */
 public interface IQualifier extends ICDIAnnotation {
-
+	
+	/**
+	 * Returns set of members annotated with @Nonbinding
+	 * 
+	 * @return set of members annotated with @Nonbinding
+	 */
+	public Set<IMethod> getNonBindingMethods();
 }

Modified: trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/CDIProject.java
===================================================================
--- trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/CDIProject.java	2010-06-03 13:32:55 UTC (rev 22513)
+++ trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/CDIProject.java	2010-06-03 14:28:16 UTC (rev 22514)
@@ -317,7 +317,7 @@
 		return false;
 	}
 
-	public static boolean areMatchingQualifiers(Set<? extends IAnnotationDeclaration> beanQualifiers, Set<? extends IAnnotationDeclaration> injectionQualifiers) throws CoreException {
+	public static boolean areMatchingQualifiers(Set<IQualifierDeclaration> beanQualifiers, Set<IQualifierDeclaration> injectionQualifiers) throws CoreException {
 		if(beanQualifiers == null || beanQualifiers.isEmpty()) {
 			if(injectionQualifiers == null || injectionQualifiers.isEmpty()) {
 				return true;
@@ -325,7 +325,7 @@
 		}
 
 		TreeSet<String> injectionKeys = new TreeSet<String>();
-		if(injectionQualifiers != null) for (IAnnotationDeclaration d: injectionQualifiers) {
+		if(injectionQualifiers != null) for (IQualifierDeclaration d: injectionQualifiers) {
 			injectionKeys.add(getQualifierDeclarationKey(d));
 		}
 
@@ -339,7 +339,7 @@
 		TreeSet<String> beanKeys = new TreeSet<String>();
 		if(beanQualifiers == null || beanQualifiers.isEmpty()) {
 			beanKeys.add(CDIConstants.DEFAULT_QUALIFIER_TYPE_NAME);
-		} else for (IAnnotationDeclaration d: beanQualifiers) {
+		} else for (IQualifierDeclaration d: beanQualifiers) {
 			beanKeys.add(getQualifierDeclarationKey(d));
 		}
 		if(beanKeys.size() == 1 && beanKeys.iterator().next().startsWith(CDIConstants.NAMED_QUALIFIER_TYPE_NAME)) {
@@ -359,7 +359,7 @@
 	 * @return
 	 * @throws CoreException
 	 */
-	public static boolean areMatchingQualifiers(Set<? extends IAnnotationDeclaration> beanQualifiers, IType... injectionQualifiers) throws CoreException {
+	public static boolean areMatchingQualifiers(Set<IQualifierDeclaration> beanQualifiers, IType... injectionQualifiers) throws CoreException {
 		if(beanQualifiers == null || beanQualifiers.isEmpty()) {
 			if(injectionQualifiers == null || injectionQualifiers.length == 0) {
 				return true;
@@ -394,7 +394,9 @@
 		return true;
 	}
 
-	public static String getQualifierDeclarationKey(IAnnotationDeclaration d) throws CoreException {
+	public static String getQualifierDeclarationKey(IQualifierDeclaration d) throws CoreException {
+		IQualifier q = d.getQualifier();
+		Set<IMethod> nb = q == null ? new HashSet<IMethod>() : q.getNonBindingMethods();
 		IType type = d.getType();
 		IMethod[] ms = type.getMethods();
 		StringBuffer result = new StringBuffer();
@@ -411,7 +413,13 @@
 			}
 			for (IMethod m: ms) {
 				String n = m.getElementName();
-				if(values.containsKey(n)) continue;
+				if(nb.contains(m)) {
+					values.remove(n);
+					continue;
+				}
+				if(values.containsKey(n)) {
+					continue;
+				}
 				IMemberValuePair p = m.getDefaultValue();
 				n = p.getMemberName();
 				Object o = p.getValue();

Modified: trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/QualifierElement.java
===================================================================
--- trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/QualifierElement.java	2010-06-03 13:32:55 UTC (rev 22513)
+++ trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/QualifierElement.java	2010-06-03 14:28:16 UTC (rev 22514)
@@ -10,7 +10,13 @@
  ******************************************************************************/ 
 package org.jboss.tools.cdi.internal.core.impl;
 
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import org.eclipse.jdt.core.IMethod;
 import org.jboss.tools.cdi.core.IQualifier;
+import org.jboss.tools.cdi.internal.core.impl.definition.AnnotationMemberDefinition;
 
 /**
  * 
@@ -18,7 +24,23 @@
  *
  */
 public class QualifierElement extends CDIAnnotationElement implements IQualifier {
+	Set<IMethod> nonbindingMethods = null;
 
 	public QualifierElement() {}
 
+	public Set<IMethod> getNonBindingMethods() {
+		if(nonbindingMethods == null) {
+			Set<IMethod> result = new HashSet<IMethod>();
+			List<AnnotationMemberDefinition> ms = definition.getMethods();
+			for (AnnotationMemberDefinition m: ms) {
+				if(m.getNonbindingAnnotation() != null) {
+					result.add(m.getMethod());
+				}
+			}
+			nonbindingMethods = result;
+		}
+		return nonbindingMethods;
+		
+	}
+
 }

Modified: trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/definition/AbstractTypeDefinition.java
===================================================================
--- trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/definition/AbstractTypeDefinition.java	2010-06-03 13:32:55 UTC (rev 22513)
+++ trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/definition/AbstractTypeDefinition.java	2010-06-03 14:28:16 UTC (rev 22514)
@@ -21,9 +21,7 @@
 import org.eclipse.jdt.core.IType;
 import org.eclipse.jdt.internal.core.SourceRange;
 import org.jboss.tools.cdi.core.IParametedType;
-import org.jboss.tools.cdi.internal.core.impl.CDIProject;
 import org.jboss.tools.cdi.internal.core.impl.ParametedType;
-import org.jboss.tools.cdi.internal.core.impl.TypeDeclaration;
 import org.jboss.tools.common.util.FileUtil;
 
 /**

Modified: trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/definition/AnnotationDefinition.java
===================================================================
--- trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/definition/AnnotationDefinition.java	2010-06-03 13:32:55 UTC (rev 22513)
+++ trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/definition/AnnotationDefinition.java	2010-06-03 14:28:16 UTC (rev 22514)
@@ -10,10 +10,13 @@
  ******************************************************************************/ 
 package org.jboss.tools.cdi.internal.core.impl.definition;
 
+import java.util.ArrayList;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 
 import org.eclipse.core.runtime.CoreException;
+import org.eclipse.jdt.core.IMethod;
 import org.eclipse.jdt.core.IType;
 import org.jboss.tools.cdi.core.CDIConstants;
 import org.jboss.tools.cdi.internal.core.impl.AnnotationDeclaration;
@@ -35,6 +38,8 @@
 
 	protected int kind = NON_RELEVANT;
 
+	List<AnnotationMemberDefinition> methods = new ArrayList<AnnotationMemberDefinition>();
+
 	public AnnotationDefinition() {}
 
 	public void setKind(int kind) {
@@ -45,6 +50,10 @@
 		return kind;
 	}
 
+	public List<AnnotationMemberDefinition> getMethods() {
+		return methods;
+	}
+
 	@Override
 	protected void init(IType contextType, DefinitionContext context) throws CoreException {
 		super.init(contextType, context);
@@ -73,8 +82,24 @@
 		} else if(AnnotationHelper.CDI_ANNOTATION_TYPES.contains(qualifiedName)) {
 			kind = AnnotationDefinition.CDI;
 		}
+		
+		if(kind == QUALIFIER) {
+			initMemberDefinitions(contextType, context);
+		}
 	}
 
+	void initMemberDefinitions(IType contextType, DefinitionContext context) throws CoreException {
+		IMethod[] ms = getType().getMethods();
+		for (int i = 0; i < ms.length; i++) {
+			AnnotationMemberDefinition m = new AnnotationMemberDefinition();
+			m.setAnnotationDefinition(this);
+			m.setMethod(ms[i], context);
+			if(m.isCDIAnnotated()) {
+				methods.add(m);
+			}
+		}
+	}
+
 	public AnnotationDeclaration getInheritedAnnotation() {
 		return annotationsByType.get(CDIConstants.INHERITED_ANNOTATION_TYPE_NAME);
 	}

Added: trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/definition/AnnotationMemberDefinition.java
===================================================================
--- trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/definition/AnnotationMemberDefinition.java	                        (rev 0)
+++ trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/definition/AnnotationMemberDefinition.java	2010-06-03 14:28:16 UTC (rev 22514)
@@ -0,0 +1,53 @@
+/******************************************************************************* 
+ * Copyright (c) 2009 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.definition;
+
+import org.eclipse.jdt.core.IMethod;
+import org.jboss.tools.cdi.core.CDIConstants;
+import org.jboss.tools.cdi.internal.core.impl.AnnotationDeclaration;
+
+/**
+ * 
+ * @author Viacheslav Kabanovich
+ *
+ */
+public class AnnotationMemberDefinition extends AbstractMemberDefinition {
+	AnnotationDefinition annotationDefinition;
+	IMethod method;
+
+	public AnnotationMemberDefinition() {}
+
+	public void setAnnotationDefinition(AnnotationDefinition annotationDefinition) {
+		this.annotationDefinition = annotationDefinition;
+	}
+
+	public AnnotationDefinition getTypeDefinition() {
+		return annotationDefinition;
+	}
+
+	public void setMethod(IMethod method, DefinitionContext context) {
+		this.method = method;
+		setAnnotatable(method, method.getDeclaringType(), context);
+	}
+
+	public IMethod getMethod() {
+		return method;
+	}
+
+	public boolean isCDIAnnotated() {
+		return getNonbindingAnnotation() != null;
+	}
+
+	public AnnotationDeclaration getNonbindingAnnotation() {
+		return annotationsByType.get(CDIConstants.NON_BINDING_ANNOTATION_TYPE_NAME);
+	}
+
+}


Property changes on: trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/definition/AnnotationMemberDefinition.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Modified: trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/definition/FieldDefinition.java
===================================================================
--- trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/definition/FieldDefinition.java	2010-06-03 13:32:55 UTC (rev 22513)
+++ trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/definition/FieldDefinition.java	2010-06-03 14:28:16 UTC (rev 22514)
@@ -11,8 +11,6 @@
 package org.jboss.tools.cdi.internal.core.impl.definition;
 
 import org.eclipse.jdt.core.IField;
-import org.jboss.tools.cdi.core.CDIConstants;
-import org.jboss.tools.cdi.internal.core.impl.AnnotationDeclaration;
 
 /**
  * 

Modified: trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/definition/ParametedTypeFactory.java
===================================================================
--- trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/definition/ParametedTypeFactory.java	2010-06-03 13:32:55 UTC (rev 22513)
+++ trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/definition/ParametedTypeFactory.java	2010-06-03 14:28:16 UTC (rev 22514)
@@ -10,7 +10,6 @@
 import org.eclipse.jdt.core.IMethod;
 import org.eclipse.jdt.core.ISourceRange;
 import org.eclipse.jdt.core.IType;
-import org.eclipse.jdt.core.ITypeParameter;
 import org.eclipse.jdt.core.JavaModelException;
 import org.jboss.tools.cdi.internal.core.impl.ParametedType;
 import org.jboss.tools.cdi.internal.core.impl.TypeDeclaration;

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-06-03 13:32:55 UTC (rev 22513)
+++ trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/validation/CDICoreValidator.java	2010-06-03 14:28:16 UTC (rev 22514)
@@ -1393,7 +1393,7 @@
 				String returnTypeSignature = method.getReturnType();
 				int kind = Signature.getTypeSignatureKind(returnTypeSignature);
 				if(kind == Signature.ARRAY_TYPE_SIGNATURE) {
-					if(!CDIUtil.hasNonBindingAnnotationDeclaration(type, method)) {
+					if(!qualifier.getNonBindingMethods().contains(method)) {
 						ITextSourceReference reference = CDIUtil.convertToSourceReference(method.getNameRange());
 						addError(CDIValidationMessages.MISSING_NONBINDING_FOR_ARRAY_VALUE_IN_QUALIFIER_TYPE_MEMBER, CDIPreferences.MISSING_NONBINDING_IN_QUALIFIER_TYPE_MEMBER, reference, qualifier.getResource());
 					}



More information about the jbosstools-commits mailing list