[jbosstools-commits] JBoss Tools SVN: r41400 - in trunk/cdi/plugins/org.jboss.tools.cdi.deltaspike.core/src/org/jboss/tools/cdi/deltaspike: text/ext and 1 other directory.

jbosstools-commits at lists.jboss.org jbosstools-commits at lists.jboss.org
Thu May 24 20:41:02 EDT 2012


Author: scabanovich
Date: 2012-05-24 20:41:02 -0400 (Thu, 24 May 2012)
New Revision: 41400

Modified:
   trunk/cdi/plugins/org.jboss.tools.cdi.deltaspike.core/src/org/jboss/tools/cdi/deltaspike/core/DeltaspikeAuthorityMethod.java
   trunk/cdi/plugins/org.jboss.tools.cdi.deltaspike.core/src/org/jboss/tools/cdi/deltaspike/core/DeltaspikeConfigPropertyExtension.java
   trunk/cdi/plugins/org.jboss.tools.cdi.deltaspike.core/src/org/jboss/tools/cdi/deltaspike/core/DeltaspikeSecurityExtension.java
   trunk/cdi/plugins/org.jboss.tools.cdi.deltaspike.core/src/org/jboss/tools/cdi/deltaspike/text/ext/AuthorizerHyperlinkDetector.java
Log:
JBIDE-11552
https://issues.jboss.org/browse/JBIDE-11552
Search for authorizer methods is done in parent projects.


Modified: trunk/cdi/plugins/org.jboss.tools.cdi.deltaspike.core/src/org/jboss/tools/cdi/deltaspike/core/DeltaspikeAuthorityMethod.java
===================================================================
--- trunk/cdi/plugins/org.jboss.tools.cdi.deltaspike.core/src/org/jboss/tools/cdi/deltaspike/core/DeltaspikeAuthorityMethod.java	2012-05-25 00:37:18 UTC (rev 41399)
+++ trunk/cdi/plugins/org.jboss.tools.cdi.deltaspike.core/src/org/jboss/tools/cdi/deltaspike/core/DeltaspikeAuthorityMethod.java	2012-05-25 00:41:02 UTC (rev 41400)
@@ -16,6 +16,7 @@
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IPath;
 import org.eclipse.jdt.core.IType;
+import org.eclipse.jdt.core.JavaModelException;
 import org.jboss.tools.cdi.internal.core.impl.CDIProject;
 import org.jboss.tools.cdi.internal.core.impl.definition.MethodDefinition;
 import org.jboss.tools.common.java.IAnnotationDeclaration;
@@ -75,4 +76,30 @@
 		}
 		return false;
 	}
+
+	public boolean equals(Object o) {
+		if(!(o instanceof DeltaspikeAuthorityMethod)) {
+			return false;
+		}
+		DeltaspikeAuthorityMethod other = (DeltaspikeAuthorityMethod)o;
+		if(!other.declaringTypeName.equals(declaringTypeName)) {
+			return false;
+		}
+		if(!other.path.equals(path)) {
+			return false;
+		}
+		if(!method.getMethod().getElementName().equals(other.getMethod().getMethod().getElementName())) {
+			return false;
+		}
+		try {
+			String kThis = method.getMethod().getSignature();
+			String kThat = other.method.getMethod().getSignature();
+			if(!kThis.equals(kThat)) {
+				return false;
+			}
+		} catch (JavaModelException e) {
+			DeltaspikeCorePlugin.getDefault().logError(e);
+		}
+		return true;
+	}
 }

Modified: trunk/cdi/plugins/org.jboss.tools.cdi.deltaspike.core/src/org/jboss/tools/cdi/deltaspike/core/DeltaspikeConfigPropertyExtension.java
===================================================================
--- trunk/cdi/plugins/org.jboss.tools.cdi.deltaspike.core/src/org/jboss/tools/cdi/deltaspike/core/DeltaspikeConfigPropertyExtension.java	2012-05-25 00:37:18 UTC (rev 41399)
+++ trunk/cdi/plugins/org.jboss.tools.cdi.deltaspike.core/src/org/jboss/tools/cdi/deltaspike/core/DeltaspikeConfigPropertyExtension.java	2012-05-25 00:41:02 UTC (rev 41400)
@@ -10,8 +10,12 @@
  ******************************************************************************/
 package org.jboss.tools.cdi.deltaspike.core;
 
+import java.util.Set;
+
 import org.eclipse.jdt.core.IType;
 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.extension.ICDIExtension;
 import org.jboss.tools.cdi.core.extension.feature.IInjectionPointValidatorFeature;
 
@@ -26,9 +30,16 @@
 	@Override
 	public boolean shouldIgnoreInjection(IType typeOfInjectionPoint,
 			IInjectionPoint injection) {
-		if(injection.getAnnotation(CONFIG_PROPERTY_ANNOTATION_TYPE_NAME) != null) {
+		if(injection.isAnnotationPresent(CONFIG_PROPERTY_ANNOTATION_TYPE_NAME)) {
 			return true;
 		}
+		Set<IQualifierDeclaration> qs = injection.getQualifierDeclarations();
+		for (IQualifierDeclaration d: qs) {
+			IQualifier q = d.getQualifier();
+			if(q.isAnnotationPresent(CONFIG_PROPERTY_ANNOTATION_TYPE_NAME)) {
+				return true;
+			}
+		}
 		return false;
 	}
 

Modified: trunk/cdi/plugins/org.jboss.tools.cdi.deltaspike.core/src/org/jboss/tools/cdi/deltaspike/core/DeltaspikeSecurityExtension.java
===================================================================
--- trunk/cdi/plugins/org.jboss.tools.cdi.deltaspike.core/src/org/jboss/tools/cdi/deltaspike/core/DeltaspikeSecurityExtension.java	2012-05-25 00:37:18 UTC (rev 41399)
+++ trunk/cdi/plugins/org.jboss.tools.cdi.deltaspike.core/src/org/jboss/tools/cdi/deltaspike/core/DeltaspikeSecurityExtension.java	2012-05-25 00:41:02 UTC (rev 41400)
@@ -12,6 +12,7 @@
 
 import java.util.ArrayList;
 import java.util.Collections;
+import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
@@ -238,10 +239,16 @@
 			}
 			
 		}
