Bug #274942
diff --git a/bundles/org.eclipse.jst.ws.annotations.core/src/org/eclipse/jst/ws/annotations/core/AnnotationsManager.java b/bundles/org.eclipse.jst.ws.annotations.core/src/org/eclipse/jst/ws/annotations/core/AnnotationsManager.java
index 8256ac4..a6b37c6 100644
--- a/bundles/org.eclipse.jst.ws.annotations.core/src/org/eclipse/jst/ws/annotations/core/AnnotationsManager.java
+++ b/bundles/org.eclipse.jst.ws.annotations.core/src/org/eclipse/jst/ws/annotations/core/AnnotationsManager.java
@@ -58,11 +58,10 @@
     private static Map<String, IConfigurationElement> annotationInitializerCache = null;
     private static Map<String, List<IConfigurationElement>> annotationProcessorCache = null;
     private static Map<String, List<AnnotationDefinition>> annotationsByCategoryMap = null;
-    private static Map<Class<? extends Annotation>, AnnotationDefinition> annotationClassToDefinitionMap;
+    private static Map<String, AnnotationDefinition> annotationClassNameToDefinitionMap;
     private static Map<String, AnnotationDefinition> annotationSimpleNameToDefinitionMap;
     private static Map<String, AnnotationDefinition> annotationQualifiedNameToDefinitionMap;
 
-
     private static final String ATT_ID = "id"; //$NON-NLS-1$
     private static final String ATT_NAME = "name"; //$NON-NLS-1$
     private static final String ATT_CATEGORY = "category"; //$NON-NLS-1$
@@ -108,20 +107,20 @@
         return annotations.toArray();     
     }
     
-    private static synchronized Map<Class<? extends Annotation>, AnnotationDefinition> 
-            getAnnotationToClassDefinitionMap() {
-
-        if (annotationClassToDefinitionMap == null) {
+    private static synchronized Map<String, AnnotationDefinition> 
+            getAnnotationToClassNameDefinitionMap() {
+            
+        if (annotationClassNameToDefinitionMap == null) {
             List<AnnotationDefinition> annotationDefinitions = getAnnotations();
 
-            annotationClassToDefinitionMap = new HashMap<Class<? extends Annotation>, AnnotationDefinition>();
+            annotationClassNameToDefinitionMap = new HashMap<String, AnnotationDefinition>();
 
             for (AnnotationDefinition annotationDefinition : annotationDefinitions) {
-                annotationClassToDefinitionMap.put(annotationDefinition.getAnnotationClass(),
-                        annotationDefinition);
+            	annotationClassNameToDefinitionMap.put(annotationDefinition.getAnnotationClass()
+						.getCanonicalName(), annotationDefinition);
             }
         }
-        return annotationClassToDefinitionMap;
+        return annotationClassNameToDefinitionMap;
     }
     
     private static synchronized Map<String, AnnotationDefinition> getSimpleNameToDefinitionMap() {
@@ -154,7 +153,8 @@
     @SuppressWarnings("unchecked")
     public static AnnotationDefinition getAnnotationDefinitionForClass(Object element) {
         if (element instanceof Class && ((Class<?>)element).isAnnotation()) {
-            return getAnnotationToClassDefinitionMap().get((Class<? extends Annotation>)element);
+			return getAnnotationToClassNameDefinitionMap().get(
+					((Class<? extends Annotation>) element).getCanonicalName());
         }
         return null;
     }
@@ -174,7 +174,7 @@
     
     public static AnnotationDefinition getAnnotationDefinitionForClass(Class<? extends Annotation> 
             annotationClass) {
-        return getAnnotationToClassDefinitionMap().get(annotationClass);
+        return getAnnotationToClassNameDefinitionMap().get(annotationClass.getCanonicalName());
     }
     
     public static synchronized List<AnnotationDefinition> getAnnotationsByCategory(String categoryName) {
@@ -188,7 +188,8 @@
                 if (annotationDefinitionList == null) {
                     annotationDefinitionList = new ArrayList<AnnotationDefinition>();
                     annotationDefinitionList.add(annotationDefinition);
-                    annotationsByCategoryMap.put(annotationDefinition.getCategory(), annotationDefinitionList);
+                    annotationsByCategoryMap.put(annotationDefinition.getCategory(), 
+                    		annotationDefinitionList);
                     continue;
                 }
                 annotationDefinitionList.add(annotationDefinition);
@@ -258,7 +259,8 @@
                     IConfigurationElement element = elements[i];
                     if (element.getName().equalsIgnoreCase("processor")) {
                         String annotationKey = getAttributeValue(element, ANNOTATION);
-                        List<IConfigurationElement> configurationElements = annotationProcessorCache.get(annotationKey); 
+                        List<IConfigurationElement> configurationElements = annotationProcessorCache.get(
+                        		annotationKey); 
                         if (configurationElements == null) {
                             configurationElements = new ArrayList<IConfigurationElement>();
                             configurationElements.add(element);
@@ -376,8 +378,8 @@
         }
     }
     
-    private static boolean isClassRestricted(IJavaElement javaElement, AnnotationDefinition annotationDefinition) 
-            throws JavaModelException {
+    private static boolean isClassRestricted(IJavaElement javaElement,
+    		AnnotationDefinition annotationDefinition) throws JavaModelException {
         if (javaElement.getElementType() == IJavaElement.TYPE) {
             return !((IType)javaElement).isClass() && annotationDefinition.isClassOnly();
         }
@@ -392,8 +394,8 @@
         return false;
     }
     
-    private static boolean isInterfaceRestricted(IJavaElement javaElement, AnnotationDefinition annotationDefinition) 
-            throws JavaModelException {
+    private static boolean isInterfaceRestricted(IJavaElement javaElement,
+    		AnnotationDefinition annotationDefinition) throws JavaModelException {
         if (javaElement.getElementType() == IJavaElement.TYPE) {
             return !((IType)javaElement).isInterface() && annotationDefinition.isInterfaceOnly();
         }
@@ -408,8 +410,8 @@
         return false;
     }
     
-    private static boolean isEnumRestricted(IJavaElement javaElement, AnnotationDefinition annotationDefinition) 
-            throws JavaModelException {
+    private static boolean isEnumRestricted(IJavaElement javaElement,
+    		AnnotationDefinition annotationDefinition) throws JavaModelException {
         if (javaElement.getElementType() == IJavaElement.TYPE) {
             return !((IType)javaElement).isEnum() && annotationDefinition.isEnumOnly();            
         }