commit | dc018176cc1dabc31240fbd22a0cbbca8fb780c4 | [log] [tgz] |
---|---|---|
author | neil <neilswebmail@yahoo.co.uk> | Mon May 23 10:24:05 2016 +0100 |
committer | Neil Mackenzie <neilswebmail@yahoo.co.uk> | Mon May 23 07:45:26 2016 -0400 |
tree | b62c0147c58f3c7c100ecc0a9c96c7b80698c44b | |
parent | 212fe92d3292f4ccd43e3d2ececf9407ca7dc71c [diff] |
Bug 493068 - workspaces in emfstore cannot be explicitly released when sessions end Change-Id: I30271a66446ebe6b22d5fb83b424f38b73733577 Signed-off-by: neil <neilswebmail@yahoo.co.uk>
diff --git a/bundles/org.eclipse.emf.emfstore.client/src/org/eclipse/emf/emfstore/internal/client/model/ESWorkspaceProviderImpl.java b/bundles/org.eclipse.emf.emfstore.client/src/org/eclipse/emf/emfstore/internal/client/model/ESWorkspaceProviderImpl.java index 6d74285..8fe2bc6 100644 --- a/bundles/org.eclipse.emf.emfstore.client/src/org/eclipse/emf/emfstore/internal/client/model/ESWorkspaceProviderImpl.java +++ b/bundles/org.eclipse.emf.emfstore.client/src/org/eclipse/emf/emfstore/internal/client/model/ESWorkspaceProviderImpl.java
@@ -211,6 +211,20 @@ } /** + * removes a workspace that is no longer needed, this also removes the + * threadlocal reference to the workspace from the calling thread. + * + * @param token + */ + public static void removeInstance(String token) { + if (WorkspaceLocator.hasId(token)) { + WorkspaceLocator.removeWorkspaceProviderFor(token); + } + WS_THREAD_LOCAL.remove(); + + } + + /** * Initialize the Workspace Manager. */ public static synchronized void init() {
diff --git a/bundles/org.eclipse.emf.emfstore.client/src/org/eclipse/emf/emfstore/internal/client/model/WorkspaceLocator.java b/bundles/org.eclipse.emf.emfstore.client/src/org/eclipse/emf/emfstore/internal/client/model/WorkspaceLocator.java index 0c3a4c3..e113d90 100644 --- a/bundles/org.eclipse.emf.emfstore.client/src/org/eclipse/emf/emfstore/internal/client/model/WorkspaceLocator.java +++ b/bundles/org.eclipse.emf.emfstore.client/src/org/eclipse/emf/emfstore/internal/client/model/WorkspaceLocator.java
@@ -42,6 +42,16 @@ } /** + * Removes a workspace which is no longer needed. + * + * @param token + */ + public static void removeWorkspaceProviderFor(String workspaceProviderId) { + // TODO Auto-generated method stub + WORKSPACE_PROVIDER_MAP.remove(workspaceProviderId); + } + + /** * Creates a workspace with a particular ID. * * @param workspaceProviderId @@ -98,4 +108,5 @@ return createWorkspaceProviderFor(workspaceProviderId); } + }