[332361] Wrong Service Endpoint Interface with CXF Runtime
[341039] Annotations view not seeing ILocalVariable annotations correctly after editing
[341041] NUL default values cause text fields to expand vertically in AnnotationArrayCellEditor
[339834] Annotation view filters selection lost on part closed
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 bb2cc5b..58f19c7 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
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.jst.ws.cxf.creation.core
-Bundle-Version: 1.0.0.qualifier
+Bundle-Version: 1.0.100.qualifier
 Bundle-ClassPath: .
 Bundle-Activator: org.eclipse.jst.ws.internal.cxf.creation.core.CXFCreationCorePlugin
 Bundle-Vendor: %pluginProvider
diff --git a/bundles/org.eclipse.jst.ws.cxf.creation.core/src/org/eclipse/jst/ws/internal/cxf/creation/core/commands/JAXWSAnnotateJavaCommand.java b/bundles/org.eclipse.jst.ws.cxf.creation.core/src/org/eclipse/jst/ws/internal/cxf/creation/core/commands/JAXWSAnnotateJavaCommand.java
index e2a186f..2c57fa6 100644
--- a/bundles/org.eclipse.jst.ws.cxf.creation.core/src/org/eclipse/jst/ws/internal/cxf/creation/core/commands/JAXWSAnnotateJavaCommand.java
+++ b/bundles/org.eclipse.jst.ws.cxf.creation.core/src/org/eclipse/jst/ws/internal/cxf/creation/core/commands/JAXWSAnnotateJavaCommand.java
@@ -89,6 +89,7 @@
         MultiTextEdit multiTextEdit = new MultiTextEdit();
         textFileChange.setEdit(multiTextEdit);
 
+        CXFModelUtils.getImportsChange(javaInterfaceType.getCompilationUnit(), model, textFileChange, false);
         CXFModelUtils.getWebServiceAnnotationChange(javaInterfaceType, model, textFileChange);
 
         IMethod[] typeMethods = JDTUtils.getPublicMethods(javaInterfaceType);
@@ -119,9 +120,6 @@
             }
         }
 
-        CXFModelUtils.getImportsChange(javaInterfaceType.getCompilationUnit(), model,
-                textFileChange, false);
-
         executeChange(monitor, textFileChange);
     }
 
@@ -135,6 +133,7 @@
         MultiTextEdit multiTextEdit = new MultiTextEdit();
         textFileChange.setEdit(multiTextEdit);
 
+        CXFModelUtils.getImportsChange(javaClassType.getCompilationUnit(), model, textFileChange, false);
         CXFModelUtils.getWebServiceAnnotationChange(javaClassType, model, textFileChange);
 
         IMethod[] typeMethods = JDTUtils.getPublicMethods(javaClassType);
@@ -165,9 +164,6 @@
             }
         }
 
-        CXFModelUtils.getImportsChange(javaClassType.getCompilationUnit(), model,
-                textFileChange, false);
-
         executeChange(monitor, textFileChange);
     }
 
@@ -181,11 +177,9 @@
         MultiTextEdit multiTextEdit = new MultiTextEdit();
         textFileChange.setEdit(multiTextEdit);
 
+        CXFModelUtils.getImportsChange(javaClassType.getCompilationUnit(), model, textFileChange, true);
         CXFModelUtils.getWebServiceAnnotationChange(javaClassType, model, textFileChange);
 
-        CXFModelUtils.getImportsChange(javaClassType.getCompilationUnit(), model,
-                textFileChange, true);
-
         executeChange(monitor, textFileChange);
     }
 
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 40c3d3d..079c554 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
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.jst.ws.cxf.creation.ui;singleton:=true
-Bundle-Version: 1.0.0.qualifier
+Bundle-Version: 1.0.100.qualifier
 Bundle-ClassPath: .
 Bundle-Activator: org.eclipse.jst.ws.internal.cxf.creation.ui.CXFCreationUIPlugin
 Bundle-Vendor: %pluginProvider
