Skip to main content
aboutsummaryrefslogtreecommitdiffstats
blob: 2f9834854d3b094771abbd165ab3a0d7a5c1bbda (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
/*
 * Copyright (c) 2009-2012, 2014, 2015 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
 */
package org.eclipse.emf.cdo.spi.server;

import org.eclipse.emf.cdo.common.branch.CDOBranch;
import org.eclipse.emf.cdo.common.id.CDOID;
import org.eclipse.emf.cdo.common.revision.CDOIDAndBranch;
import org.eclipse.emf.cdo.server.ILockingManager;
import org.eclipse.emf.cdo.server.ISession;
import org.eclipse.emf.cdo.server.IView;

import org.eclipse.net4j.util.concurrent.IRWOLockManager;
import org.eclipse.net4j.util.concurrent.RWOLockManager.LockState;

import java.util.Collection;
import java.util.List;
import java.util.Map;

/**
 * The type of the to-be-locked objects is either {@link CDOIDAndBranch} or {@link CDOID}, depending on whether
 * branching is supported by the repository or not.
 *
 * @author Eike Stepper
 * @since 3.0
 * @noextend This interface is not intended to be extended by clients.
 * @noimplement This interface is not intended to be implemented by clients.
 */
public interface InternalLockManager extends IRWOLockManager<Object, IView>, ILockingManager
{
  public InternalRepository getRepository();

  public void setRepository(InternalRepository repository);

  /**
   * @since 4.0
   */
  public Object getLockEntryObject(Object key);

  /**
   * @since 4.0
   */
  public Object getLockKey(CDOID id, CDOBranch branch);

  /**
   * @since 4.0
   */
  public CDOID getLockKeyID(Object key);

  /**
   * @since 4.0
   */
  public Map<CDOID, LockGrade> getLocks(IView view);

  /**
   * @since 4.0
   */
  @Deprecated
  public void lock(boolean explicit, LockType type, IView context, Collection<? extends Object> objects, long timeout) throws InterruptedException;

  /**
   * @since 4.1
   */
  public List<LockState<Object, IView>> lock2(boolean explicit, LockType type, IView context, Collection<? extends Object> objects, boolean recursive,
      long timeout) throws InterruptedException;

  /**
   * Attempts to release for a given locktype, view and objects.
   *
   * @throws IllegalMonitorStateException
   *           Unlocking objects without lock.
   * @since 4.0
   */
  @Deprecated
  public void unlock(boolean explicit, LockType type, IView context, Collection<? extends Object> objects);

  /**
   * @since 4.1
   */
  public List<LockState<Object, IView>> unlock2(boolean explicit, LockType type, IView context, Collection<? extends Object> objects, boolean recursive);

  /**
   * Attempts to release all locks(read and write) for a given view.
   *
   * @since 4.0
   */
  @Deprecated
  public void unlock(boolean explicit, IView context);

  /**
   * @since 4.1
   */
  public List<LockState<Object, IView>> unlock2(boolean explicit, IView context);

  /**
   * @since 4.0
   */
  public LockArea createLockArea(InternalView view);

  /**
   * @since 4.1
   */
  public LockArea createLockArea(InternalView view, String lockAreaID);

  /**
   * @since 4.1
   */
  // TODO (CD) I've also added this to DurableLocking2 Refactoring opportunity?
  public void updateLockArea(LockArea lockArea);

  /**
   * @since 4.0
   */
  public IView openView(ISession session, int viewID, boolean readOnly, String durableLockingID);

  /**
   * @since 4.1
   */
  public LockGrade getLockGrade(Object key);

  /**
   * @since 4.1
   */
  public LockState<Object, IView> getLockState(Object key);

  /**
   * @since 4.4
   */
  public List<LockState<Object, IView>> getLockStates();

  /**
   * @since 4.1
   */
  public void setLockState(Object key, LockState<Object, IView> lockState);

  /**
   * @since 4.1
   */
  public void reloadLocks();
}

Back to the top