[103499] Fix for J2EE build verification smoke tests
diff --git a/plugins/org.eclipse.wst.common.emfworkbench.integration/src/org/eclipse/wst/common/internal/emfworkbench/EMFWorkbenchContext.java b/plugins/org.eclipse.wst.common.emfworkbench.integration/src/org/eclipse/wst/common/internal/emfworkbench/EMFWorkbenchContext.java
index 4c903a8..11d9691 100644
--- a/plugins/org.eclipse.wst.common.emfworkbench.integration/src/org/eclipse/wst/common/internal/emfworkbench/EMFWorkbenchContext.java
+++ b/plugins/org.eclipse.wst.common.emfworkbench.integration/src/org/eclipse/wst/common/internal/emfworkbench/EMFWorkbenchContext.java
@@ -80,7 +80,7 @@
// add xmi because other plugins are registering it globally
reg.getExtensionToFactoryMap().put("xmi", factory); //$NON-NLS-1$
aResourceSet.setResourceFactoryRegistry(reg);
- aResourceSet.getSynchronizer().addExtender(this); //added so we can be informed of closes
+ aResourceSet.getSynchronizer().addExtender(this); // added so we can be informed of closes
// to the project.
startListeningToResourceSet();
}
@@ -98,11 +98,13 @@
*/
public final EditModel getEditModelForWrite(String editModelID, Object accessorKey, Map params) {
EditModel editModel = getExistingEditModel(editModelID, params, false);
- if (editModel == null) {
- editModel = createEditModelForWrite(editModelID, params);
- cacheEditModel(editModel, params);
+ synchronized (editModel) {
+ if (editModel == null || editModel.isDisposed() || editModel.isDisposing()) {
+ editModel = createEditModelForWrite(editModelID, params);
+ cacheEditModel(editModel, params);
+ }
+ editModel.access(accessorKey);
}
- editModel.access(accessorKey);
return editModel;
}
@@ -117,11 +119,13 @@
*/
public final EditModel getEditModelForRead(String editModelID, Object accessorKey, Map params) {
EditModel editModel = getExistingEditModel(editModelID, params, true);
- if (editModel == null) {
- editModel = createEditModelForRead(editModelID, params);
- cacheEditModel(editModel, params);
+ synchronized (editModel) {
+ if (editModel == null || editModel.isDisposed() || editModel.isDisposing() ) {
+ editModel = createEditModelForRead(editModelID, params);
+ cacheEditModel(editModel, params);
+ }
+ editModel.access(accessorKey);
}
- editModel.access(accessorKey);
return editModel;
}
@@ -195,7 +199,7 @@
private void discardModels(Collection editModels) {
if (editModels != null && !editModels.isEmpty()) {
- //Make a copy for safety against concurrent modification
+ // Make a copy for safety against concurrent modification
Iterator it = new ArrayList(editModels).iterator();
while (it.hasNext()) {
((EditModel) it.next()).dispose();
@@ -204,8 +208,8 @@
}
public void removeEditModel(EditModel editModel, boolean readOnly) {
- //The best way would be to recompute the cache id, but we don't care
- //because the edit model should only be cached once anyway
+ // The best way would be to recompute the cache id, but we don't care
+ // because the edit model should only be cached once anyway
if (readOnly)
readOnlyModels.values().remove(editModel);
else
@@ -310,7 +314,7 @@
* @see org.eclipse.wst.common.internal.emfworkbench.ISynchronizerExtender#projectChanged(org.eclipse.core.resources.IResourceDelta)
*/
public void projectChanged(IResourceDelta delta) {
- //default nothing
+ // default nothing
}
/*
diff --git a/plugins/org.eclipse.wst.common.emfworkbench.integration/src/org/eclipse/wst/common/internal/emfworkbench/integration/EditModel.java b/plugins/org.eclipse.wst.common.emfworkbench.integration/src/org/eclipse/wst/common/internal/emfworkbench/integration/EditModel.java
index 128788d..e027c47 100644
--- a/plugins/org.eclipse.wst.common.emfworkbench.integration/src/org/eclipse/wst/common/internal/emfworkbench/integration/EditModel.java
+++ b/plugins/org.eclipse.wst.common.emfworkbench.integration/src/org/eclipse/wst/common/internal/emfworkbench/integration/EditModel.java
Binary files differ