[130402] contentassistprocessor provisional extension point crashes workbench
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 62bb1dc..d621b35 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
@@ -49,7 +49,7 @@
if (fProcessors == null)
fProcessors = new HashMap();
- CompoundContentAssistProcessor compoundProcessor = (CompoundContentAssistProcessor) getContentAssistProcessor(partitionType);
+ CompoundContentAssistProcessor compoundProcessor = getExistingContentAssistProcessor(partitionType);
// if processor is null, you want to remove all processors of
// contentType
@@ -72,6 +72,21 @@
super.setContentAssistProcessor(compoundProcessor, partitionType);
}
+ private CompoundContentAssistProcessor getExistingContentAssistProcessor(String partitionType) {
+ CompoundContentAssistProcessor compoundContentAssistProcessor = null;
+ IContentAssistProcessor processor = super.getContentAssistProcessor(partitionType);
+ if (processor != null) {
+ if (processor instanceof CompoundContentAssistProcessor) {
+ compoundContentAssistProcessor = (CompoundContentAssistProcessor) processor;
+ }
+ else {
+ throw new IllegalStateException("StructuredContentAssistant use CompoundContentAssistProcessor");
+ }
+ }
+ return compoundContentAssistProcessor;
+
+ }
+
/**
* Returns the content assist processor to be used for the given content
* type. Also installs any content assist processors that were added by