diff --git a/bundles/org.eclipse.jst.ws.cxf.creation.ui/src/org/eclipse/jst/ws/internal/cxf/creation/ui/widgets/JAXWSAnnotateJavaWidget.java b/bundles/org.eclipse.jst.ws.cxf.creation.ui/src/org/eclipse/jst/ws/internal/cxf/creation/ui/widgets/JAXWSAnnotateJavaWidget.java
index 6fc9f65..11c99d1 100644
--- a/bundles/org.eclipse.jst.ws.cxf.creation.ui/src/org/eclipse/jst/ws/internal/cxf/creation/ui/widgets/JAXWSAnnotateJavaWidget.java
+++ b/bundles/org.eclipse.jst.ws.cxf.creation.ui/src/org/eclipse/jst/ws/internal/cxf/creation/ui/widgets/JAXWSAnnotateJavaWidget.java
@@ -408,6 +408,7 @@
             textFileChange.setEdit(multiTextEdit);
             textFileChange.setKeepPreviewEdits(true);
 
+            CXFModelUtils.getImportsChange(compilationUnit, model, textFileChange, false);
             CXFModelUtils.getWebServiceAnnotationChange(type, model, textFileChange);
 
             IMethod[] typeMethods = JDTUtils.getPublicMethods(type);
@@ -432,7 +433,6 @@
                 }
             }
 
-            CXFModelUtils.getImportsChange(compilationUnit, model, textFileChange, false);
             annotationPreviewViewer.getDocument().set(textFileChange.getPreviewContent(monitor));
 
             annotationPreviewViewer.setRedraw(true);
