Bug 252696
Tests for ITD content assist and getting them to pass.
diff --git a/org.eclipse.ajdt.core/src/org/eclipse/ajdt/core/codeconversion/AspectsConvertingParser.java b/org.eclipse.ajdt.core/src/org/eclipse/ajdt/core/codeconversion/AspectsConvertingParser.java
index 5e1417b..c58d6fe 100644
--- a/org.eclipse.ajdt.core/src/org/eclipse/ajdt/core/codeconversion/AspectsConvertingParser.java
+++ b/org.eclipse.ajdt.core/src/org/eclipse/ajdt/core/codeconversion/AspectsConvertingParser.java
@@ -423,6 +423,7 @@
String superClass = type.getSuperclassName();
if (declareExtends.size() > 0) {
superClass = (String) declareExtends.get(0);
+ superClass = superClass.replace('$', '.');
}
if (superClass != null) {
sb.append(" " + EXTENDS + " " + superClass);
@@ -439,12 +440,13 @@
if (type.isInterface()) {
sb.append(" " + EXTENDS + " ");
} else {
- sb.append(" " + IMPLEMENTS);
+ sb.append(" " + IMPLEMENTS + " ");
}
for (Iterator interfaceIter = declareImplements.iterator(); interfaceIter
.hasNext();) {
String interName = (String) interfaceIter.next();
+ interName = interName.replace('$', '.');
sb.append(" " + interName);
if (interfaceIter.hasNext()) {
sb.append(",");
@@ -501,7 +503,7 @@
IType type = unit.getType(new String(currentTypeName));
if (type.exists()) {
List /*IJavaElement*/ rels = model.getRelationshipsForElement(type, AJRelationshipManager.ASPECT_DECLARATIONS);
- StringBuffer sb = new StringBuffer();
+ StringBuffer sb = new StringBuffer("\n\t");
for (Iterator relIter = rels.iterator(); relIter.hasNext();) {
IJavaElement je = (IJavaElement) relIter.next();
IProgramElement declareElt = model.javaElementToProgramElement(je);
diff --git a/org.eclipse.ajdt.core/src/org/eclipse/ajdt/core/javaelements/AspectElement.java b/org.eclipse.ajdt.core/src/org/eclipse/ajdt/core/javaelements/AspectElement.java
index 13aa77d..57bca4b 100755
--- a/org.eclipse.ajdt.core/src/org/eclipse/ajdt/core/javaelements/AspectElement.java
+++ b/org.eclipse.ajdt.core/src/org/eclipse/ajdt/core/javaelements/AspectElement.java
@@ -10,13 +10,18 @@
*******************************************************************************/
package org.eclipse.ajdt.core.javaelements;
+import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.List;
+import org.aspectj.asm.IHierarchy;
import org.aspectj.asm.IProgramElement;
import org.aspectj.asm.IProgramElement.Accessibility;
import org.aspectj.asm.IProgramElement.ExtraInformation;
import org.aspectj.asm.IProgramElement.Kind;
+import org.aspectj.asm.internal.ProgramElement;
+import org.aspectj.bridge.ISourceLocation;
+import org.eclipse.ajdt.core.model.AJProjectModelFactory;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.jdt.core.IJavaElement;
import org.eclipse.jdt.core.IMethod;
@@ -62,6 +67,20 @@
info.setAJKind(IProgramElement.Kind.ASPECT);
info.setHandle(this);
info.setSourceRangeStart(0);
+
+ IProgramElement ipe = AJProjectModelFactory.getInstance().getModelForJavaElement(this).javaElementToProgramElement(this);
+ if (ipe != IHierarchy.NO_STRUCTURE) {
+ info.setAJExtraInfo(ipe.getExtraInfo());
+ info.setAJModifiers(ipe.getModifiers());
+ info.setFlags(getProgramElementModifiers(ipe));
+ info.setAJAccessibility(ipe.getAccessibility());
+ ISourceLocation sourceLocation = ipe.getSourceLocation();
+ info.setSourceRangeStart(sourceLocation.getOffset());
+ info.setNameSourceStart(sourceLocation.getOffset());
+ info.setNameSourceEnd(sourceLocation.getOffset() + ipe.getName().length());
+ }
+
+
return info;
}
@@ -374,4 +393,21 @@
}
return super.getHandleFromMemento(token, memento, workingCopyOwner);
}
+
+ static Field modfiersField = null;
+ static int getProgramElementModifiers(IProgramElement ipe) {
+ try {
+ if (modfiersField == null) {
+ modfiersField = ProgramElement.class.getDeclaredField("modifiers");
+ modfiersField.setAccessible(true);
+ }
+ return modfiersField.getInt(ipe);
+ } catch (SecurityException e) {
+ } catch (IllegalArgumentException e) {
+ } catch (NoSuchFieldException e) {
+ } catch (IllegalAccessException e) {
+ }
+ return -1;
+ }
+
}
diff --git a/org.eclipse.ajdt.core/src/org/eclipse/ajdt/core/javaelements/IntertypeElement.java b/org.eclipse.ajdt.core/src/org/eclipse/ajdt/core/javaelements/IntertypeElement.java
index 6dbdfc6..eaff891 100755
--- a/org.eclipse.ajdt.core/src/org/eclipse/ajdt/core/javaelements/IntertypeElement.java
+++ b/org.eclipse.ajdt.core/src/org/eclipse/ajdt/core/javaelements/IntertypeElement.java
@@ -10,11 +10,13 @@
*******************************************************************************/
package org.eclipse.ajdt.core.javaelements;
+import java.lang.reflect.Field;
import java.util.Iterator;
import java.util.List;
import org.aspectj.asm.IHierarchy;
import org.aspectj.asm.IProgramElement;
+import org.aspectj.asm.internal.ProgramElement;
import org.aspectj.bridge.ISourceLocation;
import org.eclipse.jdt.internal.core.SourceConstructorInfo;
import org.eclipse.ajdt.core.model.AJProjectModelFactory;
@@ -52,6 +54,7 @@
info.setName(name.toCharArray());
info.setAJKind(ipe.getKind());
info.setAJModifiers(ipe.getModifiers());
+ info.setFlags(getProgramElementModifiers(ipe));
info.setAJAccessibility(ipe.getAccessibility());
ISourceLocation sourceLocation = ipe.getSourceLocation();
info.setSourceRangeStart(sourceLocation.getOffset());
@@ -68,6 +71,21 @@
return info;
}
+ static Field modfiersField = null;
+ static int getProgramElementModifiers(IProgramElement ipe) {
+ try {
+ if (modfiersField == null) {
+ modfiersField = ProgramElement.class.getDeclaredField("modifiers");
+ modfiersField.setAccessible(true);
+ }
+ return modfiersField.getInt(ipe);
+ } catch (SecurityException e) {
+ } catch (IllegalArgumentException e) {
+ } catch (NoSuchFieldException e) {
+ } catch (IllegalAccessException e) {
+ }
+ return -1;
+ }
/**
@@ -185,30 +203,6 @@
}
- private String[] charArrayToStringArray(char[][] chars) {
- if (chars != null) {
- String[] strings = new String[chars.length];
- for (int i = 0; i < chars.length; i++) {
- strings[i] = new String(chars[i]);
- }
- return strings;
- } else {
- return new String[0];
- }
- }
-
- private String[] toSignatures(char[][] strings) {
- if (strings != null) {
- String[] sigs = new String[strings.length];
- for (int i = 0; i < sigs.length; i++) {
- sigs[i] = Signature.createTypeSignature(strings[i], true);
- }
- return sigs;
- } else {
- return new String[0];
- }
- }
-
/**
* @author andrew
* just expose all the protected setter methods