[286990] - ModelManagerImpl calls FileBufferModelManager.connect without checking for null
diff --git a/bundles/org.eclipse.wst.sse.core/src/org/eclipse/wst/sse/core/internal/model/ModelManagerImpl.java b/bundles/org.eclipse.wst.sse.core/src/org/eclipse/wst/sse/core/internal/model/ModelManagerImpl.java index 4dedc89..610f463 100644 --- a/bundles/org.eclipse.wst.sse.core/src/org/eclipse/wst/sse/core/internal/model/ModelManagerImpl.java +++ b/bundles/org.eclipse.wst.sse.core/src/org/eclipse/wst/sse/core/internal/model/ModelManagerImpl.java
@@ -506,12 +506,12 @@ _doCommonGetModel(file, id, sharedObject,rwType); break; } else if (sharedObject == testObject) { - SYNC.release(); synchronized(sharedObject) { if (sharedObject.theSharedModel!=null) { _incrCount(sharedObject, rwType); } } + SYNC.release(); break; } else { // we got a different object than what we were expecting @@ -1787,13 +1787,14 @@ Assert.isNotNull(sharedObject, "release was requested on a model that was not being managed"); //$NON-NLS-1$ sharedObject.waitForLoadAttempt(); - + SYNC.acquire(); synchronized(sharedObject) { _decrCount(sharedObject, EDIT); if ((sharedObject.referenceCountForRead == 0) && (sharedObject.referenceCountForEdit == 0)) { discardModel(id, sharedObject); } } + SYNC.release(); // if edit goes to zero, but still open for read, // then we should reload here, so we are in synch with // contents on disk. @@ -1902,12 +1903,14 @@ Assert.isNotNull(sharedObject, "release was requested on a model that was not being managed"); //$NON-NLS-1$ sharedObject.waitForLoadAttempt(); } + SYNC.acquire(); synchronized(sharedObject) { _decrCount(sharedObject, READ); if ((sharedObject.referenceCountForRead == 0) && (sharedObject.referenceCountForEdit == 0)) { discardModel(id, sharedObject); } } + SYNC.release(); } /**