[371936] Java content assist very non-performant for strings in annotations
diff --git a/bundles/org.eclipse.jst.ws.annotations.core/META-INF/MANIFEST.MF b/bundles/org.eclipse.jst.ws.annotations.core/META-INF/MANIFEST.MF
index 4cba698..0017d36 100644
--- a/bundles/org.eclipse.jst.ws.annotations.core/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.jst.ws.annotations.core/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.jst.ws.annotations.core;singleton:=true
-Bundle-Version: 1.1.0.qualifier
+Bundle-Version: 1.2.0.qualifier
 Bundle-Localization: plugin
 Bundle-RequiredExecutionEnvironment: J2SE-1.5
 Bundle-Vendor: %pluginProvider
diff --git a/bundles/org.eclipse.jst.ws.annotations.core/src/org/eclipse/jst/ws/annotations/core/utils/AnnotationUtils.java b/bundles/org.eclipse.jst.ws.annotations.core/src/org/eclipse/jst/ws/annotations/core/utils/AnnotationUtils.java
index cbb7d5e..2b513e8 100644
--- a/bundles/org.eclipse.jst.ws.annotations.core/src/org/eclipse/jst/ws/annotations/core/utils/AnnotationUtils.java
+++ b/bundles/org.eclipse.jst.ws.annotations.core/src/org/eclipse/jst/ws/annotations/core/utils/AnnotationUtils.java
@@ -36,7 +36,9 @@
 import org.eclipse.jdt.core.JavaCore;
 import org.eclipse.jdt.core.JavaModelException;
 import org.eclipse.jdt.core.Signature;
+import org.eclipse.jdt.core.dom.AST;
 import org.eclipse.jdt.core.dom.ASTNode;
+import org.eclipse.jdt.core.dom.ASTParser;
 import org.eclipse.jdt.core.dom.ASTVisitor;
 import org.eclipse.jdt.core.dom.AbstractTypeDeclaration;
 import org.eclipse.jdt.core.dom.Annotation;
@@ -64,7 +66,6 @@
 import org.eclipse.jdt.core.dom.rewrite.ImportRewrite;
 import org.eclipse.jdt.core.dom.rewrite.ListRewrite;
 import org.eclipse.jdt.ui.CodeStyleConfiguration;
-import org.eclipse.jdt.ui.SharedASTProvider;
 import org.eclipse.jst.ws.annotations.core.AnnotationDefinition;
 import org.eclipse.jst.ws.annotations.core.AnnotationsCorePlugin;
 import org.eclipse.jst.ws.annotations.core.AnnotationsManager;
