[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