diff --git a/bundles/org.eclipse.jst.ws.jaxws.ui/src/org/eclipse/jst/ws/internal/jaxws/ui/actions/AnnotationsViewFilterAction.java b/bundles/org.eclipse.jst.ws.jaxws.ui/src/org/eclipse/jst/ws/internal/jaxws/ui/actions/AnnotationsViewFilterAction.java
index 6b8f334..e8b95e6 100644
--- a/bundles/org.eclipse.jst.ws.jaxws.ui/src/org/eclipse/jst/ws/internal/jaxws/ui/actions/AnnotationsViewFilterAction.java
+++ b/bundles/org.eclipse.jst.ws.jaxws.ui/src/org/eclipse/jst/ws/internal/jaxws/ui/actions/AnnotationsViewFilterAction.java
@@ -1,4 +1,4 @@
- /*******************************************************************************
+/*******************************************************************************
  * Copyright (c) 2009 Shane Clarke.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
@@ -25,13 +25,12 @@
 import org.eclipse.jst.ws.internal.jaxws.ui.views.AnnotationsView;
 import org.eclipse.jst.ws.internal.jaxws.ui.views.AnnotationsViewCategoryFilter;
 import org.eclipse.swt.graphics.Image;
-import org.eclipse.ui.IMemento;
 import org.eclipse.ui.dialogs.ListSelectionDialog;
 
 public class AnnotationsViewFilterAction extends Action {
     private StructuredViewer viewer;
     private AnnotationsViewCategoryFilter categoryFilter;
-    
+
     public AnnotationsViewFilterAction(AnnotationsView annotationsView, StructuredViewer viewer, String text) {
         super(text);
         this.viewer = viewer;
@@ -43,31 +42,31 @@
     public void run() {
         ListSelectionDialog listSelectionDialog = new ListSelectionDialog(viewer.getControl().getShell(),
                 AnnotationsManager.getAnnotationCategories(), new AnnotationsCategoryDialogContentProvider(),
-                new AnnotationsCategoryDialogLabelProvider(), 
+                new AnnotationsCategoryDialogLabelProvider(),
                 JAXWSUIMessages.ANNOTATIONS_VIEW_FILTER_ACTION_SELECT_CATEGORIES_MESSAGE);
-        
+
         listSelectionDialog.setInitialElementSelections(categoryFilter.getCategories());
-        
+
         int returnValue = listSelectionDialog.open();
         if (returnValue == Window.OK) {
             Object[] result = listSelectionDialog.getResult();
             categoryFilter.filterAnnotations(Arrays.asList(result));
         }
     }
-    
-    public void init(IMemento memento) {
-        categoryFilter.init(memento);
+
+    public void init() {
+        categoryFilter.init();
     }
-    
-    public void saveState(IMemento memento) {
-        categoryFilter.saveState(memento);
+
+    public void saveState() {
+        categoryFilter.saveState();
     }
-    
+
     private static class AnnotationsCategoryDialogContentProvider implements IStructuredContentProvider {
 
         public Object[] getElements(Object inputElement) {
             if (inputElement instanceof List) {
-                return ((List<String>)inputElement).toArray();
+                return ((List<?>)inputElement).toArray();
             }
             return new Object[] {};
         }
@@ -77,14 +76,16 @@
 
         public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
         }
-        
+
     }
-    
+
     private static class AnnotationsCategoryDialogLabelProvider extends LabelProvider {
+        @Override
         public String getText(Object element) {
             return element.toString();
         }
 
+        @Override
         public Image getImage(Object element) {
             return null;
         }
diff --git a/bundles/org.eclipse.jst.ws.jaxws.ui/src/org/eclipse/jst/ws/internal/jaxws/ui/views/AnnotationArrayCellEditor.java b/bundles/org.eclipse.jst.ws.jaxws.ui/src/org/eclipse/jst/ws/internal/jaxws/ui/views/AnnotationArrayCellEditor.java
index dd241c4..e3dff5c 100644
--- a/bundles/org.eclipse.jst.ws.jaxws.ui/src/org/eclipse/jst/ws/internal/jaxws/ui/views/AnnotationArrayCellEditor.java
+++ b/bundles/org.eclipse.jst.ws.jaxws.ui/src/org/eclipse/jst/ws/internal/jaxws/ui/views/AnnotationArrayCellEditor.java
@@ -16,8 +16,8 @@
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
-import java.util.Set;
 import java.util.Map.Entry;
+import java.util.Set;
 
 import org.eclipse.jdt.core.IAnnotation;
 import org.eclipse.jdt.core.IMemberValuePair;
@@ -427,7 +427,7 @@
                         String[] values = (String[]) defaultValue;
                         text.setText(values[0]);
                     } else {
-                        text.setText(defaultValue.toString());
+                        text.setText(defaultValue.toString().trim());
                     }
                 }
                 controls.put(method.getName(), text);
diff --git a/bundles/org.eclipse.jst.ws.jaxws.ui/src/org/eclipse/jst/ws/internal/jaxws/ui/views/AnnotationsValuesEditingSupport.java b/bundles/org.eclipse.jst.ws.jaxws.ui/src/org/eclipse/jst/ws/internal/jaxws/ui/views/AnnotationsValuesEditingSupport.java
index 2f7cb59..36931eb 100644
--- a/bundles/org.eclipse.jst.ws.jaxws.ui/src/org/eclipse/jst/ws/internal/jaxws/ui/views/AnnotationsValuesEditingSupport.java
+++ b/bundles/org.eclipse.jst.ws.jaxws.ui/src/org/eclipse/jst/ws/internal/jaxws/ui/views/AnnotationsValuesEditingSupport.java
@@ -16,8 +16,8 @@
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
-import java.util.Set;
 import java.util.Map.Entry;
+import java.util.Set;
 
 import org.eclipse.core.resources.IFile;
 import org.eclipse.core.runtime.CoreException;
@@ -27,7 +27,9 @@
 import org.eclipse.jdt.core.IAnnotation;
 import org.eclipse.jdt.core.ICompilationUnit;
 import org.eclipse.jdt.core.IJavaElement;
+import org.eclipse.jdt.core.ILocalVariable;
 import org.eclipse.jdt.core.IMemberValuePair;
+import org.eclipse.jdt.core.IMethod;
 import org.eclipse.jdt.core.JavaModelException;
 import org.eclipse.jdt.core.dom.AST;
 import org.eclipse.jdt.core.dom.ASTNode;
@@ -174,6 +176,12 @@
     }
 
     private Object getValueForClass(Class<?> aClass, IAnnotatable annotatedElement) {
+        if (annotatedElement instanceof ILocalVariable) {
+            ILocalVariable localVariable = getLocalVariable(annotatedElement);
+            if (localVariable != null) {
+                annotatedElement = localVariable;
+            }
+        }
         try {
             IAnnotation[] annotations = annotatedElement.getAnnotations();
             for (IAnnotation annotation : annotations) {
@@ -203,6 +211,12 @@
     }
 
     private Object getValueForMethod(Method method, IAnnotatable annotatedElement) throws JavaModelException {
+        if (annotatedElement instanceof ILocalVariable) {
+            ILocalVariable localVariable = getLocalVariable(annotatedElement);
+            if (localVariable != null) {
+                annotatedElement = localVariable;
+            }
+        }
         Class<?> returnType = method.getReturnType();
         IAnnotation[] annotations = annotatedElement.getAnnotations();
         for (IAnnotation annotation : annotations) {
@@ -277,6 +291,18 @@
         return null;
     }
 
+    private ILocalVariable getLocalVariable(IAnnotatable annotatedElement) {
+        ILocalVariable localVariable = (ILocalVariable) annotatedElement;
+        if (localVariable.getParent() instanceof IMethod) {
+            IMethod parent = (IMethod) localVariable.getParent();
+            localVariable = AnnotationUtils.getLocalVariable(parent, localVariable.getElementName());
+            if (localVariable != null) {
+                return localVariable;
+            }
+        }
+        return null;
+    }
+
     @Override
     protected void setValue(Object element, Object value) {
         if (value == null) {
@@ -361,8 +387,8 @@
                     || javaElement.getElementType() == IJavaElement.FIELD
                     || javaElement.getElementType() == IJavaElement.METHOD
                     || javaElement.getElementType() == IJavaElement.LOCAL_VARIABLE) {
-                change.addEdit(AnnotationUtils.createAddAnnotationTextEdit(javaElement, annotation));
                 change.addEdit(AnnotationUtils.createAddImportTextEdit(javaElement, annotationClass.getCanonicalName()));
+                change.addEdit(AnnotationUtils.createAddAnnotationTextEdit(javaElement, annotation));
             }
         } else {
             if (javaElement.getElementType() == IJavaElement.PACKAGE_DECLARATION
@@ -370,8 +396,8 @@
                     || javaElement.getElementType() == IJavaElement.FIELD
                     || javaElement.getElementType() == IJavaElement.METHOD
                     || javaElement.getElementType() == IJavaElement.LOCAL_VARIABLE) {
-                change.addEdit(AnnotationUtils.createRemoveAnnotationTextEdit(javaElement, annotation));
                 change.addEdit(AnnotationUtils.createRemoveImportTextEdit(javaElement, annotationClass.getCanonicalName()));
+                change.addEdit(AnnotationUtils.createRemoveAnnotationTextEdit(javaElement, annotation));
             }
         }
         executeChange(new NullProgressMonitor(), change);
diff --git a/bundles/org.eclipse.jst.ws.jaxws.ui/src/org/eclipse/jst/ws/internal/jaxws/ui/views/AnnotationsView.java b/bundles/org.eclipse.jst.ws.jaxws.ui/src/org/eclipse/jst/ws/internal/jaxws/ui/views/AnnotationsView.java
index 37559de..15b867c 100755
--- a/bundles/org.eclipse.jst.ws.jaxws.ui/src/org/eclipse/jst/ws/internal/jaxws/ui/views/AnnotationsView.java
+++ b/bundles/org.eclipse.jst.ws.jaxws.ui/src/org/eclipse/jst/ws/internal/jaxws/ui/views/AnnotationsView.java
@@ -57,10 +57,8 @@
 import org.eclipse.ui.IEditorInput;
 import org.eclipse.ui.IEditorPart;
 import org.eclipse.ui.IFileEditorInput;
-import org.eclipse.ui.IMemento;
 import org.eclipse.ui.INullSelectionListener;
 import org.eclipse.ui.IPartListener2;
-import org.eclipse.ui.IViewSite;
 import org.eclipse.ui.IWorkbenchPage;
 import org.eclipse.ui.IWorkbenchPart;
 import org.eclipse.ui.IWorkbenchPartReference;
@@ -73,6 +71,8 @@
 import org.eclipse.ui.texteditor.ITextEditor;
 
 public class AnnotationsView extends ViewPart implements INullSelectionListener, IPartListener2 {
+    private static final String VIEW_ID = "org.eclipse.jst.ws.jaxws.ui.views.AnnotationsView";
+
     private PageBook pageBook;
     private Tree annotationTree;
 
@@ -81,8 +81,6 @@
 
     private TreeViewer annotationTreeViewer;
 
-    private IMemento memento;
-
     private AnnotationsViewFilterAction annotationsViewFilterAction;
 
     public AnnotationsView() {
@@ -338,6 +336,9 @@
     }
 
     public void partOpened(IWorkbenchPartReference partRef) {
+        if (partRef.getId().equals(VIEW_ID)) {
+            annotationsViewFilterAction.init();
+        }
     }
 
     public void partClosed(IWorkbenchPartReference partRef) {
@@ -362,6 +363,8 @@
                     }
                 }
             }
+        } else if (partRef.getId().equals(VIEW_ID)) {
+            annotationsViewFilterAction.saveState();
         }
     }
 
@@ -413,18 +416,6 @@
         getViewSite().getWorkbenchWindow().getPartService().removePartListener(this);
     }
 
-    @Override
-    public void init(IViewSite site, IMemento memento) throws PartInitException {
-        super.init(site, memento);
-        this.memento = memento;
-    }
-
-    @Override
-    public void saveState(IMemento memento) {
-        super.saveState(memento);
-        annotationsViewFilterAction.saveState(memento);
-    }
-
     private void contributeToActionBars() {
         IActionBars bars = getViewSite().getActionBars();
         fillLocalPullDown(bars.getMenuManager());
@@ -433,9 +424,6 @@
     private void fillLocalPullDown(IMenuManager manager) {
         annotationsViewFilterAction = new AnnotationsViewFilterAction(this, annotationTreeViewer,
                 JAXWSUIMessages.ANNOTATIONS_VIEW_FILTER_ACTION_NAME);
-        if (memento != null) {
-            annotationsViewFilterAction.init(memento);
-        }
         manager.add(annotationsViewFilterAction);
     }
 
diff --git a/bundles/org.eclipse.jst.ws.jaxws.ui/src/org/eclipse/jst/ws/internal/jaxws/ui/views/AnnotationsViewCategoryFilter.java b/bundles/org.eclipse.jst.ws.jaxws.ui/src/org/eclipse/jst/ws/internal/jaxws/ui/views/AnnotationsViewCategoryFilter.java
index dc6af12..e51bd7b 100644
--- a/bundles/org.eclipse.jst.ws.jaxws.ui/src/org/eclipse/jst/ws/internal/jaxws/ui/views/AnnotationsViewCategoryFilter.java
+++ b/bundles/org.eclipse.jst.ws.jaxws.ui/src/org/eclipse/jst/ws/internal/jaxws/ui/views/AnnotationsViewCategoryFilter.java
@@ -14,15 +14,15 @@
 import java.util.ArrayList;
 import java.util.List;
 
+import org.eclipse.jface.dialogs.IDialogSettings;
 import org.eclipse.jface.viewers.StructuredViewer;
 import org.eclipse.jface.viewers.Viewer;
 import org.eclipse.jface.viewers.ViewerFilter;
 import org.eclipse.jst.ws.annotations.core.AnnotationDefinition;
 import org.eclipse.jst.ws.annotations.core.AnnotationsManager;
-import org.eclipse.ui.IMemento;
+import org.eclipse.jst.ws.internal.jaxws.ui.JAXWSUIPlugin;
 
 public class AnnotationsViewCategoryFilter extends ViewerFilter {
-    private static final String TAG_CATEGORY = "AnnotationCategoryFilterInfo"; //$NON-NLS-1$
     private static final String TAG_CATEGORY_NAME = "categoryName"; //$NON-NLS-1$
 
     private AnnotationsView annotationsView;
@@ -40,7 +40,7 @@
     public boolean select(Viewer viewer, Object parentElement, Object element) {
         if (element instanceof Class && ((Class<?>) element).isAnnotation()) {
             AnnotationDefinition annotationDefinition = AnnotationsManager.
-                getAnnotationDefinitionForClass((Class<? extends Annotation>)element);
+            getAnnotationDefinitionForClass((Class<? extends Annotation>) element);
             if (annotationDefinition != null) {
                 return !categories.contains(annotationDefinition.getCategory());
             }
@@ -62,29 +62,20 @@
         return categories;
     }
 
-    public void init(IMemento memento) {
-        IMemento catMemento = memento.getChild(TAG_CATEGORY);
-        if (catMemento == null) {
-            return;
-        }
-        for (int i = 0; i < AnnotationsManager.getAnnotationCategories().size(); i++) {
-            String category = catMemento.getString(TAG_CATEGORY_NAME + i);
-            if (category != null) {
+    public void init() {
+        IDialogSettings settings = JAXWSUIPlugin.getDefault().getDialogSettings();
+        String[] cat = settings.getArray(TAG_CATEGORY_NAME);
+        if (cat != null) {
+            for (String category : cat) {
                 categories.add(category);
             }
         }
         filterAnnotations(categories);
     }
 
-    public void saveState(IMemento memento) {
-        if (categories == null || categories.size() == 0) {
-            return;
-        }
-        IMemento catMemento = memento.createChild(TAG_CATEGORY);
-        int i = 0;
-        for (Object category : categories) {
-            catMemento.putString(TAG_CATEGORY_NAME + i, category.toString());
-            i++;
-        }
+    public void saveState() {
+        IDialogSettings settings = JAXWSUIPlugin.getDefault().getDialogSettings();
+        settings.put(TAG_CATEGORY_NAME, categories.toArray(new String[categories.size()]));
     }
+
 }