[jbosstools-commits] JBoss Tools SVN: r30285 - trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/definition.

jbosstools-commits at lists.jboss.org jbosstools-commits at lists.jboss.org
Mon Apr 4 17:32:34 EDT 2011


Author: scabanovich
Date: 2011-04-04 17:32:34 -0400 (Mon, 04 Apr 2011)
New Revision: 30285

Modified:
   trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/definition/ParameterDefinition.java
Log:
JBIDE-8198
https://issues.jboss.org/browse/JBIDE-8198

Modified: trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/definition/ParameterDefinition.java
===================================================================
--- trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/definition/ParameterDefinition.java	2011-04-04 21:06:16 UTC (rev 30284)
+++ trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/definition/ParameterDefinition.java	2011-04-04 21:32:34 UTC (rev 30285)
@@ -16,13 +16,20 @@
 import java.util.Map;
 import java.util.Set;
 
+import org.eclipse.jdt.core.IMemberValuePair;
+import org.eclipse.jdt.core.IType;
+import org.eclipse.jdt.core.JavaModelException;
+import org.eclipse.jdt.core.SourceRange;
+import org.eclipse.jdt.internal.core.MemberValuePair;
 import org.jboss.tools.cdi.core.CDICoreNature;
 import org.jboss.tools.cdi.core.CDICorePlugin;
 import org.jboss.tools.cdi.core.IAnnotated;
 import org.jboss.tools.cdi.core.IAnnotationDeclaration;
 import org.jboss.tools.cdi.internal.core.impl.AnnotationDeclaration;
+import org.jboss.tools.cdi.internal.core.impl.AnnotationLiteral;
 import org.jboss.tools.cdi.internal.core.impl.JavaAnnotation;
 import org.jboss.tools.cdi.internal.core.impl.ParametedType;
+import org.jboss.tools.common.model.util.EclipseJavaUtil;
 import org.jboss.tools.common.text.ITextSourceReference;
 
 public class ParameterDefinition implements IAnnotated {
@@ -62,14 +69,51 @@
 		}
 		// JDT doesn't have API for annotations for method params. So let's wrap ITextSourceReference into IAnnotationDeclaration.
 		AnnotationDeclaration ad = new AnnotationDeclaration();
-		//TODO it should be annotation literal!
-		System.out.println("!!!!!!!!!!!!!Here we are!!!!!!!!");
-		ad.setDeclaration(new JavaAnnotation(null, methodDefinition.getMethod().getDeclaringType()));
+		IType t = null;
+		try {
+			t = EclipseJavaUtil.findType(methodDefinition.getMethod().getJavaProject(), annotationTypeName);
+		} catch (JavaModelException e) {
+			
+		}
+		if(t == null) return null;
+		int b = reference.getStartPosition();
+		int e = reference.getLength() + b;
+		if(b < 0 || e < b) return null;
+		String source = methodDefinition.getTypeDefinition().getContent().substring(b, e);
+		
+		//compute member value parameters
+		IMemberValuePair[] memberValues = getMemberValues(source);
+		
+		AnnotationLiteral a = new AnnotationLiteral(methodDefinition.getResource(), source, new SourceRange(b, e - b), memberValues, t);
+		ad.setDeclaration(a);
 		CDICoreNature nature = CDICorePlugin.getCDI(methodDefinition.getResource().getProject(), false);
 		ad.setProject(nature);
 		return ad;
 	}
 
+	private static IMemberValuePair[] EMPTY_PAIRS = new IMemberValuePair[0];
+
+	private IMemberValuePair[] getMemberValues(String source) {
+		int p1 = source.indexOf('(');
+		int p2 = source.indexOf(')');
+		if(p1 >= 0 && p2 > p1) {
+			String params = source.substring(p1 + 1, p2).trim();
+			if(params.length() > 0) {
+				if(params.startsWith("{") && params.endsWith("}")) {
+					//TODO
+				} else if(params.endsWith(".class")) {
+					params = params.substring(0, params.length() - 6);
+					IMemberValuePair pair = new MemberValuePair("value", params, IMemberValuePair.K_CLASS);
+					return new IMemberValuePair[]{pair};					
+				} else {
+					//TODO
+				}
+			}
+		}
+		
+		return EMPTY_PAIRS;
+	}
+
 	/**
 	 * Returns an empty list because JDT doesn't have API for annotations for method params. Use getAnnotationTypes() instead.
 	 * 



More information about the jbosstools-commits mailing list