[281872] Content assist failing in JSP files after upgrade to Galileo
diff --git a/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/contentassist/StructuredContentAssistProcessor.java b/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/contentassist/StructuredContentAssistProcessor.java
index affa812..80c7417 100644
--- a/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/contentassist/StructuredContentAssistProcessor.java
+++ b/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/contentassist/StructuredContentAssistProcessor.java
@@ -329,6 +329,22 @@
 		return this.fContextInformationValidator;
 	}
 	
+	public void install(ITextViewer viewer) {
+		if (fPreferenceStore != null) {
+			fPreferenceStore.addPropertyChangeListener(this);
+		}
+		if (fViewer != null) {
+			fViewer.removeTextInputListener(fTextInputListener);
+		}
+		fViewer = viewer;
+		if (fViewer != null) {
+			fViewer.addTextInputListener(fTextInputListener);
+		}
+		if (fAssistant != null) {
+			fAssistant.addCompletionListener(fCompletionListener);
+		}
+	}
+
 	/**
 	 * <p>Extenders may override, but should always be sure to call the super implementation</p>
 	 * 
@@ -341,7 +357,6 @@
 		}
 		if(this.fPreferenceStore != null) {
 			this.fPreferenceStore.removePropertyChangeListener(this);
-			this.fPreferenceStore = null;
 		}
 		
 		if(this.fViewer != null) {
@@ -350,7 +365,6 @@
 		}
 		if (this.fAssistant != null) {
 			this.fAssistant.removeCompletionListener(fCompletionListener);
-			this.fAssistant = null;
 		}
 	}
 	
diff --git a/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/contentassist/CompoundContentAssistProcessor.java b/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/contentassist/CompoundContentAssistProcessor.java
index 49c0ae7..7e89b43 100644
--- a/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/contentassist/CompoundContentAssistProcessor.java
+++ b/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/contentassist/CompoundContentAssistProcessor.java
@@ -35,6 +35,7 @@
 import org.eclipse.jface.text.contentassist.IContextInformationPresenter;
 import org.eclipse.jface.text.contentassist.IContextInformationValidator;
 import org.eclipse.swt.graphics.Image;
+import org.eclipse.wst.sse.ui.contentassist.StructuredContentAssistProcessor;
 import org.eclipse.wst.sse.ui.internal.IReleasable;
 import org.eclipse.wst.sse.ui.internal.Logger;
 
@@ -354,6 +355,15 @@
 		this.release();
 	}
 	
+	public void install(ITextViewer viewer) {
+		for (Iterator it = fProcessors.iterator(); it.hasNext();) {
+			IContentAssistProcessor p = (IContentAssistProcessor) it.next();
+			if (p instanceof StructuredContentAssistProcessor) {
+				((StructuredContentAssistProcessor) p).install(viewer);
+			}
+		}
+	}
+
 	/**
 	 * @see org.eclipse.wst.sse.ui.internal.IReleasable#release()
 	 */
@@ -365,7 +375,6 @@
 				((IReleasable) p).release();
 			}
 		}
-		fProcessors.clear();
 	}
 	
 	private static class WrappedContextInformation implements IContextInformation, IContextInformationExtension {
diff --git a/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/contentassist/StructuredContentAssistant.java b/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/contentassist/StructuredContentAssistant.java
index b10942c..8d124ce 100644
--- a/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/contentassist/StructuredContentAssistant.java
+++ b/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/contentassist/StructuredContentAssistant.java
@@ -15,6 +15,7 @@
 import java.util.ArrayList;
 import java.util.List;
 
+import org.eclipse.jface.text.ITextViewer;
 import org.eclipse.jface.text.contentassist.ContentAssistant;
 import org.eclipse.jface.text.contentassist.IContentAssistProcessor;
 import org.eclipse.wst.sse.ui.internal.IReleasable;
@@ -33,6 +34,8 @@
 	 */
 	private boolean fIsInitalized;
 	
+	private boolean fProcessorsReleased = false;
+
 	/**
 	 * <p>Construct the assistant</p>
 	 */
@@ -92,7 +95,19 @@
 		}
 		return compoundContentAssistProcessor;
 	}
-	
+
+	public void install(ITextViewer textViewer) {
+		if (fProcessorsReleased) {
+			if (this.fReleasableProcessors != null && !this.fReleasableProcessors.isEmpty()) {
+				for(int i = 0; i < this.fReleasableProcessors.size(); ++i) {
+					((CompoundContentAssistProcessor)this.fReleasableProcessors.get(i)).install(textViewer);
+				}
+			}
+			fProcessorsReleased = false;
+		}
+		super.install(textViewer);
+	}
+
 	/**
 	 * @see org.eclipse.jface.text.contentassist.ContentAssistant#uninstall()
 	 */
@@ -102,11 +117,8 @@
 			for(int i = 0; i < this.fReleasableProcessors.size(); ++i) {
 				((IReleasable)this.fReleasableProcessors.get(i)).release();
 			}
-			
-			this.fReleasableProcessors.clear();
 		}
-		this.fReleasableProcessors = null;
-		
+		fProcessorsReleased = true;
 		super.uninstall();
 	}
 }
\ No newline at end of file