@@ -286,7 +287,7 @@
      * @throws CoreException the exception is thrown if the import rewrite fails.
      */
     public static TextEdit createAddImportTextEdit(IJavaElement javaElement, String qualifiedName) throws CoreException {
-        CompilationUnit compilationUnit = SharedASTProvider.getAST(getCompilationUnitFromJavaElement(javaElement), SharedASTProvider.WAIT_YES, null);
+        CompilationUnit compilationUnit = getAST(getCompilationUnitFromJavaElement(javaElement), false);
         ImportRewrite importRewrite = CodeStyleConfiguration.createImportRewrite(compilationUnit, true);
         importRewrite.addImport(qualifiedName);
         return importRewrite.rewriteImports(null);
@@ -312,7 +313,7 @@
      */
     @SuppressWarnings("unchecked")
     public static TextEdit createRemoveImportTextEdit(IJavaElement javaElement, String qualifiedName) throws CoreException {
-        CompilationUnit compilationUnit = SharedASTProvider.getAST(getCompilationUnitFromJavaElement(javaElement), SharedASTProvider.WAIT_YES, null);
+        CompilationUnit compilationUnit = getAST(getCompilationUnitFromJavaElement(javaElement), false);
         ImportRewrite importRewrite = CodeStyleConfiguration.createImportRewrite(compilationUnit, true);
         final String annotationSimpleName = qualifiedName.substring(qualifiedName.lastIndexOf(".") + 1);
         final List<String> occurences = new ArrayList<String>();
@@ -493,7 +494,7 @@
     private static TextEdit createAddAnnotationTextEdit(IPackageDeclaration packageDeclaration, Annotation annotation) throws JavaModelException {
         if (packageDeclaration != null && !isAnnotationPresent(packageDeclaration, AnnotationUtils.getAnnotationName(annotation))) {
             ICompilationUnit source = getCompilationUnitFromJavaElement(packageDeclaration);
-            CompilationUnit compilationUnit = SharedASTProvider.getAST(source, SharedASTProvider.WAIT_YES, null);
+            CompilationUnit compilationUnit = getAST(source, false);
             ASTRewrite rewriter = ASTRewrite.create(compilationUnit.getAST());
 
             ListRewrite listRewrite = rewriter.getListRewrite(compilationUnit.getPackage(), PackageDeclaration.ANNOTATIONS_PROPERTY);
@@ -508,14 +509,14 @@
     private static TextEdit createRemoveAnnotationTextEdit(IPackageDeclaration packageDeclaration, Annotation annotation) throws JavaModelException {
         if (packageDeclaration != null && isAnnotationPresent(packageDeclaration, getAnnotationName(annotation))) {
             ICompilationUnit source = getCompilationUnitFromJavaElement(packageDeclaration);
-            CompilationUnit compilationUnit = SharedASTProvider.getAST(source, SharedASTProvider.WAIT_YES, null);
+            CompilationUnit compilationUnit = getAST(source, false);
             ASTRewrite rewriter = ASTRewrite.create(compilationUnit.getAST());
 
             PackageDeclaration pkgDeclaration = compilationUnit.getPackage();
 
             ListRewrite listRewrite = rewriter.getListRewrite(pkgDeclaration, PackageDeclaration.ANNOTATIONS_PROPERTY);
 
-            @SuppressWarnings("unchecked")
+            @SuppressWarnings("rawtypes")
             List originalList = listRewrite.getOriginalList();
             for (Object object : originalList) {
                 if (object instanceof Annotation && compareAnnotationNames((Annotation) object, annotation)) {
@@ -548,7 +549,7 @@
 
             ListRewrite listRewrite = rewriter.getListRewrite(typeDeclaration, getChildListPropertyDescriptorForType(typeDeclaration));
 
-            @SuppressWarnings("unchecked")
+            @SuppressWarnings("rawtypes")
             List originalList = listRewrite.getOriginalList();
             for (Object object : originalList) {
                 if (object instanceof Annotation && compareAnnotationNames((Annotation)object, annotation)) {
@@ -581,7 +582,7 @@
 
             ListRewrite listRewrite = rewriter.getListRewrite(methodDeclaration,  MethodDeclaration.MODIFIERS2_PROPERTY);
 
-            @SuppressWarnings("unchecked")
+            @SuppressWarnings("rawtypes")
             List originalList = listRewrite.getOriginalList();
             for (Object object : originalList) {
                 if (object instanceof Annotation && compareAnnotationNames((Annotation) object, annotation)) {
@@ -615,7 +616,7 @@
 
             ListRewrite listRewrite = rewriter.getListRewrite(fieldDeclaration, FieldDeclaration.MODIFIERS2_PROPERTY);
 
-            @SuppressWarnings("unchecked")
+            @SuppressWarnings("rawtypes")
             List originalList = listRewrite.getOriginalList();
             for (Object object : originalList) {
                 if (object instanceof Annotation && compareAnnotationNames((Annotation) object, annotation)) {
@@ -648,7 +649,7 @@
 
             ListRewrite listRewrite = rewriter.getListRewrite(parameter, SingleVariableDeclaration.MODIFIERS2_PROPERTY);
 
-            @SuppressWarnings("unchecked")
+            @SuppressWarnings("rawtypes")
             List originalList = listRewrite.getOriginalList();
             for (Object object : originalList) {
                 if (object instanceof Annotation && compareAnnotationNames((Annotation)object, annotation)) {
@@ -694,7 +695,7 @@
 
         ListRewrite listRewrite = rewriter.getListRewrite(annotation, NormalAnnotation.VALUES_PROPERTY);
 
-        @SuppressWarnings("unchecked")
+        @SuppressWarnings("rawtypes")
         List originalList = listRewrite.getOriginalList();
         for (Object object : originalList) {
             if (object instanceof MemberValuePair) {
@@ -785,7 +786,7 @@
      */
     @SuppressWarnings("unchecked")
     public static AbstractTypeDeclaration getTypeDeclaration(IType type) {
-        CompilationUnit compilationUnit = SharedASTProvider.getAST(type.getCompilationUnit(), SharedASTProvider.WAIT_YES, null);
+        CompilationUnit compilationUnit = getAST(type.getCompilationUnit(), false);
         List<TypeDeclaration> types = compilationUnit.types();
         for (AbstractTypeDeclaration abstractTypeDeclaration : types) {
             if (compareTypeNames(abstractTypeDeclaration, type)) {
@@ -1066,10 +1067,9 @@
      */
     @SuppressWarnings("unchecked")
     public static List<Annotation> getAnnotations(IJavaElement javaElement) {
-        ICompilationUnit source = AnnotationUtils.getCompilationUnitFromJavaElement(javaElement);
-        CompilationUnit compilationUnit = SharedASTProvider.getAST(source, SharedASTProvider.WAIT_YES, null);
-
         if (javaElement.getElementType() == IJavaElement.PACKAGE_DECLARATION) {
+        	ICompilationUnit source = AnnotationUtils.getCompilationUnitFromJavaElement(javaElement);
+            CompilationUnit compilationUnit = getAST(source, false);
             PackageDeclaration packageDeclaration = compilationUnit.getPackage();
             return packageDeclaration.annotations();
         }
@@ -1127,7 +1127,7 @@
     @SuppressWarnings("unchecked")
     public static List<SingleVariableDeclaration> getSingleVariableDeclarations(final IMethod method) {
         ICompilationUnit source = method.getCompilationUnit();
-        CompilationUnit compilationUnit = SharedASTProvider.getAST(source, SharedASTProvider.WAIT_YES, null);
+        CompilationUnit compilationUnit = getAST(source, true);
         final List<SingleVariableDeclaration> parameters = new ArrayList<SingleVariableDeclaration>();
         compilationUnit.accept(new ASTVisitor() {
             @Override
@@ -1441,4 +1441,12 @@
         }
         return null;
     }
+
+    private static CompilationUnit getAST(ICompilationUnit source, boolean resolveBindings) {
+        final ASTParser parser = ASTParser.newParser(AST.JLS3);
+        parser.setResolveBindings(resolveBindings);
+        parser.setSource(source);
+        return (CompilationUnit) parser.createAST(null);
+    }
+
 }
diff --git a/bundles/org.eclipse.jst.ws.cxf.core/META-INF/MANIFEST.MF b/bundles/org.eclipse.jst.ws.cxf.core/META-INF/MANIFEST.MF
index aad7e14..2cd52c8 100644
--- a/bundles/org.eclipse.jst.ws.cxf.core/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.jst.ws.cxf.core/META-INF/MANIFEST.MF
@@ -46,7 +46,7 @@
  org.eclipse.ui.console;bundle-version="[3.3.0,4.0.0)",
  org.eclipse.emf.ecore;bundle-version="[2.4.0,3.0.0)",
  org.eclipse.jdt.apt.core;bundle-version="[3.3.100,4.0.0)",
- org.eclipse.jst.ws.annotations.core;bundle-version="[1.0.0,1.2.0)",
+ org.eclipse.jst.ws.annotations.core;bundle-version="[1.0.0,1.3.0)",
  org.eclipse.jst.ws.jaxws.core;bundle-version="[1.0.0,1.1.0)",
  org.eclipse.wst.command.env.core;bundle-version="[1.0.204,1.1.0)",
  javax.jws;bundle-version="[2.0.0,2.1.0)",
diff --git a/bundles/org.eclipse.jst.ws.cxf.creation.core/META-INF/MANIFEST.MF b/bundles/org.eclipse.jst.ws.cxf.creation.core/META-INF/MANIFEST.MF
index a1711d5..dd1ca76 100644
--- a/bundles/org.eclipse.jst.ws.cxf.creation.core/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.jst.ws.cxf.creation.core/META-INF/MANIFEST.MF
@@ -23,7 +23,7 @@
  org.eclipse.jst.j2ee;bundle-version="[1.1.100,1.2.0)",
  org.eclipse.jst.j2ee.core;bundle-version="[1.1.0,1.3.0)",
  org.eclipse.text;bundle-version="[3.4.0,4.0.0)",
- org.eclipse.jst.ws.annotations.core;bundle-version="[1.0.0,1.2.0)",
+ org.eclipse.jst.ws.annotations.core;bundle-version="[1.0.0,1.3.0)",
  org.eclipse.jst.ws.jaxws.core;bundle-version="[1.0.0,1.1.0)",
  org.eclipse.emf.ecore;bundle-version="[2.4.0,3.0.0)",
  org.eclipse.jem;bundle-version="[2.0.0,2.1.0)",
diff --git a/bundles/org.eclipse.jst.ws.cxf.creation.ui/META-INF/MANIFEST.MF b/bundles/org.eclipse.jst.ws.cxf.creation.ui/META-INF/MANIFEST.MF
index d545d5b..fd974af 100644
--- a/bundles/org.eclipse.jst.ws.cxf.creation.ui/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.jst.ws.cxf.creation.ui/META-INF/MANIFEST.MF
@@ -29,7 +29,7 @@
  org.eclipse.jst.ws.creation.ui;bundle-version="[1.0.305,1.1.0)",
  org.eclipse.jst.ws;bundle-version="[1.0.304,1.1.0)",
  org.eclipse.ltk.core.refactoring;bundle-version="[3.4.0,4.0.0)",
- org.eclipse.jst.ws.annotations.core;bundle-version="[1.0.0,1.2.0)",
+ org.eclipse.jst.ws.annotations.core;bundle-version="[1.0.0,1.3.0)",
  org.eclipse.jst.ws.jaxws.core;bundle-version="[1.0.0,1.1.0)",
  org.eclipse.emf.common;bundle-version="[2.4.0,3.0.0)",
  javax.wsdl;bundle-version="[1.6.2,1.7.0)",
diff --git a/bundles/org.eclipse.jst.ws.jaxws.core/META-INF/MANIFEST.MF b/bundles/org.eclipse.jst.ws.jaxws.core/META-INF/MANIFEST.MF
index e1260c1..9d8036e 100644
--- a/bundles/org.eclipse.jst.ws.jaxws.core/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.jst.ws.jaxws.core/META-INF/MANIFEST.MF
@@ -13,7 +13,7 @@
  org.eclipse.core.resources;bundle-version="[3.4.0,4.0.0)",
  org.eclipse.jdt.apt.core;bundle-version="[3.3.100,4.0.0)",
  org.eclipse.core.filesystem;bundle-version="[1.2.0,2.0.0)",
- org.eclipse.jst.ws.annotations.core;bundle-version="[1.0.0,1.2.0)",
+ org.eclipse.jst.ws.annotations.core;bundle-version="[1.0.0,1.3.0)",
  javax.wsdl;bundle-version="[1.6.2,1.7.0)",
  javax.xml.soap;bundle-version="[1.2.0,1.3.0)",
  org.apache.xerces;bundle-version="[2.9.0,3.0.0)",
diff --git a/bundles/org.eclipse.jst.ws.jaxws.ui/META-INF/MANIFEST.MF b/bundles/org.eclipse.jst.ws.jaxws.ui/META-INF/MANIFEST.MF
index bc81bb3..9907335 100755
--- a/bundles/org.eclipse.jst.ws.jaxws.ui/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.jst.ws.jaxws.ui/META-INF/MANIFEST.MF
@@ -17,7 +17,7 @@
  org.eclipse.ltk.core.refactoring;bundle-version="[3.4.0,4.0.0)",
  org.eclipse.ui.editors;bundle-version="[3.4.0,4.0.0)",
  org.eclipse.jdt.launching;bundle-version="[3.4.0,4.0.0)",
- org.eclipse.jst.ws.annotations.core;bundle-version="[1.0.0,1.2.0)",
+ org.eclipse.jst.ws.annotations.core;bundle-version="[1.0.0,1.3.0)",
  org.eclipse.jdt.apt.core;bundle-version="[3.3.100,4.0.0)",
  org.eclipse.jst.ws.jaxws.dom.runtime;bundle-version="[1.0.0,1.1.0)",
  org.eclipse.emf.ecore;bundle-version="[2.4.0,3.0.0)"
diff --git a/tests/org.eclipse.jst.ws.jaxb.core.tests/META-INF/MANIFEST.MF b/tests/org.eclipse.jst.ws.jaxb.core.tests/META-INF/MANIFEST.MF
index 34146e9..e16294a 100644
--- a/tests/org.eclipse.jst.ws.jaxb.core.tests/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.jst.ws.jaxb.core.tests/META-INF/MANIFEST.MF
@@ -14,7 +14,7 @@
  org.eclipse.jdt.launching;bundle-version="[3.4.0,4.0.0)",
  org.eclipse.ltk.core.refactoring;bundle-version="[3.4.0,4.0.0)",
  org.eclipse.ltk.ui.refactoring;bundle-version="[3.4.0,4.0.0)",
- org.eclipse.jst.ws.annotations.core;bundle-version="[1.0.0,1.2.0)",
+ org.eclipse.jst.ws.annotations.core;bundle-version="[1.0.0,1.3.0)",
  org.eclipse.jdt.apt.core;bundle-version="[3.3.100,4.0.0)",
  org.eclipse.text;bundle-version="[3.4.0,4.0.0)",
  org.eclipse.jdt.ui;bundle-version="[3.4.0,4.0.0)"
diff --git a/tests/org.eclipse.jst.ws.jaxws.core.tests/META-INF/MANIFEST.MF b/tests/org.eclipse.jst.ws.jaxws.core.tests/META-INF/MANIFEST.MF
index 3a99a8d..ade99ca 100644
--- a/tests/org.eclipse.jst.ws.jaxws.core.tests/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.jst.ws.jaxws.core.tests/META-INF/MANIFEST.MF
@@ -14,7 +14,7 @@
  org.eclipse.jdt.launching;bundle-version="[3.4.0,4.0.0)",
  org.eclipse.ltk.core.refactoring;bundle-version="[3.4.0,4.0.0)",
  org.eclipse.ltk.ui.refactoring;bundle-version="[3.4.0,4.0.0)",
- org.eclipse.jst.ws.annotations.core;bundle-version="[1.0.0,1.2.0)",
+ org.eclipse.jst.ws.annotations.core;bundle-version="[1.0.0,1.3.0)",
  org.eclipse.jdt.apt.core;bundle-version="[3.3.100,4.0.0)",
  org.eclipse.text;bundle-version="[3.4.0,4.0.0)",
  org.eclipse.jdt.ui;bundle-version="[3.4.0,4.0.0)"