+	
+		Set<DeltaspikeSecurityExtension> parents = null;
 		
 		for (DeltaspikeSecurityBindingConfiguration c: context.getConfigurations().values()) {
 			if(c.getInvolvedTypes().contains(file.getFullPath())) {
-				Set<DeltaspikeAuthorityMethod> authorizers2 = c.getAuthorizerMembers();
+				if(parents == null) {
+					parents = getParents(getContext().getRootContext().getProject());
+				}
+				Set<DeltaspikeAuthorityMethod> authorizers2 = collectAuthorizerMethods(parents, c.getSecurityBindingTypeName());
+				authorizers2.addAll(c.getAuthorizerMembers());
 				Map<AbstractMemberDefinition, SecurityBindingDeclaration> bound = c.getBoundMembers();
 				for (AbstractMemberDefinition d: bound.keySet()) {
 					String name = d instanceof MethodDefinition ? ((MethodDefinition)d).getMethod().getElementName()
@@ -280,4 +287,26 @@
 		return DeltaspikeSeverityPreferences.getInstance();
 	}
 
+	public static Set<DeltaspikeSecurityExtension> getParents(CDICoreNature nature) {
+		Set<CDICoreNature> ps = nature.getCDIProjects(true);
+		Set<DeltaspikeSecurityExtension> parents = new HashSet<DeltaspikeSecurityExtension>();
+		for (CDICoreNature p: ps) {
+			DeltaspikeSecurityExtension ext = DeltaspikeSecurityExtension.getExtension(p);
+			if(ext != null) parents.add(ext);
+		}
+		return parents;		
+	}
+
+	public static Set<DeltaspikeAuthorityMethod> collectAuthorizerMethods(Set<DeltaspikeSecurityExtension> parents, String securityBindingTypeName) {
+		Set<DeltaspikeAuthorityMethod> result = new HashSet<DeltaspikeAuthorityMethod>();
+		for (DeltaspikeSecurityExtension ext: parents) {
+			DeltaspikeSecurityDefinitionContext context = (DeltaspikeSecurityDefinitionContext)ext.getContext();
+			DeltaspikeSecurityBindingConfiguration c = context.getConfiguration(securityBindingTypeName);
+			if(c != null) {
+				result.addAll(c.getAuthorizerMembers());
+			}
+		}
+		return result;
+	}
+
 }

Modified: trunk/cdi/plugins/org.jboss.tools.cdi.deltaspike.core/src/org/jboss/tools/cdi/deltaspike/text/ext/AuthorizerHyperlinkDetector.java
===================================================================
--- trunk/cdi/plugins/org.jboss.tools.cdi.deltaspike.core/src/org/jboss/tools/cdi/deltaspike/text/ext/AuthorizerHyperlinkDetector.java	2012-05-25 00:37:18 UTC (rev 41399)
+++ trunk/cdi/plugins/org.jboss.tools.cdi.deltaspike.core/src/org/jboss/tools/cdi/deltaspike/text/ext/AuthorizerHyperlinkDetector.java	2012-05-25 00:41:02 UTC (rev 41400)
@@ -127,13 +127,15 @@
 		DeltaspikeSecurityExtension extension = DeltaspikeSecurityExtension.getExtension(nature);
 		if(extension == null) return;
 
+		Set<DeltaspikeSecurityExtension> parents = DeltaspikeSecurityExtension.getParents(nature);
+
 		DeltaspikeSecurityDefinitionContext context = (DeltaspikeSecurityDefinitionContext)extension.getContext();
 		
 		Map<String, DeltaspikeSecurityBindingConfiguration> cs = context.getConfigurations();
-
 		for (DeltaspikeSecurityBindingConfiguration c: cs.values()) {
 			Map<AbstractMemberDefinition, SecurityBindingDeclaration> ms = c.getBoundMembers();
-			Set<DeltaspikeAuthorityMethod> as = c.getAuthorizerMembers();
+			Set<DeltaspikeAuthorityMethod> as = DeltaspikeSecurityExtension.collectAuthorizerMethods(parents, c.getSecurityBindingTypeName());
+			as.addAll(c.getAuthorizerMembers());
 			Set<String> authorityMethods = new HashSet<String>();
 			for (AbstractMemberDefinition m: ms.keySet()) {
 				if(element.equals(m.getMember())) {
@@ -146,10 +148,11 @@
 							}
 							if(a.isMatching(b)) {
 								IMethod method = a.getMethod().getMethod();
-								if(authorityMethods.contains(method.getSignature())) {
+								String k = "" + method.getElementName() + method.getSignature();
+								if(authorityMethods.contains(k)) {
 									continue;
 								}
-								authorityMethods.add(method.getSignature());
+								authorityMethods.add(k);
 								JavaElementHyperlink h = new JavaElementHyperlink(region, method, document);
 								hyperlinks.add(h);
 							}



More information about the jbosstools-commits mailing list