Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/session/CDOViewContainerImpl.java')
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/session/CDOViewContainerImpl.java514
1 files changed, 257 insertions, 257 deletions
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/session/CDOViewContainerImpl.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/session/CDOViewContainerImpl.java
index 182060ebd8..6d8cb6165d 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/session/CDOViewContainerImpl.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/session/CDOViewContainerImpl.java
@@ -1,257 +1,257 @@
-/*
- * Copyright (c) 2004 - 2012 Eike Stepper (Berlin, Germany) and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * Eike Stepper - initial API and implementation
- * Simon McDuff - bug 226778
- * Simon McDuff - bug 230832
- * Simon McDuff - bug 233490
- * Simon McDuff - bug 213402
- * Victor Roldan Betancort - maintenance
- */
-package org.eclipse.emf.internal.cdo.session;
-
-import org.eclipse.emf.cdo.common.branch.CDOBranch;
-import org.eclipse.emf.cdo.common.branch.CDOBranchPoint;
-import org.eclipse.emf.cdo.view.CDOView;
-import org.eclipse.emf.cdo.view.CDOViewContainer;
-
-import org.eclipse.emf.internal.cdo.view.CDOViewImpl;
-
-import org.eclipse.net4j.util.ReflectUtil.ExcludeFromDump;
-import org.eclipse.net4j.util.WrappedException;
-import org.eclipse.net4j.util.container.Container;
-import org.eclipse.net4j.util.lifecycle.LifecycleUtil;
-
-import org.eclipse.emf.ecore.resource.ResourceSet;
-import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
-import org.eclipse.emf.spi.cdo.InternalCDOView;
-import org.eclipse.emf.spi.cdo.InternalCDOViewSet;
-
-import java.util.HashSet;
-import java.util.Set;
-
-/**
- * @author Eike Stepper
- */
-public abstract class CDOViewContainerImpl extends Container<CDOView> implements CDOViewContainer
-{
- private Set<InternalCDOView> views = new HashSet<InternalCDOView>();
-
- @ExcludeFromDump
- private int lastViewID;
-
- public CDOViewContainerImpl()
- {
- }
-
- public CDOView getView(int viewID)
- {
- checkActive();
- for (InternalCDOView view : getViews())
- {
- if (view.getViewID() == viewID)
- {
- return view;
- }
- }
-
- return null;
- }
-
- /**
- * @since 2.0
- */
- public InternalCDOView[] getViews()
- {
- checkActive();
- synchronized (views)
- {
- return views.toArray(new InternalCDOView[views.size()]);
- }
- }
-
- public CDOView[] getElements()
- {
- return getViews();
- }
-
- @Override
- public boolean isEmpty()
- {
- checkActive();
- return views.isEmpty();
- }
-
- public CDOView openView(CDOBranchPoint target, ResourceSet resourceSet)
- {
- return openView(target.getBranch(), target.getTimeStamp(), resourceSet);
- }
-
- public CDOView openView(CDOBranchPoint target)
- {
- return openView(target, createResourceSet());
- }
-
- public InternalCDOView openView(CDOBranch branch, long timeStamp, ResourceSet resourceSet)
- {
- checkActive();
- InternalCDOView view = createView(branch, timeStamp);
- initView(view, resourceSet);
- return view;
- }
-
- public InternalCDOView openView(CDOBranch branch, long timeStamp)
- {
- return openView(branch, timeStamp, createResourceSet());
- }
-
- public InternalCDOView openView(CDOBranch branch)
- {
- return openView(branch, CDOBranchPoint.UNSPECIFIED_DATE);
- }
-
- public InternalCDOView openView(long timeStamp)
- {
- return openView(getMainBranch(), timeStamp);
- }
-
- public InternalCDOView openView(ResourceSet resourceSet)
- {
- return openView(getMainBranch(), CDOBranchPoint.UNSPECIFIED_DATE, resourceSet);
- }
-
- /**
- * @since 2.0
- */
- public InternalCDOView openView()
- {
- return openView(CDOBranchPoint.UNSPECIFIED_DATE);
- }
-
- public CDOView openView(String durableLockingID)
- {
- return openView(durableLockingID, createResourceSet());
- }
-
- public CDOView openView(String durableLockingID, ResourceSet resourceSet)
- {
- checkActive();
- InternalCDOView view = createView(durableLockingID);
- initView(view, resourceSet);
- return view;
- }
-
- /**
- * @since 2.0
- */
- public void viewDetached(InternalCDOView view)
- {
- // Detach viewset from the view
- view.getViewSet().remove(view);
- synchronized (views)
- {
- if (!views.remove(view))
- {
- return;
- }
- }
-
- if (isActive())
- {
- try
- {
- LifecycleUtil.deactivate(view);
- }
- catch (Exception ex)
- {
- throw WrappedException.wrap(ex);
- }
- }
-
- fireElementRemovedEvent(view);
- }
-
- /**
- * @since 2.0
- */
- protected InternalCDOView createView(CDOBranch branch, long timeStamp)
- {
- return new CDOViewImpl(branch, timeStamp);
- }
-
- /**
- * @since 4.0
- */
- protected InternalCDOView createView(String durableLockingID)
- {
- return new CDOViewImpl(durableLockingID);
- }
-
- protected ResourceSet createResourceSet()
- {
- return new ResourceSetImpl();
- }
-
- @Override
- protected void doDeactivate() throws Exception
- {
- for (InternalCDOView view : views.toArray(new InternalCDOView[views.size()]))
- {
- try
- {
- view.close();
- }
- catch (RuntimeException ignore)
- {
- }
- }
-
- views.clear();
- super.doDeactivate();
- }
-
- /**
- * @since 2.0
- */
- protected void initView(InternalCDOView view, ResourceSet resourceSet)
- {
- InternalCDOViewSet viewSet = SessionUtil.prepareResourceSet(resourceSet);
- synchronized (views)
- {
- view.setViewID(++lastViewID);
- initViewSynced(view);
- views.add(view);
- }
-
- // Link ViewSet with View
- view.setViewSet(viewSet);
- viewSet.add(view);
-
- try
- {
- view.activate();
- fireElementAddedEvent(view);
- }
- catch (RuntimeException ex)
- {
- synchronized (views)
- {
- views.remove(view);
- }
-
- viewSet.remove(view);
- throw ex;
- }
- }
-
- protected void initViewSynced(InternalCDOView view)
- {
- }
-
- protected abstract CDOBranch getMainBranch();
-}
+/*
+ * Copyright (c) 2004 - 2012 Eike Stepper (Berlin, Germany) and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ * Simon McDuff - bug 226778
+ * Simon McDuff - bug 230832
+ * Simon McDuff - bug 233490
+ * Simon McDuff - bug 213402
+ * Victor Roldan Betancort - maintenance
+ */
+package org.eclipse.emf.internal.cdo.session;
+
+import org.eclipse.emf.cdo.common.branch.CDOBranch;
+import org.eclipse.emf.cdo.common.branch.CDOBranchPoint;
+import org.eclipse.emf.cdo.view.CDOView;
+import org.eclipse.emf.cdo.view.CDOViewContainer;
+
+import org.eclipse.emf.internal.cdo.view.CDOViewImpl;
+
+import org.eclipse.net4j.util.ReflectUtil.ExcludeFromDump;
+import org.eclipse.net4j.util.WrappedException;
+import org.eclipse.net4j.util.container.Container;
+import org.eclipse.net4j.util.lifecycle.LifecycleUtil;
+
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+import org.eclipse.emf.spi.cdo.InternalCDOView;
+import org.eclipse.emf.spi.cdo.InternalCDOViewSet;
+
+import java.util.HashSet;
+import java.util.Set;
+
+/**
+ * @author Eike Stepper
+ */
+public abstract class CDOViewContainerImpl extends Container<CDOView> implements CDOViewContainer
+{
+ private Set<InternalCDOView> views = new HashSet<InternalCDOView>();
+
+ @ExcludeFromDump
+ private int lastViewID;
+
+ public CDOViewContainerImpl()
+ {
+ }
+
+ public CDOView getView(int viewID)
+ {
+ checkActive();
+ for (InternalCDOView view : getViews())
+ {
+ if (view.getViewID() == viewID)
+ {
+ return view;
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * @since 2.0
+ */
+ public InternalCDOView[] getViews()
+ {
+ checkActive();
+ synchronized (views)
+ {
+ return views.toArray(new InternalCDOView[views.size()]);
+ }
+ }
+
+ public CDOView[] getElements()
+ {
+ return getViews();
+ }
+
+ @Override
+ public boolean isEmpty()
+ {
+ checkActive();
+ return views.isEmpty();
+ }
+
+ public CDOView openView(CDOBranchPoint target, ResourceSet resourceSet)
+ {
+ return openView(target.getBranch(), target.getTimeStamp(), resourceSet);
+ }
+
+ public CDOView openView(CDOBranchPoint target)
+ {
+ return openView(target, createResourceSet());
+ }
+
+ public InternalCDOView openView(CDOBranch branch, long timeStamp, ResourceSet resourceSet)
+ {
+ checkActive();
+ InternalCDOView view = createView(branch, timeStamp);
+ initView(view, resourceSet);
+ return view;
+ }
+
+ public InternalCDOView openView(CDOBranch branch, long timeStamp)
+ {
+ return openView(branch, timeStamp, createResourceSet());
+ }
+
+ public InternalCDOView openView(CDOBranch branch)
+ {
+ return openView(branch, CDOBranchPoint.UNSPECIFIED_DATE);
+ }
+
+ public InternalCDOView openView(long timeStamp)
+ {
+ return openView(getMainBranch(), timeStamp);
+ }
+
+ public InternalCDOView openView(ResourceSet resourceSet)
+ {
+ return openView(getMainBranch(), CDOBranchPoint.UNSPECIFIED_DATE, resourceSet);
+ }
+
+ /**
+ * @since 2.0
+ */
+ public InternalCDOView openView()
+ {
+ return openView(CDOBranchPoint.UNSPECIFIED_DATE);
+ }
+
+ public CDOView openView(String durableLockingID)
+ {
+ return openView(durableLockingID, createResourceSet());
+ }
+
+ public CDOView openView(String durableLockingID, ResourceSet resourceSet)
+ {
+ checkActive();
+ InternalCDOView view = createView(durableLockingID);
+ initView(view, resourceSet);
+ return view;
+ }
+
+ /**
+ * @since 2.0
+ */
+ public void viewDetached(InternalCDOView view)
+ {
+ // Detach viewset from the view
+ view.getViewSet().remove(view);
+ synchronized (views)
+ {
+ if (!views.remove(view))
+ {
+ return;
+ }
+ }
+
+ if (isActive())
+ {
+ try
+ {
+ LifecycleUtil.deactivate(view);
+ }
+ catch (Exception ex)
+ {
+ throw WrappedException.wrap(ex);
+ }
+ }
+
+ fireElementRemovedEvent(view);
+ }
+
+ /**
+ * @since 2.0
+ */
+ protected InternalCDOView createView(CDOBranch branch, long timeStamp)
+ {
+ return new CDOViewImpl(branch, timeStamp);
+ }
+
+ /**
+ * @since 4.0
+ */
+ protected InternalCDOView createView(String durableLockingID)
+ {
+ return new CDOViewImpl(durableLockingID);
+ }
+
+ protected ResourceSet createResourceSet()
+ {
+ return new ResourceSetImpl();
+ }
+
+ @Override
+ protected void doDeactivate() throws Exception
+ {
+ for (InternalCDOView view : views.toArray(new InternalCDOView[views.size()]))
+ {
+ try
+ {
+ view.close();
+ }
+ catch (RuntimeException ignore)
+ {
+ }
+ }
+
+ views.clear();
+ super.doDeactivate();
+ }
+
+ /**
+ * @since 2.0
+ */
+ protected void initView(InternalCDOView view, ResourceSet resourceSet)
+ {
+ InternalCDOViewSet viewSet = SessionUtil.prepareResourceSet(resourceSet);
+ synchronized (views)
+ {
+ view.setViewID(++lastViewID);
+ initViewSynced(view);
+ views.add(view);
+ }
+
+ // Link ViewSet with View
+ view.setViewSet(viewSet);
+ viewSet.add(view);
+
+ try
+ {
+ view.activate();
+ fireElementAddedEvent(view);
+ }
+ catch (RuntimeException ex)
+ {
+ synchronized (views)
+ {
+ views.remove(view);
+ }
+
+ viewSet.remove(view);
+ throw ex;
+ }
+ }
+
+ protected void initViewSynced(InternalCDOView view)
+ {
+ }
+
+ protected abstract CDOBranch getMainBranch();
+}

Back to the top