Author: bbrodt
Date: 2010-11-08 14:23:54 -0500 (Mon, 08 Nov 2010)
New Revision: 26338
Modified:
trunk/bpel/plugins/org.eclipse.bpel.common.model/src/org/eclipse/bpel/common/extension/model/impl/ExtensionMapImpl.java
trunk/bpel/plugins/org.eclipse.bpel.common.ui/src/org/eclipse/bpel/common/ui/editmodel/EditModelClient.java
trunk/bpel/plugins/org.eclipse.bpel.common.ui/src/org/eclipse/bpel/common/ui/editmodel/SynchronizationManager.java
trunk/bpel/plugins/org.eclipse.bpel.common.ui/src/org/eclipse/bpel/common/ui/messages.properties
trunk/bpel/plugins/org.eclipse.bpel.ui/src/org/eclipse/bpel/ui/BPELMultipageEditorPart.java
trunk/bpel/plugins/org.eclipse.bpel.ui/src/org/eclipse/bpel/ui/Messages.java
trunk/bpel/plugins/org.eclipse.bpel.ui/src/org/eclipse/bpel/ui/messages.properties
trunk/bpel/plugins/org.eclipse.bpel.ui/src/org/eclipse/bpel/ui/util/BPELEditModelClient.java
trunk/bpel/plugins/org.eclipse.bpel.ui/src/org/eclipse/bpel/ui/util/BPELReader.java
trunk/bpel/plugins/org.eclipse.bpel.ui/src/org/eclipse/bpel/ui/util/ModelHelper.java
Log:
OPEN - issue JBIDE-7520: BPEL Editor crashes on startup if extension model is corrupt
https://jira.jboss.org/browse/JBIDE-7520
Modified:
trunk/bpel/plugins/org.eclipse.bpel.common.model/src/org/eclipse/bpel/common/extension/model/impl/ExtensionMapImpl.java
===================================================================
---
trunk/bpel/plugins/org.eclipse.bpel.common.model/src/org/eclipse/bpel/common/extension/model/impl/ExtensionMapImpl.java 2010-11-08
19:16:11 UTC (rev 26337)
+++
trunk/bpel/plugins/org.eclipse.bpel.common.model/src/org/eclipse/bpel/common/extension/model/impl/ExtensionMapImpl.java 2010-11-08
19:23:54 UTC (rev 26338)
@@ -757,24 +757,38 @@
// There is no adapter associated with this bject so we must search the
// Extension list. Once the Extension is found, associate an adapter with this
// object to improve performance in future queries.
- if( extension == null){
-
- for( Extension ext : getExtensions()) {
- if (ext.getExtendedObject() != null &&
ext.getExtendedObject().equals(extendedObject)){
- extension = ext;
-
- ExtensionmodelAdapterFactory adapterFactory = new ExtensionmodelAdapterFactory();
-
- ExtendedObjectAdapter extAdptr = (ExtendedObjectAdapter)
adapterFactory.createExtendedObjectAdapter();
-
- extAdptr.setExtension(extension);
- extAdptr.setNamespace(getNamespace());
-
- ExtensionmodelFactory.eINSTANCE.adaptEObject(extendedObject,extAdptr);
-
- adapterFactory.adapt(extension,ExtensionAdapterImpl.class);
-
- break;
+ if (extension == null) {
+
+ EList<Extension> extensions = getExtensions();
+ int len = extensions.size();
+ for (int i = 0; i < len; ++i) {
+ Extension ext = extensions.get(i);
+ EObject extObject = ext.getExtendedObject();
+ if (extObject != null) {
+ if (ext.getExtendedObject().equals(extendedObject)) {
+ extension = ext;
+
+ ExtensionmodelAdapterFactory adapterFactory = new ExtensionmodelAdapterFactory();
+
+ ExtendedObjectAdapter extAdptr = (ExtendedObjectAdapter) adapterFactory
+ .createExtendedObjectAdapter();
+
+ extAdptr.setExtension(extension);
+ extAdptr.setNamespace(getNamespace());
+
+ ExtensionmodelFactory.eINSTANCE.adaptEObject(extendedObject, extAdptr);
+
+ adapterFactory.adapt(extension, ExtensionAdapterImpl.class);
+
+ break;
+ } else if (extObject.eIsProxy()) {
+ //
https://jira.jboss.org/browse/JBIDE-7520
+ // this thing has not been resolved - the extension
+ // model is out of sync with the BPEL model so remove
+ // this extension from the model
+ extensions.remove(i--);
+ --len;
+ }
}
}
Modified:
trunk/bpel/plugins/org.eclipse.bpel.common.ui/src/org/eclipse/bpel/common/ui/editmodel/EditModelClient.java
===================================================================
---
trunk/bpel/plugins/org.eclipse.bpel.common.ui/src/org/eclipse/bpel/common/ui/editmodel/EditModelClient.java 2010-11-08
19:16:11 UTC (rev 26337)
+++
trunk/bpel/plugins/org.eclipse.bpel.common.ui/src/org/eclipse/bpel/common/ui/editmodel/EditModelClient.java 2010-11-08
19:23:54 UTC (rev 26338)
@@ -13,6 +13,7 @@
import java.io.IOException;
import java.util.Map;
+import org.eclipse.bpel.common.ui.CommonUIPlugin;
import org.eclipse.bpel.model.resource.BPELResourceSetImpl;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.runtime.CoreException;
@@ -41,12 +42,18 @@
* @param modelListener the listener which is used to communicate back to the editor.
* @param loadOptions a Map of EMF load/save options. May be empty.
*/
-public EditModelClient(IEditorPart editor,IFile file,IEditModelListener modelListener,Map
loadOptions) {
- SynchronizationHandler handler = new Synchronizer();
+public EditModelClient(IEditorPart editor,IEditModelListener modelListener) {
this.editor = editor;
+ this.modelListener = modelListener;
+}
+
+//
https://jira.jboss.org/browse/JBIDE-7520
+// separated this from constructor
+public void loadPrimaryResource(IFile file, Map loadOptions) throws RuntimeException {
editModel = getSharedResourceSet(file);
((BPELResourceSetImpl)editModel.getResourceSet()).setLoadOptions(loadOptions);
try {
+ SynchronizationHandler handler = new Synchronizer();
if(getCommandStack() == null) {
EditModelCommandStack commandStack = createCommandStack();
editModel.setCommandStack(commandStack);
@@ -54,7 +61,6 @@
primaryResourceInfo = editModel.getResourceInfo(file);
if(loadOptions != null)
primaryResourceInfo.setLoadOptions(loadOptions);
- this.modelListener = modelListener;
getEditModel().addListener(modelListener);
manager = new SynchronizationManager(editor,editModel,handler);
} catch (RuntimeException ex) {
@@ -63,6 +69,7 @@
throw ex;
}
}
+
protected EditModel getSharedResourceSet(IFile file) {
return EditModel.getEditModel(file);
}
@@ -133,7 +140,13 @@
}
}
public void refresh(ResourceInfo resourceInfo) {
- resourceInfo.refresh();
+ //
https://jira.jboss.org/browse/JBIDE-7520
+ try {
+ resourceInfo.refresh();
+ }
+ catch (Exception e) {
+ CommonUIPlugin.log(e);
+ }
getCommandStack().flush();
}
}
Modified:
trunk/bpel/plugins/org.eclipse.bpel.common.ui/src/org/eclipse/bpel/common/ui/editmodel/SynchronizationManager.java
===================================================================
---
trunk/bpel/plugins/org.eclipse.bpel.common.ui/src/org/eclipse/bpel/common/ui/editmodel/SynchronizationManager.java 2010-11-08
19:16:11 UTC (rev 26337)
+++
trunk/bpel/plugins/org.eclipse.bpel.common.ui/src/org/eclipse/bpel/common/ui/editmodel/SynchronizationManager.java 2010-11-08
19:23:54 UTC (rev 26338)
@@ -24,6 +24,7 @@
import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.window.Window;
+import org.eclipse.osgi.util.NLS;
import org.eclipse.ui.IEditorPart;
import org.eclipse.ui.IPartListener;
import org.eclipse.ui.IWindowListener;
@@ -189,9 +190,13 @@
if (resourceInfo.getFileExists() && !exists) { //File was deleted
String[] buttons = { Messages.SynchronizationManager_saveButtonLabel,
IDialogConstants.CLOSE_LABEL };
+ //
https://jira.jboss.org/browse/JBIDE-7520
+ // avoid using activeWindow to get a shell - there are cases where these
+ // error dialogs are opened before the active window has been created
+ // (e.g. resource load failures during editor startup)
while (true) {
MessageDialog dialog = new MessageDialog(
- activeWindow.getShell(),
+ editor.getEditorSite().getShell(),
Messages.SynchronizationManager_deleted_title,
null, // accept the default windowing system icon
Messages.SynchronizationManager_deleted_message,
@@ -200,7 +205,7 @@
0);
if (dialog.open() == Window.OK) {
- SaveAsDialog saveAsDialog = new SaveAsDialog(activeWindow.getShell());
+ SaveAsDialog saveAsDialog = new SaveAsDialog(editor.getEditorSite().getShell());
saveAsDialog.setOriginalFile(resourceInfo.getFile());
saveAsDialog.open();
@@ -220,10 +225,12 @@
}
}
} else if (lastModified != resourceInfo.getSynchronizeStamp()) {
+ String msg = NLS.bind(Messages.SynchronizationManager_refresh_message, (new String[]{
resourceInfo.getFile().toString()}));
+
boolean refresh = MessageDialog.openQuestion(
- activeWindow.getShell(),
+ editor.getEditorSite().getShell(),
Messages.SynchronizationManager_refresh_title,
- Messages.SynchronizationManager_refresh_message);
+ msg);
if (refresh) {
handler.refresh(resourceInfo);
Modified:
trunk/bpel/plugins/org.eclipse.bpel.common.ui/src/org/eclipse/bpel/common/ui/messages.properties
===================================================================
---
trunk/bpel/plugins/org.eclipse.bpel.common.ui/src/org/eclipse/bpel/common/ui/messages.properties 2010-11-08
19:16:11 UTC (rev 26337)
+++
trunk/bpel/plugins/org.eclipse.bpel.common.ui/src/org/eclipse/bpel/common/ui/messages.properties 2010-11-08
19:23:54 UTC (rev 26338)
@@ -30,7 +30,10 @@
CalendarControl_title={0} {1}
SynchronizationManager_refresh_title=File Changed
CompositeEditor_Cannot_disconnect_active_editor=Cannot disconnect active editor\: {0}
-SynchronizationManager_refresh_message=The file has been changed on the file system. Do
you want to load the changes?
+#
https://jira.jboss.org/browse/JBIDE-7520
+SynchronizationManager_refresh_message=The file {0} \n
+ has been changed on the file system.\n
+ Do you want to load the changes?
SynchronizationManager_saveButtonLabel=Save
CompositeEditorManager_5=Embedded editors must provide an id. Ignoring editor.
DatePicker_noDateSelected=None
Modified:
trunk/bpel/plugins/org.eclipse.bpel.ui/src/org/eclipse/bpel/ui/BPELMultipageEditorPart.java
===================================================================
---
trunk/bpel/plugins/org.eclipse.bpel.ui/src/org/eclipse/bpel/ui/BPELMultipageEditorPart.java 2010-11-08
19:16:11 UTC (rev 26337)
+++
trunk/bpel/plugins/org.eclipse.bpel.ui/src/org/eclipse/bpel/ui/BPELMultipageEditorPart.java 2010-11-08
19:23:54 UTC (rev 26338)
@@ -98,11 +98,13 @@
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.osgi.util.NLS;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Canvas;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.IActionBars;
import org.eclipse.ui.IEditorInput;
import org.eclipse.ui.IEditorPart;
@@ -412,19 +414,30 @@
if( getFileInput() == null ) {
MessageDialog.openError(
getSite().getShell(),
- "Error while opening the file",
- "The file could be opened, no input could be retrieved." );
+ Messages.Editor_load_error_title, //
https://jira.jboss.org/browse/JBIDE-7520
+ Messages.Editor_load_error
+ );
return;
}
// End of patch
- loadModel();
try
{
+ loadModel();
+
addPage(0, this.fDesignViewer, getEditorInput());
//FIXME I18N
setPageText(0, "Design");
+// if (extensionsResource!=null && extensionsResource.isModified())
+// modelDirtyStateChanged(null);
+
} catch (PartInitException e) {
- ErrorDialog.openError(getSite().getShell(), "Error creating Design page",
null, e.getStatus()); //$NON-NLS-1$
+ ErrorDialog.openError(
+ getSite().getShell(),
+ Messages.Editor_design_page_error, //
https://jira.jboss.org/browse/JBIDE-7520
+ null,
+ e.getStatus()); //$NON-NLS-1$
+ } catch (CoreException e) {
+ // TODO: what to do here?
}
}
@@ -1071,7 +1084,7 @@
return false;
}
- protected void loadModel() {
+ protected void loadModel() throws CoreException {
Document structuredDocument = null;
try {
@@ -1099,14 +1112,91 @@
// Bug # 209341 - starting patch
// By Vincent Zurczak
- IFile fileToOpen = getFileInput();
- BPELEditModelClient editModelClient = new BPELEditModelClient(this, fileToOpen, this,
loadOptions);
+ IFile file = null;
+ BPELEditModelClient editModelClient = new BPELEditModelClient(this);
+
+ //
https://jira.jboss.org/browse/JBIDE-7520
+ // first load the primary resource (the *.bpel file)
+ boolean keepGoing = false;
+ Shell shell = getEditorSite().getShell();
+ try {
+ file = getFileInput();
+ editModelClient.loadPrimaryResource(file,loadOptions);
+ }
+ catch (RuntimeException ex) {
+ String msg = NLS.bind(Messages.EditModelClient_bpel_load_error,
+ new String[]{file.toString()}
+ );
+
+ keepGoing = MessageDialog.openQuestion(
+ shell,
+ Messages.EditModelClient_load_error_title,
+ msg);
+
+ if (!keepGoing)
+ throw ex;
+ }
+
+ // next load the extensions resource (the *.bpelex file)
+ try {
+ editModelClient.loadExtensionsResource();
+ }
+ catch (RuntimeException ex) {
+ file = editModelClient.getExtensionsFile();
+ String msg = NLS.bind(Messages.EditModelClient_bpelex_load_error,
+ new String[]{file.toString()}
+ );
+
+ keepGoing = MessageDialog.openQuestion(
+ shell,
+ Messages.EditModelClient_load_error_title,
+ msg);
+
+ if (!keepGoing)
+ throw ex;
+
+ try {
+ file.delete(true, null);
+ editModelClient.loadExtensionsResource();
+ } catch (CoreException ce) {
+ MessageDialog.openError(shell, Messages.EditModelClient_delete_error_title,
Messages.EditModelClient_delete_error_message);
+ throw ce;
+ }
+ }
+
+ // finally load the artifacts resource (the *.wsdl file)
+ try {
+ editModelClient.loadArtifactsResource();
+ }
+ catch (RuntimeException ex) {
+ file = editModelClient.getArtifactsFile();
+ String msg = NLS.bind(Messages.EditModelClient_wsdl_load_error,
+ new String[]{file.toString()}
+ );
+
+ keepGoing = MessageDialog.openQuestion(
+ shell,
+ Messages.EditModelClient_load_error_title,
+ msg);
+
+ if (!keepGoing)
+ throw ex;
+
+ try {
+ file.delete(true, null);
+ editModelClient.loadArtifactsResource();
+ } catch (CoreException ce) {
+ MessageDialog.openError(shell, Messages.EditModelClient_delete_error_title,
Messages.EditModelClient_delete_error_message);
+ throw ce;
+ }
+ }
+
this.fDesignViewer.setEditModelClient(editModelClient);
getEditDomain().setCommandStack(editModelClient.getCommandStack());
Resource bpelResource = editModelClient.getPrimaryResourceInfo().getResource();
BPELReader reader = new BPELReader();
- reader.read(bpelResource, fileToOpen, this.fDesignViewer.getResourceSet());
+ reader.read(bpelResource, getFileInput(), this.fDesignViewer.getResourceSet());
// End of patch
this.process = reader.getProcess();
@@ -1281,6 +1371,11 @@
}
this.fMarkers2EObject.put(m.getId(), target);
+ EObject obj = target;
+ while (obj!=null) {
+ BPELUtil.adapt(obj, IMarkerHolder.class);
+ obj = obj.eContainer();
+ }
target.eNotify( new NotificationImpl (AdapterNotification.NOTIFICATION_MARKER_ADDED ,
null, m ));
}
Modified: trunk/bpel/plugins/org.eclipse.bpel.ui/src/org/eclipse/bpel/ui/Messages.java
===================================================================
---
trunk/bpel/plugins/org.eclipse.bpel.ui/src/org/eclipse/bpel/ui/Messages.java 2010-11-08
19:16:11 UTC (rev 26337)
+++
trunk/bpel/plugins/org.eclipse.bpel.ui/src/org/eclipse/bpel/ui/Messages.java 2010-11-08
19:23:54 UTC (rev 26338)
@@ -678,6 +678,17 @@
public static String DeletePartnerLinkTypeWarningMessage;
public static String DeletePartnerLinkTypeWarningDialogTitle;
+ //
https://jira.jboss.org/browse/JBIDE-7520
+ public static String EditModelClient_load_error_title;
+ public static String EditModelClient_bpel_load_error;
+ public static String EditModelClient_bpelex_load_error;
+ public static String EditModelClient_wsdl_load_error;
+ public static String EditModelClient_delete_error_title;
+ public static String EditModelClient_delete_error_message;
+ public static String Editor_load_error_title;
+ public static String Editor_load_error;
+ public static String Editor_design_page_error;
+
static {
NLS.initializeMessages(BUNDLE_NAME, Messages.class);
Modified:
trunk/bpel/plugins/org.eclipse.bpel.ui/src/org/eclipse/bpel/ui/messages.properties
===================================================================
---
trunk/bpel/plugins/org.eclipse.bpel.ui/src/org/eclipse/bpel/ui/messages.properties 2010-11-08
19:16:11 UTC (rev 26337)
+++
trunk/bpel/plugins/org.eclipse.bpel.ui/src/org/eclipse/bpel/ui/messages.properties 2010-11-08
19:23:54 UTC (rev 26338)
@@ -669,3 +669,16 @@
SaveImageAction_4=Can't save image to the file {0}
DeletePartnerLinkTypeWarningDialogTitle=Warning
DeletePartnerLinkTypeWarningMessage=When you delete the PartnerLink --
''{0}'', you may delete its reference PartnerLinkType --
''{1}'' too, do you want to delete the PartnerLinkType?
+
+#
https://jira.jboss.org/browse/JBIDE-7520
+Editor_design_page_error=Error creating the editor Design Page.
+Editor_load_error_title=File Open Error
+Editor_load_error=Unable to open the input file.
+
+EditModelClient_load_error_title=File Load Error
+EditModelClient_bpel_load_error=Unable to load the BPEL file {0}\n It may be corrupt, do
you want to continue?
+EditModelClient_bpelex_load_error=Unable to load the BPEL extensions file {0}\n It may be
corrupt, do you want to continue?
+EditModelClient_wsdl_load_error=Unable to load the WSDL file {0}\n It may be corrupt, do
you want to continue?
+
+EditModelClient_delete_error_title=File Delete Error
+EditModelClient_delete_error_message=Unable to delete the file. See Error Log for more
information.
\ No newline at end of file
Modified:
trunk/bpel/plugins/org.eclipse.bpel.ui/src/org/eclipse/bpel/ui/util/BPELEditModelClient.java
===================================================================
---
trunk/bpel/plugins/org.eclipse.bpel.ui/src/org/eclipse/bpel/ui/util/BPELEditModelClient.java 2010-11-08
19:16:11 UTC (rev 26337)
+++
trunk/bpel/plugins/org.eclipse.bpel.ui/src/org/eclipse/bpel/ui/util/BPELEditModelClient.java 2010-11-08
19:23:54 UTC (rev 26338)
@@ -41,14 +41,35 @@
private ResourceInfo artifactsResourceInfo;
BPELEditModel bpelEditModel;
- public BPELEditModelClient(IEditorPart editor, IFile file,
- IEditModelListener modelListener, Map loadOptions)
+ //
https://jira.jboss.org/browse/JBIDE-7520
+ // split the loading of primary resource, extensions and artifacts
+ // so that we can report & handle load failures of each individually
+ // see BPELMultipageEditorPart#loadModel() for example
+ public BPELEditModelClient(IEditorPart editor)
{
- super(editor, file, modelListener, loadOptions);
+ super(editor, (IEditModelListener)editor);
+ }
+
+ /* (non-Javadoc)
+ * @see
org.eclipse.bpel.common.ui.editmodel.EditModelClient#loadPrimaryResource(org.eclipse.core.resources.IFile,
java.util.Map)
+ */
+ @Override
+ public void loadPrimaryResource(IFile file, Map loadOptions) throws RuntimeException {
+
+ super.loadPrimaryResource(file,loadOptions);
bpelEditModel = (BPELEditModel)getEditModel();
-
getPrimaryResourceInfo().getResource();
+ }
+
+ /**
+ * Load the extension resource (<process-name>.bpelex file)
+ * @throws RuntimeException
+ */
+ public void loadExtensionsResource() throws RuntimeException {
+ if (bpelEditModel==null || getPrimaryResourceInfo()==null)
+ throw new RuntimeException("Primary resource must be loaded before
Extensions");
+
IFile extensionsFile = bpelEditModel.getExtensionsFile();
if (extensionsFile.exists()) {
extensionsResourceInfo = bpelEditModel.getResourceInfo(extensionsFile);
@@ -61,7 +82,17 @@
IBPELUIConstants.MODEL_EXTENSIONS_NAMESPACE);
bpelexResource.getContents().add(extensionMap);
}
+ }
+
+ /**
+ * Load the artifacts resource (<process-name>Artifacts.wsdl file)
+ * @throws RuntimeException
+ */
+ public void loadArtifactsResource() throws RuntimeException {
+ if (bpelEditModel==null || getPrimaryResourceInfo()==null)
+ throw new RuntimeException("Primary resource must be loaded before
Artifacts");
+
IFile artifactsFile = bpelEditModel.getArtifactsFile();
if (artifactsFile.exists()) {
artifactsResourceInfo = bpelEditModel.getResourceInfo(artifactsFile);
@@ -112,4 +143,7 @@
public ResourceInfo getArtifactsResourceInfo() { return artifactsResourceInfo; }
public ResourceInfo getExtensionsResourceInfo() { return extensionsResourceInfo; }
+
+ public IFile getExtensionsFile() { return bpelEditModel.getExtensionsFile(); }
+ public IFile getArtifactsFile() { return bpelEditModel.getArtifactsFile(); }
}
Modified:
trunk/bpel/plugins/org.eclipse.bpel.ui/src/org/eclipse/bpel/ui/util/BPELReader.java
===================================================================
---
trunk/bpel/plugins/org.eclipse.bpel.ui/src/org/eclipse/bpel/ui/util/BPELReader.java 2010-11-08
19:16:11 UTC (rev 26337)
+++
trunk/bpel/plugins/org.eclipse.bpel.ui/src/org/eclipse/bpel/ui/util/BPELReader.java 2010-11-08
19:23:54 UTC (rev 26338)
@@ -100,10 +100,12 @@
extensionMap = ExtensionmodelFactory.eINSTANCE.findExtensionMap(
IBPELUIConstants.MODEL_EXTENSIONS_NAMESPACE, extensionsResource.getContents());
}
+ //
https://jira.jboss.org/browse/JBIDE-7520
+ if (extensionMap != null)
+ extensionMap.initializeAdapter();
} catch (Exception e) {
BPELUIPlugin.log(e);
}
- if (extensionMap != null) extensionMap.initializeAdapter();
if (process == null) {
process = BPELFactory.eINSTANCE.createProcess();
Modified:
trunk/bpel/plugins/org.eclipse.bpel.ui/src/org/eclipse/bpel/ui/util/ModelHelper.java
===================================================================
---
trunk/bpel/plugins/org.eclipse.bpel.ui/src/org/eclipse/bpel/ui/util/ModelHelper.java 2010-11-08
19:16:11 UTC (rev 26337)
+++
trunk/bpel/plugins/org.eclipse.bpel.ui/src/org/eclipse/bpel/ui/util/ModelHelper.java 2010-11-08
19:23:54 UTC (rev 26338)
@@ -1133,6 +1133,8 @@
// this is a bug in the ExtensionMapImpl.
// Just assume there is no extension (fall through)
}
+ //
https://jira.jboss.org/browse/JBIDE-7520
+ extensionMap.remove(input);
// If it supports IExtensionFactory, create an extension and add it to the map.
IExtensionFactory extensionFactory = BPELUtil.adapt( input, IExtensionFactory.class);