Author: scabanovich
Date: 2010-02-04 12:32:41 -0500 (Thu, 04 Feb 2010)
New Revision: 20133
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/AbstractBeanElement.java
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/definition/AbstractMemberDefinition.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/BeanMemberDefinition.java
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/definition/TypeDefinition.java
Log:
https://jira.jboss.org/jira/browse/JBIDE-5799
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/AbstractBeanElement.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/AbstractBeanElement.java 2010-02-04
16:10:07 UTC (rev 20132)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/AbstractBeanElement.java 2010-02-04
17:32:41 UTC (rev 20133)
@@ -14,10 +14,13 @@
import java.util.List;
import java.util.Set;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.runtime.CoreException;
import org.eclipse.jdt.core.IAnnotation;
import org.eclipse.jdt.core.IJavaElement;
import org.eclipse.jdt.core.IMember;
import org.eclipse.jdt.core.IMemberValuePair;
+import org.eclipse.jdt.core.ISourceRange;
import org.eclipse.jdt.core.IType;
import org.eclipse.jdt.core.JavaModelException;
import org.jboss.tools.cdi.core.CDICoreNature;
@@ -28,9 +31,11 @@
import org.jboss.tools.cdi.core.IStereotypeDeclaration;
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.AbstractTypeDefinition;
import org.jboss.tools.cdi.internal.core.impl.definition.AnnotationDefinition;
import org.jboss.tools.cdi.internal.core.impl.definition.ParametedTypeFactory;
import org.jboss.tools.common.model.util.EclipseJavaUtil;
+import org.jboss.tools.common.util.FileUtil;
/**
*
@@ -116,28 +121,62 @@
if(typed != null) {
IAnnotation a = typed.getDeclaration();
try {
+ ISourceRange r = a.getSourceRange();
+ String txt = null;
+ if(r != null && a.getResource() instanceof IFile) {
+ AbstractTypeDefinition td = getDefinition().getTypeDefinition();
+ if(td != null) {
+ String content = td.getContent();
+ if(content != null && content.length() > r.getOffset() + r.getLength())
{
+ txt = content.substring(r.getOffset(), r.getOffset() + r.getLength());
+ }
+ }
+ }
+
IMemberValuePair[] ps = a.getMemberValuePairs();
if(ps == null || ps.length == 0) return result;
Object value = ps[0].getValue();
if(value instanceof Object[]) {
Object[] os = (Object[])value;
for (int i = 0; i < os.length; i++) {
- String typeName = os[i].toString();
+ String rawTypeName = os[i].toString();
+ String typeName = rawTypeName;
if(!typeName.endsWith(";")) typeName = "Q" + typeName +
";";
- ParametedType p =
ParametedTypeFactory.getParametedType(((IMember)definition.getMember()).getDeclaringType(),
typeName);
+ IMember member = (IMember)definition.getMember();
+ IType declaringType = member instanceof IType ? (IType)member :
member.getDeclaringType();
+ ParametedType p = ParametedTypeFactory.getParametedType(declaringType, typeName);
if(p != null) {
- result.add(new TypeDeclaration(p, -1, 0));
+ int offset = 0;
+ int length = 0;
+ if(txt != null) {
+ int q = txt.indexOf(rawTypeName);
+ if(q >= 0) {
+ offset = r.getOffset() + q;
+ length = rawTypeName.length();
+ }
+ }
+ result.add(new TypeDeclaration(p, offset, length));
}
}
} else if(value != null) {
- String typeName = value.toString();
+ String rawTypeName = value.toString();
+ String typeName = rawTypeName;
if(!typeName.endsWith(";")) typeName = "Q" + typeName +
";";
ParametedType p =
ParametedTypeFactory.getParametedType(((IMember)definition.getMember()).getDeclaringType(),
typeName);
if(p != null) {
- result.add(new TypeDeclaration(p, -1, 0));
+ int offset = 0;
+ int length = 0;
+ if(txt != null) {
+ int q = txt.indexOf(rawTypeName);
+ if(q >= 0) {
+ offset = r.getOffset() + q;
+ length = rawTypeName.length();
+ }
+ }
+ result.add(new TypeDeclaration(p, offset, length));
}
}
- } catch (JavaModelException e) {
+ } catch (CoreException e) {
CDICorePlugin.getDefault().logError(e);
}
}
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/definition/AbstractMemberDefinition.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/definition/AbstractMemberDefinition.java 2010-02-04
16:10:07 UTC (rev 20132)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/definition/AbstractMemberDefinition.java 2010-02-04
17:32:41 UTC (rev 20133)
@@ -54,6 +54,10 @@
return member;
}
+ public AbstractTypeDefinition getTypeDefinition() {
+ return null;
+ }
+
protected void init(IType contextType, DefinitionContext context) throws CoreException
{
resource = contextType.getResource();
IAnnotation[] ts = member.getAnnotations();
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-02-04
16:10:07 UTC (rev 20132)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/definition/AbstractTypeDefinition.java 2010-02-04
17:32:41 UTC (rev 20133)
@@ -13,10 +13,12 @@
import java.util.HashSet;
import java.util.Set;
+import org.eclipse.core.resources.IFile;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.jdt.core.IType;
import org.jboss.tools.cdi.core.IParametedType;
import org.jboss.tools.cdi.internal.core.impl.ParametedType;
+import org.jboss.tools.common.util.FileUtil;
/**
*
@@ -29,9 +31,15 @@
protected ParametedType parametedType = null;
Set<IParametedType> allInheritedTypes = null;
+
+ protected String content = null;
public AbstractTypeDefinition() {}
+ public AbstractTypeDefinition getTypeDefinition() {
+ return this;
+ }
+
public String getQualifiedName() {
return qualifiedName;
}
@@ -79,4 +87,12 @@
return allInheritedTypes;
}
+ public String getContent() {
+ if(type == null || type.isBinary()) return null;
+ if(content == null && resource instanceof IFile &&
resource.getName().endsWith(".java")) {
+ content = FileUtil.getContentFromEditorOrFile((IFile)resource);
+ }
+ return content;
+ }
+
}
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/definition/BeanMemberDefinition.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/definition/BeanMemberDefinition.java 2010-02-04
16:10:07 UTC (rev 20132)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/definition/BeanMemberDefinition.java 2010-02-04
17:32:41 UTC (rev 20133)
@@ -4,9 +4,18 @@
import org.jboss.tools.cdi.internal.core.impl.AnnotationDeclaration;
public class BeanMemberDefinition extends AbstractMemberDefinition {
+ AbstractTypeDefinition typeDefinition;
public BeanMemberDefinition() {}
+ public void setTypeDefinition(AbstractTypeDefinition typeDefinition) {
+ this.typeDefinition = typeDefinition;
+ }
+
+ public AbstractTypeDefinition getTypeDefinition() {
+ return typeDefinition;
+ }
+
public boolean isCDIAnnotated() {
return getInjectAnnotation() != null || getProducesAnnotation() != null;
}
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/definition/TypeDefinition.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/definition/TypeDefinition.java 2010-02-04
16:10:07 UTC (rev 20132)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/definition/TypeDefinition.java 2010-02-04
17:32:41 UTC (rev 20133)
@@ -46,6 +46,7 @@
IField[] fs = getType().getFields();
for (int i = 0; i < fs.length; i++) {
FieldDefinition f = new FieldDefinition();
+ f.setTypeDefinition(this);
f.setField(fs[i], context);
if(f.isCDIAnnotated()) {
fields.add(f);
@@ -54,6 +55,7 @@
IMethod[] ms = getType().getMethods();
for (int i = 0; i < ms.length; i++) {
MethodDefinition m = new MethodDefinition();
+ m.setTypeDefinition(this);
m.setMethod(ms[i], context);
if(m.isCDIAnnotated()) {
methods.add(m);