Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
View | Details | Raw Unified | Return to bug 283274 | Differences between
and this patch

Collapse All | Expand All

(-)src/org/eclipse/emf/cdo/server/internal/net4j/protocol/CDOServerProtocol.java (+68 lines)
Lines 22-27 Link Here
22
import org.eclipse.emf.cdo.common.revision.delta.CDORevisionDelta;
22
import org.eclipse.emf.cdo.common.revision.delta.CDORevisionDelta;
23
import org.eclipse.emf.cdo.server.IRepositoryProvider;
23
import org.eclipse.emf.cdo.server.IRepositoryProvider;
24
import org.eclipse.emf.cdo.server.ISession;
24
import org.eclipse.emf.cdo.server.ISession;
25
import org.eclipse.emf.cdo.server.IView;
25
import org.eclipse.emf.cdo.server.internal.net4j.bundle.OM;
26
import org.eclipse.emf.cdo.server.internal.net4j.bundle.OM;
26
import org.eclipse.emf.cdo.session.remote.CDORemoteSessionMessage;
27
import org.eclipse.emf.cdo.session.remote.CDORemoteSessionMessage;
27
import org.eclipse.emf.cdo.spi.server.ISessionProtocol;
28
import org.eclipse.emf.cdo.spi.server.ISessionProtocol;
Lines 30-35 Link Here
30
import org.eclipse.net4j.channel.IChannel;
31
import org.eclipse.net4j.channel.IChannel;
31
import org.eclipse.net4j.signal.SignalProtocol;
32
import org.eclipse.net4j.signal.SignalProtocol;
32
import org.eclipse.net4j.signal.SignalReactor;
33
import org.eclipse.net4j.signal.SignalReactor;
34
import org.eclipse.net4j.util.concurrent.IRWLockManager.LockType;
33
import org.eclipse.net4j.util.io.StringCompressor;
35
import org.eclipse.net4j.util.io.StringCompressor;
34
import org.eclipse.net4j.util.io.StringIO;
36
import org.eclipse.net4j.util.io.StringIO;
35
import org.eclipse.net4j.util.lifecycle.LifecycleUtil;
37
import org.eclipse.net4j.util.lifecycle.LifecycleUtil;
Lines 150-155 Link Here
150
    return false;
152
    return false;
151
  }
153
  }
152
154
155
  /**
156
   * @author Juan Pedro Silva
157
   */
158
  public void sendRemoteLockNotification(IView sender, List<CDOID> lockedObjects, LockType lockType)
159
  {
160
    try
161
    {
162
      if (getSession().hasListeners()) // hasLockListeners
163
      {
164
        IChannel channel = getChannel();
165
        if (LifecycleUtil.isActive(channel))
166
        {
167
          new RemoteLockNotificationRequest(channel, sender, lockedObjects, lockType, System.currentTimeMillis())
168
              .sendAsync();
169
        }
170
        else
171
        {
172
          OM.LOG.warn("Session channel is inactive: " + this); //$NON-NLS-1$
173
        }
174
      }
175
    }
176
    catch (Exception ex)
177
    {
178
      OM.LOG.error(ex);
179
    }
180
  }
181
182
  /**
183
   * @author Juan Pedro Silva
184
   */
185
  public void sendRemoteUnLockNotification(IView sender, List<CDOID> lockedObjects, LockType lockType)
186
  {
187
    try
188
    {
189
      if (getSession().hasListeners()) // hasLockListeners
190
      {
191
        IChannel channel = getChannel();
192
        if (LifecycleUtil.isActive(channel))
193
        {
194
          new RemoteUnLockNotificationRequest(channel, sender, lockedObjects, lockType, System.currentTimeMillis())
195
              .sendAsync();
196
        }
197
        else
198
        {
199
          OM.LOG.warn("Session channel is inactive: " + this); //$NON-NLS-1$
200
        }
201
      }
202
    }
203
    catch (Exception ex)
204
    {
205
      OM.LOG.error(ex);
206
    }
207
  }
208
153
  @Override
209
  @Override
154
  protected SignalReactor createSignalReactor(short signalID)
210
  protected SignalReactor createSignalReactor(short signalID)
155
  {
211
  {
Lines 233-238 Link Here
233
    case CDOProtocolConstants.SIGNAL_REMOTE_MESSAGE:
289
    case CDOProtocolConstants.SIGNAL_REMOTE_MESSAGE:
234
      return new RemoteMessageIndication(this);
290
      return new RemoteMessageIndication(this);
235
291
292
      /**
293
       * @author Juan Pedro Silva
294
       */
295
    case CDOProtocolConstants.SIGNAL_REMOTE_LOCK:
296
      return new RemoteLockObjectsServerIndication(this);
297
298
      /**
299
       * @author Juan Pedro Silva
300
       */
301
    case CDOProtocolConstants.SIGNAL_REMOTE_UNLOCK:
302
      return new RemoteLockReleasedServerIndication(this);
303
236
    default:
304
    default:
237
      return super.createSignalReactor(signalID);
305
      return super.createSignalReactor(signalID);
238
    }
306
    }
(-)src/org/eclipse/emf/cdo/server/internal/net4j/protocol/RemoteLockNotificationRequest.java (+79 lines)
Added Link Here
1
/**
2
 * Copyright (c) 2004 - 2009 Eike Stepper (Berlin, Germany) and others.
3
 * All rights reserved. This program and the accompanying materials
4
 * are made available under the terms of the Eclipse Public License v1.0
5
 * which accompanies this distribution, and is available at
6
 * http://www.eclipse.org/legal/epl-v10.html
7
 * 
8
 * Contributors:
9
 *    Eike Stepper - initial API and implementation
10
 */
11
package org.eclipse.emf.cdo.server.internal.net4j.protocol;
12
13
import org.eclipse.emf.cdo.common.id.CDOID;
14
import org.eclipse.emf.cdo.common.io.CDODataOutput;
15
import org.eclipse.emf.cdo.common.protocol.CDOProtocolConstants;
16
import org.eclipse.emf.cdo.server.IView;
17
import org.eclipse.emf.cdo.server.internal.net4j.bundle.OM;
18
19
import org.eclipse.net4j.channel.IChannel;
20
import org.eclipse.net4j.util.concurrent.IRWLockManager.LockType;
21
import org.eclipse.net4j.util.om.trace.ContextTracer;
22
23
import java.io.IOException;
24
import java.util.List;
25
26
/**
27
 * @author Juan Pedro Silva
28
 */
29
public class RemoteLockNotificationRequest extends CDOServerRequest
30
{
31
32
  private static final ContextTracer TRACER = new ContextTracer(OM.DEBUG_PROTOCOL, CommitNotificationRequest.class);
33
34
  private long timeStamp;
35
36
  private IView sender;
37
38
  private List<CDOID> lockedObjects;
39
40
  private LockType lockType;
41
42
  public RemoteLockNotificationRequest(IChannel channel, IView sender, List<CDOID> lockedObjects, LockType lockType,
43
      long timeStamp)
44
  {
45
    super(channel, CDOProtocolConstants.SIGNAL_REMOTE_LOCK);
46
    timeStamp = timeStamp;
47
    this.sender = sender;
48
    this.lockedObjects = lockedObjects;
49
    this.lockType = lockType;
50
  }
51
52
  @Override
53
  protected void requesting(CDODataOutput out) throws IOException
54
  {
55
    if (TRACER.isEnabled())
56
    {
57
      TRACER.format("Writing timeStamp: {0,date} {0,time}", timeStamp); //$NON-NLS-1$
58
    }
59
60
    out.writeLong(timeStamp);
61
    if (TRACER.isEnabled())
62
    {
63
      TRACER.format("Writing {0} locked IDs", lockedObjects.size()); //$NON-NLS-1$
64
    }
65
66
    out.writeInt(lockedObjects == null ? 0 : lockedObjects.size());
67
    for (CDOID id : lockedObjects)
68
    {
69
      if (TRACER.isEnabled())
70
      {
71
        TRACER.format("Writing locked ID: {0}", id); //$NON-NLS-1$
72
      }
73
      out.writeCDOID(id);
74
    }
75
76
    out.writeCDOLockType(lockType);
77
  }
78
79
}
(-)src/org/eclipse/emf/cdo/server/internal/net4j/protocol/RemoteLockObjectsServerIndication.java (+91 lines)
Added Link Here
1
/**
2
 * Copyright (c) 2004 - 2009 Eike Stepper (Berlin, Germany) and others.
3
 * All rights reserved. This program and the accompanying materials
4
 * are made available under the terms of the Eclipse Public License v1.0
5
 * which accompanies this distribution, and is available at
6
 * http://www.eclipse.org/legal/epl-v10.html
7
 * 
8
 * Contributors:
9
 *    Eike Stepper - initial API and implementation
10
 */
11
package org.eclipse.emf.cdo.server.internal.net4j.protocol;
12
13
import org.eclipse.emf.cdo.common.id.CDOID;
14
import org.eclipse.emf.cdo.common.id.CDOIDAndVersion;
15
import org.eclipse.emf.cdo.common.id.CDOIDUtil;
16
import org.eclipse.emf.cdo.common.io.CDODataInput;
17
import org.eclipse.emf.cdo.common.io.CDODataOutput;
18
import org.eclipse.emf.cdo.common.protocol.CDOProtocolConstants;
19
import org.eclipse.emf.cdo.server.IView;
20
import org.eclipse.emf.cdo.server.internal.net4j.bundle.OM;
21
import org.eclipse.emf.cdo.spi.server.InternalSessionManager;
22
23
import org.eclipse.net4j.util.concurrent.IRWLockManager.LockType;
24
import org.eclipse.net4j.util.io.IORuntimeException;
25
import org.eclipse.net4j.util.om.trace.ContextTracer;
26
27
import java.io.IOException;
28
import java.util.ArrayList;
29
import java.util.List;
30
31
/**
32
 * @author Juan Pedro Silva
33
 * @see org.eclipse.emf.cdo.server.internal.net4j.protocol.LockObjectsIndication
34
 */
35
public class RemoteLockObjectsServerIndication extends AbstractSyncRevisionsIndication
36
{
37
38
  private static final ContextTracer TRACER = new ContextTracer(OM.DEBUG_PROTOCOL, RemoteMessageIndication.class);
39
40
  private List<Integer> result;
41
42
  private List<CDOID> lockedObjects = new ArrayList<CDOID>();
43
44
  private List<CDOIDAndVersion> idAndVersions = new ArrayList<CDOIDAndVersion>();
45
46
  private LockType lockType;
47
48
  private IView view;
49
50
  public RemoteLockObjectsServerIndication(CDOServerProtocol protocol)
51
  {
52
    super(protocol, CDOProtocolConstants.SIGNAL_REMOTE_LOCK);
53
  }
54
55
  @Override
56
  protected void indicating(CDODataInput in) throws IOException
57
  {
58
    super.indicating(in);
59
    int viewID = in.readInt();
60
    lockType = in.readCDOLockType();
61
    long timeout = in.readLong();
62
63
    try
64
    {
65
      view = getSession().getView(viewID); // The view might not be from this session.
66
      InternalSessionManager sessionManager = getRepository().getSessionManager();
67
      result = sessionManager.sendRemoteLock(view, lockedObjects, lockType);
68
    }
69
    catch (Exception ex) // Interrupted
70
    {
71
      throw new IORuntimeException(ex);
72
    }
73
  }
74
75
  @Override
76
  protected void responding(CDODataOutput out) throws IOException
77
  {
78
    out.writeInt(result.size());
79
    for (Integer recipient : result)
80
    {
81
      out.writeInt(recipient);
82
    }
83
  }
84
85
  @Override
86
  protected void process(CDOID id, int version)
87
  {
88
    lockedObjects.add(id);
89
    idAndVersions.add(CDOIDUtil.createIDAndVersion(id, version));
90
  }
91
}
(-)src/org/eclipse/emf/cdo/server/internal/net4j/protocol/RemoteUnLockNotificationRequest.java (+79 lines)
Added Link Here
1
/**
2
 * Copyright (c) 2004 - 2009 Eike Stepper (Berlin, Germany) and others.
3
 * All rights reserved. This program and the accompanying materials
4
 * are made available under the terms of the Eclipse Public License v1.0
5
 * which accompanies this distribution, and is available at
6
 * http://www.eclipse.org/legal/epl-v10.html
7
 * 
8
 * Contributors:
9
 *    Eike Stepper - initial API and implementation
10
 */
11
package org.eclipse.emf.cdo.server.internal.net4j.protocol;
12
13
import org.eclipse.emf.cdo.common.id.CDOID;
14
import org.eclipse.emf.cdo.common.io.CDODataOutput;
15
import org.eclipse.emf.cdo.common.protocol.CDOProtocolConstants;
16
import org.eclipse.emf.cdo.server.IView;
17
import org.eclipse.emf.cdo.server.internal.net4j.bundle.OM;
18
19
import org.eclipse.net4j.channel.IChannel;
20
import org.eclipse.net4j.util.concurrent.IRWLockManager.LockType;
21
import org.eclipse.net4j.util.om.trace.ContextTracer;
22
23
import java.io.IOException;
24
import java.util.List;
25
26
/**
27
 * @author Juan Pedro Silva
28
 */
29
public class RemoteUnLockNotificationRequest extends CDOServerRequest
30
{
31
32
  private static final ContextTracer TRACER = new ContextTracer(OM.DEBUG_PROTOCOL, CommitNotificationRequest.class);
33
34
  private long timeStamp;
35
36
  private IView sender;
37
38
  private List<CDOID> lockedObjects;
39
40
  private LockType lockType;
41
42
  public RemoteUnLockNotificationRequest(IChannel channel, IView sender, List<CDOID> lockedObjects, LockType lockType,
43
      long timeStamp)
44
  {
45
    super(channel, CDOProtocolConstants.SIGNAL_REMOTE_UNLOCK);
46
    timeStamp = timeStamp;
47
    this.sender = sender;
48
    this.lockedObjects = lockedObjects;
49
    this.lockType = lockType;
50
  }
51
52
  @Override
53
  protected void requesting(CDODataOutput out) throws IOException
54
  {
55
    if (TRACER.isEnabled())
56
    {
57
      TRACER.format("Writing timeStamp: {0,date} {0,time}", timeStamp); //$NON-NLS-1$
58
    }
59
60
    out.writeLong(timeStamp);
61
    if (TRACER.isEnabled())
62
    {
63
      TRACER.format("Writing {0} locked IDs", lockedObjects.size()); //$NON-NLS-1$
64
    }
65
66
    out.writeInt(lockedObjects == null ? 0 : lockedObjects.size());
67
    for (CDOID id : lockedObjects)
68
    {
69
      if (TRACER.isEnabled())
70
      {
71
        TRACER.format("Writing locked ID: {0}", id); //$NON-NLS-1$
72
      }
73
      out.writeCDOID(id);
74
    }
75
76
    out.writeCDOLockType(lockType);
77
  }
78
79
}
(-)src/org/eclipse/emf/cdo/server/internal/net4j/protocol/RemoteLockReleasedServerIndication.java (+90 lines)
Added Link Here
1
/**
2
 * Copyright (c) 2004 - 2009 Eike Stepper (Berlin, Germany) and others.
3
 * All rights reserved. This program and the accompanying materials
4
 * are made available under the terms of the Eclipse Public License v1.0
5
 * which accompanies this distribution, and is available at
6
 * http://www.eclipse.org/legal/epl-v10.html
7
 * 
8
 * Contributors:
9
 *    Eike Stepper - initial API and implementation
10
 */
11
package org.eclipse.emf.cdo.server.internal.net4j.protocol;
12
13
import org.eclipse.emf.cdo.common.id.CDOID;
14
import org.eclipse.emf.cdo.common.id.CDOIDAndVersion;
15
import org.eclipse.emf.cdo.common.id.CDOIDUtil;
16
import org.eclipse.emf.cdo.common.io.CDODataInput;
17
import org.eclipse.emf.cdo.common.io.CDODataOutput;
18
import org.eclipse.emf.cdo.common.protocol.CDOProtocolConstants;
19
import org.eclipse.emf.cdo.server.IView;
20
import org.eclipse.emf.cdo.server.internal.net4j.bundle.OM;
21
import org.eclipse.emf.cdo.spi.server.InternalSessionManager;
22
23
import org.eclipse.net4j.util.concurrent.IRWLockManager.LockType;
24
import org.eclipse.net4j.util.io.IORuntimeException;
25
import org.eclipse.net4j.util.om.trace.ContextTracer;
26
27
import java.io.IOException;
28
import java.util.ArrayList;
29
import java.util.List;
30
31
/**
32
 * @author Juan Pedro Silva
33
 * @see org.eclipse.emf.cdo.server.internal.net4j.protocol.LockObjectsIndication
34
 */
35
public class RemoteLockReleasedServerIndication extends AbstractSyncRevisionsIndication
36
{
37
38
  private static final ContextTracer TRACER = new ContextTracer(OM.DEBUG_PROTOCOL, RemoteMessageIndication.class);
39
40
  private List<Integer> result;
41
42
  private List<CDOID> releasedObjects = new ArrayList<CDOID>();
43
44
  private List<CDOIDAndVersion> idAndVersions = new ArrayList<CDOIDAndVersion>();
45
46
  private LockType lockType;
47
48
  private IView view;
49
50
  public RemoteLockReleasedServerIndication(CDOServerProtocol protocol)
51
  {
52
    super(protocol, CDOProtocolConstants.SIGNAL_REMOTE_UNLOCK);
53
  }
54
55
  @Override
56
  protected void indicating(CDODataInput in) throws IOException
57
  {
58
    /*
59
     * super.indicating(in); //Throws EOFException int viewID = in.readInt(); lockType = in.readCDOLockType(); long
60
     * timeout = 1000;// in.readLong();
61
     */
62
    try
63
    {
64
      // view = getSession().getView(viewID); // The view might not be from this session.
65
      InternalSessionManager sessionManager = getRepository().getSessionManager();
66
      result = sessionManager.sendRemoteUnLock(view, releasedObjects, lockType);
67
    }
68
    catch (Exception ex) // Interrupted
69
    {
70
      throw new IORuntimeException(ex);
71
    }
72
  }
73
74
  @Override
75
  protected void responding(CDODataOutput out) throws IOException
76
  {
77
    out.writeInt(result.size());
78
    for (Integer recipient : result)
79
    {
80
      out.writeInt(recipient);
81
    }
82
  }
83
84
  @Override
85
  protected void process(CDOID id, int version)
86
  {
87
    releasedObjects.add(id);
88
    idAndVersions.add(CDOIDUtil.createIDAndVersion(id, version));
89
  }
90
}
(-)src/org/eclipse/emf/cdo/internal/ui/editor/CDOEditor.java (+10 lines)
Lines 33-38 Link Here
33
import org.eclipse.emf.internal.cdo.CDOLegacyWrapper;
33
import org.eclipse.emf.internal.cdo.CDOLegacyWrapper;
34
import org.eclipse.emf.internal.cdo.CDOStateMachine;
34
import org.eclipse.emf.internal.cdo.CDOStateMachine;
35
35
36
import org.eclipse.net4j.util.concurrent.IRWLockManager;
36
import org.eclipse.net4j.util.transaction.TransactionException;
37
import org.eclipse.net4j.util.transaction.TransactionException;
37
import org.eclipse.net4j.util.ui.actions.LongRunningAction;
38
import org.eclipse.net4j.util.ui.actions.LongRunningAction;
38
import org.eclipse.net4j.util.ui.actions.SafeAction;
39
import org.eclipse.net4j.util.ui.actions.SafeAction;
Lines 1277-1282 Link Here
1277
          fireDirtyPropertyChange();
1278
          fireDirtyPropertyChange();
1278
        }
1279
        }
1279
      };
1280
      };
1281
1282
      /**
1283
       *@author Juan Pedro Silva
1284
       *@see I don't like this registration here. I rather have it under an option, which is the proper place. However,
1285
       *      this in the only way I can be sure eventHandler has been initialized.
1286
       *@TODO: Make the registration optional.
1287
       */
1288
      IRWLockManager lm = getView().getSession().getLockmanager();
1289
      lm.registerLockListeners(eventHandler.getLockListeners());
1280
    }
1290
    }
1281
    catch (RuntimeException ex)
1291
    catch (RuntimeException ex)
1282
    {
1292
    {
(-)CDOClient1.launch (-2 / +2 lines)
Lines 23-30 Link Here
23
<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Xms40m&#13;&#10;-Xmx512m"/>
23
<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Xms40m&#13;&#10;-Xmx512m"/>
24
<stringAttribute key="pde.version" value="3.3"/>
24
<stringAttribute key="pde.version" value="3.3"/>
25
<stringAttribute key="product" value="org.eclipse.sdk.ide"/>
25
<stringAttribute key="product" value="org.eclipse.sdk.ide"/>
26
<stringAttribute key="selected_target_plugins" value="org.apache.ant*1.6.5.v20080627-1140@default:default,org.eclipse.ui.navigator.resources@default:default,org.eclipse.jface.databinding@default:default,org.eclipse.equinox.http.servlet@default:default,org.eclipse.pde.runtime@default:default,javax.servlet*2.4.0.v200806031604@default:default,com.ibm.icu*4.0.0.v20081201@default:default,org.eclipse.text@default:default,org.eclipse.ltk.ui.refactoring@default:default,org.eclipse.equinox.app@default:default,org.eclipse.update.core@default:default,org.eclipse.emf.cheatsheets@default:default,org.eclipse.ui.ide.application@default:default,org.mortbay.jetty.server*6.1.7.v200806031612@default:default,com.ibm.icu*3.6.0.v20080530@default:default,org.eclipse.jface.text@default:default,org.eclipse.emf.importer@default:default,org.eclipse.compare@default:default,org.eclipse.core.runtime@default:true,org.eclipse.jdt.compiler.apt@default:false,org.sat4j.pb*2.1.0.v20090520@default:default,org.eclipse.emf.ant@default:default,org.eclipse.osgi.util@default:default,org.eclipse.equinox.registry@default:default,javax.xml@default:default,org.eclipse.osgi@-1:true,org.eclipse.compare.core@default:default,org.eclipse.core.runtime.compatibility.registry@default:false,org.eclipse.team.cvs.core@default:default,org.eclipse.core.net.win32.x86@default:false,org.eclipse.jdt.junit4.runtime@default:default,org.apache.ant*1.7.1.v20090120-1145@default:default,org.eclipse.osgi.services@default:default,org.eclipse.equinox.p2.repository@default:default,org.eclipse.help.ui@default:default,org.eclipse.emf.importer.java@default:default,org.eclipse.ecf.filetransfer@default:default,org.eclipse.jdt.doc.user@default:default,org.eclipse.ui@default:default,org.mortbay.jetty.server*6.1.15.v200905151201@default:default,org.eclipse.team.cvs.ui@default:default,com.ibm.icu*3.6.1.v20080530@default:default,org.apache.jasper@default:default,org.eclipse.pde.doc.user@default:default,org.eclipse.equinox.http.jetty@default:default,com.ibm.icu*3.8.1.v20081217@default:default,org.eclipse.core.resources.win32.x86@default:false,org.eclipse.update.configurator@3:true,org.eclipse.core.boot@default:default,org.eclipse.equinox.simpleconfigurator.manipulator@default:default,org.sat4j.pb*2.0.3.v20081021@default:default,org.eclipse.emf.codegen.ui@default:default,org.sat4j.core*2.0.3.v20081021@default:default,org.eclipse.equinox.p2.repository.tools@default:default,org.eclipse.pde.build@default:default,org.eclipse.help.appserver@default:default,org.eclipse.jdt.core@default:default,org.eclipse.ant.ui@default:default,org.eclipse.equinox.p2.metadata@default:default,org.eclipse.core.filebuffers@default:default,org.eclipse.equinox.p2.updatesite@default:default,org.eclipse.ui.views.log@default:default,org.eclipse.jsch.core@default:default,org.eclipse.equinox.p2.exemplarysetup@default:default,org.eclipse.equinox.p2.ui@default:default,org.eclipse.emf.mapping.ui@default:default,org.eclipse.platform@default:default,org.eclipse.pde.core@default:default,org.eclipse.jdt.junit@default:default,org.eclipse.core.databinding.beans@default:default,org.eclipse.ui.browser@default:default,org.eclipse.core.databinding@default:default,org.eclipse.ui.forms@default:default,org.eclipse.emf.edit@default:default,org.eclipse.ui.workbench@default:default,org.eclipse.equinox.jsp.jasper@default:default,org.slf4j.api@default:default,org.eclipse.equinox.p2.publisher@default:default,org.eclipse.swt@default:default,org.eclipse.equinox.launcher@default:default,org.eclipse.emf.importer.ecore@default:default,org.eclipse.team.cvs.ssh@default:default,org.eclipse.emf.codegen.ecore.ui@default:default,org.eclipse.core.databinding.observable@default:default,org.eclipse.jdt.debug@default:default,org.eclipse.jdt.debug.ui@default:default,org.eclipse.update.ui@default:default,org.eclipse.emf.ecore.change@default:default,org.eclipse.emf.mapping.ecore2xml.ui@default:default,org.eclipse.emf.ecore.xmi@default:default,org.eclipse.emf.converter@default:default,org.eclipse.core.runtime.compatibility.auth@default:default,com.ibm.icu*3.4.5@default:default,javax.servlet*2.5.0.v200806031605@default:default,org.eclipse.core.resources@default:default,org.eclipse.emf.mapping.ecore2ecore@default:default,org.apache.lucene.core@default:default,org.eclipse.emf.codegen.ecore@default:default,org.eclipse.ui.intro@default:default,org.eclipse.equinox.p2.garbagecollector@default:default,org.eclipse.pde.junit.runtime@default:default,org.eclipse.core.resources.compatibility@default:false,org.mortbay.jetty.util*6.1.15.v200905182336@default:default,org.eclipse.jdt.junit.runtime@default:default,org.apache.commons.logging*1.0.4.v200904062259@default:default,org.eclipse.equinox.simpleconfigurator@1:true,org.apache.commons.logging*1.1.1.v200904062255@default:default,org.apache.lucene.analysis*1.9.1.v20080530-1600@default:default,org.apache.commons.el@default:default,org.eclipse.equinox.security@default:default,com.ibm.icu*4.0.1.v20090415@default:default,org.junit*3.8.1.v20090203-1000@default:default,org.eclipse.pde.ui@default:default,org.eclipse.ui.editors@default:default,org.eclipse.help@default:default,org.eclipse.ui.externaltools@default:default,org.eclipse.ui.intro.universal@default:default,org.eclipse.update.core.win32@default:false,org.eclipse.ui.cheatsheets@default:default,org.eclipse.ltk.core.refactoring@default:default,javax.servlet.jsp*1.2.0.v200806031606@default:default,org.eclipse.emf.ecore.change.edit@default:default,org.sat4j.core*2.1.0.v20090520@default:default,org.eclipse.pde@default:default,org.eclipse.search@default:default,org.eclipse.equinox.p2.core@default:default,org.eclipse.equinox.p2.metadata.repository@default:default,org.eclipse.update.scheduler@default:default,org.eclipse.ecf@default:default,com.jcraft.jsch*0.1.31@default:default,org.hamcrest.core@default:default,org.eclipse.core.variables@default:default,org.eclipse.platform.doc.isv@default:default,org.eclipse.ui.win32@default:false,org.junit4@default:default,org.eclipse.emf.exporter@default:default,org.apache.lucene*2.4.0.v20090121-2110@default:default,org.eclipse.debug.ui@default:default,org.eclipse.ui.navigator@default:default,org.eclipse.ui.ide@default:default,org.eclipse.core.runtime.compatibility@default:default,org.junit*3.8.2.v20090203-1005@default:default,org.eclipse.ui.views@default:default,org.eclipse.help.webapp@default:default,org.eclipse.core.contenttype@default:default,org.eclipse.team.core@default:default,org.eclipse.emf.ecore.editor@default:default,org.eclipse.emf.ecore@default:default,org.eclipse.core.commands@default:default,org.eclipse.emf.codegen@default:default,org.eclipse.equinox.frameworkadmin@default:default,org.eclipse.team.cvs.ssh2@default:default,com.jcraft.jsch*0.1.41.v200903070017@default:default,org.apache.ant*1.7.0.v20080627-1145@default:default,org.eclipse.equinox.p2.jarprocessor@default:default,org.eclipse.team.ui@default:default,org.eclipse.ecf.ssl@default:false,org.eclipse.emf.doc@default:default,org.eclipse.ecf.identity@default:default,org.eclipse.equinox.preferences@default:default,org.eclipse.jdt.doc.isv@default:default,org.eclipse.emf.common@default:default,org.eclipse.equinox.common@2:true,org.eclipse.emf.mapping.ecore2ecore.editor@default:default,org.apache.lucene*1.4.3.v20080530-1550@default:default,org.eclipse.emf.ecore.edit@default:default,org.eclipse.jdt.core.manipulation@default:default,org.eclipse.ui.workbench.compatibility@default:false,org.eclipse.core.net@default:default,org.eclipse.equinox.security.win32.x86@default:false,org.eclipse.cvs@default:default,org.eclipse.ui.console@default:default,com.jcraft.jsch*0.1.28@default:default,org.eclipse.jface@default:default,org.eclipse.core.filesystem@default:default,org.eclipse.ui.presentations.r21@default:default,org.eclipse.core.databinding.property@default:default,org.eclipse.equinox.concurrent@default:default,org.eclipse.equinox.jsp.jasper.registry@default:default,org.eclipse.sdk@default:default,org.eclipse.equinox.p2.director@default:default,org.eclipse.help.base@default:default,org.eclipse.emf.common.ui@default:default,org.eclipse.equinox.launcher.win32.win32.x86@default:false,org.eclipse.equinox.p2.artifact.repository@default:default,org.eclipse.equinox.frameworkadmin.equinox@default:default,org.eclipse.emf.mapping.ecore2xml@default:default,org.eclipse.swt.win32.win32.x86@default:false,org.eclipse.jdt.compiler.tool@default:false,org.apache.lucene*1.9.1.v20080530-1600@default:default,org.eclipse.ui.views.properties.tabbed@default:default,org.eclipse.equinox.p2.engine@default:default,org.eclipse.core.filesystem.win32.x86@default:false,com.jcraft.jsch*0.1.37.v200803061811@default:default,org.eclipse.ant.core@default:default,org.eclipse.equinox.p2.metadata.generator@default:default,org.eclipse.emf.edit.ui@default:default,org.eclipse.emf.importer.rose@default:default,org.eclipse.emf.mapping@default:default,org.eclipse.pde.ui.templates@default:default,org.eclipse.debug.core@default:default,org.eclipse.ui.workbench.texteditor@default:default,javax.servlet*2.3.0.v200806031603@default:default,javax.servlet.jsp*2.0.0.v200806031607@default:default,org.mortbay.jetty.util*6.1.7.v200806031612@default:default,org.eclipse.equinox.http.registry@default:default,org.eclipse.jdt.launching@default:default,org.eclipse.core.expressions@default:default,org.apache.lucene.analysis*2.4.0.v20090121-2110@default:default,org.eclipse.equinox.security.ui@default:default,org.eclipse.core.jobs@default:default,org.eclipse.jdt.ui@default:default"/>
26
<stringAttribute key="selected_target_plugins" value="org.eclipse.jdt.core.manipulation@default:default,org.eclipse.swt@default:default,org.eclipse.platform@default:default,org.eclipse.ecf.filetransfer@default:default,org.eclipse.equinox.preferences@default:default,org.apache.lucene@default:default,org.eclipse.emf.common@default:default,org.eclipse.equinox.registry@default:default,org.eclipse.ant.core@default:default,org.eclipse.emf.codegen.ecore@default:default,org.eclipse.ui.workbench.texteditor@default:default,org.eclipse.swt.win32.win32.x86@default:false,org.eclipse.osgi.util@default:default,org.eclipse.core.runtime@default:true,org.eclipse.core.databinding.property@default:default,org.eclipse.jface.text@default:default,org.eclipse.compare.core@default:default,org.eclipse.emf.ecore.change.edit@default:default,org.eclipse.core.filesystem.win32.x86@default:false,org.apache.ant@default:default,org.eclipse.equinox.security.ui@default:default,org.eclipse.core.boot@default:default,org.eclipse.equinox.p2.metadata.generator@default:default,org.eclipse.update.core@default:default,org.eclipse.emf.mapping.ui@default:default,org.eclipse.jdt.compiler.tool@default:false,org.eclipse.equinox.security.win32.x86@default:false,org.eclipse.equinox.p2.ui@default:default,org.eclipse.ui.ide@default:default,org.eclipse.equinox.p2.metadata@default:default,org.eclipse.search@default:default,org.eclipse.equinox.launcher@default:default,org.apache.commons.el@default:default,javax.servlet@default:default,org.eclipse.jsch.core@default:default,org.eclipse.help.webapp@default:default,org.eclipse.core.databinding.beans@default:default,org.eclipse.core.runtime.compatibility.auth@default:default,org.eclipse.jdt.doc.user@default:default,org.eclipse.emf.codegen.ecore.ui@default:default,org.eclipse.jdt.core@default:default,org.eclipse.osgi@-1:true,org.eclipse.emf.exporter@default:default,org.eclipse.update.core.win32@default:false,org.eclipse.equinox.p2.publisher@default:default,org.eclipse.emf.importer.java@default:default,org.eclipse.equinox.simpleconfigurator@1:true,org.eclipse.jdt.ui@default:default,org.eclipse.help.appserver@default:default,org.eclipse.update.scheduler@default:default,org.eclipse.ant.ui@default:default,org.eclipse.cvs@default:default,org.eclipse.jdt.debug.ui@default:default,org.eclipse.ui.forms@default:default,org.apache.jasper@default:default,org.eclipse.emf.codegen@default:default,org.mortbay.jetty.server@default:default,org.eclipse.sdk@default:default,com.ibm.icu@default:default,org.eclipse.emf.ecore@default:default,org.eclipse.equinox.http.jetty@default:default,org.eclipse.equinox.concurrent@default:default,org.eclipse.core.runtime.compatibility.registry@default:false,org.eclipse.jdt.compiler.apt@default:false,org.eclipse.jdt.junit4.runtime@default:default,org.eclipse.equinox.app@default:default,org.eclipse.pde.build@default:default,org.eclipse.platform.doc.isv@default:default,org.eclipse.equinox.p2.artifact.repository@default:default,org.eclipse.emf.mapping.ecore2xml@default:default,org.sat4j.pb@default:default,org.eclipse.ui.navigator@default:default,org.eclipse.emf.importer.rose@default:default,org.eclipse.core.net.win32.x86@default:false,org.eclipse.ui.ide.application@default:default,org.eclipse.emf.mapping@default:default,org.eclipse.core.net@default:default,org.eclipse.ui.presentations.r21@default:default,org.eclipse.osgi.services@default:default,org.eclipse.compare@default:default,org.eclipse.core.expressions@default:default,org.eclipse.ecf@default:default,org.eclipse.emf.edit@default:default,org.eclipse.equinox.launcher.win32.win32.x86@default:false,org.mortbay.jetty.util@default:default,org.eclipse.equinox.p2.core@default:default,org.eclipse.emf.codegen.ui@default:default,org.eclipse.emf.edit.ui@default:default,org.eclipse.equinox.jsp.jasper.registry@default:default,org.eclipse.ui.navigator.resources@default:default,org.eclipse.core.jobs@default:default,org.eclipse.emf.mapping.ecore2xml.ui@default:default,org.eclipse.pde.junit.runtime@default:default,org.eclipse.text@default:default,com.jcraft.jsch@default:default,org.eclipse.jdt.debug@default:default,org.eclipse.core.contenttype@default:default,org.eclipse.equinox.http.registry@default:default,org.eclipse.emf.doc@default:default,org.eclipse.jdt.junit.runtime@default:default,org.eclipse.ui.workbench@default:default,org.eclipse.ltk.ui.refactoring@default:default,org.eclipse.ui.cheatsheets@default:default,org.eclipse.equinox.frameworkadmin@default:default,org.eclipse.core.databinding.observable@default:default,org.eclipse.ui.editors@default:default,org.eclipse.equinox.common@2:true,org.eclipse.core.variables@default:default,org.eclipse.ui.browser@default:default,org.eclipse.ui.views.properties.tabbed@default:default,org.eclipse.equinox.p2.repository@default:default,org.eclipse.emf.ecore.editor@default:default,org.hamcrest.core@default:default,org.eclipse.core.filesystem@default:default,org.junit@default:default,org.eclipse.equinox.simpleconfigurator.manipulator@default:default,org.eclipse.update.ui@default:default,org.eclipse.equinox.security@default:default,org.eclipse.core.runtime.compatibility@default:default,org.eclipse.equinox.frameworkadmin.equinox@default:default,org.eclipse.ltk.core.refactoring@default:default,org.eclipse.equinox.p2.repository.tools@default:default,org.eclipse.jdt.junit@default:default,org.eclipse.emf.ecore.change@default:default,org.eclipse.equinox.p2.garbagecollector@default:default,org.eclipse.ui.intro.universal@default:default,org.eclipse.core.databinding@default:default,org.eclipse.emf.mapping.ecore2ecore.editor@default:default,org.eclipse.emf.common.ui@default:default,org.eclipse.ui@default:default,org.eclipse.equinox.p2.director@default:default,org.eclipse.ui.views@default:default,org.eclipse.team.cvs.core@default:default,javax.servlet.jsp@default:default,org.junit4@default:default,org.eclipse.help@default:default,org.eclipse.equinox.jsp.jasper@default:default,org.eclipse.jface@default:default,org.eclipse.core.commands@default:default,org.eclipse.core.filebuffers@default:default,org.eclipse.team.ui@default:default,org.eclipse.emf.mapping.ecore2ecore@default:default,org.eclipse.ui.views.log@default:default,org.eclipse.help.base@default:default,org.eclipse.ecf.ssl@default:false,org.eclipse.jdt.doc.isv@default:default,org.eclipse.pde.doc.user@default:default,org.eclipse.equinox.p2.exemplarysetup@default:default,org.eclipse.equinox.p2.engine@default:default,org.eclipse.ui.externaltools@default:default,org.eclipse.pde.core@default:default,org.apache.commons.logging@default:default,org.eclipse.pde@default:default,org.eclipse.equinox.http.servlet@default:default,org.eclipse.help.ui@default:default,org.eclipse.debug.core@default:default,org.eclipse.emf.converter@default:default,org.eclipse.equinox.p2.jarprocessor@default:default,org.eclipse.team.cvs.ui@default:default,org.eclipse.emf.importer.ecore@default:default,org.eclipse.ecf.identity@default:default,org.apache.lucene.analysis@default:default,org.eclipse.emf.ecore.edit@default:default,org.eclipse.core.resources.win32.x86@default:false,org.eclipse.ui.console@default:default,org.eclipse.pde.runtime@default:default,org.eclipse.emf.ant@default:default,org.eclipse.team.cvs.ssh2@default:default,org.eclipse.debug.ui@default:default,org.eclipse.equinox.p2.updatesite@default:default,org.eclipse.core.resources@default:default,org.sat4j.core@default:default,org.eclipse.team.core@default:default,org.eclipse.emf.cheatsheets@default:default,org.eclipse.jface.databinding@default:default,org.eclipse.jdt.launching@default:default,org.eclipse.equinox.p2.metadata.repository@default:default,org.eclipse.pde.ui@default:default,org.eclipse.emf.ecore.xmi@default:default,org.eclipse.ui.workbench.compatibility@default:false,org.eclipse.ui.win32@default:false,org.eclipse.update.configurator@3:true,org.eclipse.emf.importer@default:default,org.eclipse.pde.ui.templates@default:default,org.eclipse.ui.intro@default:default"/>
27
<stringAttribute key="selected_workspace_plugins" value="org.eclipse.emf.cdo.team@default:default,org.eclipse.emf.cdo.examples@default:default,org.eclipse.emf.cdo.net4j@default:default,org.eclipse.emf.cdo@default:default,org.eclipse.net4j.tcp@default:default,org.eclipse.net4j.util@default:default,org.eclipse.emf.cdo.tests.model2@default:default,org.eclipse.emf.cdo.tests.mango.edit@default:default,org.eclipse.emf.cdo.tests.model1.edit@default:default,org.eclipse.net4j.util.ui@default:default,org.eclipse.emf.cdo.ui@default:default,org.eclipse.emf.cdo.tests.model3@default:default,org.eclipse.emf.cdo.ui.ide@default:default,org.eclipse.net4j@default:default,org.eclipse.emf.cdo.tests.model1@default:default,org.eclipse.emf.cdo.common@default:default,org.eclipse.emf.cdo.tests.mango@default:default,org.eclipse.emf.cdo.tests.model2.edit@default:default,org.eclipse.net4j.ui@default:default,org.eclipse.emf.cdo.edit@default:default"/>
27
<stringAttribute key="selected_workspace_plugins" value="org.eclipse.net4j.util@default:default,org.eclipse.net4j@default:default,org.eclipse.emf.cdo.tests.model3@default:default,org.eclipse.emf.cdo.ui@default:default,org.eclipse.emf.cdo.common@default:default,org.eclipse.net4j.util.ui@default:default,org.eclipse.emf.cdo.examples@default:default,org.eclipse.emf.cdo.tests.model2@default:default,org.eclipse.emf.cdo.ui.ide@default:default,org.eclipse.emf.cdo.tests.model1@default:default,org.eclipse.emf.cdo.tests.mango@default:default,org.eclipse.emf.cdo.team@default:default,org.eclipse.net4j.ui@default:default,org.eclipse.emf.cdo.net4j@default:default,org.eclipse.emf.cdo@default:default,org.eclipse.net4j.tcp@default:default,org.eclipse.emf.cdo.edit@default:default"/>
28
<booleanAttribute key="show_selected_only" value="false"/>
28
<booleanAttribute key="show_selected_only" value="false"/>
29
<stringAttribute key="templateConfig" value="${target_home}\configuration\config.ini"/>
29
<stringAttribute key="templateConfig" value="${target_home}\configuration\config.ini"/>
30
<booleanAttribute key="tracing" value="true"/>
30
<booleanAttribute key="tracing" value="true"/>
(-)src/org/eclipse/emf/cdo/ui/CDOEventHandler.java (+36 lines)
Lines 21-26 Link Here
21
import org.eclipse.emf.cdo.transaction.CDOTransactionStartedEvent;
21
import org.eclipse.emf.cdo.transaction.CDOTransactionStartedEvent;
22
import org.eclipse.emf.cdo.view.CDOView;
22
import org.eclipse.emf.cdo.view.CDOView;
23
import org.eclipse.emf.cdo.view.CDOViewInvalidationEvent;
23
import org.eclipse.emf.cdo.view.CDOViewInvalidationEvent;
24
import org.eclipse.emf.cdo.view.RemoteLockAcquiredEvent;
25
import org.eclipse.emf.cdo.view.RemoteLockReleasedEvent;
24
26
25
import org.eclipse.net4j.util.container.IContainerDelta;
27
import org.eclipse.net4j.util.container.IContainerDelta;
26
import org.eclipse.net4j.util.container.IContainerEvent;
28
import org.eclipse.net4j.util.container.IContainerEvent;
Lines 36-41 Link Here
36
import org.eclipse.jface.viewers.TreeViewer;
38
import org.eclipse.jface.viewers.TreeViewer;
37
import org.eclipse.ui.PlatformUI;
39
import org.eclipse.ui.PlatformUI;
38
40
41
import java.util.ArrayList;
42
import java.util.Collection;
39
import java.util.List;
43
import java.util.List;
40
import java.util.Set;
44
import java.util.Set;
41
45
Lines 321-324 Link Here
321
  protected void viewClosed()
325
  protected void viewClosed()
322
  {
326
  {
323
  }
327
  }
328
329
  private IListener lockListener = new IListener()
330
  {
331
    public void notifyEvent(IEvent event)
332
    {
333
      if (event instanceof RemoteLockAcquiredEvent)
334
      {
335
        RemoteLockAcquiredEvent e = (RemoteLockAcquiredEvent)event;
336
        System.err.println("RemoteLockEvent received");
337
      }
338
    }
339
  };
340
341
  private IListener unlockListener = new IListener()
342
  {
343
    public void notifyEvent(IEvent event)
344
    {
345
      if (event instanceof RemoteLockReleasedEvent)
346
      {
347
        RemoteLockReleasedEvent e = (RemoteLockReleasedEvent)event;
348
        System.err.println("RemoteLockReleasedEvent received");
349
      }
350
    }
351
  };
352
353
  public Collection<IListener> getLockListeners()
354
  {
355
    ArrayList<IListener> ail = new ArrayList();
356
    ail.add(lockListener);
357
    ail.add(unlockListener);
358
    return ail;
359
  }
324
}
360
}
(-)CDOClient2 (+362 lines)
Added Link Here
1
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
<launchConfiguration type="org.eclipse.pde.ui.RuntimeWorkbench">
3
<booleanAttribute key="askclear" value="true"/>
4
<booleanAttribute key="automaticAdd" value="false"/>
5
<booleanAttribute key="automaticValidate" value="false"/>
6
<stringAttribute key="bootstrap" value=""/>
7
<stringAttribute key="checked" value="org.eclipse.emf.cdo,org.eclipse.emf.cdo.examples,org.eclipse.emf.cdo.ui,org.eclipse.net4j,org.eclipse.net4j.tcp,org.eclipse.net4j.ui,org.eclipse.net4j.util,org.eclipse.net4j.util.ui"/>
8
<booleanAttribute key="clearConfig" value="true"/>
9
<booleanAttribute key="clearws" value="false"/>
10
<booleanAttribute key="clearwslog" value="false"/>
11
<stringAttribute key="configLocation" value="${workspace_loc}/.metadata/.plugins/org.eclipse.pde.core/CDOClient2 (1)"/>
12
<booleanAttribute key="default" value="true"/>
13
<booleanAttribute key="includeOptional" value="true"/>
14
<stringAttribute key="location" value="${workspace_loc}/../cdo.client2"/>
15
<booleanAttribute key="org.eclipse.debug.core.appendEnvironmentVariables" value="true"/>
16
<listAttribute key="org.eclipse.debug.ui.favoriteGroups">
17
<listEntry value="org.eclipse.debug.ui.launchGroup.debug"/>
18
<listEntry value="org.eclipse.debug.ui.launchGroup.run"/>
19
</listAttribute>
20
<stringAttribute key="org.eclipse.jdt.launching.JRE_CONTAINER" value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/CDC-1.0%Foundation-1.0"/>
21
<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-nosplash&#13;&#10;-console"/>
22
<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.pde.ui.workbenchClasspathProvider"/>
23
<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Xms40m&#13;&#10;-Xmx512m"/>
24
<stringAttribute key="pde.version" value="3.3"/>
25
<stringAttribute key="product" value="org.eclipse.sdk.ide"/>
26
<stringAttribute key="selectedPlugin" value="org.eclipse.emf.cdo"/>
27
<stringAttribute key="selected_target_plugins" value="org.eclipse.equinox.p2.director@default:default,org.eclipse.equinox.p2.metadata.repository@default:default,org.eclipse.core.runtime@default:true,org.hamcrest.core@default:default,org.eclipse.ltk.ui.refactoring@default:default,org.eclipse.ui.ide.application@default:default,org.eclipse.swt.win32.win32.x86@default:false,org.eclipse.ant.core@default:default,org.eclipse.help.base@default:default,org.apache.commons.codec@default:default,javax.servlet.jsp@default:default,org.eclipse.ltk.core.refactoring@default:default,org.eclipse.equinox.app@default:default,org.eclipse.emf.mapping.ecore2xml.ui@default:default,org.eclipse.core.resources.win32.x86@default:false,org.eclipse.ui.workbench@default:default,org.eclipse.emf.mapping.ecore2ecore@default:default,org.eclipse.emf.codegen.ui@default:default,org.eclipse.equinox.p2.metadata@default:default,org.eclipse.equinox.p2.repository.tools@default:default,org.eclipse.equinox.concurrent@default:default,org.eclipse.pde.ui.templates@default:default,org.eclipse.jdt.ui@default:default,org.eclipse.equinox.jsp.jasper@default:default,org.eclipse.equinox.http.jetty@default:default,org.eclipse.equinox.p2.engine@default:default,org.eclipse.jdt.compiler.apt@default:false,org.eclipse.core.net@default:default,org.eclipse.core.databinding.observable@default:default,org.apache.ant@default:default,org.eclipse.emf.edit.ui@default:default,org.eclipse.equinox.p2.ui@default:default,org.eclipse.equinox.p2.core@default:default,org.eclipse.jdt.debug@default:default,org.eclipse.pde.ui@default:default,org.eclipse.equinox.http.registry@default:default,org.eclipse.ecf.ssl@default:false,org.eclipse.equinox.common@2:true,org.apache.lucene@default:default,org.eclipse.core.runtime.compatibility.registry@default:false,org.eclipse.team.cvs.ssh2@default:default,org.eclipse.ui.win32@default:false,org.eclipse.jdt.doc.isv@default:default,org.eclipse.core.filesystem.win32.x86@default:false,org.eclipse.ecf.identity@default:default,org.eclipse.text@default:default,org.eclipse.emf.common@default:default,org.eclipse.equinox.p2.artifact.repository@default:default,org.eclipse.emf.doc@default:default,org.eclipse.update.configurator@3:true,org.eclipse.cvs@default:default,org.eclipse.ui.intro.universal@default:default,org.eclipse.emf.exporter@default:default,org.eclipse.equinox.p2.publisher@default:default,org.eclipse.emf.importer.java@default:default,com.jcraft.jsch@default:default,org.eclipse.ui.console@default:default,org.eclipse.search@default:default,org.eclipse.team.cvs.ui@default:default,org.eclipse.equinox.registry@default:default,org.eclipse.ecf.filetransfer@default:default,org.eclipse.pde.runtime@default:default,org.eclipse.core.runtime.compatibility.auth@default:default,org.eclipse.ui.navigator.resources@default:default,org.eclipse.emf.importer@default:default,org.eclipse.emf.importer.ecore@default:default,org.eclipse.jface.text@default:default,org.eclipse.emf.ecore.editor@default:default,org.eclipse.core.boot@default:default,org.eclipse.sdk@default:default,org.eclipse.team.core@default:default,org.eclipse.equinox.p2.jarprocessor@default:default,org.eclipse.jface@default:default,org.eclipse.ui.views@default:default,org.junit@default:default,org.eclipse.core.net.win32.x86@default:false,org.eclipse.emf.mapping@default:default,org.eclipse.ui.ide@default:default,org.eclipse.ecf@default:default,org.eclipse.ui.editors@default:default,org.eclipse.core.runtime.compatibility@default:default,org.eclipse.equinox.p2.metadata.generator@default:default,org.eclipse.jdt.launching@default:default,org.eclipse.emf.ecore.xmi@default:default,org.eclipse.ui.views.log@default:default,org.eclipse.emf.codegen.ecore@default:default,org.eclipse.equinox.frameworkadmin@default:default,org.apache.lucene.analysis@default:default,org.eclipse.ui.externaltools@default:default,org.eclipse.ui@default:default,org.eclipse.ui.cheatsheets@default:default,org.eclipse.jdt.doc.user@default:default,org.eclipse.osgi.util@default:default,org.eclipse.jface.databinding@default:default,org.eclipse.ui.views.properties.tabbed@default:default,org.eclipse.team.ui@default:default,org.eclipse.pde@default:default,org.eclipse.core.filesystem@default:default,org.eclipse.core.databinding@default:default,org.eclipse.core.jobs@default:default,org.eclipse.update.core.win32@default:false,org.eclipse.compare.core@default:default,org.sat4j.pb@default:default,org.eclipse.equinox.launcher.win32.win32.x86@default:false,javax.servlet@default:default,org.eclipse.equinox.p2.updatesite@default:default,org.apache.commons.el@default:default,org.eclipse.ui.intro@default:default,org.eclipse.equinox.launcher@default:default,org.eclipse.emf.ecore@default:default,org.apache.commons.httpclient@default:default,org.sat4j.core@default:default,org.eclipse.debug.core@default:default,org.eclipse.ui.browser@default:default,org.eclipse.ant.ui@default:default,org.mortbay.jetty.server@default:default,org.eclipse.emf.mapping.ecore2ecore.editor@default:default,org.eclipse.emf.mapping.ecore2xml@default:default,org.eclipse.emf.ecore.change.edit@default:default,org.eclipse.emf.mapping.ui@default:default,org.eclipse.emf.codegen@default:default,org.eclipse.help.appserver@default:default,org.eclipse.equinox.p2.repository@default:default,org.eclipse.equinox.p2.garbagecollector@default:default,org.eclipse.ui.workbench.texteditor@default:default,org.eclipse.update.scheduler@default:default,org.eclipse.equinox.http.servlet@default:default,org.eclipse.emf.cheatsheets@default:default,org.eclipse.jdt.debug.ui@default:default,org.eclipse.core.filebuffers@default:default,org.eclipse.platform.doc.isv@default:default,org.eclipse.help.webapp@default:default,org.eclipse.pde.build@default:default,org.eclipse.equinox.simpleconfigurator@1:true,org.eclipse.jdt.junit4.runtime@default:default,org.eclipse.pde.junit.runtime@default:default,org.apache.jasper@default:default,org.eclipse.emf.converter@default:default,org.eclipse.core.variables@default:default,org.eclipse.pde.core@default:default,org.eclipse.equinox.jsp.jasper.registry@default:default,org.eclipse.ui.navigator@default:default,org.eclipse.core.commands@default:default,org.eclipse.equinox.preferences@default:default,org.eclipse.swt@default:default,org.eclipse.ui.workbench.compatibility@default:false,com.ibm.icu@default:default,org.eclipse.ui.presentations.r21@default:default,org.apache.commons.logging@default:default,org.eclipse.emf.ecore.change@default:default,org.eclipse.equinox.p2.exemplarysetup@default:default,org.eclipse.core.databinding.property@default:default,org.eclipse.emf.ant@default:default,org.eclipse.debug.ui@default:default,org.eclipse.osgi@-1:true,org.eclipse.emf.importer.rose@default:default,org.mortbay.jetty.util@default:default,org.eclipse.compare@default:default,org.eclipse.jdt.junit@default:default,org.eclipse.equinox.security@default:default,org.eclipse.equinox.security.ui@default:default,org.eclipse.core.resources@default:default,org.eclipse.equinox.security.win32.x86@default:false,org.eclipse.update.core@default:default,org.eclipse.jsch.core@default:default,org.eclipse.jdt.compiler.tool@default:false,org.eclipse.core.contenttype@default:default,org.eclipse.emf.codegen.ecore.ui@default:default,org.eclipse.core.databinding.beans@default:default,org.eclipse.emf.edit@default:default,org.eclipse.osgi.services@default:default,org.eclipse.ui.forms@default:default,org.eclipse.help.ui@default:default,org.eclipse.equinox.frameworkadmin.equinox@default:default,org.eclipse.pde.doc.user@default:default,org.eclipse.core.expressions@default:default,org.eclipse.help@default:default,org.eclipse.equinox.simpleconfigurator.manipulator@default:default,org.eclipse.jdt.junit.runtime@default:default,org.eclipse.team.cvs.core@default:default,org.eclipse.emf.ecore.edit@default:default,org.eclipse.jdt.core@default:default,org.eclipse.update.ui@default:default,org.junit4@default:default,org.eclipse.jdt.core.manipulation@default:default,org.eclipse.emf.common.ui@default:default"/>
28
<stringAttribute key="selected_workspace_plugins" value="org.eclipse.emf.cdo.team@default:default,org.eclipse.net4j@default:default,org.eclipse.net4j.tcp@default:default,org.eclipse.net4j.util@default:default,org.eclipse.net4j.util.ui@default:default,org.eclipse.emf.cdo.tests.model3@default:default,org.eclipse.emf.cdo.edit@default:default,org.eclipse.emf.cdo.examples@default:default,org.eclipse.emf.cdo.tests.mango@default:default,org.eclipse.emf.cdo.common@default:default,org.eclipse.emf.cdo.doc@default:default,org.eclipse.emf.cdo.net4j@default:default,org.eclipse.emf.cdo.tests.model1@default:default,org.eclipse.emf.cdo.ui@default:default,org.eclipse.emf.cdo.tests.model2@default:default,org.eclipse.emf.cdo@default:default,org.eclipse.net4j.ui@default:default,org.eclipse.emf.cdo.ui.ide@default:default"/>
29
<booleanAttribute key="show_selected_only" value="false"/>
30
<stringAttribute key="templateConfig" value="${target_home}\configuration\config.ini"/>
31
<booleanAttribute key="tracing" value="true"/>
32
<mapAttribute key="tracingOptions">
33
<mapEntry key="org.eclipse.core.runtime/debug/context" value="false"/>
34
<mapEntry key="org.eclipse.core.jobs/jobs/beginend" value="false"/>
35
<mapEntry key="org.eclipse.jdt.core/debug/completion" value="false"/>
36
<mapEntry key="org.eclipse.ui/trace/sources" value="false"/>
37
<mapEntry key="org.eclipse.jdt.core/debug/indexmanager" value="false"/>
38
<mapEntry key="org.eclipse.net4j.buddies.chat/debug" value="true"/>
39
<mapEntry key="org.eclipse.ltk.core.refactoring/perf/participants/checkConditions" value="300"/>
40
<mapEntry key="org.eclipse.jface.text.source/debug/RevisionRulerColumn" value="false"/>
41
<mapEntry key="org.eclipse.ui/trace/contexts" value="false"/>
42
<mapEntry key="org.eclipse.debug.ui/debug/viewers/updateSequence" value="false"/>
43
<mapEntry key="org.eclipse.osgi/trace/filename" value="runtime.traces"/>
44
<mapEntry key="org.eclipse.debug.ui/debug/contextlaunching" value="false"/>
45
<mapEntry key="org.eclipse.jdt.core/debug" value="true"/>
46
<mapEntry key="org.eclipse.osgi/eclipseadaptor/debug" value="false"/>
47
<mapEntry key="org.eclipse.net4j.tcp/debug" value="true"/>
48
<mapEntry key="org.eclipse.team.cvs.core/dirtycaching" value="false"/>
49
<mapEntry key="org.eclipse.emf.cdo.server/debug.repository" value="true"/>
50
<mapEntry key="org.eclipse.jdt.core/debug/javamodel" value="false"/>
51
<mapEntry key="org.eclipse.ui.intro/trace/printHTML" value="false"/>
52
<mapEntry key="org.eclipse.ltk.core.refactoring/perf/participants/createChanges" value="300"/>
53
<mapEntry key="org.eclipse.emf.cdo.common/debug.protocol" value="true"/>
54
<mapEntry key="org.eclipse.net4j.util/debug.lifecycle.dump" value="true"/>
55
<mapEntry key="org.eclipse.ui/listeners/IWorkbenchWindow.IPerspectiveListener" value="false"/>
56
<mapEntry key="org.eclipse.emf.cdo/debug.util" value="true"/>
57
<mapEntry key="org.eclipse.osgi/resolver/debug" value="false"/>
58
<mapEntry key="org.eclipse.team.core/refreshjob" value="false"/>
59
<mapEntry key="org.eclipse.update.core/debug/installhandler" value="false"/>
60
<mapEntry key="org.eclipse.ui/debug" value="false"/>
61
<mapEntry key="org.eclipse.help.ui/debug/infopop" value="false"/>
62
<mapEntry key="org.eclipse.pde.core/classpath" value="false"/>
63
<mapEntry key="org.eclipse.team.cvs.core/threading" value="false"/>
64
<mapEntry key="org.eclipse.equinox.preferences/general" value="false"/>
65
<mapEntry key="org.eclipse.net4j.jms.server/debug.store" value="true"/>
66
<mapEntry key="org.eclipse.ui/trace/handlers.performance" value="false"/>
67
<mapEntry key="org.eclipse.ui/trace/operations.verbose" value="false"/>
68
<mapEntry key="org.eclipse.osgi/trace/activation" value="false"/>
69
<mapEntry key="org.eclipse.debug.core/debug/commands" value="false"/>
70
<mapEntry key="org.eclipse.team.core/threading" value="false"/>
71
<mapEntry key="org.eclipse.ui/perf/workbench.restore" value="30000"/>
72
<mapEntry key="org.eclipse.update.core/debug/parsing" value="false"/>
73
<mapEntry key="org.eclipse.jdt.core/debug/postaction" value="false"/>
74
<mapEntry key="org.eclipse.ui/trace/graphics" value="false"/>
75
<mapEntry key="org.eclipse.osgi/defaultprofile/logsynchronously" value="false"/>
76
<mapEntry key="org.eclipse.net4j.db/debug" value="true"/>
77
<mapEntry key="org.eclipse.net4j.buddies.chat.ui/debug" value="true"/>
78
<mapEntry key="org.eclipse.ui/debug/workingSets" value="false"/>
79
<mapEntry key="org.eclipse.osgi/monitor/activation" value="false"/>
80
<mapEntry key="org.eclipse.net4j.jms/debug.protocol" value="true"/>
81
<mapEntry key="org.eclipse.debug.ui/debug" value="false"/>
82
<mapEntry key="org.eclipse.jdt.core/debug/buffermanager" value="false"/>
83
<mapEntry key="org.eclipse.help.base/debug/search" value="false"/>
84
<mapEntry key="org.eclipse.pde.build/debug" value="false"/>
85
<mapEntry key="org.eclipse.jface.text/debug/ContentAssistSubjectAdapters" value="false"/>
86
<mapEntry key="org.eclipse.jdt.ui/perf/search/participants" value="300"/>
87
<mapEntry key="org.eclipse.ui/perf/perspective.create" value="800"/>
88
<mapEntry key="org.eclipse.update.core/debug/type" value="false"/>
89
<mapEntry key="org.eclipse.osgi/eclipseadaptor/debug/platformadmin" value="false"/>
90
<mapEntry key="org.eclipse.osgi/resolver/generics" value="false"/>
91
<mapEntry key="org.eclipse.ui/listeners/IWorkbenchPage.IPropertyChangeListener" value="false"/>
92
<mapEntry key="org.eclipse.osgi/resolver/requires" value="false"/>
93
<mapEntry key="org.eclipse.core.resources/refresh" value="false"/>
94
<mapEntry key="org.eclipse.jdt.core/perf/containerinitializer" value="5000"/>
95
<mapEntry key="org.eclipse.osgi/profile/benchmark" value="false"/>
96
<mapEntry key="org.eclipse.help.webapp/debug" value="true"/>
97
<mapEntry key="org.eclipse.jdt.ui/debug/ASTProvider" value="false"/>
98
<mapEntry key="org.eclipse.osgi/debug" value="false"/>
99
<mapEntry key="org.eclipse.emf.cdo.server/debug.types" value="true"/>
100
<mapEntry key="org.eclipse.ui/trace/handlers" value="false"/>
101
<mapEntry key="org.eclipse.ui/trace/contexts.performance" value="false"/>
102
<mapEntry key="org.eclipse.net4j.buddies/debug" value="true"/>
103
<mapEntry key="org.eclipse.jdt.core/perf/completion" value="300"/>
104
<mapEntry key="org.eclipse.team.cvs.core/metafiles" value="false"/>
105
<mapEntry key="org.eclipse.osgi/profile/startup" value="false"/>
106
<mapEntry key="org.eclipse.core.jobs/jobs" value="false"/>
107
<mapEntry key="org.eclipse.core.resources/perf/save.participants" value="500"/>
108
<mapEntry key="org.eclipse.net4j/perf" value="false"/>
109
<mapEntry key="org.eclipse.help.base/debug" value="true"/>
110
<mapEntry key="org.eclipse.net4j/debug" value="true"/>
111
<mapEntry key="org.eclipse.net4j/debug.signal" value="true"/>
112
<mapEntry key="org.eclipse.core.jobs/jobs/timing" value="false"/>
113
<mapEntry key="org.eclipse.net4j.fileshare/debug" value="true"/>
114
<mapEntry key="org.eclipse.net4j.db.hsqldb/debug.sql" value="true"/>
115
<mapEntry key="org.eclipse.jdt.core/perf/reconcile" value="1000"/>
116
<mapEntry key="org.eclipse.ui/listeners/IWorkbenchWindow.IPageListener" value="false"/>
117
<mapEntry key="org.eclipse.net4j/debug.buffer" value="false"/>
118
<mapEntry key="org.eclipse.core.resources/contenttype/cache" value="false"/>
119
<mapEntry key="org.eclipse.emf.cdo/debug.repository" value="true"/>
120
<mapEntry key="org.eclipse.core.jobs/jobs/locks" value="false"/>
121
<mapEntry key="org.eclipse.update.core/debug/configuration" value="false"/>
122
<mapEntry key="org.eclipse.emf.cdo.examples/debug" value="true"/>
123
<mapEntry key="org.eclipse.core.runtime/url/debug/connect" value="false"/>
124
<mapEntry key="org.eclipse.ui/trace/handlers.verbose.commandId" value=""/>
125
<mapEntry key="org.eclipse.ui.ide/debug" value="false"/>
126
<mapEntry key="org.eclipse.osgi/profile/debug" value="false"/>
127
<mapEntry key="org.eclipse.pde.core/debug" value="true"/>
128
<mapEntry key="org.eclipse.ui/listeners/IWorkbenchPartReference" value="false"/>
129
<mapEntry key="org.eclipse.ui/debug/job.stale" value="false"/>
130
<mapEntry key="org.eclipse.net4j.util/debug.registry" value="true"/>
131
<mapEntry key="org.eclipse.jdt.ui/perf/explorer/createPartControl" value="1300"/>
132
<mapEntry key="org.eclipse.jdt.core/debug/hierarchy" value="false"/>
133
<mapEntry key="org.eclipse.ui.ide/debug/internalerror/openDialog" value="false"/>
134
<mapEntry key="org.eclipse.emf.cdo/debug.object" value="false"/>
135
<mapEntry key="org.eclipse.jdt.core/perf/variableinitializer" value="5000"/>
136
<mapEntry key="org.eclipse.emf.cdo.server/debug.revision" value="false"/>
137
<mapEntry key="org.eclipse.core.resources/strings" value="false"/>
138
<mapEntry key="org.eclipse.jdt.core/debug/sourcemapper" value="false"/>
139
<mapEntry key="org.eclipse.core.resources/save/mastertable" value="false"/>
140
<mapEntry key="org.eclipse.core.expressions/tracePropertyResolving" value="false"/>
141
<mapEntry key="org.eclipse.ui/perf/showHeapStatus" value="true"/>
142
<mapEntry key="org.eclipse.jdt.core/debug/javadelta" value="false"/>
143
<mapEntry key="org.eclipse.core.resources/preferences" value="false"/>
144
<mapEntry key="org.eclipse.jdt.core/debug/selection" value="false"/>
145
<mapEntry key="org.eclipse.jdt.ui/perf/content_assist_sorters/extensions" value=""/>
146
<mapEntry key="org.eclipse.jdt.core/debug/javamodel/cache" value="false"/>
147
<mapEntry key="org.eclipse.emf.cdo/perf.revision" value="true"/>
148
<mapEntry key="org.eclipse.osgi/defaultprofile/logfilename" value=""/>
149
<mapEntry key="org.eclipse.team.core/backgroundevents" value="false"/>
150
<mapEntry key="org.eclipse.ui/trace/keyBindings" value="false"/>
151
<mapEntry key="org.eclipse.emf.cdo.server/debug.session" value="true"/>
152
<mapEntry key="org.eclipse.ui/perf/part.activate" value="200"/>
153
<mapEntry key="org.eclipse.update.core/debug" value="true"/>
154
<mapEntry key="org.eclipse.osgi/debug/security" value="false"/>
155
<mapEntry key="org.eclipse.core.resources/build/needbuild" value="false"/>
156
<mapEntry key="org.eclipse.core.resources/restore/metainfo" value="false"/>
157
<mapEntry key="org.eclipse.core.resources/perf/builders" value="10000"/>
158
<mapEntry key="org.eclipse.net4j.jms.admin/debug.protocol" value="true"/>
159
<mapEntry key="org.eclipse.net4j.db.hsqldb/debug" value="true"/>
160
<mapEntry key="org.eclipse.ui/perf/perspective.listeners" value="200"/>
161
<mapEntry key="org.eclipse.ui/debug/showAllJobs" value="false"/>
162
<mapEntry key="org.eclipse.emf.cdo.server/debug.store" value="true"/>
163
<mapEntry key="org.eclipse.core.resources/history" value="false"/>
164
<mapEntry key="org.eclipse.ui/listeners/IWorkbenchPage.IPartListener" value="false"/>
165
<mapEntry key="org.eclipse.jdt.core/debug/search" value="false"/>
166
<mapEntry key="org.eclipse.pde.core/validation" value="false"/>
167
<mapEntry key="org.eclipse.team.cvs.core/cvsprotocol" value="true"/>
168
<mapEntry key="org.eclipse.jface.text/debug/AnnotationPainter" value="false"/>
169
<mapEntry key="org.eclipse.core.resources/restore/mastertable" value="false"/>
170
<mapEntry key="org.eclipse.core.runtime/debug" value="false"/>
171
<mapEntry key="org.eclipse.equinox.preferences/set" value="false"/>
172
<mapEntry key="org.eclipse.core.resources/restore/snapshots" value="false"/>
173
<mapEntry key="org.eclipse.ui/perf/perspective.switch" value="800"/>
174
<mapEntry key="org.eclipse.emf.cdo/debug.protocol" value="true"/>
175
<mapEntry key="org.eclipse.help.webapp/debug/workingsets" value="false"/>
176
<mapEntry key="org.eclipse.osgi/debug/bundleTime" value="false"/>
177
<mapEntry key="org.eclipse.emf.cdo.common/perf.revision" value="true"/>
178
<mapEntry key="org.eclipse.core.resources/restore/markers" value="false"/>
179
<mapEntry key="org.eclipse.emf.cdo.common/debug.model" value="true"/>
180
<mapEntry key="org.eclipse.ui/perf/workbench.start" value="45000"/>
181
<mapEntry key="org.eclipse.core.runtime/url/debug/cachecopy" value="false"/>
182
<mapEntry key="org.eclipse.emf.cdo.common/perf.revision.reading" value="true"/>
183
<mapEntry key="org.eclipse.core.runtime/perf/success" value="false"/>
184
<mapEntry key="org.eclipse.net4j/debug.connector" value="true"/>
185
<mapEntry key="org.eclipse.jdt.core/perf/selection" value="300"/>
186
<mapEntry key="org.eclipse.osgi/debug/startlevel" value="false"/>
187
<mapEntry key="org.eclipse.core.resources/restore" value="false"/>
188
<mapEntry key="org.eclipse.osgi/resolver/wiring" value="false"/>
189
<mapEntry key="org.eclipse.net4j.buddies.server/debug" value="true"/>
190
<mapEntry key="org.eclipse.core.resources/perf/snapshot" value="1000"/>
191
<mapEntry key="org.eclipse.ui.intro/trace/logPerformance" value="false"/>
192
<mapEntry key="org.eclipse.osgi/debug/loader" value="false"/>
193
<mapEntry key="org.eclipse.ui/trace/contexts.verbose" value="false"/>
194
<mapEntry key="org.eclipse.osgi/resolver/grouping" value="false"/>
195
<mapEntry key="org.eclipse.jdt.ui/perf/explorer/makeActions" value="1000"/>
196
<mapEntry key="org.eclipse.net4j/debug.acceptor" value="true"/>
197
<mapEntry key="org.eclipse.net4j.buddies.ui/debug" value="true"/>
198
<mapEntry key="org.eclipse.emf.cdo/perf" value="true"/>
199
<mapEntry key="org.eclipse.core.resources/save/markers" value="false"/>
200
<mapEntry key="org.eclipse.osgi/eclipseadaptor/debug/platformadmin/resolver" value="false"/>
201
<mapEntry key="org.eclipse.ui/listeners/IWorkbenchPage.IPartListener2" value="false"/>
202
<mapEntry key="org.eclipse.net4j.jvm/debug" value="true"/>
203
<mapEntry key="org.eclipse.ui/trace/operations" value="false"/>
204
<mapEntry key="org.eclipse.update.core/debug/install" value="false"/>
205
<mapEntry key="org.eclipse.equinox.registry/debug/events" value="false"/>
206
<mapEntry key="org.eclipse.core.resources/save/metainfo" value="false"/>
207
<mapEntry key="org.eclipse.net4j.util/debug.lifecycle" value="true"/>
208
<mapEntry key="org.eclipse.ui/perf/contentTypes" value="200"/>
209
<mapEntry key="org.eclipse.help.ui/debug/embeddedBrowser/inprocess" value="false"/>
210
<mapEntry key="org.eclipse.jdt.core/perf/javadeltalistener" value="500"/>
211
<mapEntry key="org.eclipse.core.resources/perf/listeners" value="500"/>
212
<mapEntry key="org.eclipse.ui.intro/flags/noBrowser" value="false"/>
213
<mapEntry key="org.eclipse.ui/perf/part.init" value="800"/>
214
<mapEntry key="org.eclipse.core.contenttype/debug" value="false"/>
215
<mapEntry key="org.eclipse.osgi/resolver/imports" value="false"/>
216
<mapEntry key="org.eclipse.core.resources/restore/tree" value="false"/>
217
<mapEntry key="org.eclipse.ui.intro.universal/trace/logPerformance" value="false"/>
218
<mapEntry key="org.eclipse.help/debug/context" value="false"/>
219
<mapEntry key="org.eclipse.osgi/debug/manifest" value="false"/>
220
<mapEntry key="org.eclipse.emf.cdo/debug" value="true"/>
221
<mapEntry key="org.eclipse.ui/trace/multipageeditor" value="false"/>
222
<mapEntry key="org.eclipse.emf.cdo.ui/debug" value="true"/>
223
<mapEntry key="org.eclipse.net4j.examples/debug" value="true"/>
224
<mapEntry key="org.eclipse.core.resources/build/needbuildstack" value="false"/>
225
<mapEntry key="org.eclipse.ui/debug/swtdebug" value="false"/>
226
<mapEntry key="org.eclipse.core.resources/save/syncinfo" value="false"/>
227
<mapEntry key="org.eclipse.team.cvs.ssh/debug" value="false"/>
228
<mapEntry key="org.eclipse.core.resources/build/failure" value="false"/>
229
<mapEntry key="org.eclipse.team.core/debug" value="false"/>
230
<mapEntry key="org.eclipse.jdt.core/debug/builder" value="false"/>
231
<mapEntry key="org.eclipse.emf.cdo.common/debug.revision" value="true"/>
232
<mapEntry key="org.eclipse.osgi/trace/classLoading" value="false"/>
233
<mapEntry key="org.eclipse.net4j.jms.server.jdbc/debug" value="true"/>
234
<mapEntry key="org.eclipse.core.resources/save" value="false"/>
235
<mapEntry key="org.eclipse.core.jobs/jobs/errorondeadlock" value="false"/>
236
<mapEntry key="org.eclipse.core.resources/contenttype" value="false"/>
237
<mapEntry key="org.eclipse.jface.text/debug/FastPartitioner/PositionCache" value="false"/>
238
<mapEntry key="org.eclipse.emf.cdo.server/debug" value="true"/>
239
<mapEntry key="org.eclipse.jdt.core/debug/compiler" value="false"/>
240
<mapEntry key="org.eclipse.osgi/debug/events" value="false"/>
241
<mapEntry key="org.eclipse.ui/trace/commands" value="false"/>
242
<mapEntry key="org.eclipse.equinox.preferences/get" value="false"/>
243
<mapEntry key="org.eclipse.jdt.ui/debug/ResultCollector" value="false"/>
244
<mapEntry key="org.eclipse.debug.ui/debug/launchhistory" value="false"/>
245
<mapEntry key="org.eclipse.net4j.util/debug.om" value="true"/>
246
<mapEntry key="org.eclipse.net4j.jms.server/debug" value="true"/>
247
<mapEntry key="org.eclipse.net4j.db.mysql/debug" value="true"/>
248
<mapEntry key="org.eclipse.debug.ui/debug/viewers/model" value="false"/>
249
<mapEntry key="org.eclipse.net4j.util/debug" value="true"/>
250
<mapEntry key="org.eclipse.equinox.registry/debug" value="false"/>
251
<mapEntry key="org.eclipse.ui.intro/debug" value="true"/>
252
<mapEntry key="org.eclipse.jdt.core/debug/cpresolution/advanced" value="false"/>
253
<mapEntry key="org.eclipse.net4j.jms/debug" value="true"/>
254
<mapEntry key="org.eclipse.osgi/eclipseadaptor/converter/debug" value="false"/>
255
<mapEntry key="org.eclipse.emf.cdo.server/debug.resource" value="true"/>
256
<mapEntry key="org.eclipse.net4j.db.derby/debug.sql" value="true"/>
257
<mapEntry key="org.eclipse.net4j.debug/debug" value="true"/>
258
<mapEntry key="org.eclipse.pde.core/cache" value="false"/>
259
<mapEntry key="org.eclipse.emf.cdo/debug.transaction" value="true"/>
260
<mapEntry key="org.eclipse.emf.cdo.server.db/debug" value="true"/>
261
<mapEntry key="org.eclipse.net4j/debug.selector" value="true"/>
262
<mapEntry key="org.eclipse.debug.core/debug/events" value="false"/>
263
<mapEntry key="org.eclipse.emf.cdo.common/perf" value="true"/>
264
<mapEntry key="org.eclipse.jdt.ui/debug" value="true"/>
265
<mapEntry key="org.eclipse.osgi/monitor/classes" value="false"/>
266
<mapEntry key="org.eclipse.net4j.db/debug.sql" value="true"/>
267
<mapEntry key="org.eclipse.ui/perf/part.input" value="200"/>
268
<mapEntry key="org.eclipse.ui.intro.universal/debug" value="true"/>
269
<mapEntry key="org.eclipse.jdt.ui/debug/TypeConstraints" value="false"/>
270
<mapEntry key="org.eclipse.osgi/debug/messageBundles" value="false"/>
271
<mapEntry key="org.eclipse.core.resources/build/invoking" value="false"/>
272
<mapEntry key="org.eclipse.jdt.core/debug/javadelta/verbose" value="false"/>
273
<mapEntry key="org.eclipse.net4j.util/debug.concurrency" value="true"/>
274
<mapEntry key="org.eclipse.net4j.fileshare.ui/debug" value="true"/>
275
<mapEntry key="org.eclipse.core.resources/save/tree" value="false"/>
276
<mapEntry key="org.eclipse.ui/debug/contributions" value="false"/>
277
<mapEntry key="org.eclipse.update.core/debug/warning" value="false"/>
278
<mapEntry key="org.eclipse.core.resources/natures" value="false"/>
279
<mapEntry key="org.eclipse.jdt.core.manipulation/debug" value="true"/>
280
<mapEntry key="org.eclipse.emf.cdo.common/perf.revision.writing" value="true"/>
281
<mapEntry key="org.eclipse.net4j.jms.admin/debug" value="true"/>
282
<mapEntry key="org.eclipse.emf.cdo/debug.model" value="true"/>
283
<mapEntry key="org.eclipse.net4j.db.derby/debug" value="true"/>
284
<mapEntry key="org.eclipse.jdt.core/debug/cpresolution" value="false"/>
285
<mapEntry key="org.eclipse.help.ui/debug/embeddedBrowser" value="false"/>
286
<mapEntry key="org.eclipse.help/debug/search" value="false"/>
287
<mapEntry key="org.eclipse.team.cvs.ssh/ssh_protocol" value="false"/>
288
<mapEntry key="org.eclipse.ui/perf/part.create" value="800"/>
289
<mapEntry key="org.eclipse.core.resources/build/stacktrace" value="false"/>
290
<mapEntry key="org.eclipse.ui.intro/trace/logInfo" value="true"/>
291
<mapEntry key="org.eclipse.team.core/streams" value="false"/>
292
<mapEntry key="org.eclipse.emf.cdo.common/debug" value="true"/>
293
<mapEntry key="org.eclipse.ui.ide/debug/undomonitor" value="false"/>
294
<mapEntry key="org.eclipse.net4j.ui/debug" value="true"/>
295
<mapEntry key="org.eclipse.jdt.ui/perf/explorer/RefactorActionGroup" value="150"/>
296
<mapEntry key="org.eclipse.ui/experimental/menus" value="false"/>
297
<mapEntry key="org.eclipse.core.jobs/jobs/shutdown" value="false"/>
298
<mapEntry key="org.eclipse.osgi/debug/packageadmin" value="false"/>
299
<mapEntry key="org.eclipse.emf.cdo/debug.session" value="true"/>
300
<mapEntry key="org.eclipse.core.runtime/compatibility/debug" value="false"/>
301
<mapEntry key="org.eclipse.emf.cdo/debug.adapter" value="true"/>
302
<mapEntry key="org.eclipse.ui/debug/declaredImages" value="false"/>
303
<mapEntry key="org.eclipse.update.core/debug/reconciler" value="false"/>
304
<mapEntry key="org.eclipse.ui.ide/debug/gc" value="false"/>
305
<mapEntry key="org.eclipse.debug.ui/debug/viewers/contentProvider" value="false"/>
306
<mapEntry key="org.eclipse.osgi/debug/services" value="false"/>
307
<mapEntry key="org.eclipse.net4j.db.mysql/debug.sql" value="true"/>
308
<mapEntry key="org.eclipse.net4j.util.ui/debug" value="true"/>
309
<mapEntry key="org.eclipse.ui.workbench/debug" value="false"/>
310
<mapEntry key="org.eclipse.jdt.ui/perf/content_assist/extensions" value="1000"/>
311
<mapEntry key="org.eclipse.osgi/debug/filter" value="false"/>
312
<mapEntry key="org.eclipse.net4j.buddies.common/debug" value="true"/>
313
<mapEntry key="org.eclipse.debug.core/debug" value="false"/>
314
<mapEntry key="org.eclipse.core.resources/debug" value="false"/>
315
<mapEntry key="org.eclipse.jdt.core/debug/zipaccess" value="false"/>
316
<mapEntry key="org.eclipse.emf.cdo.server/debug.protocol" value="true"/>
317
<mapEntry key="org.eclipse.ui.browser/debug" value="false"/>
318
<mapEntry key="org.eclipse.osgi/profile/impl" value="org.eclipse.osgi.internal.profile.DefaultProfileLogger"/>
319
<mapEntry key="org.eclipse.update.core/debug/web" value="false"/>
320
<mapEntry key="org.eclipse.net4j.jms.server/debug.protocol" value="true"/>
321
<mapEntry key="org.eclipse.team.cvs.core/debug" value="false"/>
322
<mapEntry key="org.eclipse.help/debug" value="true"/>
323
<mapEntry key="org.eclipse.core.runtime/perf" value="false"/>
324
<mapEntry key="org.eclipse.osgi/trace/filters" value="trace.properties"/>
325
<mapEntry key="org.eclipse.net4j/debug.channel" value="true"/>
326
<mapEntry key="org.eclipse.emf.cdo/perf.revision.loading" value="true"/>
327
<mapEntry key="org.eclipse.emf.cdo/debug.revision" value="true"/>
328
<mapEntry key="org.eclipse.emf.cdo/debug.view" value="true"/>
329
<mapEntry key="org.eclipse.ui/perf/part.listeners" value="200"/>
330
<mapEntry key="org.eclipse.debug.ui/debug/viewers/viewer" value="false"/>
331
<mapEntry key="org.eclipse.ui/trace/keyBindings.verbose" value="false"/>
332
<mapEntry key="org.eclipse.core.resources/restore/syncinfo" value="false"/>
333
<mapEntry key="org.eclipse.osgi/defaultprofile/buffersize" value="256"/>
334
<mapEntry key="org.eclipse.ui/perf/page.listeners" value="200"/>
335
<mapEntry key="org.eclipse.team.cvs.core/syncchangeevents" value="false"/>
336
<mapEntry key="org.eclipse.emf.cdo/debug.resource" value="true"/>
337
<mapEntry key="org.eclipse.ui/trace/handlers.verbose" value="false"/>
338
<mapEntry key="org.eclipse.osgi/monitor/resources" value="false"/>
339
<mapEntry key="org.eclipse.ui/perf/part.control" value="800"/>
340
<mapEntry key="org.eclipse.net4j/debug.buffer.stream" value="false"/>
341
<mapEntry key="org.eclipse.ui/perf/uijob" value="200"/>
342
<mapEntry key="org.eclipse.core.runtime/url/debug/cachelookup" value="false"/>
343
<mapEntry key="org.eclipse.ui/listeners/IWorkbenchWindow.IPartListener2" value="false"/>
344
<mapEntry key="org.eclipse.core.resources/build/delta" value="false"/>
345
<mapEntry key="org.eclipse.core.resources/build/interrupt" value="false"/>
346
<mapEntry key="org.eclipse.core.runtime/preferences/plugin" value="false"/>
347
<mapEntry key="org.eclipse.core.runtime/url/debug" value="false"/>
348
<mapEntry key="org.eclipse.osgi/resolver/cycles" value="false"/>
349
<mapEntry key="org.eclipse.ui/listeners/IWorkbenchWindow.IPartListener" value="false"/>
350
<mapEntry key="org.eclipse.jdt.core/debug/resolution" value="false"/>
351
<mapEntry key="org.eclipse.update.configurator/debug" value="false"/>
352
<mapEntry key="org.eclipse.debug.ui/debug/viewers/deltas" value="false"/>
353
<mapEntry key="org.eclipse.help.ui/debug" value="true"/>
354
<mapEntry key="org.eclipse.osgi/eclipseadaptor/debug/location" value="false"/>
355
<mapEntry key="org.eclipse.ui.intro.universal/trace/logInfo" value="true"/>
356
</mapAttribute>
357
<booleanAttribute key="useDefaultConfig" value="true"/>
358
<booleanAttribute key="useDefaultConfigArea" value="true"/>
359
<booleanAttribute key="useNamedJRE" value="true"/>
360
<booleanAttribute key="useProduct" value="true"/>
361
<booleanAttribute key="usefeatures" value="false"/>
362
</launchConfiguration>
(-)CDOClient1 (+398 lines)
Added Link Here
1
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
<launchConfiguration type="org.eclipse.pde.ui.RuntimeWorkbench">
3
<booleanAttribute key="askclear" value="true"/>
4
<booleanAttribute key="automaticAdd" value="false"/>
5
<booleanAttribute key="automaticValidate" value="false"/>
6
<stringAttribute key="bootstrap" value=""/>
7
<stringAttribute key="checked" value="org.eclipse.emf.cdo,org.eclipse.emf.cdo.examples,org.eclipse.emf.cdo.ui,org.eclipse.net4j,org.eclipse.net4j.http,org.eclipse.net4j.http.common,org.eclipse.net4j.tcp,org.eclipse.net4j.ui,org.eclipse.net4j.util,org.eclipse.net4j.util.ui"/>
8
<booleanAttribute key="clearConfig" value="false"/>
9
<booleanAttribute key="clearws" value="false"/>
10
<booleanAttribute key="clearwslog" value="false"/>
11
<stringAttribute key="configLocation" value="${workspace_loc}/.metadata/.plugins/org.eclipse.pde.core/CDOClient1 (JP)"/>
12
<booleanAttribute key="default" value="true"/>
13
<booleanAttribute key="includeOptional" value="true"/>
14
<stringAttribute key="location" value="${workspace_loc}/../cdo.client1"/>
15
<booleanAttribute key="org.eclipse.debug.core.appendEnvironmentVariables" value="true"/>
16
<listAttribute key="org.eclipse.debug.ui.favoriteGroups">
17
<listEntry value="org.eclipse.debug.ui.launchGroup.debug"/>
18
<listEntry value="org.eclipse.debug.ui.launchGroup.run"/>
19
</listAttribute>
20
<stringAttribute key="org.eclipse.jdt.launching.JRE_CONTAINER" value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
21
<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-os ${target.os} -ws ${target.ws} -arch ${target.arch} -nl ${target.nl}&#13;&#10;-nosplash&#13;&#10;-console"/>
22
<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.pde.ui.workbenchClasspathProvider"/>
23
<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Xms40m&#13;&#10;-Xmx512m"/>
24
<stringAttribute key="pde.version" value="3.3"/>
25
<stringAttribute key="product" value="org.eclipse.sdk.ide"/>
26
<stringAttribute key="selected_target_plugins" value="org.eclipse.jdt.core.manipulation@default:default,org.eclipse.swt@default:default,org.eclipse.platform@default:default,org.eclipse.ecf.filetransfer@default:default,org.eclipse.equinox.preferences@default:default,org.apache.lucene@default:default,org.eclipse.emf.common@default:default,org.eclipse.equinox.registry@default:default,org.eclipse.ant.core@default:default,org.eclipse.emf.codegen.ecore@default:default,org.eclipse.ui.workbench.texteditor@default:default,org.eclipse.swt.win32.win32.x86@default:false,org.eclipse.osgi.util@default:default,org.eclipse.core.runtime@default:true,org.eclipse.core.databinding.property@default:default,org.eclipse.jface.text@default:default,org.eclipse.compare.core@default:default,org.eclipse.emf.ecore.change.edit@default:default,org.eclipse.core.filesystem.win32.x86@default:false,org.apache.ant@default:default,org.eclipse.equinox.security.ui@default:default,org.eclipse.core.boot@default:default,org.eclipse.equinox.p2.metadata.generator@default:default,org.eclipse.update.core@default:default,org.eclipse.emf.mapping.ui@default:default,org.eclipse.jdt.compiler.tool@default:false,org.eclipse.equinox.security.win32.x86@default:false,org.eclipse.equinox.p2.ui@default:default,org.eclipse.ui.ide@default:default,org.eclipse.equinox.p2.metadata@default:default,org.eclipse.search@default:default,org.eclipse.equinox.launcher@default:default,org.apache.commons.el@default:default,javax.servlet@default:default,org.eclipse.jsch.core@default:default,org.eclipse.help.webapp@default:default,org.eclipse.core.databinding.beans@default:default,org.eclipse.core.runtime.compatibility.auth@default:default,org.eclipse.jdt.doc.user@default:default,org.eclipse.emf.codegen.ecore.ui@default:default,org.eclipse.jdt.core@default:default,org.eclipse.osgi@-1:true,org.eclipse.emf.exporter@default:default,org.eclipse.update.core.win32@default:false,org.eclipse.equinox.p2.publisher@default:default,org.eclipse.emf.importer.java@default:default,org.eclipse.equinox.simpleconfigurator@1:true,org.eclipse.jdt.ui@default:default,org.eclipse.help.appserver@default:default,org.eclipse.update.scheduler@default:default,org.eclipse.ant.ui@default:default,org.eclipse.cvs@default:default,org.eclipse.jdt.debug.ui@default:default,org.eclipse.ui.forms@default:default,org.apache.jasper@default:default,org.eclipse.emf.codegen@default:default,org.mortbay.jetty.server@default:default,org.eclipse.sdk@default:default,com.ibm.icu@default:default,org.eclipse.emf.ecore@default:default,org.eclipse.equinox.http.jetty@default:default,org.eclipse.equinox.concurrent@default:default,org.eclipse.core.runtime.compatibility.registry@default:false,org.eclipse.jdt.compiler.apt@default:false,org.eclipse.jdt.junit4.runtime@default:default,org.eclipse.equinox.app@default:default,org.eclipse.pde.build@default:default,org.eclipse.platform.doc.isv@default:default,org.eclipse.equinox.p2.artifact.repository@default:default,org.eclipse.emf.mapping.ecore2xml@default:default,org.sat4j.pb@default:default,org.eclipse.ui.navigator@default:default,org.eclipse.emf.importer.rose@default:default,org.eclipse.core.net.win32.x86@default:false,org.eclipse.ui.ide.application@default:default,org.eclipse.emf.mapping@default:default,org.eclipse.core.net@default:default,org.eclipse.ui.presentations.r21@default:default,org.eclipse.osgi.services@default:default,org.eclipse.compare@default:default,org.eclipse.core.expressions@default:default,org.eclipse.ecf@default:default,org.eclipse.emf.edit@default:default,org.eclipse.equinox.launcher.win32.win32.x86@default:false,org.mortbay.jetty.util@default:default,org.eclipse.equinox.p2.core@default:default,org.eclipse.emf.codegen.ui@default:default,org.eclipse.emf.edit.ui@default:default,org.eclipse.equinox.jsp.jasper.registry@default:default,org.eclipse.ui.navigator.resources@default:default,org.eclipse.core.jobs@default:default,org.eclipse.emf.mapping.ecore2xml.ui@default:default,org.eclipse.pde.junit.runtime@default:default,org.eclipse.text@default:default,com.jcraft.jsch@default:default,org.eclipse.jdt.debug@default:default,org.eclipse.core.contenttype@default:default,org.eclipse.equinox.http.registry@default:default,org.eclipse.emf.doc@default:default,org.eclipse.jdt.junit.runtime@default:default,org.eclipse.ui.workbench@default:default,org.eclipse.ltk.ui.refactoring@default:default,org.eclipse.ui.cheatsheets@default:default,org.eclipse.equinox.frameworkadmin@default:default,org.eclipse.core.databinding.observable@default:default,org.eclipse.ui.editors@default:default,org.eclipse.equinox.common@2:true,org.eclipse.core.variables@default:default,org.eclipse.ui.browser@default:default,org.eclipse.ui.views.properties.tabbed@default:default,org.eclipse.equinox.p2.repository@default:default,org.eclipse.emf.ecore.editor@default:default,org.hamcrest.core@default:default,org.eclipse.core.filesystem@default:default,org.junit@default:default,org.eclipse.equinox.simpleconfigurator.manipulator@default:default,org.eclipse.update.ui@default:default,org.eclipse.equinox.security@default:default,org.eclipse.core.runtime.compatibility@default:default,org.eclipse.equinox.frameworkadmin.equinox@default:default,org.eclipse.ltk.core.refactoring@default:default,org.eclipse.equinox.p2.repository.tools@default:default,org.eclipse.jdt.junit@default:default,org.eclipse.emf.ecore.change@default:default,org.eclipse.equinox.p2.garbagecollector@default:default,org.eclipse.ui.intro.universal@default:default,org.eclipse.core.databinding@default:default,org.eclipse.emf.mapping.ecore2ecore.editor@default:default,org.eclipse.emf.common.ui@default:default,org.eclipse.ui@default:default,org.eclipse.equinox.p2.director@default:default,org.eclipse.ui.views@default:default,org.eclipse.team.cvs.core@default:default,javax.servlet.jsp@default:default,org.junit4@default:default,org.eclipse.help@default:default,org.eclipse.equinox.jsp.jasper@default:default,org.eclipse.jface@default:default,org.eclipse.core.commands@default:default,org.eclipse.core.filebuffers@default:default,org.eclipse.team.ui@default:default,org.eclipse.emf.mapping.ecore2ecore@default:default,org.eclipse.ui.views.log@default:default,org.eclipse.help.base@default:default,org.eclipse.ecf.ssl@default:false,org.eclipse.jdt.doc.isv@default:default,org.eclipse.pde.doc.user@default:default,org.eclipse.equinox.p2.exemplarysetup@default:default,org.eclipse.equinox.p2.engine@default:default,org.eclipse.ui.externaltools@default:default,org.eclipse.pde.core@default:default,org.apache.commons.logging@default:default,org.eclipse.pde@default:default,org.eclipse.equinox.http.servlet@default:default,org.eclipse.help.ui@default:default,org.eclipse.debug.core@default:default,org.eclipse.emf.converter@default:default,org.eclipse.equinox.p2.jarprocessor@default:default,org.eclipse.team.cvs.ui@default:default,org.eclipse.emf.importer.ecore@default:default,org.eclipse.ecf.identity@default:default,org.apache.lucene.analysis@default:default,org.eclipse.emf.ecore.edit@default:default,org.eclipse.core.resources.win32.x86@default:false,org.eclipse.ui.console@default:default,org.eclipse.pde.runtime@default:default,org.eclipse.emf.ant@default:default,org.eclipse.team.cvs.ssh2@default:default,org.eclipse.debug.ui@default:default,org.eclipse.equinox.p2.updatesite@default:default,org.eclipse.core.resources@default:default,org.sat4j.core@default:default,org.eclipse.team.core@default:default,org.eclipse.emf.cheatsheets@default:default,org.eclipse.jface.databinding@default:default,org.eclipse.jdt.launching@default:default,org.eclipse.equinox.p2.metadata.repository@default:default,org.eclipse.pde.ui@default:default,org.eclipse.emf.ecore.xmi@default:default,org.eclipse.ui.workbench.compatibility@default:false,org.eclipse.ui.win32@default:false,org.eclipse.update.configurator@3:true,org.eclipse.emf.importer@default:default,org.eclipse.pde.ui.templates@default:default,org.eclipse.ui.intro@default:default"/>
27
<stringAttribute key="selected_workspace_plugins" value="org.eclipse.net4j.util@default:default,org.eclipse.net4j@default:default,org.eclipse.emf.cdo.tests.model3@default:default,org.eclipse.emf.cdo.ui@default:default,org.eclipse.emf.cdo.common@default:default,org.eclipse.net4j.util.ui@default:default,org.eclipse.emf.cdo.examples@default:default,org.eclipse.emf.cdo.tests.model2@default:default,org.eclipse.emf.cdo.ui.ide@default:default,org.eclipse.emf.cdo.tests.model1@default:default,org.eclipse.emf.cdo.tests.mango@default:default,org.eclipse.emf.cdo.team@default:default,org.eclipse.net4j.ui@default:default,org.eclipse.emf.cdo.net4j@default:default,org.eclipse.emf.cdo@default:default,org.eclipse.net4j.tcp@default:default,org.eclipse.emf.cdo.edit@default:default"/>
28
<booleanAttribute key="show_selected_only" value="false"/>
29
<stringAttribute key="templateConfig" value="${target_home}\configuration\config.ini"/>
30
<booleanAttribute key="tracing" value="true"/>
31
<mapAttribute key="tracingOptions">
32
<mapEntry key="org.eclipse.core.runtime/debug/context" value="false"/>
33
<mapEntry key="org.eclipse.core.jobs/jobs/beginend" value="false"/>
34
<mapEntry key="org.eclipse.jdt.core/debug/completion" value="false"/>
35
<mapEntry key="org.eclipse.ui/trace/sources" value="false"/>
36
<mapEntry key="org.eclipse.jdt.core/debug/indexmanager" value="false"/>
37
<mapEntry key="org.eclipse.net4j.buddies.chat/debug" value="true"/>
38
<mapEntry key="org.eclipse.ltk.core.refactoring/perf/participants/checkConditions" value="300"/>
39
<mapEntry key="org.eclipse.jface.text.source/debug/RevisionRulerColumn" value="false"/>
40
<mapEntry key="org.eclipse.ui/trace/contexts" value="false"/>
41
<mapEntry key="org.eclipse.debug.ui/debug/viewers/updateSequence" value="false"/>
42
<mapEntry key="org.eclipse.osgi/trace/filename" value="runtime.traces"/>
43
<mapEntry key="org.eclipse.net4j.pop/perf" value="false"/>
44
<mapEntry key="org.eclipse.jdt.core/debug" value="true"/>
45
<mapEntry key="org.eclipse.debug.ui/debug/contextlaunching" value="false"/>
46
<mapEntry key="org.eclipse.osgi/eclipseadaptor/debug" value="false"/>
47
<mapEntry key="org.eclipse.net4j.tcp/debug" value="true"/>
48
<mapEntry key="org.eclipse.team.cvs.core/dirtycaching" value="false"/>
49
<mapEntry key="org.eclipse.emf.cdo.server/debug.repository" value="true"/>
50
<mapEntry key="org.eclipse.jdt.core/debug/javamodel" value="false"/>
51
<mapEntry key="org.eclipse.ui.intro/trace/printHTML" value="false"/>
52
<mapEntry key="org.eclipse.ltk.core.refactoring/perf/participants/createChanges" value="300"/>
53
<mapEntry key="org.eclipse.emf.cdo.common/debug.protocol" value="true"/>
54
<mapEntry key="org.eclipse.net4j.pop.ui/perf" value="false"/>
55
<mapEntry key="org.eclipse.net4j.util/debug.lifecycle.dump" value="true"/>
56
<mapEntry key="org.eclipse.ui/listeners/IWorkbenchWindow.IPerspectiveListener" value="false"/>
57
<mapEntry key="org.eclipse.net4j.pop/debug" value="true"/>
58
<mapEntry key="org.eclipse.emf.cdo/debug.util" value="true"/>
59
<mapEntry key="org.eclipse.osgi/resolver/debug" value="false"/>
60
<mapEntry key="org.eclipse.net4j.db.postgresql/debug" value="true"/>
61
<mapEntry key="org.eclipse.team.core/refreshjob" value="false"/>
62
<mapEntry key="org.eclipse.ui/debug" value="false"/>
63
<mapEntry key="org.eclipse.update.core/debug/installhandler" value="false"/>
64
<mapEntry key="org.eclipse.jface.text/debug/AbstractInformationControlManager" value="false"/>
65
<mapEntry key="org.eclipse.help.ui/debug/infopop" value="false"/>
66
<mapEntry key="org.eclipse.pde.core/classpath" value="false"/>
67
<mapEntry key="org.eclipse.team.cvs.core/threading" value="false"/>
68
<mapEntry key="org.eclipse.equinox.preferences/general" value="false"/>
69
<mapEntry key="org.eclipse.net4j.jms.server/debug.store" value="true"/>
70
<mapEntry key="org.eclipse.ui/trace/handlers.performance" value="false"/>
71
<mapEntry key="org.eclipse.ui/trace/operations.verbose" value="false"/>
72
<mapEntry key="org.eclipse.osgi/trace/activation" value="false"/>
73
<mapEntry key="org.eclipse.debug.core/debug/commands" value="false"/>
74
<mapEntry key="org.eclipse.ui/perf/workbench.restore" value="30000"/>
75
<mapEntry key="org.eclipse.team.core/threading" value="false"/>
76
<mapEntry key="org.eclipse.update.core/debug/parsing" value="false"/>
77
<mapEntry key="org.eclipse.jdt.core/debug/postaction" value="false"/>
78
<mapEntry key="org.eclipse.jdt.apt.core/debug/generatedFileMaps" value="false"/>
79
<mapEntry key="org.eclipse.ui/trace/graphics" value="false"/>
80
<mapEntry key="org.eclipse.osgi/defaultprofile/logsynchronously" value="false"/>
81
<mapEntry key="org.eclipse.net4j.pop.ui/debug" value="true"/>
82
<mapEntry key="org.eclipse.net4j.db/debug" value="true"/>
83
<mapEntry key="org.eclipse.net4j.buddies.chat.ui/debug" value="true"/>
84
<mapEntry key="org.eclipse.ui/debug/workingSets" value="false"/>
85
<mapEntry key="org.eclipse.debug.ui/debug/viewers/stateSaveRestore" value="false"/>
86
<mapEntry key="org.eclipse.osgi/monitor/activation" value="false"/>
87
<mapEntry key="org.eclipse.net4j.jms/debug.protocol" value="true"/>
88
<mapEntry key="org.eclipse.help/debug/toc" value="false"/>
89
<mapEntry key="org.eclipse.debug.ui/debug" value="false"/>
90
<mapEntry key="org.eclipse.jdt.core/debug/buffermanager" value="false"/>
91
<mapEntry key="org.eclipse.jface.text/debug/ContentAssistSubjectAdapters" value="false"/>
92
<mapEntry key="org.eclipse.pde.build/debug" value="false"/>
93
<mapEntry key="org.eclipse.jdt.ui/perf/search/participants" value="300"/>
94
<mapEntry key="org.eclipse.ui/perf/perspective.create" value="800"/>
95
<mapEntry key="org.eclipse.update.core/debug/type" value="false"/>
96
<mapEntry key="org.eclipse.osgi/eclipseadaptor/debug/platformadmin" value="false"/>
97
<mapEntry key="org.eclipse.ui/listeners/IWorkbenchPage.IPropertyChangeListener" value="false"/>
98
<mapEntry key="org.eclipse.osgi/resolver/generics" value="false"/>
99
<mapEntry key="org.eclipse.osgi/resolver/requires" value="false"/>
100
<mapEntry key="org.eclipse.core.resources/refresh" value="false"/>
101
<mapEntry key="org.eclipse.jdt.core/perf/containerinitializer" value="5000"/>
102
<mapEntry key="org.eclipse.osgi/profile/benchmark" value="false"/>
103
<mapEntry key="org.eclipse.help.webapp/debug" value="true"/>
104
<mapEntry key="org.eclipse.jdt.core/debug/builder/stats" value="false"/>
105
<mapEntry key="org.eclipse.jdt.ui/debug/ASTProvider" value="false"/>
106
<mapEntry key="org.eclipse.equinox.security.ui/debug/storage" value="false"/>
107
<mapEntry key="org.eclipse.osgi/debug" value="false"/>
108
<mapEntry key="org.eclipse.emf.cdo.server/debug.types" value="true"/>
109
<mapEntry key="org.eclipse.ui/trace/handlers" value="false"/>
110
<mapEntry key="org.eclipse.ui/trace/contexts.performance" value="false"/>
111
<mapEntry key="org.eclipse.net4j.buddies/debug" value="true"/>
112
<mapEntry key="org.eclipse.team.cvs.core/metafiles" value="false"/>
113
<mapEntry key="org.eclipse.jdt.core/perf/completion" value="300"/>
114
<mapEntry key="org.eclipse.osgi/profile/startup" value="false"/>
115
<mapEntry key="org.eclipse.core.jobs/jobs" value="false"/>
116
<mapEntry key="org.eclipse.core.resources/perf/save.participants" value="500"/>
117
<mapEntry key="org.eclipse.emf.cdo.server.hibernate/debug" value="true"/>
118
<mapEntry key="org.eclipse.net4j/debug" value="true"/>
119
<mapEntry key="org.eclipse.net4j/debug.signal" value="true"/>
120
<mapEntry key="org.eclipse.core.jobs/jobs/timing" value="false"/>
121
<mapEntry key="org.eclipse.net4j.db.hsqldb/debug.sql" value="true"/>
122
<mapEntry key="org.eclipse.jdt.core/perf/reconcile" value="1000"/>
123
<mapEntry key="org.eclipse.ui/listeners/IWorkbenchWindow.IPageListener" value="false"/>
124
<mapEntry key="org.eclipse.net4j/debug.buffer" value="false"/>
125
<mapEntry key="org.eclipse.core.resources/contenttype/cache" value="false"/>
126
<mapEntry key="org.eclipse.emf.cdo/debug.repository" value="true"/>
127
<mapEntry key="org.eclipse.update.core/debug/configuration" value="false"/>
128
<mapEntry key="org.eclipse.core.jobs/jobs/locks" value="false"/>
129
<mapEntry key="org.eclipse.emf.cdo.examples/debug" value="true"/>
130
<mapEntry key="org.eclipse.ui/trace/handlers.verbose.commandId" value=""/>
131
<mapEntry key="org.eclipse.core.runtime/url/debug/connect" value="false"/>
132
<mapEntry key="org.eclipse.ui.ide/debug" value="false"/>
133
<mapEntry key="org.eclipse.osgi/profile/debug" value="false"/>
134
<mapEntry key="org.eclipse.pde.core/debug" value="true"/>
135
<mapEntry key="org.eclipse.ui/listeners/IWorkbenchPartReference" value="false"/>
136
<mapEntry key="org.eclipse.ui/debug/job.stale" value="false"/>
137
<mapEntry key="org.eclipse.net4j.pop.repository/perf" value="false"/>
138
<mapEntry key="org.eclipse.net4j.util/debug.registry" value="true"/>
139
<mapEntry key="org.eclipse.jdt.ui/perf/explorer/createPartControl" value="1300"/>
140
<mapEntry key="org.eclipse.jdt.core/debug/hierarchy" value="false"/>
141
<mapEntry key="org.eclipse.jdt.core/perf/variableinitializer" value="5000"/>
142
<mapEntry key="org.eclipse.emf.cdo/debug.object" value="true"/>
143
<mapEntry key="org.eclipse.ui.ide/debug/internalerror/openDialog" value="false"/>
144
<mapEntry key="org.eclipse.emf.cdo.server/debug.revision" value="false"/>
145
<mapEntry key="org.eclipse.emf.cdo.server/debug.transaction" value="true"/>
146
<mapEntry key="org.eclipse.core.resources/strings" value="false"/>
147
<mapEntry key="org.eclipse.jdt.core/debug/sourcemapper" value="false"/>
148
<mapEntry key="org.eclipse.core.resources/save/mastertable" value="false"/>
149
<mapEntry key="org.eclipse.core.expressions/tracePropertyResolving" value="false"/>
150
<mapEntry key="org.eclipse.core.resources/preferences" value="false"/>
151
<mapEntry key="org.eclipse.jdt.core/debug/javadelta" value="false"/>
152
<mapEntry key="org.eclipse.ui/perf/showHeapStatus" value="true"/>
153
<mapEntry key="org.eclipse.jdt.core/debug/selection" value="false"/>
154
<mapEntry key="org.eclipse.jdt.apt.core/debug" value="false"/>
155
<mapEntry key="org.eclipse.jdt.ui/perf/content_assist_sorters/extensions" value=""/>
156
<mapEntry key="org.eclipse.emf.cdo.server.hibernate.id/debug" value="true"/>
157
<mapEntry key="org.eclipse.jdt.core/debug/javamodel/cache" value="false"/>
158
<mapEntry key="org.eclipse.emf.cdo/perf.revision" value="true"/>
159
<mapEntry key="org.eclipse.osgi/defaultprofile/logfilename" value=""/>
160
<mapEntry key="org.eclipse.net4j/set.signal.thread.name" value="false"/>
161
<mapEntry key="org.eclipse.team.core/backgroundevents" value="false"/>
162
<mapEntry key="org.eclipse.ui/trace/keyBindings" value="false"/>
163
<mapEntry key="org.eclipse.emf.cdo.server/debug.session" value="true"/>
164
<mapEntry key="org.eclipse.ui/perf/part.activate" value="200"/>
165
<mapEntry key="org.eclipse.update.core/debug" value="true"/>
166
<mapEntry key="org.eclipse.osgi/debug/security" value="false"/>
167
<mapEntry key="org.eclipse.core.resources/restore/metainfo" value="false"/>
168
<mapEntry key="org.eclipse.core.resources/build/needbuild" value="false"/>
169
<mapEntry key="org.eclipse.ui/debug/swtdebugglobal" value="false"/>
170
<mapEntry key="org.eclipse.core.resources/perf/builders" value="10000"/>
171
<mapEntry key="org.eclipse.ui/perf/perspective.listeners" value="200"/>
172
<mapEntry key="org.eclipse.net4j.db.hsqldb/debug" value="true"/>
173
<mapEntry key="org.eclipse.net4j.jms.admin/debug.protocol" value="true"/>
174
<mapEntry key="org.eclipse.ui/debug/showAllJobs" value="false"/>
175
<mapEntry key="org.eclipse.core.resources/history" value="false"/>
176
<mapEntry key="org.eclipse.emf.cdo.server/debug.store" value="true"/>
177
<mapEntry key="org.eclipse.net4j.http.server/debug" value="true"/>
178
<mapEntry key="org.eclipse.ui/listeners/IWorkbenchPage.IPartListener" value="false"/>
179
<mapEntry key="org.eclipse.jdt.core/debug/search" value="false"/>
180
<mapEntry key="org.eclipse.team.cvs.core/cvsprotocol" value="true"/>
181
<mapEntry key="org.eclipse.pde.core/validation" value="false"/>
182
<mapEntry key="org.eclipse.jface.text/debug/AnnotationPainter" value="false"/>
183
<mapEntry key="org.eclipse.core.resources/restore/mastertable" value="false"/>
184
<mapEntry key="org.eclipse.core.runtime/debug" value="false"/>
185
<mapEntry key="org.eclipse.equinox.preferences/set" value="false"/>
186
<mapEntry key="org.eclipse.core.resources/restore/snapshots" value="false"/>
187
<mapEntry key="org.eclipse.ui/perf/perspective.switch" value="800"/>
188
<mapEntry key="org.eclipse.help.webapp/debug/workingsets" value="false"/>
189
<mapEntry key="org.eclipse.emf.cdo/debug.protocol" value="true"/>
190
<mapEntry key="org.eclipse.osgi/debug/bundleTime" value="false"/>
191
<mapEntry key="org.eclipse.equinox.security.ui/debug" value="false"/>
192
<mapEntry key="org.eclipse.osgi/resolver/uses" value="false"/>
193
<mapEntry key="org.eclipse.emf.cdo.common/perf.revision" value="true"/>
194
<mapEntry key="org.eclipse.core.resources/restore/markers" value="false"/>
195
<mapEntry key="org.eclipse.emf.cdo.common/debug.model" value="true"/>
196
<mapEntry key="org.eclipse.ui/perf/workbench.start" value="45000"/>
197
<mapEntry key="org.eclipse.core.runtime/url/debug/cachecopy" value="false"/>
198
<mapEntry key="org.eclipse.emf.cdo.common/perf.revision.reading" value="true"/>
199
<mapEntry key="org.eclipse.core.runtime/perf/success" value="false"/>
200
<mapEntry key="org.eclipse.net4j/debug.connector" value="true"/>
201
<mapEntry key="org.eclipse.jdt.core/perf/selection" value="300"/>
202
<mapEntry key="org.eclipse.osgi/debug/startlevel" value="false"/>
203
<mapEntry key="org.eclipse.equinox.security/debug/loginFramework" value="false"/>
204
<mapEntry key="org.eclipse.core.resources/restore" value="false"/>
205
<mapEntry key="org.eclipse.osgi/resolver/wiring" value="false"/>
206
<mapEntry key="org.eclipse.core.resources/perf/snapshot" value="1000"/>
207
<mapEntry key="org.eclipse.net4j.buddies.server/debug" value="true"/>
208
<mapEntry key="org.eclipse.ui.intro/trace/logPerformance" value="false"/>
209
<mapEntry key="org.eclipse.ui/trace/contexts.verbose" value="false"/>
210
<mapEntry key="org.eclipse.osgi/debug/loader" value="false"/>
211
<mapEntry key="org.eclipse.jdt.ui/perf/explorer/makeActions" value="1000"/>
212
<mapEntry key="org.eclipse.net4j/debug.acceptor" value="true"/>
213
<mapEntry key="org.eclipse.net4j.buddies.ui/debug" value="true"/>
214
<mapEntry key="org.eclipse.emf.cdo/perf" value="true"/>
215
<mapEntry key="org.eclipse.core.resources/save/markers" value="false"/>
216
<mapEntry key="org.eclipse.osgi/eclipseadaptor/debug/platformadmin/resolver" value="false"/>
217
<mapEntry key="org.eclipse.ui/listeners/IWorkbenchPage.IPartListener2" value="false"/>
218
<mapEntry key="org.eclipse.net4j.jvm/debug" value="true"/>
219
<mapEntry key="org.eclipse.ui/trace/operations" value="false"/>
220
<mapEntry key="org.eclipse.ui.ide/debug/markers" value="false"/>
221
<mapEntry key="org.eclipse.update.core/debug/install" value="false"/>
222
<mapEntry key="org.eclipse.equinox.registry/debug/events" value="false"/>
223
<mapEntry key="org.eclipse.net4j.pop.editor/debug" value="true"/>
224
<mapEntry key="org.eclipse.core.resources/save/metainfo" value="false"/>
225
<mapEntry key="org.eclipse.net4j.util/debug.lifecycle" value="true"/>
226
<mapEntry key="org.eclipse.emf.cdo.examples.spring/debug" value="true"/>
227
<mapEntry key="org.eclipse.ui/perf/contentTypes" value="200"/>
228
<mapEntry key="org.eclipse.help.ui/debug/embeddedBrowser/inprocess" value="false"/>
229
<mapEntry key="org.eclipse.jdt.core/perf/javadeltalistener" value="500"/>
230
<mapEntry key="org.eclipse.core.resources/perf/listeners" value="500"/>
231
<mapEntry key="org.eclipse.ui.intro/flags/noBrowser" value="false"/>
232
<mapEntry key="org.eclipse.ui/perf/part.init" value="800"/>
233
<mapEntry key="org.eclipse.equinox.security/debug" value="false"/>
234
<mapEntry key="org.eclipse.core.contenttype/debug" value="false"/>
235
<mapEntry key="org.eclipse.osgi/resolver/imports" value="false"/>
236
<mapEntry key="org.eclipse.core.resources/restore/tree" value="false"/>
237
<mapEntry key="org.eclipse.net4j.db.postgresql/debug.sql" value="true"/>
238
<mapEntry key="org.eclipse.ui.intro.universal/trace/logPerformance" value="false"/>
239
<mapEntry key="org.eclipse.help/debug/context" value="false"/>
240
<mapEntry key="org.eclipse.net4j.template.ui/debug" value="true"/>
241
<mapEntry key="org.eclipse.osgi/debug/manifest" value="false"/>
242
<mapEntry key="org.eclipse.ui/trace/multipageeditor" value="false"/>
243
<mapEntry key="org.eclipse.emf.cdo/debug" value="true"/>
244
<mapEntry key="org.eclipse.emf.cdo.ui/debug" value="true"/>
245
<mapEntry key="org.eclipse.net4j.examples/debug" value="true"/>
246
<mapEntry key="org.eclipse.jdt.apt.core/debug/generatedFiles" value="false"/>
247
<mapEntry key="org.eclipse.core.resources/build/needbuildstack" value="false"/>
248
<mapEntry key="org.eclipse.ui/debug/swtdebug" value="false"/>
249
<mapEntry key="org.eclipse.core.resources/save/syncinfo" value="false"/>
250
<mapEntry key="org.eclipse.team.cvs.ssh/debug" value="false"/>
251
<mapEntry key="org.eclipse.core.resources/build/failure" value="false"/>
252
<mapEntry key="org.eclipse.team.core/debug" value="false"/>
253
<mapEntry key="org.eclipse.jdt.core/debug/builder" value="false"/>
254
<mapEntry key="org.eclipse.emf.cdo.common/debug.revision" value="true"/>
255
<mapEntry key="org.eclipse.net4j.pop.repository/debug" value="true"/>
256
<mapEntry key="org.eclipse.osgi/trace/classLoading" value="false"/>
257
<mapEntry key="org.eclipse.net4j.jms.server.jdbc/debug" value="true"/>
258
<mapEntry key="org.eclipse.net4j/open.channel.timeout" value="10000"/>
259
<mapEntry key="org.eclipse.core.jobs/jobs/errorondeadlock" value="false"/>
260
<mapEntry key="org.eclipse.core.resources/save" value="false"/>
261
<mapEntry key="org.eclipse.core.resources/contenttype" value="false"/>
262
<mapEntry key="org.eclipse.jface.text/debug/FastPartitioner/PositionCache" value="false"/>
263
<mapEntry key="org.eclipse.jdt.core/debug/compiler" value="false"/>
264
<mapEntry key="org.eclipse.emf.cdo.server/debug" value="true"/>
265
<mapEntry key="org.eclipse.osgi/debug/events" value="false"/>
266
<mapEntry key="org.eclipse.ui/trace/commands" value="false"/>
267
<mapEntry key="org.eclipse.equinox.preferences/get" value="false"/>
268
<mapEntry key="org.eclipse.jdt.ui/debug/ResultCollector" value="false"/>
269
<mapEntry key="org.eclipse.debug.ui/debug/launchhistory" value="false"/>
270
<mapEntry key="org.eclipse.net4j.util/debug.om" value="true"/>
271
<mapEntry key="org.eclipse.net4j.jms.server/debug" value="true"/>
272
<mapEntry key="org.eclipse.net4j.db.mysql/debug" value="true"/>
273
<mapEntry key="org.eclipse.debug.ui/debug/viewers/model" value="false"/>
274
<mapEntry key="org.eclipse.net4j.util/debug" value="true"/>
275
<mapEntry key="org.eclipse.equinox.registry/debug" value="false"/>
276
<mapEntry key="org.eclipse.ui.intro/debug" value="true"/>
277
<mapEntry key="org.eclipse.jdt.core/debug/cpresolution/advanced" value="false"/>
278
<mapEntry key="org.eclipse.net4j.jms/debug" value="true"/>
279
<mapEntry key="org.eclipse.osgi/eclipseadaptor/converter/debug" value="false"/>
280
<mapEntry key="org.eclipse.emf.cdo.server/debug.resource" value="true"/>
281
<mapEntry key="org.eclipse.net4j.debug/debug" value="true"/>
282
<mapEntry key="org.eclipse.net4j.db.derby/debug.sql" value="true"/>
283
<mapEntry key="org.eclipse.pde.core/cache" value="false"/>
284
<mapEntry key="org.eclipse.emf.cdo.ui/test" value="true"/>
285
<mapEntry key="org.eclipse.emf.cdo/debug.transaction" value="true"/>
286
<mapEntry key="org.eclipse.emf.cdo.server.db/debug" value="true"/>
287
<mapEntry key="org.eclipse.debug.core/debug/events" value="false"/>
288
<mapEntry key="org.eclipse.net4j/debug.selector" value="true"/>
289
<mapEntry key="org.eclipse.emf.cdo.common/perf" value="true"/>
290
<mapEntry key="org.eclipse.jdt.ui/debug" value="true"/>
291
<mapEntry key="org.eclipse.net4j.db/debug.sql" value="true"/>
292
<mapEntry key="org.eclipse.osgi/monitor/classes" value="false"/>
293
<mapEntry key="org.eclipse.ui/perf/part.input" value="200"/>
294
<mapEntry key="org.eclipse.ui.intro.universal/debug" value="true"/>
295
<mapEntry key="org.eclipse.jdt.ui/debug/TypeConstraints" value="false"/>
296
<mapEntry key="org.eclipse.emf.cdo.common/debug.id" value="true"/>
297
<mapEntry key="org.eclipse.osgi/debug/messageBundles" value="false"/>
298
<mapEntry key="org.eclipse.core.resources/build/invoking" value="false"/>
299
<mapEntry key="org.eclipse.jdt.core/debug/javadelta/verbose" value="false"/>
300
<mapEntry key="org.eclipse.net4j.util/debug.concurrency" value="true"/>
301
<mapEntry key="org.eclipse.core.resources/save/tree" value="false"/>
302
<mapEntry key="org.eclipse.ui/debug/contributions" value="false"/>
303
<mapEntry key="org.eclipse.update.core/debug/warning" value="false"/>
304
<mapEntry key="org.eclipse.core.resources/natures" value="false"/>
305
<mapEntry key="org.eclipse.jdt.core.manipulation/debug" value="true"/>
306
<mapEntry key="org.eclipse.emf.cdo.common/perf.revision.writing" value="true"/>
307
<mapEntry key="org.eclipse.net4j.jms.admin/debug" value="true"/>
308
<mapEntry key="org.eclipse.net4j.db.derby/debug" value="true"/>
309
<mapEntry key="org.eclipse.emf.cdo/debug.model" value="true"/>
310
<mapEntry key="org.eclipse.jdt.core/debug/cpresolution" value="false"/>
311
<mapEntry key="org.eclipse.help/debug/search" value="false"/>
312
<mapEntry key="org.eclipse.help.ui/debug/embeddedBrowser" value="false"/>
313
<mapEntry key="org.eclipse.team.cvs.ssh/ssh_protocol" value="false"/>
314
<mapEntry key="org.eclipse.core.resources/build/stacktrace" value="false"/>
315
<mapEntry key="org.eclipse.ui/perf/part.create" value="800"/>
316
<mapEntry key="org.eclipse.ui.intro/trace/logInfo" value="true"/>
317
<mapEntry key="org.eclipse.team.core/streams" value="false"/>
318
<mapEntry key="org.eclipse.emf.cdo.ui/test.bulk_add" value="true"/>
319
<mapEntry key="org.eclipse.emf.cdo.common/debug" value="true"/>
320
<mapEntry key="org.eclipse.ui.ide/debug/undomonitor" value="false"/>
321
<mapEntry key="org.eclipse.jdt.ui/perf/explorer/RefactorActionGroup" value="150"/>
322
<mapEntry key="org.eclipse.net4j.ui/debug" value="true"/>
323
<mapEntry key="org.eclipse.ui/experimental/menus" value="false"/>
324
<mapEntry key="org.eclipse.core.jobs/jobs/shutdown" value="false"/>
325
<mapEntry key="org.eclipse.osgi/debug/packageadmin" value="false"/>
326
<mapEntry key="org.eclipse.jdt.apt.core/debug/compilationEnv" value="false"/>
327
<mapEntry key="org.eclipse.emf.cdo/debug.session" value="true"/>
328
<mapEntry key="org.eclipse.core.runtime/compatibility/debug" value="false"/>
329
<mapEntry key="org.eclipse.emf.cdo/debug.adapter" value="true"/>
330
<mapEntry key="org.eclipse.ui/debug/declaredImages" value="false"/>
331
<mapEntry key="org.eclipse.update.core/debug/reconciler" value="false"/>
332
<mapEntry key="org.eclipse.ui.ide/debug/gc" value="false"/>
333
<mapEntry key="org.eclipse.debug.ui/debug/viewers/contentProvider" value="false"/>
334
<mapEntry key="org.eclipse.osgi/debug/services" value="false"/>
335
<mapEntry key="org.eclipse.net4j.db.mysql/debug.sql" value="true"/>
336
<mapEntry key="org.eclipse.net4j.util.ui/debug" value="true"/>
337
<mapEntry key="org.eclipse.ui.workbench/debug" value="false"/>
338
<mapEntry key="org.eclipse.jdt.ui/perf/content_assist/extensions" value="1000"/>
339
<mapEntry key="org.eclipse.osgi/debug/filter" value="false"/>
340
<mapEntry key="org.eclipse.debug.core/debug" value="false"/>
341
<mapEntry key="org.eclipse.net4j.buddies.common/debug" value="true"/>
342
<mapEntry key="org.eclipse.core.resources/debug" value="false"/>
343
<mapEntry key="org.eclipse.jdt.core/debug/zipaccess" value="false"/>
344
<mapEntry key="org.eclipse.ui.browser/debug" value="false"/>
345
<mapEntry key="org.eclipse.emf.cdo.server/debug.protocol" value="true"/>
346
<mapEntry key="org.eclipse.osgi/profile/impl" value="org.eclipse.osgi.internal.profile.DefaultProfileLogger"/>
347
<mapEntry key="org.eclipse.net4j.jms.server/debug.protocol" value="true"/>
348
<mapEntry key="org.eclipse.update.core/debug/web" value="false"/>
349
<mapEntry key="org.eclipse.net4j.pop.repository.ccvs/perf" value="false"/>
350
<mapEntry key="org.eclipse.team.cvs.core/debug" value="false"/>
351
<mapEntry key="org.eclipse.help/debug" value="true"/>
352
<mapEntry key="org.eclipse.core.runtime/perf" value="false"/>
353
<mapEntry key="org.eclipse.osgi/trace/filters" value="trace.properties"/>
354
<mapEntry key="org.eclipse.net4j/debug.channel" value="true"/>
355
<mapEntry key="org.eclipse.emf.cdo/perf.revision.loading" value="true"/>
356
<mapEntry key="org.eclipse.emf.cdo/debug.revision" value="true"/>
357
<mapEntry key="org.eclipse.emf.cdo/debug.view" value="true"/>
358
<mapEntry key="org.eclipse.jdt.core/debug/formatter" value="false"/>
359
<mapEntry key="org.eclipse.ui/perf/part.listeners" value="200"/>
360
<mapEntry key="org.eclipse.debug.ui/debug/viewers/viewer" value="false"/>
361
<mapEntry key="org.eclipse.ui/trace/keyBindings.verbose" value="false"/>
362
<mapEntry key="org.eclipse.osgi/defaultprofile/buffersize" value="256"/>
363
<mapEntry key="org.eclipse.core.resources/restore/syncinfo" value="false"/>
364
<mapEntry key="org.eclipse.team.cvs.core/syncchangeevents" value="false"/>
365
<mapEntry key="org.eclipse.ui/perf/page.listeners" value="200"/>
366
<mapEntry key="org.eclipse.net4j.http.common/debug" value="true"/>
367
<mapEntry key="org.eclipse.jdt.core/debug/cpresolution/failure" value="false"/>
368
<mapEntry key="org.eclipse.emf.cdo/debug.resource" value="true"/>
369
<mapEntry key="org.eclipse.net4j.http/debug" value="true"/>
370
<mapEntry key="org.eclipse.jdt.apt.pluggable.core/debug" value="false"/>
371
<mapEntry key="org.eclipse.ui/trace/handlers.verbose" value="false"/>
372
<mapEntry key="org.eclipse.net4j.template/debug" value="true"/>
373
<mapEntry key="org.eclipse.osgi/monitor/resources" value="false"/>
374
<mapEntry key="org.eclipse.ui/perf/part.control" value="800"/>
375
<mapEntry key="org.eclipse.net4j/debug.buffer.stream" value="false"/>
376
<mapEntry key="org.eclipse.net4j.pop.repository.ccvs/debug" value="true"/>
377
<mapEntry key="org.eclipse.ui/perf/uijob" value="200"/>
378
<mapEntry key="org.eclipse.core.runtime/url/debug/cachelookup" value="false"/>
379
<mapEntry key="org.eclipse.ui/listeners/IWorkbenchWindow.IPartListener2" value="false"/>
380
<mapEntry key="org.eclipse.core.resources/build/delta" value="false"/>
381
<mapEntry key="org.eclipse.core.resources/build/interrupt" value="false"/>
382
<mapEntry key="org.eclipse.core.runtime/preferences/plugin" value="false"/>
383
<mapEntry key="org.eclipse.core.runtime/url/debug" value="false"/>
384
<mapEntry key="org.eclipse.osgi/resolver/cycles" value="false"/>
385
<mapEntry key="org.eclipse.ui/listeners/IWorkbenchWindow.IPartListener" value="false"/>
386
<mapEntry key="org.eclipse.jdt.core/debug/resolution" value="false"/>
387
<mapEntry key="org.eclipse.update.configurator/debug" value="false"/>
388
<mapEntry key="org.eclipse.help.ui/debug" value="true"/>
389
<mapEntry key="org.eclipse.debug.ui/debug/viewers/deltas" value="false"/>
390
<mapEntry key="org.eclipse.osgi/eclipseadaptor/debug/location" value="false"/>
391
<mapEntry key="org.eclipse.ui.intro.universal/trace/logInfo" value="true"/>
392
</mapAttribute>
393
<booleanAttribute key="useDefaultConfig" value="true"/>
394
<booleanAttribute key="useDefaultConfigArea" value="true"/>
395
<booleanAttribute key="useNamedJRE" value="true"/>
396
<booleanAttribute key="useProduct" value="true"/>
397
<booleanAttribute key="usefeatures" value="false"/>
398
</launchConfiguration>
(-)src/org/eclipse/emf/internal/cdo/session/CDOSessionImpl.java (-1508 / +1270 lines)
Lines 95-1606 Link Here
95
/**
95
/**
96
 * @author Eike Stepper
96
 * @author Eike Stepper
97
 */
97
 */
98
public abstract class CDOSessionImpl extends Container<CDOView> implements InternalCDOSession
98
public abstract class CDOSessionImpl extends Container<CDOView> implements
99
{
99
		InternalCDOSession {
100
  private static final ContextTracer TRACER = new ContextTracer(OM.DEBUG_SESSION, CDOSessionImpl.class);
100
	private static final ContextTracer TRACER = new ContextTracer(
101
101
			OM.DEBUG_SESSION, CDOSessionImpl.class);
102
  private static final long NO_TIMEOUT = -1;
102
103
103
	private static final long NO_TIMEOUT = -1;
104
  private InternalCDOSessionConfiguration configuration;
104
105
105
	private InternalCDOSessionConfiguration configuration;
106
  private ExceptionHandler exceptionHandler;
106
107
107
	private ExceptionHandler exceptionHandler;
108
  private CDOSessionProtocol sessionProtocol;
108
109
109
	private CDOSessionProtocol sessionProtocol;
110
  @ExcludeFromDump
110
111
  private IListener sessionProtocolListener = new LifecycleEventAdapter()
111
	@ExcludeFromDump
112
  {
112
	private IListener sessionProtocolListener = new LifecycleEventAdapter() {
113
    @Override
113
		@Override
114
    protected void onDeactivated(ILifecycle lifecycle)
114
		protected void onDeactivated(ILifecycle lifecycle) {
115
    {
115
			CDOSessionImpl.this.deactivate();
116
      CDOSessionImpl.this.deactivate();
116
		}
117
    }
117
	};
118
  };
118
119
119
	private int sessionID;
120
  private int sessionID;
120
121
121
	private String userID;
122
  private String userID;
122
123
123
	private long lastUpdateTime;
124
  private long lastUpdateTime;
124
125
125
	@ExcludeFromDump
126
  @ExcludeFromDump
126
	private Object lastUpdateTimeLock = new Object();
127
  private Object lastUpdateTimeLock = new Object();
127
128
128
	private CDOSession.Options options = createOptions();
129
  private CDOSession.Options options = createOptions();
129
130
130
	private CDORepositoryInfo repositoryInfo;
131
  private CDORepositoryInfo repositoryInfo;
131
132
132
	private CDOFetchRuleManager ruleManager = CDOFetchRuleManager.NOOP;
133
  private CDOFetchRuleManager ruleManager = CDOFetchRuleManager.NOOP;
133
134
134
	private IRWLockManager<CDOSessionImpl, Object> lockmanager = new RWLockManager<CDOSessionImpl, Object>();
135
  private IRWLockManager<CDOSessionImpl, Object> lockmanager = new RWLockManager<CDOSessionImpl, Object>();
135
136
136
	public IRWLockManager<CDOSessionImpl, Object> getLockmanager() {
137
  @ExcludeFromDump
137
		return lockmanager;
138
  private Set<CDOSessionImpl> singletonCollection = Collections.singleton(this);
138
	}
139
139
140
  private CDOAuthenticator authenticator;
140
	@ExcludeFromDump
141
141
	private Set<CDOSessionImpl> singletonCollection = Collections
142
  private InternalCDORemoteSessionManager remoteSessionManager;
142
			.singleton(this);
143
143
144
  private Set<InternalCDOView> views = new HashSet<InternalCDOView>();
144
	private CDOAuthenticator authenticator;
145
145
146
  /**
146
	private InternalCDORemoteSessionManager remoteSessionManager;
147
   * Fixes a threading problem between a committing thread and the Net4j thread that delivers incoming commit
147
148
   * notifications. TODO This is a workaround, see Bug 294700
148
	private Set<InternalCDOView> views = new HashSet<InternalCDOView>();
149
   */
149
150
  private Object commitLock = new Object();
150
	/**
151
151
	 * Fixes a threading problem between a committing thread and the Net4j
152
  @ExcludeFromDump
152
	 * thread that delivers incoming commit notifications. TODO This is a
153
  private QueueRunner invalidationRunner;
153
	 * workaround, see Bug 294700
154
154
	 */
155
  @ExcludeFromDump
155
	private Object commitLock = new Object();
156
  private Object invalidationRunnerLock = new Object();
156
157
157
	@ExcludeFromDump
158
  @ExcludeFromDump
158
	private QueueRunner invalidationRunner;
159
  private static ThreadLocal<Boolean> invalidationRunnerActive = new InheritableThreadLocal<Boolean>();
159
160
160
	@ExcludeFromDump
161
  @ExcludeFromDump
161
	private Object invalidationRunnerLock = new Object();
162
  private int lastViewID;
162
163
163
	@ExcludeFromDump
164
  public CDOSessionImpl(InternalCDOSessionConfiguration configuration)
164
	private static ThreadLocal<Boolean> invalidationRunnerActive = new InheritableThreadLocal<Boolean>();
165
  {
165
166
    this.configuration = configuration;
166
	@ExcludeFromDump
167
  }
167
	private int lastViewID;
168
168
169
  public InternalCDOSessionConfiguration getConfiguration()
169
	public CDOSessionImpl(InternalCDOSessionConfiguration configuration) {
170
  {
170
		this.configuration = configuration;
171
    return configuration;
171
	}
172
  }
172
173
173
	public InternalCDOSessionConfiguration getConfiguration() {
174
  public CDORepositoryInfo getRepositoryInfo()
174
		return configuration;
175
  {
175
	}
176
    return repositoryInfo;
176
177
  }
177
	public CDORepositoryInfo getRepositoryInfo() {
178
178
		return repositoryInfo;
179
  public void setRepositoryInfo(CDORepositoryInfo repositoryInfo)
179
	}
180
  {
180
181
    this.repositoryInfo = repositoryInfo;
181
	public void setRepositoryInfo(CDORepositoryInfo repositoryInfo) {
182
  }
182
		this.repositoryInfo = repositoryInfo;
183
183
	}
184
  public int getSessionID()
184
185
  {
185
	public int getSessionID() {
186
    return sessionID;
186
		return sessionID;
187
  }
187
	}
188
188
189
  public void setSessionID(int sessionID)
189
	public void setSessionID(int sessionID) {
190
  {
190
		this.sessionID = sessionID;
191
    this.sessionID = sessionID;
191
	}
192
  }
192
193
193
	public String getUserID() {
194
  public String getUserID()
194
		return userID;
195
  {
195
	}
196
    return userID;
196
197
  }
197
	public void setUserID(String userID) {
198
198
		this.userID = userID;
199
  public void setUserID(String userID)
199
	}
200
  {
200
201
    this.userID = userID;
201
	public ExceptionHandler getExceptionHandler() {
202
  }
202
		return exceptionHandler;
203
203
	}
204
  public ExceptionHandler getExceptionHandler()
204
205
  {
205
	public void setExceptionHandler(ExceptionHandler exceptionHandler) {
206
    return exceptionHandler;
206
		checkInactive();
207
  }
207
		this.exceptionHandler = exceptionHandler;
208
208
	}
209
  public void setExceptionHandler(ExceptionHandler exceptionHandler)
209
210
  {
210
	/**
211
    checkInactive();
211
	 * @since 2.0
212
    this.exceptionHandler = exceptionHandler;
212
	 */
213
  }
213
	public CDOSession.Options options() {
214
214
		return options;
215
  /**
215
	}
216
   * @since 2.0
216
217
   */
217
	/**
218
  public CDOSession.Options options()
218
	 * @since 2.0
219
  {
219
	 */
220
    return options;
220
	protected CDOSession.Options createOptions() {
221
  }
221
		return new OptionsImpl();
222
222
	}
223
  /**
223
224
   * @since 2.0
224
	public CDOSessionProtocol getSessionProtocol() {
225
   */
225
		return sessionProtocol;
226
  protected CDOSession.Options createOptions()
226
	}
227
  {
227
228
    return new OptionsImpl();
228
	public void setSessionProtocol(CDOSessionProtocol sessionProtocol) {
229
  }
229
		this.sessionProtocol = sessionProtocol;
230
230
	}
231
  public CDOSessionProtocol getSessionProtocol()
231
232
  {
232
	public void close() {
233
    return sessionProtocol;
233
		LifecycleUtil.deactivate(this, OMLogger.Level.DEBUG);
234
  }
234
	}
235
235
236
  public void setSessionProtocol(CDOSessionProtocol sessionProtocol)
236
	/**
237
  {
237
	 * @since 2.0
238
    this.sessionProtocol = sessionProtocol;
238
	 */
239
  }
239
	public boolean isClosed() {
240
240
		return !isActive();
241
  public void close()
241
	}
242
  {
242
243
    LifecycleUtil.deactivate(this, OMLogger.Level.DEBUG);
243
	public Object processPackage(Object value) {
244
  }
244
		CDOFactoryImpl.prepareDynamicEPackage(value);
245
245
		return value;
246
  /**
246
	}
247
   * @since 2.0
247
248
   */
248
	public EPackage[] loadPackages(CDOPackageUnit packageUnit) {
249
  public boolean isClosed()
249
		if (packageUnit.getOriginalType().isGenerated()) {
250
  {
250
			if (!options().isGeneratedPackageEmulationEnabled()) {
251
    return !isActive();
251
				throw new CDOException(MessageFormat.format(Messages
252
  }
252
						.getString("CDOSessionImpl.0"), packageUnit));
253
253
			}
254
  public Object processPackage(Object value)
254
		}
255
  {
255
256
    CDOFactoryImpl.prepareDynamicEPackage(value);
256
		return getSessionProtocol().loadPackages(packageUnit);
257
    return value;
257
	}
258
  }
258
259
259
	public void acquireAtomicRequestLock(Object key) {
260
  public EPackage[] loadPackages(CDOPackageUnit packageUnit)
260
		try {
261
  {
261
			lockmanager.lock(LockType.WRITE, key, this, RWLockManager.WAIT);
262
    if (packageUnit.getOriginalType().isGenerated())
262
		} catch (InterruptedException ex) {
263
    {
263
			throw WrappedException.wrap(ex);
264
      if (!options().isGeneratedPackageEmulationEnabled())
264
		}
265
      {
265
	}
266
        throw new CDOException(MessageFormat.format(Messages.getString("CDOSessionImpl.0"), packageUnit));
266
267
      }
267
	public void releaseAtomicRequestLock(Object key) {
268
    }
268
		lockmanager.unlock(LockType.WRITE, key, singletonCollection);
269
269
	}
270
    return getSessionProtocol().loadPackages(packageUnit);
270
271
  }
271
	/**
272
272
	 * @since 3.0
273
  public void acquireAtomicRequestLock(Object key)
273
	 */
274
  {
274
	public CDOFetchRuleManager getFetchRuleManager() {
275
    try
275
		return ruleManager;
276
    {
276
	}
277
      lockmanager.lock(LockType.WRITE, key, this, RWLockManager.WAIT);
277
278
    }
278
	/**
279
    catch (InterruptedException ex)
279
	 * @since 3.0
280
    {
280
	 */
281
      throw WrappedException.wrap(ex);
281
	public void setFetchRuleManager(CDOFetchRuleManager fetchRuleManager) {
282
    }
282
		ruleManager = fetchRuleManager;
283
  }
283
	}
284
284
285
  public void releaseAtomicRequestLock(Object key)
285
	public CDOAuthenticator getAuthenticator() {
286
  {
286
		return authenticator;
287
    lockmanager.unlock(LockType.WRITE, key, singletonCollection);
287
	}
288
  }
288
289
289
	public void setAuthenticator(CDOAuthenticator authenticator) {
290
  /**
290
		this.authenticator = authenticator;
291
   * @since 3.0
291
	}
292
   */
292
293
  public CDOFetchRuleManager getFetchRuleManager()
293
	public InternalCDORemoteSessionManager getRemoteSessionManager() {
294
  {
294
		return remoteSessionManager;
295
    return ruleManager;
295
	}
296
  }
296
297
297
	public void setRemoteSessionManager(
298
  /**
298
			InternalCDORemoteSessionManager remoteSessionManager) {
299
   * @since 3.0
299
		this.remoteSessionManager = remoteSessionManager;
300
   */
300
	}
301
  public void setFetchRuleManager(CDOFetchRuleManager fetchRuleManager)
301
302
  {
302
	/**
303
    ruleManager = fetchRuleManager;
303
	 * @since 2.0
304
  }
304
	 */
305
305
	public InternalCDOTransaction openTransaction(ResourceSet resourceSet) {
306
  public CDOAuthenticator getAuthenticator()
306
		checkActive();
307
  {
307
		InternalCDOTransaction transaction = createTransaction();
308
    return authenticator;
308
		initView(transaction, resourceSet);
309
  }
309
		return transaction;
310
310
	}
311
  public void setAuthenticator(CDOAuthenticator authenticator)
311
312
  {
312
	/**
313
    this.authenticator = authenticator;
313
	 * @since 2.0
314
  }
314
	 */
315
315
	public InternalCDOTransaction openTransaction() {
316
  public InternalCDORemoteSessionManager getRemoteSessionManager()
316
		return openTransaction(createResourceSet());
317
  {
317
	}
318
    return remoteSessionManager;
318
319
  }
319
	/**
320
320
	 * @since 2.0
321
  public void setRemoteSessionManager(InternalCDORemoteSessionManager remoteSessionManager)
321
	 */
322
  {
322
	protected InternalCDOTransaction createTransaction() {
323
    this.remoteSessionManager = remoteSessionManager;
323
		return new CDOTransactionImpl();
324
  }
324
	}
325
325
326
  /**
326
	/**
327
   * @since 2.0
327
	 * @since 2.0
328
   */
328
	 */
329
  public InternalCDOTransaction openTransaction(ResourceSet resourceSet)
329
	public InternalCDOView openView(ResourceSet resourceSet) {
330
  {
330
		checkActive();
331
    checkActive();
331
		InternalCDOView view = createView();
332
    InternalCDOTransaction transaction = createTransaction();
332
		initView(view, resourceSet);
333
    initView(transaction, resourceSet);
333
		return view;
334
    return transaction;
334
	}
335
  }
335
336
336
	/**
337
  /**
337
	 * @since 2.0
338
   * @since 2.0
338
	 */
339
   */
339
	public InternalCDOView openView() {
340
  public InternalCDOTransaction openTransaction()
340
		return openView(createResourceSet());
341
  {
341
	}
342
    return openTransaction(createResourceSet());
342
343
  }
343
	/**
344
344
	 * @since 2.0
345
  /**
345
	 */
346
   * @since 2.0
346
	protected InternalCDOView createView() {
347
   */
347
		return new CDOViewImpl();
348
  protected InternalCDOTransaction createTransaction()
348
	}
349
  {
349
350
    return new CDOTransactionImpl();
350
	public CDOAuditImpl openAudit(ResourceSet resourceSet, long timeStamp) {
351
  }
351
		checkActive();
352
352
		CDOAuditImpl audit = createAudit(timeStamp);
353
  /**
353
		initView(audit, resourceSet);
354
   * @since 2.0
354
		return audit;
355
   */
355
	}
356
  public InternalCDOView openView(ResourceSet resourceSet)
356
357
  {
357
	public CDOAuditImpl openAudit(long timeStamp) {
358
    checkActive();
358
		return openAudit(createResourceSet(), timeStamp);
359
    InternalCDOView view = createView();
359
	}
360
    initView(view, resourceSet);
360
361
    return view;
361
	/**
362
  }
362
	 * @since 2.0
363
363
	 */
364
  /**
364
	protected CDOAuditImpl createAudit(long timeStamp) {
365
   * @since 2.0
365
		return new CDOAuditImpl(timeStamp);
366
   */
366
	}
367
  public InternalCDOView openView()
367
368
  {
368
	/**
369
    return openView(createResourceSet());
369
	 * @since 2.0
370
  }
370
	 */
371
371
	public void viewDetached(InternalCDOView view) {
372
  /**
372
		// Detach viewset from the view
373
   * @since 2.0
373
		view.getViewSet().remove(view);
374
   */
374
		synchronized (views) {
375
  protected InternalCDOView createView()
375
			if (!views.remove(view)) {
376
  {
376
				return;
377
    return new CDOViewImpl();
377
			}
378
  }
378
		}
379
379
380
  public CDOAuditImpl openAudit(ResourceSet resourceSet, long timeStamp)
380
		if (isActive()) {
381
  {
381
			try {
382
    checkActive();
382
				LifecycleUtil.deactivate(view);
383
    CDOAuditImpl audit = createAudit(timeStamp);
383
			} catch (Exception ex) {
384
    initView(audit, resourceSet);
384
				throw WrappedException.wrap(ex);
385
    return audit;
385
			}
386
  }
386
		}
387
387
388
  public CDOAuditImpl openAudit(long timeStamp)
388
		fireElementRemovedEvent(view);
389
  {
389
	}
390
    return openAudit(createResourceSet(), timeStamp);
390
391
  }
391
	public CDOView getView(int viewID) {
392
392
		checkActive();
393
  /**
393
		for (InternalCDOView view : getViews()) {
394
   * @since 2.0
394
			if (view.getViewID() == viewID) {
395
   */
395
				return view;
396
  protected CDOAuditImpl createAudit(long timeStamp)
396
			}
397
  {
397
		}
398
    return new CDOAuditImpl(timeStamp);
398
399
  }
399
		return null;
400
400
	}
401
  /**
401
402
   * @since 2.0
402
	/**
403
   */
403
	 * @since 2.0
404
  public void viewDetached(InternalCDOView view)
404
	 */
405
  {
405
	public InternalCDOView[] getViews() {
406
    // Detach viewset from the view
406
		checkActive();
407
    view.getViewSet().remove(view);
407
		synchronized (views) {
408
    synchronized (views)
408
			return views.toArray(new InternalCDOView[views.size()]);
409
    {
409
		}
410
      if (!views.remove(view))
410
	}
411
      {
411
412
        return;
412
	public CDOView[] getElements() {
413
      }
413
		return getViews();
414
    }
414
	}
415
415
416
    if (isActive())
416
	@Override
417
    {
417
	public boolean isEmpty() {
418
      try
418
		checkActive();
419
      {
419
		return views.isEmpty();
420
        LifecycleUtil.deactivate(view);
420
	}
421
      }
421
422
      catch (Exception ex)
422
	/**
423
      {
423
	 * @since 2.0
424
        throw WrappedException.wrap(ex);
424
	 */
425
      }
425
	public Collection<CDOTimeStampContext> refresh() {
426
    }
426
		// If passive update is turned on we don`t need to refresh.
427
427
		// We do not throw an exception since the client could turn
428
    fireElementRemovedEvent(view);
428
		// that feature on or off without affecting their code.
429
  }
429
		checkActive();
430
430
		if (!options().isPassiveUpdateEnabled()) {
431
  public CDOView getView(int viewID)
431
			Map<CDOID, CDOIDAndVersion> allRevisions = getAllCDOIDAndVersion();
432
  {
432
433
    checkActive();
433
			try {
434
    for (InternalCDOView view : getViews())
434
				if (!allRevisions.isEmpty()) {
435
    {
435
					int initialChunkSize = options()
436
      if (view.getViewID() == viewID)
436
							.getCollectionLoadingPolicy().getInitialChunkSize();
437
      {
437
					return getSessionProtocol().syncRevisions(allRevisions,
438
        return view;
438
							initialChunkSize);
439
      }
439
				}
440
    }
440
			} catch (Exception ex) {
441
441
				throw WrappedException.wrap(ex);
442
    return null;
442
			}
443
  }
443
		}
444
444
445
  /**
445
		return Collections.emptyList();
446
   * @since 2.0
446
	}
447
   */
447
448
  public InternalCDOView[] getViews()
448
	public long getLastUpdateTime() {
449
  {
449
		synchronized (lastUpdateTimeLock) {
450
    checkActive();
450
			return lastUpdateTime;
451
    synchronized (views)
451
		}
452
    {
452
	}
453
      return views.toArray(new InternalCDOView[views.size()]);
453
454
    }
454
	public void setLastUpdateTime(long lastUpdateTime) {
455
  }
455
		synchronized (lastUpdateTimeLock) {
456
456
			this.lastUpdateTime = lastUpdateTime;
457
  public CDOView[] getElements()
457
			lastUpdateTimeLock.notifyAll();
458
  {
458
		}
459
    return getViews();
459
	}
460
  }
460
461
461
	public void waitForUpdate(long updateTime) {
462
  @Override
462
		waitForUpdate(updateTime, NO_TIMEOUT);
463
  public boolean isEmpty()
463
	}
464
  {
464
465
    checkActive();
465
	public boolean waitForUpdate(long updateTime, long timeoutMillis) {
466
    return views.isEmpty();
466
		long end = timeoutMillis == NO_TIMEOUT ? Long.MAX_VALUE : System
467
  }
467
				.currentTimeMillis()
468
468
				+ timeoutMillis;
469
  /**
469
		for (;;) {
470
   * @since 2.0
470
			synchronized (lastUpdateTimeLock) {
471
   */
471
				if (lastUpdateTime >= updateTime) {
472
  public Collection<CDOTimeStampContext> refresh()
472
					return true;
473
  {
473
				}
474
    // If passive update is turned on we don`t need to refresh.
474
475
    // We do not throw an exception since the client could turn
475
				long now = System.currentTimeMillis();
476
    // that feature on or off without affecting their code.
476
				if (now >= end) {
477
    checkActive();
477
					return false;
478
    if (!options().isPassiveUpdateEnabled())
478
				}
479
    {
479
480
      Map<CDOID, CDOIDAndVersion> allRevisions = getAllCDOIDAndVersion();
480
				try {
481
481
					lastUpdateTimeLock.wait(end - now);
482
      try
482
				} catch (InterruptedException ex) {
483
      {
483
					throw WrappedException.wrap(ex);
484
        if (!allRevisions.isEmpty())
484
				}
485
        {
485
			}
486
          int initialChunkSize = options().getCollectionLoadingPolicy().getInitialChunkSize();
486
		}
487
          return getSessionProtocol().syncRevisions(allRevisions, initialChunkSize);
487
	}
488
        }
488
489
      }
489
	/**
490
      catch (Exception ex)
490
	 * @since 3.0
491
      {
491
	 */
492
        throw WrappedException.wrap(ex);
492
	public Object resolveElementProxy(CDORevision revision,
493
      }
493
			EStructuralFeature feature, int accessIndex, int serverIndex) {
494
    }
494
		CDOCollectionLoadingPolicy policy = options()
495
495
				.getCollectionLoadingPolicy();
496
    return Collections.emptyList();
496
		return policy.resolveProxy(this, revision, feature, accessIndex,
497
  }
497
				serverIndex);
498
498
	}
499
  public long getLastUpdateTime()
499
500
  {
500
	/**
501
    synchronized (lastUpdateTimeLock)
501
	 * @since 2.0
502
    {
502
	 */
503
      return lastUpdateTime;
503
	public void handleSyncResponse(long timestamp,
504
    }
504
			Collection<CDOPackageUnit> newPackageUnits,
505
  }
505
			Set<CDOIDAndVersion> dirtyOIDs, Collection<CDOID> detachedObjects) {
506
506
		handleCommitNotification(timestamp, newPackageUnits, dirtyOIDs,
507
  public void setLastUpdateTime(long lastUpdateTime)
507
				detachedObjects, null, null, true, false);
508
  {
508
	}
509
    synchronized (lastUpdateTimeLock)
509
510
    {
510
	/**
511
      this.lastUpdateTime = lastUpdateTime;
511
	 * @since 2.0
512
      lastUpdateTimeLock.notifyAll();
512
	 */
513
    }
513
	public void handleCommitNotification(final long timeStamp,
514
  }
514
			final Collection<CDOPackageUnit> newPackageUnits,
515
515
			Set<CDOIDAndVersion> dirtyOIDs,
516
  public void waitForUpdate(long updateTime)
516
			final Collection<CDOID> detachedObjects,
517
  {
517
			final Collection<CDORevisionDelta> deltas,
518
    waitForUpdate(updateTime, NO_TIMEOUT);
518
			InternalCDOView excludedView) {
519
  }
519
		handleCommitNotification(timeStamp, newPackageUnits, dirtyOIDs,
520
520
				detachedObjects, deltas, excludedView, options()
521
  public boolean waitForUpdate(long updateTime, long timeoutMillis)
521
						.isPassiveUpdateEnabled(), true);
522
  {
522
	}
523
    long end = timeoutMillis == NO_TIMEOUT ? Long.MAX_VALUE : System.currentTimeMillis() + timeoutMillis;
523
524
    for (;;)
524
	private void handleCommitNotification(final long timeStamp,
525
    {
525
			final Collection<CDOPackageUnit> newPackageUnits,
526
      synchronized (lastUpdateTimeLock)
526
			Set<CDOIDAndVersion> dirtyOIDs,
527
      {
527
			final Collection<CDOID> detachedObjects,
528
        if (lastUpdateTime >= updateTime)
528
			final Collection<CDORevisionDelta> deltas,
529
        {
529
			InternalCDOView excludedView, final boolean passiveUpdate,
530
          return true;
530
			final boolean async) {
531
        }
531
		try {
532
532
			synchronized (commitLock) {
533
        long now = System.currentTimeMillis();
533
				if (passiveUpdate) {
534
        if (now >= end)
534
					reviseRevisions(timeStamp, dirtyOIDs, detachedObjects,
535
        {
535
							excludedView);
536
          return false;
536
				}
537
        }
537
538
538
				final Set<CDOIDAndVersion> finalDirtyOIDs = Collections
539
        try
539
						.unmodifiableSet(dirtyOIDs);
540
        {
540
				final Collection<CDOID> finalDetachedObjects = Collections
541
          lastUpdateTimeLock.wait(end - now);
541
						.unmodifiableCollection(detachedObjects);
542
        }
542
				final boolean skipChangeSubscription = (deltas == null || deltas
543
        catch (InterruptedException ex)
543
						.size() <= 0)
544
        {
544
						&& (detachedObjects == null || detachedObjects.size() <= 0);
545
          throw WrappedException.wrap(ex);
545
546
        }
546
				for (final InternalCDOView view : getViews()) {
547
      }
547
					if (view != excludedView) {
548
    }
548
						final Runnable runnable = new Runnable() {
549
  }
549
							public void run() {
550
550
								try {
551
  /**
551
									Set<CDOObject> conflicts = null;
552
   * @since 3.0
552
									if (passiveUpdate) {
553
   */
553
										conflicts = view.handleInvalidation(
554
  public Object resolveElementProxy(CDORevision revision, EStructuralFeature feature, int accessIndex, int serverIndex)
554
												timeStamp, finalDirtyOIDs,
555
  {
555
												finalDetachedObjects);
556
    CDOCollectionLoadingPolicy policy = options().getCollectionLoadingPolicy();
556
									}
557
    return policy.resolveProxy(this, revision, feature, accessIndex, serverIndex);
557
558
  }
558
									if (!skipChangeSubscription) {
559
559
										view.handleChangeSubscription(deltas,
560
  /**
560
												detachedObjects);
561
   * @since 2.0
561
									}
562
   */
562
563
  public void handleSyncResponse(long timestamp, Collection<CDOPackageUnit> newPackageUnits,
563
									if (conflicts != null) {
564
      Set<CDOIDAndVersion> dirtyOIDs, Collection<CDOID> detachedObjects)
564
										((InternalCDOTransaction) view)
565
  {
565
												.handleConflicts(conflicts);
566
    handleCommitNotification(timestamp, newPackageUnits, dirtyOIDs, detachedObjects, null, null, true, false);
566
									}
567
  }
567
568
568
									view.fireAdaptersNotifiedEvent(timeStamp);
569
  /**
569
								} catch (RuntimeException ex) {
570
   * @since 2.0
570
									if (!async) {
571
   */
571
										throw ex;
572
  public void handleCommitNotification(final long timeStamp, final Collection<CDOPackageUnit> newPackageUnits,
572
									}
573
      Set<CDOIDAndVersion> dirtyOIDs, final Collection<CDOID> detachedObjects,
573
574
      final Collection<CDORevisionDelta> deltas, InternalCDOView excludedView)
574
									if (view.isActive()) {
575
  {
575
										OM.LOG.error(ex);
576
    handleCommitNotification(timeStamp, newPackageUnits, dirtyOIDs, detachedObjects, deltas, excludedView, options()
576
									} else {
577
        .isPassiveUpdateEnabled(), true);
577
										OM.LOG.info(Messages
578
  }
578
												.getString("CDOSessionImpl.1"));
579
579
									}
580
  private void handleCommitNotification(final long timeStamp, final Collection<CDOPackageUnit> newPackageUnits,
580
								}
581
      Set<CDOIDAndVersion> dirtyOIDs, final Collection<CDOID> detachedObjects,
581
							}
582
      final Collection<CDORevisionDelta> deltas, InternalCDOView excludedView, final boolean passiveUpdate,
582
						};
583
      final boolean async)
583
584
  {
584
						if (async) {
585
    try
585
							QueueRunner runner = getInvalidationRunner();
586
    {
586
							runner.addWork(new Runnable() {
587
      synchronized (commitLock)
587
								public void run() {
588
      {
588
									try {
589
        if (passiveUpdate)
589
										invalidationRunnerActive.set(true);
590
        {
590
										runnable.run();
591
          reviseRevisions(timeStamp, dirtyOIDs, detachedObjects, excludedView);
591
									} finally {
592
        }
592
										invalidationRunnerActive.set(false);
593
593
									}
594
        final Set<CDOIDAndVersion> finalDirtyOIDs = Collections.unmodifiableSet(dirtyOIDs);
594
								}
595
        final Collection<CDOID> finalDetachedObjects = Collections.unmodifiableCollection(detachedObjects);
595
							});
596
        final boolean skipChangeSubscription = (deltas == null || deltas.size() <= 0)
596
						} else {
597
            && (detachedObjects == null || detachedObjects.size() <= 0);
597
							runnable.run();
598
598
						}
599
        for (final InternalCDOView view : getViews())
599
					}
600
        {
600
				}
601
          if (view != excludedView)
601
			}
602
          {
602
		} catch (RuntimeException ex) {
603
            final Runnable runnable = new Runnable()
603
			if (!async) {
604
            {
604
				throw ex;
605
              public void run()
605
			}
606
              {
606
607
                try
607
			if (isActive()) {
608
                {
608
				OM.LOG.error(ex);
609
                  Set<CDOObject> conflicts = null;
609
			} else {
610
                  if (passiveUpdate)
610
				OM.LOG.info(Messages.getString("CDOSessionImpl.2"));
611
                  {
611
			}
612
                    conflicts = view.handleInvalidation(timeStamp, finalDirtyOIDs, finalDetachedObjects);
612
		}
613
                  }
613
614
614
		setLastUpdateTime(timeStamp);
615
                  if (!skipChangeSubscription)
615
		fireInvalidationEvent(timeStamp, newPackageUnits, dirtyOIDs,
616
                  {
616
				detachedObjects, excludedView);
617
                    view.handleChangeSubscription(deltas, detachedObjects);
617
	}
618
                  }
618
619
619
	public void reviseRevisions(final long timeStamp,
620
                  if (conflicts != null)
620
			Set<CDOIDAndVersion> dirtyOIDs, Collection<CDOID> detachedObjects,
621
                  {
621
			InternalCDOView excludedView) {
622
                    ((InternalCDOTransaction)view).handleConflicts(conflicts);
622
		InternalCDORevisionManager revisionManager = getRevisionManager();
623
                  }
623
		if (excludedView == null || timeStamp == CDORevision.UNSPECIFIED_DATE) {
624
624
			for (CDOIDAndVersion dirtyOID : dirtyOIDs) {
625
                  view.fireAdaptersNotifiedEvent(timeStamp);
625
				CDOID id = dirtyOID.getID();
626
                }
626
				int version = dirtyOID.getVersion();
627
                catch (RuntimeException ex)
627
				revisionManager.reviseVersion(id, version, timeStamp);
628
                {
628
			}
629
                  if (!async)
629
		}
630
                  {
630
631
                    throw ex;
631
		for (CDOID id : detachedObjects) {
632
                  }
632
			revisionManager.reviseLatest(id);
633
633
		}
634
                  if (view.isActive())
634
	}
635
                  {
635
636
                    OM.LOG.error(ex);
636
	public Object getCommitLock() {
637
                  }
637
		return commitLock;
638
                  else
638
	}
639
                  {
639
640
                    OM.LOG.info(Messages.getString("CDOSessionImpl.1"));
640
	private QueueRunner getInvalidationRunner() {
641
                  }
641
		synchronized (invalidationRunnerLock) {
642
                }
642
			if (invalidationRunner == null) {
643
              }
643
				invalidationRunner = createInvalidationRunner();
644
            };
644
				invalidationRunner.activate();
645
645
			}
646
            if (async)
646
		}
647
            {
647
648
              QueueRunner runner = getInvalidationRunner();
648
		return invalidationRunner;
649
              runner.addWork(new Runnable()
649
	}
650
              {
650
651
                public void run()
651
	protected QueueRunner createInvalidationRunner() {
652
                {
652
		return new QueueRunner() {
653
                  try
653
			@Override
654
                  {
654
			protected String getThreadName() {
655
                    invalidationRunnerActive.set(true);
655
				return "InvalidationRunner";
656
                    runnable.run();
656
			}
657
                  }
657
658
                  finally
658
			@Override
659
                  {
659
			public String toString() {
660
                    invalidationRunnerActive.set(false);
660
				return getThreadName();
661
                  }
661
			}
662
                }
662
		};
663
              });
663
	}
664
            }
664
665
            else
665
	/**
666
            {
666
	 * @param packageUnits
667
              runnable.run();
667
	 * @since 2.0
668
            }
668
	 */
669
          }
669
	public void fireInvalidationEvent(long timeStamp,
670
        }
670
			Collection<CDOPackageUnit> packageUnits,
671
      }
671
			Set<CDOIDAndVersion> dirtyOIDs, Collection<CDOID> detachedObjects,
672
    }
672
			InternalCDOView excludedView) {
673
    catch (RuntimeException ex)
673
		fireEvent(new InvalidationEvent(excludedView, timeStamp, packageUnits,
674
    {
674
				dirtyOIDs, detachedObjects));
675
      if (!async)
675
	}
676
      {
676
677
        throw ex;
677
	@Override
678
      }
678
	public String toString() {
679
679
		String name = repositoryInfo == null ? "?" : repositoryInfo.getName();
680
      if (isActive())
680
		return MessageFormat.format("CDOSession[{0}, {1}]", name, sessionID);
681
      {
681
	}
682
        OM.LOG.error(ex);
682
683
      }
683
	protected ResourceSet createResourceSet() {
684
      else
684
		return new ResourceSetImpl();
685
      {
685
	}
686
        OM.LOG.info(Messages.getString("CDOSessionImpl.2"));
686
687
      }
687
	/**
688
    }
688
	 * @since 2.0
689
689
	 */
690
    setLastUpdateTime(timeStamp);
690
	protected void initView(InternalCDOView view, ResourceSet resourceSet) {
691
    fireInvalidationEvent(timeStamp, newPackageUnits, dirtyOIDs, detachedObjects, excludedView);
691
		if (TRACER.isEnabled()) {
692
  }
692
			TRACER.format("Initializing new {0} view", view.getViewType());
693
693
		}
694
  public void reviseRevisions(final long timeStamp, Set<CDOIDAndVersion> dirtyOIDs, Collection<CDOID> detachedObjects,
694
695
      InternalCDOView excludedView)
695
		InternalCDOViewSet viewSet = SessionUtil
696
  {
696
				.prepareResourceSet(resourceSet);
697
    InternalCDORevisionManager revisionManager = getRevisionManager();
697
		synchronized (views) {
698
    if (excludedView == null || timeStamp == CDORevision.UNSPECIFIED_DATE)
698
			view.setSession(this);
699
    {
699
			view.setViewID(++lastViewID);
700
      for (CDOIDAndVersion dirtyOID : dirtyOIDs)
700
			views.add(view);
701
      {
701
		}
702
        CDOID id = dirtyOID.getID();
702
703
        int version = dirtyOID.getVersion();
703
		// Link ViewSet with View
704
        revisionManager.reviseVersion(id, version, timeStamp);
704
		view.setViewSet(viewSet);
705
      }
705
		viewSet.add(view);
706
    }
706
707
707
		try {
708
    for (CDOID id : detachedObjects)
708
			view.activate();
709
    {
709
			fireElementAddedEvent(view);
710
      revisionManager.reviseLatest(id);
710
		} catch (RuntimeException ex) {
711
    }
711
			synchronized (views) {
712
  }
712
				views.remove(view);
713
713
			}
714
  public Object getCommitLock()
714
715
  {
715
			viewSet.remove(view);
716
    return commitLock;
716
			throw ex;
717
  }
717
		}
718
718
	}
719
  private QueueRunner getInvalidationRunner()
719
720
  {
720
	@Override
721
    synchronized (invalidationRunnerLock)
721
	protected void doActivate() throws Exception {
722
    {
722
		super.doActivate();
723
      if (invalidationRunner == null)
723
		getConfiguration().activateSession(this);
724
      {
724
		checkState(sessionProtocol, "sessionProtocol");
725
        invalidationRunner = createInvalidationRunner();
725
		checkState(remoteSessionManager, "remoteSessionManager");
726
        invalidationRunner.activate();
726
		if (exceptionHandler != null) {
727
      }
727
			sessionProtocol = new DelegatingSessionProtocol(sessionProtocol);
728
    }
728
		}
729
729
730
    return invalidationRunner;
730
		EventUtil.addListener(sessionProtocol, sessionProtocolListener);
731
  }
731
	}
732
732
733
  protected QueueRunner createInvalidationRunner()
733
	@Override
734
  {
734
	protected void doDeactivate() throws Exception {
735
    return new QueueRunner()
735
		for (InternalCDOView view : views.toArray(new InternalCDOView[views
736
    {
736
				.size()])) {
737
      @Override
737
			try {
738
      protected String getThreadName()
738
				view.close();
739
      {
739
			} catch (RuntimeException ignore) {
740
        return "InvalidationRunner";
740
			}
741
      }
741
		}
742
742
743
      @Override
743
		views.clear();
744
      public String toString()
744
745
      {
745
		if (invalidationRunner != null) {
746
        return getThreadName();
746
			LifecycleUtil.deactivate(invalidationRunner, OMLogger.Level.WARN);
747
      }
747
			invalidationRunner = null;
748
    };
748
		}
749
  }
749
750
750
		EventUtil.removeListener(sessionProtocol, sessionProtocolListener);
751
  /**
751
		getConfiguration().deactivateSession(this);
752
   * @param packageUnits
752
		super.doDeactivate();
753
   * @since 2.0
753
	}
754
   */
754
755
  public void fireInvalidationEvent(long timeStamp, Collection<CDOPackageUnit> packageUnits,
755
	private Map<CDOID, CDOIDAndVersion> getAllCDOIDAndVersion() {
756
      Set<CDOIDAndVersion> dirtyOIDs, Collection<CDOID> detachedObjects, InternalCDOView excludedView)
756
		Map<CDOID, CDOIDAndVersion> uniqueObjects = new HashMap<CDOID, CDOIDAndVersion>();
757
  {
757
		for (InternalCDOView view : getViews()) {
758
    fireEvent(new InvalidationEvent(excludedView, timeStamp, packageUnits, dirtyOIDs, detachedObjects));
758
			view.getCDOIDAndVersion(uniqueObjects, Arrays.asList(view
759
  }
759
					.getObjectsArray()));
760
760
		}
761
  @Override
761
762
  public String toString()
762
		// Need to add Revision from revisionManager since we do not have all
763
  {
763
		// objects in view.
764
    String name = repositoryInfo == null ? "?" : repositoryInfo.getName();
764
		for (CDORevision revision : getRevisionManager().getCache()
765
    return MessageFormat.format("CDOSession[{0}, {1}]", name, sessionID);
765
				.getRevisions()) {
766
  }
766
			if (!uniqueObjects.containsKey(revision.getID())) {
767
767
				uniqueObjects.put(revision.getID(), CDOIDUtil
768
  protected ResourceSet createResourceSet()
768
						.createIDAndVersion(revision.getID(), revision
769
  {
769
								.getVersion()));
770
    return new ResourceSetImpl();
770
			}
771
  }
771
		}
772
772
773
  /**
773
		return uniqueObjects;
774
   * @since 2.0
774
	}
775
   */
775
776
  protected void initView(InternalCDOView view, ResourceSet resourceSet)
776
	public static boolean isInvalidationRunnerActive() {
777
  {
777
		return invalidationRunnerActive.get();
778
    if (TRACER.isEnabled())
778
	}
779
    {
779
780
      TRACER.format("Initializing new {0} view", view.getViewType());
780
	/**
781
    }
781
	 * @author Eike Stepper
782
782
	 * @since 2.0
783
    InternalCDOViewSet viewSet = SessionUtil.prepareResourceSet(resourceSet);
783
	 */
784
    synchronized (views)
784
	protected class OptionsImpl extends Notifier implements Options {
785
    {
785
		private boolean generatedPackageEmulationEnabled = false;
786
      view.setSession(this);
786
787
      view.setViewID(++lastViewID);
787
		private boolean passiveUpdateEnabled = true;
788
      views.add(view);
788
789
    }
789
		private CDOCollectionLoadingPolicy collectionLoadingPolicy;
790
790
791
    // Link ViewSet with View
791
		public OptionsImpl() {
792
    view.setViewSet(viewSet);
792
			// TODO Remove preferences from core
793
    viewSet.add(view);
793
			int value = OM.PREF_COLLECTION_LOADING_CHUNK_SIZE.getValue();
794
794
			collectionLoadingPolicy = CDOUtil.createCollectionLoadingPolicy(
795
    try
795
					value, value);
796
    {
796
		}
797
      view.activate();
797
798
      fireElementAddedEvent(view);
798
		public IOptionsContainer getContainer() {
799
    }
799
			return CDOSessionImpl.this;
800
    catch (RuntimeException ex)
800
		}
801
    {
801
802
      synchronized (views)
802
		public boolean isGeneratedPackageEmulationEnabled() {
803
      {
803
			return generatedPackageEmulationEnabled;
804
        views.remove(view);
804
		}
805
      }
805
806
806
		public synchronized void setGeneratedPackageEmulationEnabled(
807
      viewSet.remove(view);
807
				boolean generatedPackageEmulationEnabled) {
808
      throw ex;
808
			this.generatedPackageEmulationEnabled = generatedPackageEmulationEnabled;
809
    }
809
			if (this.generatedPackageEmulationEnabled != generatedPackageEmulationEnabled) {
810
  }
810
				this.generatedPackageEmulationEnabled = generatedPackageEmulationEnabled;
811
811
				// TODO Check inconsistent state if switching off?
812
  @Override
812
813
  protected void doActivate() throws Exception
813
				IListener[] listeners = getListeners();
814
  {
814
				if (listeners != null) {
815
    super.doActivate();
815
					fireEvent(new GeneratedPackageEmulationEventImpl(),
816
    getConfiguration().activateSession(this);
816
							listeners);
817
    checkState(sessionProtocol, "sessionProtocol");
817
				}
818
    checkState(remoteSessionManager, "remoteSessionManager");
818
			}
819
    if (exceptionHandler != null)
819
		}
820
    {
820
821
      sessionProtocol = new DelegatingSessionProtocol(sessionProtocol);
821
		public boolean isPassiveUpdateEnabled() {
822
    }
822
			return passiveUpdateEnabled;
823
823
		}
824
    EventUtil.addListener(sessionProtocol, sessionProtocolListener);
824
825
  }
825
		public synchronized void setPassiveUpdateEnabled(
826
826
				boolean passiveUpdateEnabled) {
827
  @Override
827
			if (this.passiveUpdateEnabled != passiveUpdateEnabled) {
828
  protected void doDeactivate() throws Exception
828
				this.passiveUpdateEnabled = passiveUpdateEnabled;
829
  {
829
830
    for (InternalCDOView view : views.toArray(new InternalCDOView[views.size()]))
830
				// Need to refresh if we change state
831
    {
831
				Map<CDOID, CDOIDAndVersion> allRevisions = getAllCDOIDAndVersion();
832
      try
832
				if (!allRevisions.isEmpty()) {
833
      {
833
					int initialChunkSize = collectionLoadingPolicy
834
        view.close();
834
							.getInitialChunkSize();
835
      }
835
					getSessionProtocol().setPassiveUpdate(allRevisions,
836
      catch (RuntimeException ignore)
836
							initialChunkSize, passiveUpdateEnabled);
837
      {
837
				}
838
      }
838
839
    }
839
				IListener[] listeners = getListeners();
840
840
				if (listeners != null) {
841
    views.clear();
841
					fireEvent(new PassiveUpdateEventImpl(), listeners);
842
842
				}
843
    if (invalidationRunner != null)
843
			}
844
    {
844
		}
845
      LifecycleUtil.deactivate(invalidationRunner, OMLogger.Level.WARN);
845
846
      invalidationRunner = null;
846
		public CDOCollectionLoadingPolicy getCollectionLoadingPolicy() {
847
    }
847
			return collectionLoadingPolicy;
848
848
		}
849
    EventUtil.removeListener(sessionProtocol, sessionProtocolListener);
849
850
    getConfiguration().deactivateSession(this);
850
		public synchronized void setCollectionLoadingPolicy(
851
    super.doDeactivate();
851
				CDOCollectionLoadingPolicy policy) {
852
  }
852
			if (policy == null) {
853
853
				policy = CDOCollectionLoadingPolicy.DEFAULT;
854
  private Map<CDOID, CDOIDAndVersion> getAllCDOIDAndVersion()
854
			}
855
  {
855
856
    Map<CDOID, CDOIDAndVersion> uniqueObjects = new HashMap<CDOID, CDOIDAndVersion>();
856
			if (collectionLoadingPolicy != policy) {
857
    for (InternalCDOView view : getViews())
857
				collectionLoadingPolicy = policy;
858
    {
858
				IListener[] listeners = getListeners();
859
      view.getCDOIDAndVersion(uniqueObjects, Arrays.asList(view.getObjectsArray()));
859
				if (listeners != null) {
860
    }
860
					fireEvent(new CollectionLoadingPolicyEventImpl(), listeners);
861
861
				}
862
    // Need to add Revision from revisionManager since we do not have all objects in view.
862
			}
863
    for (CDORevision revision : getRevisionManager().getCache().getRevisions())
863
		}
864
    {
864
865
      if (!uniqueObjects.containsKey(revision.getID()))
865
		/**
866
      {
866
		 * @author Eike Stepper
867
        uniqueObjects.put(revision.getID(), CDOIDUtil.createIDAndVersion(revision.getID(), revision.getVersion()));
867
		 */
868
      }
868
		private final class GeneratedPackageEmulationEventImpl extends
869
    }
869
				OptionsEvent implements GeneratedPackageEmulationEvent {
870
870
			private static final long serialVersionUID = 1L;
871
    return uniqueObjects;
871
872
  }
872
			public GeneratedPackageEmulationEventImpl() {
873
873
				super(OptionsImpl.this);
874
  public static boolean isInvalidationRunnerActive()
874
			}
875
  {
875
		}
876
    return invalidationRunnerActive.get();
876
877
  }
877
		/**
878
878
		 * @author Eike Stepper
879
  /**
879
		 */
880
   * @author Eike Stepper
880
		private final class PassiveUpdateEventImpl extends OptionsEvent
881
   * @since 2.0
881
				implements PassiveUpdateEvent {
882
   */
882
			private static final long serialVersionUID = 1L;
883
  protected class OptionsImpl extends Notifier implements Options
883
884
  {
884
			public PassiveUpdateEventImpl() {
885
    private boolean generatedPackageEmulationEnabled = false;
885
				super(OptionsImpl.this);
886
886
			}
887
    private boolean passiveUpdateEnabled = true;
887
		}
888
888
889
    private CDOCollectionLoadingPolicy collectionLoadingPolicy;
889
		/**
890
890
		 * @author Eike Stepper
891
    public OptionsImpl()
891
		 */
892
    {
892
		private final class CollectionLoadingPolicyEventImpl extends
893
      // TODO Remove preferences from core
893
				OptionsEvent implements CollectionLoadingPolicyEvent {
894
      int value = OM.PREF_COLLECTION_LOADING_CHUNK_SIZE.getValue();
894
			private static final long serialVersionUID = 1L;
895
      collectionLoadingPolicy = CDOUtil.createCollectionLoadingPolicy(value, value);
895
896
    }
896
			public CollectionLoadingPolicyEventImpl() {
897
897
				super(OptionsImpl.this);
898
    public IOptionsContainer getContainer()
898
			}
899
    {
899
		}
900
      return CDOSessionImpl.this;
900
	}
901
    }
901
902
902
	/**
903
    public boolean isGeneratedPackageEmulationEnabled()
903
	 * @author Eike Stepper
904
    {
904
	 */
905
      return generatedPackageEmulationEnabled;
905
	private final class InvalidationEvent extends Event implements
906
    }
906
			CDOSessionInvalidationEvent {
907
907
		private static final long serialVersionUID = 1L;
908
    public synchronized void setGeneratedPackageEmulationEnabled(boolean generatedPackageEmulationEnabled)
908
909
    {
909
		private InternalCDOView view;
910
      this.generatedPackageEmulationEnabled = generatedPackageEmulationEnabled;
910
911
      if (this.generatedPackageEmulationEnabled != generatedPackageEmulationEnabled)
911
		private long timeStamp;
912
      {
912
913
        this.generatedPackageEmulationEnabled = generatedPackageEmulationEnabled;
913
		private Set<CDOIDAndVersion> dirtyOIDs;
914
        // TODO Check inconsistent state if switching off?
914
915
915
		private Collection<CDOID> detachedObjects;
916
        IListener[] listeners = getListeners();
916
917
        if (listeners != null)
917
		private Collection<CDOPackageUnit> newPackageUnits;
918
        {
918
919
          fireEvent(new GeneratedPackageEmulationEventImpl(), listeners);
919
		public InvalidationEvent(InternalCDOView view, long timeStamp,
920
        }
920
				Collection<CDOPackageUnit> packageUnits,
921
      }
921
				Set<CDOIDAndVersion> dirtyOIDs,
922
    }
922
				Collection<CDOID> detachedObjects) {
923
923
			super(CDOSessionImpl.this);
924
    public boolean isPassiveUpdateEnabled()
924
			this.view = view;
925
    {
925
			this.timeStamp = timeStamp;
926
      return passiveUpdateEnabled;
926
			newPackageUnits = packageUnits;
927
    }
927
			this.dirtyOIDs = dirtyOIDs;
928
928
			this.detachedObjects = detachedObjects;
929
    public synchronized void setPassiveUpdateEnabled(boolean passiveUpdateEnabled)
929
		}
930
    {
930
931
      if (this.passiveUpdateEnabled != passiveUpdateEnabled)
931
		@Override
932
      {
932
		public CDOSession getSource() {
933
        this.passiveUpdateEnabled = passiveUpdateEnabled;
933
			return (CDOSession) super.getSource();
934
934
		}
935
        // Need to refresh if we change state
935
936
        Map<CDOID, CDOIDAndVersion> allRevisions = getAllCDOIDAndVersion();
936
		public InternalCDOView getView() {
937
        if (!allRevisions.isEmpty())
937
			return view;
938
        {
938
		}
939
          int initialChunkSize = collectionLoadingPolicy.getInitialChunkSize();
939
940
          getSessionProtocol().setPassiveUpdate(allRevisions, initialChunkSize, passiveUpdateEnabled);
940
		public boolean isRemote() {
941
        }
941
			return view == null;
942
942
		}
943
        IListener[] listeners = getListeners();
943
944
        if (listeners != null)
944
		public long getTimeStamp() {
945
        {
945
			return timeStamp;
946
          fireEvent(new PassiveUpdateEventImpl(), listeners);
946
		}
947
        }
947
948
      }
948
		public Set<CDOIDAndVersion> getDirtyOIDs() {
949
    }
949
			return dirtyOIDs;
950
950
		}
951
    public CDOCollectionLoadingPolicy getCollectionLoadingPolicy()
951
952
    {
952
		public Collection<CDOID> getDetachedObjects() {
953
      return collectionLoadingPolicy;
953
			return detachedObjects;
954
    }
954
		}
955
955
956
    public synchronized void setCollectionLoadingPolicy(CDOCollectionLoadingPolicy policy)
956
		public Collection<CDOPackageUnit> getNewPackageUnits() {
957
    {
957
			return newPackageUnits;
958
      if (policy == null)
958
		}
959
      {
959
960
        policy = CDOCollectionLoadingPolicy.DEFAULT;
960
		@Override
961
      }
961
		public String toString() {
962
962
			return "CDOSessionInvalidationEvent: " + dirtyOIDs;
963
      if (collectionLoadingPolicy != policy)
963
		}
964
      {
964
	}
965
        collectionLoadingPolicy = policy;
965
966
        IListener[] listeners = getListeners();
966
	/**
967
        if (listeners != null)
967
	 * @author Eike Stepper
968
        {
968
	 */
969
          fireEvent(new CollectionLoadingPolicyEventImpl(), listeners);
969
	public class DelegatingSessionProtocol extends Lifecycle implements
970
        }
970
			CDOSessionProtocol {
971
      }
971
		private CDOSessionProtocol delegate;
972
    }
972
973
973
		@ExcludeFromDump
974
    /**
974
		private IListener delegateListener = new LifecycleEventAdapter() {
975
     * @author Eike Stepper
975
			@Override
976
     */
976
			protected void onDeactivated(ILifecycle lifecycle) {
977
    private final class GeneratedPackageEmulationEventImpl extends OptionsEvent implements
977
				DelegatingSessionProtocol.this.deactivate();
978
        GeneratedPackageEmulationEvent
978
			}
979
    {
979
		};
980
      private static final long serialVersionUID = 1L;
980
981
981
		public DelegatingSessionProtocol(CDOSessionProtocol delegate) {
982
      public GeneratedPackageEmulationEventImpl()
982
			this.delegate = delegate;
983
      {
983
			activate();
984
        super(OptionsImpl.this);
984
		}
985
      }
985
986
    }
986
		public CDOSessionProtocol getDelegate() {
987
987
			return delegate;
988
    /**
988
		}
989
     * @author Eike Stepper
989
990
     */
990
		public CDOSession getSession() {
991
    private final class PassiveUpdateEventImpl extends OptionsEvent implements PassiveUpdateEvent
991
			return (CDOSession) delegate.getSession();
992
    {
992
		}
993
      private static final long serialVersionUID = 1L;
993
994
994
		public boolean cancelQuery(int queryId) {
995
      public PassiveUpdateEventImpl()
995
			int attempt = 0;
996
      {
996
			for (;;) {
997
        super(OptionsImpl.this);
997
				try {
998
      }
998
					return delegate.cancelQuery(queryId);
999
    }
999
				} catch (Exception ex) {
1000
1000
					handleException(++attempt, ex);
1001
    /**
1001
				}
1002
     * @author Eike Stepper
1002
			}
1003
     */
1003
		}
1004
    private final class CollectionLoadingPolicyEventImpl extends OptionsEvent implements CollectionLoadingPolicyEvent
1004
1005
    {
1005
		public void changeSubscription(int viewId, List<CDOID> cdoIDs,
1006
      private static final long serialVersionUID = 1L;
1006
				boolean subscribeMode, boolean clear) {
1007
1007
			int attempt = 0;
1008
      public CollectionLoadingPolicyEventImpl()
1008
			for (;;) {
1009
      {
1009
				try {
1010
        super(OptionsImpl.this);
1010
					delegate.changeSubscription(viewId, cdoIDs, subscribeMode,
1011
      }
1011
							clear);
1012
    }
1012
					return;
1013
  }
1013
				} catch (Exception ex) {
1014
1014
					handleException(++attempt, ex);
1015
  /**
1015
				}
1016
   * @author Eike Stepper
1016
			}
1017
   */
1017
		}
1018
  private final class InvalidationEvent extends Event implements CDOSessionInvalidationEvent
1018
1019
  {
1019
		public void closeView(int viewId) {
1020
    private static final long serialVersionUID = 1L;
1020
			int attempt = 0;
1021
1021
			for (;;) {
1022
    private InternalCDOView view;
1022
				try {
1023
1023
					delegate.closeView(viewId);
1024
    private long timeStamp;
1024
					return;
1025
1025
				} catch (Exception ex) {
1026
    private Set<CDOIDAndVersion> dirtyOIDs;
1026
					handleException(++attempt, ex);
1027
1027
				}
1028
    private Collection<CDOID> detachedObjects;
1028
			}
1029
1029
		}
1030
    private Collection<CDOPackageUnit> newPackageUnits;
1030
1031
1031
		public CommitTransactionResult commitTransaction(
1032
    public InvalidationEvent(InternalCDOView view, long timeStamp, Collection<CDOPackageUnit> packageUnits,
1032
				InternalCDOCommitContext commitContext, OMMonitor monitor) {
1033
        Set<CDOIDAndVersion> dirtyOIDs, Collection<CDOID> detachedObjects)
1033
			int attempt = 0;
1034
    {
1034
			for (;;) {
1035
      super(CDOSessionImpl.this);
1035
				try {
1036
      this.view = view;
1036
					return delegate.commitTransaction(commitContext, monitor);
1037
      this.timeStamp = timeStamp;
1037
				} catch (Exception ex) {
1038
      newPackageUnits = packageUnits;
1038
					handleException(++attempt, ex);
1039
      this.dirtyOIDs = dirtyOIDs;
1039
				}
1040
      this.detachedObjects = detachedObjects;
1040
			}
1041
    }
1041
		}
1042
1042
1043
    @Override
1043
		public CommitTransactionResult commitTransactionCancel(
1044
    public CDOSession getSource()
1044
				InternalCDOXACommitContext xaContext, OMMonitor monitor) {
1045
    {
1045
			int attempt = 0;
1046
      return (CDOSession)super.getSource();
1046
			for (;;) {
1047
    }
1047
				try {
1048
1048
					return delegate.commitTransactionCancel(xaContext, monitor);
1049
    public InternalCDOView getView()
1049
				} catch (Exception ex) {
1050
    {
1050
					handleException(++attempt, ex);
1051
      return view;
1051
				}
1052
    }
1052
			}
1053
1053
		}
1054
    public boolean isRemote()
1054
1055
    {
1055
		public CommitTransactionResult commitTransactionPhase1(
1056
      return view == null;
1056
				InternalCDOXACommitContext xaContext, OMMonitor monitor) {
1057
    }
1057
			int attempt = 0;
1058
1058
			for (;;) {
1059
    public long getTimeStamp()
1059
				try {
1060
    {
1060
					return delegate.commitTransactionPhase1(xaContext, monitor);
1061
      return timeStamp;
1061
				} catch (Exception ex) {
1062
    }
1062
					handleException(++attempt, ex);
1063
1063
				}
1064
    public Set<CDOIDAndVersion> getDirtyOIDs()
1064
			}
1065
    {
1065
		}
1066
      return dirtyOIDs;
1066
1067
    }
1067
		public CommitTransactionResult commitTransactionPhase2(
1068
1068
				InternalCDOXACommitContext xaContext, OMMonitor monitor) {
1069
    public Collection<CDOID> getDetachedObjects()
1069
			int attempt = 0;
1070
    {
1070
			for (;;) {
1071
      return detachedObjects;
1071
				try {
1072
    }
1072
					return delegate.commitTransactionPhase2(xaContext, monitor);
1073
1073
				} catch (Exception ex) {
1074
    public Collection<CDOPackageUnit> getNewPackageUnits()
1074
					handleException(++attempt, ex);
1075
    {
1075
				}
1076
      return newPackageUnits;
1076
			}
1077
    }
1077
		}
1078
1078
1079
    @Override
1079
		public CommitTransactionResult commitTransactionPhase3(
1080
    public String toString()
1080
				InternalCDOXACommitContext xaContext, OMMonitor monitor) {
1081
    {
1081
			int attempt = 0;
1082
      return "CDOSessionInvalidationEvent: " + dirtyOIDs;
1082
			for (;;) {
1083
    }
1083
				try {
1084
  }
1084
					return delegate.commitTransactionPhase3(xaContext, monitor);
1085
1085
				} catch (Exception ex) {
1086
  /**
1086
					handleException(++attempt, ex);
1087
   * @author Eike Stepper
1087
				}
1088
   */
1088
			}
1089
  public class DelegatingSessionProtocol extends Lifecycle implements CDOSessionProtocol
1089
		}
1090
  {
1090
1091
    private CDOSessionProtocol delegate;
1091
		public RepositoryTimeResult getRepositoryTime() {
1092
1092
			int attempt = 0;
1093
    @ExcludeFromDump
1093
			for (;;) {
1094
    private IListener delegateListener = new LifecycleEventAdapter()
1094
				try {
1095
    {
1095
					return delegate.getRepositoryTime();
1096
      @Override
1096
				} catch (Exception ex) {
1097
      protected void onDeactivated(ILifecycle lifecycle)
1097
					handleException(++attempt, ex);
1098
      {
1098
				}
1099
        DelegatingSessionProtocol.this.deactivate();
1099
			}
1100
      }
1100
		}
1101
    };
1101
1102
1102
		public boolean isObjectLocked(CDOView view, CDOObject object,
1103
    public DelegatingSessionProtocol(CDOSessionProtocol delegate)
1103
				LockType lockType, boolean byOthers) {
1104
    {
1104
			int attempt = 0;
1105
      this.delegate = delegate;
1105
			for (;;) {
1106
      activate();
1106
				try {
1107
    }
1107
					return delegate.isObjectLocked(view, object, lockType,
1108
1108
							byOthers);
1109
    public CDOSessionProtocol getDelegate()
1109
				} catch (Exception ex) {
1110
    {
1110
					handleException(++attempt, ex);
1111
      return delegate;
1111
				}
1112
    }
1112
			}
1113
1113
		}
1114
    public CDOSession getSession()
1114
1115
    {
1115
		public EPackage[] loadPackages(CDOPackageUnit packageUnit) {
1116
      return (CDOSession)delegate.getSession();
1116
			int attempt = 0;
1117
    }
1117
			for (;;) {
1118
1118
				try {
1119
    public boolean cancelQuery(int queryId)
1119
					return delegate.loadPackages(packageUnit);
1120
    {
1120
				} catch (Exception ex) {
1121
      int attempt = 0;
1121
					handleException(++attempt, ex);
1122
      for (;;)
1122
				}
1123
      {
1123
			}
1124
        try
1124
		}
1125
        {
1125
1126
          return delegate.cancelQuery(queryId);
1126
		public Object loadChunk(InternalCDORevision revision,
1127
        }
1127
				EStructuralFeature feature, int accessIndex, int fetchIndex,
1128
        catch (Exception ex)
1128
				int fromIndex, int toIndex) {
1129
        {
1129
			int attempt = 0;
1130
          handleException(++attempt, ex);
1130
			for (;;) {
1131
        }
1131
				try {
1132
      }
1132
					return delegate.loadChunk(revision, feature, accessIndex,
1133
    }
1133
							fetchIndex, fromIndex, toIndex);
1134
1134
				} catch (Exception ex) {
1135
    public void changeSubscription(int viewId, List<CDOID> cdoIDs, boolean subscribeMode, boolean clear)
1135
					handleException(++attempt, ex);
1136
    {
1136
				}
1137
      int attempt = 0;
1137
			}
1138
      for (;;)
1138
		}
1139
      {
1139
1140
        try
1140
		public InternalCDORevision loadRevision(CDOID id, int referenceChunk,
1141
        {
1141
				int prefetchDepth) {
1142
          delegate.changeSubscription(viewId, cdoIDs, subscribeMode, clear);
1142
			int attempt = 0;
1143
          return;
1143
			for (;;) {
1144
        }
1144
				try {
1145
        catch (Exception ex)
1145
					return delegate.loadRevision(id, referenceChunk,
1146
        {
1146
							prefetchDepth);
1147
          handleException(++attempt, ex);
1147
				} catch (Exception ex) {
1148
        }
1148
					handleException(++attempt, ex);
1149
      }
1149
				}
1150
    }
1150
			}
1151
1151
		}
1152
    public void closeView(int viewId)
1152
1153
    {
1153
		public InternalCDORevision loadRevisionByTime(CDOID id,
1154
      int attempt = 0;
1154
				int referenceChunk, int prefetchDepth, long timeStamp) {
1155
      for (;;)
1155
			int attempt = 0;
1156
      {
1156
			for (;;) {
1157
        try
1157
				try {
1158
        {
1158
					return delegate.loadRevisionByTime(id, referenceChunk,
1159
          delegate.closeView(viewId);
1159
							prefetchDepth, timeStamp);
1160
          return;
1160
				} catch (Exception ex) {
1161
        }
1161
					handleException(++attempt, ex);
1162
        catch (Exception ex)
1162
				}
1163
        {
1163
			}
1164
          handleException(++attempt, ex);
1164
		}
1165
        }
1165
1166
      }
1166
		public InternalCDORevision loadRevisionByVersion(CDOID id,
1167
    }
1167
				int referenceChunk, int prefetchDepth, int version) {
1168
1168
			int attempt = 0;
1169
    public CommitTransactionResult commitTransaction(InternalCDOCommitContext commitContext, OMMonitor monitor)
1169
			for (;;) {
1170
    {
1170
				try {
1171
      int attempt = 0;
1171
					return delegate.loadRevisionByVersion(id, referenceChunk,
1172
      for (;;)
1172
							prefetchDepth, version);
1173
      {
1173
				} catch (Exception ex) {
1174
        try
1174
					handleException(++attempt, ex);
1175
        {
1175
				}
1176
          return delegate.commitTransaction(commitContext, monitor);
1176
			}
1177
        }
1177
		}
1178
        catch (Exception ex)
1178
1179
        {
1179
		public List<InternalCDORevision> loadRevisions(Collection<CDOID> ids,
1180
          handleException(++attempt, ex);
1180
				int referenceChunk, int prefetchDepth) {
1181
        }
1181
			int attempt = 0;
1182
      }
1182
			for (;;) {
1183
    }
1183
				try {
1184
1184
					return delegate.loadRevisions(ids, referenceChunk,
1185
    public CommitTransactionResult commitTransactionCancel(InternalCDOXACommitContext xaContext, OMMonitor monitor)
1185
							prefetchDepth);
1186
    {
1186
				} catch (Exception ex) {
1187
      int attempt = 0;
1187
					handleException(++attempt, ex);
1188
      for (;;)
1188
				}
1189
      {
1189
			}
1190
        try
1190
		}
1191
        {
1191
1192
          return delegate.commitTransactionCancel(xaContext, monitor);
1192
		public List<InternalCDORevision> loadRevisionsByTime(
1193
        }
1193
				Collection<CDOID> ids, int referenceChunk, int prefetchDepth,
1194
        catch (Exception ex)
1194
				long timeStamp) {
1195
        {
1195
			int attempt = 0;
1196
          handleException(++attempt, ex);
1196
			for (;;) {
1197
        }
1197
				try {
1198
      }
1198
					return delegate.loadRevisionsByTime(ids, referenceChunk,
1199
    }
1199
							prefetchDepth, timeStamp);
1200
1200
				} catch (Exception ex) {
1201
    public CommitTransactionResult commitTransactionPhase1(InternalCDOXACommitContext xaContext, OMMonitor monitor)
1201
					handleException(++attempt, ex);
1202
    {
1202
				}
1203
      int attempt = 0;
1203
			}
1204
      for (;;)
1204
		}
1205
      {
1205
1206
        try
1206
		public InternalCDORevision verifyRevision(InternalCDORevision revision,
1207
        {
1207
				int referenceChunk) {
1208
          return delegate.commitTransactionPhase1(xaContext, monitor);
1208
			int attempt = 0;
1209
        }
1209
			for (;;) {
1210
        catch (Exception ex)
1210
				try {
1211
        {
1211
					return delegate.verifyRevision(revision, referenceChunk);
1212
          handleException(++attempt, ex);
1212
				} catch (Exception ex) {
1213
        }
1213
					handleException(++attempt, ex);
1214
      }
1214
				}
1215
    }
1215
			}
1216
1216
		}
1217
    public CommitTransactionResult commitTransactionPhase2(InternalCDOXACommitContext xaContext, OMMonitor monitor)
1217
1218
    {
1218
		public void lockObjects(CDOView view,
1219
      int attempt = 0;
1219
				Map<CDOID, CDOIDAndVersion> objects, long timeout,
1220
      for (;;)
1220
				LockType lockType) throws InterruptedException {
1221
      {
1221
			int attempt = 0;
1222
        try
1222
			for (;;) {
1223
        {
1223
				try {
1224
          return delegate.commitTransactionPhase2(xaContext, monitor);
1224
					delegate.lockObjects(view, objects, timeout, lockType);
1225
        }
1225
					return;
1226
        catch (Exception ex)
1226
				} catch (Exception ex) {
1227
        {
1227
					handleException(++attempt, ex);
1228
          handleException(++attempt, ex);
1228
				}
1229
        }
1229
			}
1230
      }
1230
		}
1231
    }
1231
1232
1232
		public void openView(int viewId, CDOCommonView.Type viewType,
1233
    public CommitTransactionResult commitTransactionPhase3(InternalCDOXACommitContext xaContext, OMMonitor monitor)
1233
				long timeStamp) {
1234
    {
1234
			int attempt = 0;
1235
      int attempt = 0;
1235
			for (;;) {
1236
      for (;;)
1236
				try {
1237
      {
1237
					delegate.openView(viewId, viewType, timeStamp);
1238
        try
1238
					return;
1239
        {
1239
				} catch (Exception ex) {
1240
          return delegate.commitTransactionPhase3(xaContext, monitor);
1240
					handleException(++attempt, ex);
1241
        }
1241
				}
1242
        catch (Exception ex)
1242
			}
1243
        {
1243
		}
1244
          handleException(++attempt, ex);
1244
1245
        }
1245
		public void query(int viewID, AbstractQueryIterator<?> queryResult) {
1246
      }
1246
			int attempt = 0;
1247
    }
1247
			for (;;) {
1248
1248
				try {
1249
    public RepositoryTimeResult getRepositoryTime()
1249
					delegate.query(viewID, queryResult);
1250
    {
1250
					return;
1251
      int attempt = 0;
1251
				} catch (Exception ex) {
1252
      for (;;)
1252
					handleException(++attempt, ex);
1253
      {
1253
				}
1254
        try
1254
			}
1255
        {
1255
		}
1256
          return delegate.getRepositoryTime();
1256
1257
        }
1257
		public boolean[] setAudit(int viewId, long timeStamp,
1258
        catch (Exception ex)
1258
				List<InternalCDOObject> invalidObjects) {
1259
        {
1259
			int attempt = 0;
1260
          handleException(++attempt, ex);
1260
			for (;;) {
1261
        }
1261
				try {
1262
      }
1262
					return delegate.setAudit(viewId, timeStamp, invalidObjects);
1263
    }
1263
				} catch (Exception ex) {
1264
1264
					handleException(++attempt, ex);
1265
    public boolean isObjectLocked(CDOView view, CDOObject object, LockType lockType, boolean byOthers)
1265
				}
1266
    {
1266
			}
1267
      int attempt = 0;
1267
		}
1268
      for (;;)
1268
1269
      {
1269
		public void setPassiveUpdate(Map<CDOID, CDOIDAndVersion> idAndVersions,
1270
        try
1270
				int initialChunkSize, boolean passiveUpdateEnabled) {
1271
        {
1271
			int attempt = 0;
1272
          return delegate.isObjectLocked(view, object, lockType, byOthers);
1272
			for (;;) {
1273
        }
1273
				try {
1274
        catch (Exception ex)
1274
					delegate.setPassiveUpdate(idAndVersions, initialChunkSize,
1275
        {
1275
							passiveUpdateEnabled);
1276
          handleException(++attempt, ex);
1276
					return;
1277
        }
1277
				} catch (Exception ex) {
1278
      }
1278
					handleException(++attempt, ex);
1279
    }
1279
				}
1280
1280
			}
1281
    public EPackage[] loadPackages(CDOPackageUnit packageUnit)
1281
		}
1282
    {
1282
1283
      int attempt = 0;
1283
		public Collection<CDOTimeStampContext> syncRevisions(
1284
      for (;;)
1284
				Map<CDOID, CDOIDAndVersion> allRevisions, int initialChunkSize) {
1285
      {
1285
			int attempt = 0;
1286
        try
1286
			for (;;) {
1287
        {
1287
				try {
1288
          return delegate.loadPackages(packageUnit);
1288
					return delegate.syncRevisions(allRevisions,
1289
        }
1289
							initialChunkSize);
1290
        catch (Exception ex)
1290
				} catch (Exception ex) {
1291
        {
1291
					handleException(++attempt, ex);
1292
          handleException(++attempt, ex);
1292
				}
1293
        }
1293
			}
1294
      }
1294
		}
1295
    }
1295
1296
1296
		public void unlockObjects(CDOView view,
1297
    public Object loadChunk(InternalCDORevision revision, EStructuralFeature feature, int accessIndex, int fetchIndex,
1297
				Collection<? extends CDOObject> objects, LockType lockType) {
1298
        int fromIndex, int toIndex)
1298
			int attempt = 0;
1299
    {
1299
			for (;;) {
1300
      int attempt = 0;
1300
				try {
1301
      for (;;)
1301
					delegate.unlockObjects(view, objects, lockType);
1302
      {
1302
					return;
1303
        try
1303
				} catch (Exception ex) {
1304
        {
1304
					handleException(++attempt, ex);
1305
          return delegate.loadChunk(revision, feature, accessIndex, fetchIndex, fromIndex, toIndex);
1305
				}
1306
        }
1306
			}
1307
        catch (Exception ex)
1307
		}
1308
        {
1308
1309
          handleException(++attempt, ex);
1309
		public List<CDORemoteSession> getRemoteSessions(
1310
        }
1310
				InternalCDORemoteSessionManager manager, boolean subscribe) {
1311
      }
1311
			int attempt = 0;
1312
    }
1312
			for (;;) {
1313
1313
				try {
1314
    public InternalCDORevision loadRevision(CDOID id, int referenceChunk, int prefetchDepth)
1314
					return delegate.getRemoteSessions(manager, subscribe);
1315
    {
1315
				} catch (Exception ex) {
1316
      int attempt = 0;
1316
					handleException(++attempt, ex);
1317
      for (;;)
1317
				}
1318
      {
1318
			}
1319
        try
1319
		}
1320
        {
1320
1321
          return delegate.loadRevision(id, referenceChunk, prefetchDepth);
1321
		public Set<Integer> sendRemoteMessage(CDORemoteSessionMessage message,
1322
        }
1322
				List<CDORemoteSession> recipients) {
1323
        catch (Exception ex)
1323
			int attempt = 0;
1324
        {
1324
			for (;;) {
1325
          handleException(++attempt, ex);
1325
				try {
1326
        }
1326
					return delegate.sendRemoteMessage(message, recipients);
1327
      }
1327
				} catch (Exception ex) {
1328
    }
1328
					handleException(++attempt, ex);
1329
1329
				}
1330
    public InternalCDORevision loadRevisionByTime(CDOID id, int referenceChunk, int prefetchDepth, long timeStamp)
1330
			}
1331
    {
1331
		}
1332
      int attempt = 0;
1332
1333
      for (;;)
1333
		public boolean unsubscribeRemoteSessions() {
1334
      {
1334
			int attempt = 0;
1335
        try
1335
			for (;;) {
1336
        {
1336
				try {
1337
          return delegate.loadRevisionByTime(id, referenceChunk, prefetchDepth, timeStamp);
1337
					return delegate.unsubscribeRemoteSessions();
1338
        }
1338
				} catch (Exception ex) {
1339
        catch (Exception ex)
1339
					handleException(++attempt, ex);
1340
        {
1340
				}
1341
          handleException(++attempt, ex);
1341
			}
1342
        }
1342
		}
1343
      }
1343
1344
    }
1344
		@Override
1345
1345
		protected void doActivate() throws Exception {
1346
    public InternalCDORevision loadRevisionByVersion(CDOID id, int referenceChunk, int prefetchDepth, int version)
1346
			super.doActivate();
1347
    {
1347
			EventUtil.addListener(delegate, delegateListener);
1348
      int attempt = 0;
1348
		}
1349
      for (;;)
1349
1350
      {
1350
		@Override
1351
        try
1351
		protected void doDeactivate() throws Exception {
1352
        {
1352
			EventUtil.removeListener(delegate, delegateListener);
1353
          return delegate.loadRevisionByVersion(id, referenceChunk, prefetchDepth, version);
1353
			LifecycleUtil.deactivate(delegate);
1354
        }
1354
			delegate = null;
1355
        catch (Exception ex)
1355
			super.doDeactivate();
1356
        {
1356
		}
1357
          handleException(++attempt, ex);
1357
1358
        }
1358
		private void handleException(int attempt, Exception exception) {
1359
      }
1359
			try {
1360
    }
1360
				getExceptionHandler().handleException(CDOSessionImpl.this,
1361
1361
						attempt, exception);
1362
    public List<InternalCDORevision> loadRevisions(Collection<CDOID> ids, int referenceChunk, int prefetchDepth)
1362
			} catch (Exception ex) {
1363
    {
1363
				throw WrappedException.wrap(ex);
1364
      int attempt = 0;
1364
			}
1365
      for (;;)
1365
		}
1366
      {
1366
	}
1367
        try
1367
1368
        {
1369
          return delegate.loadRevisions(ids, referenceChunk, prefetchDepth);
1370
        }
1371
        catch (Exception ex)
1372
        {
1373
          handleException(++attempt, ex);
1374
        }
1375
      }
1376
    }
1377
1378
    public List<InternalCDORevision> loadRevisionsByTime(Collection<CDOID> ids, int referenceChunk, int prefetchDepth,
1379
        long timeStamp)
1380
    {
1381
      int attempt = 0;
1382
      for (;;)
1383
      {
1384
        try
1385
        {
1386
          return delegate.loadRevisionsByTime(ids, referenceChunk, prefetchDepth, timeStamp);
1387
        }
1388
        catch (Exception ex)
1389
        {
1390
          handleException(++attempt, ex);
1391
        }
1392
      }
1393
    }
1394
1395
    public InternalCDORevision verifyRevision(InternalCDORevision revision, int referenceChunk)
1396
    {
1397
      int attempt = 0;
1398
      for (;;)
1399
      {
1400
        try
1401
        {
1402
          return delegate.verifyRevision(revision, referenceChunk);
1403
        }
1404
        catch (Exception ex)
1405
        {
1406
          handleException(++attempt, ex);
1407
        }
1408
      }
1409
    }
1410
1411
    public void lockObjects(CDOView view, Map<CDOID, CDOIDAndVersion> objects, long timeout, LockType lockType)
1412
        throws InterruptedException
1413
    {
1414
      int attempt = 0;
1415
      for (;;)
1416
      {
1417
        try
1418
        {
1419
          delegate.lockObjects(view, objects, timeout, lockType);
1420
          return;
1421
        }
1422
        catch (Exception ex)
1423
        {
1424
          handleException(++attempt, ex);
1425
        }
1426
      }
1427
    }
1428
1429
    public void openView(int viewId, CDOCommonView.Type viewType, long timeStamp)
1430
    {
1431
      int attempt = 0;
1432
      for (;;)
1433
      {
1434
        try
1435
        {
1436
          delegate.openView(viewId, viewType, timeStamp);
1437
          return;
1438
        }
1439
        catch (Exception ex)
1440
        {
1441
          handleException(++attempt, ex);
1442
        }
1443
      }
1444
    }
1445
1446
    public void query(int viewID, AbstractQueryIterator<?> queryResult)
1447
    {
1448
      int attempt = 0;
1449
      for (;;)
1450
      {
1451
        try
1452
        {
1453
          delegate.query(viewID, queryResult);
1454
          return;
1455
        }
1456
        catch (Exception ex)
1457
        {
1458
          handleException(++attempt, ex);
1459
        }
1460
      }
1461
    }
1462
1463
    public boolean[] setAudit(int viewId, long timeStamp, List<InternalCDOObject> invalidObjects)
1464
    {
1465
      int attempt = 0;
1466
      for (;;)
1467
      {
1468
        try
1469
        {
1470
          return delegate.setAudit(viewId, timeStamp, invalidObjects);
1471
        }
1472
        catch (Exception ex)
1473
        {
1474
          handleException(++attempt, ex);
1475
        }
1476
      }
1477
    }
1478
1479
    public void setPassiveUpdate(Map<CDOID, CDOIDAndVersion> idAndVersions, int initialChunkSize,
1480
        boolean passiveUpdateEnabled)
1481
    {
1482
      int attempt = 0;
1483
      for (;;)
1484
      {
1485
        try
1486
        {
1487
          delegate.setPassiveUpdate(idAndVersions, initialChunkSize, passiveUpdateEnabled);
1488
          return;
1489
        }
1490
        catch (Exception ex)
1491
        {
1492
          handleException(++attempt, ex);
1493
        }
1494
      }
1495
    }
1496
1497
    public Collection<CDOTimeStampContext> syncRevisions(Map<CDOID, CDOIDAndVersion> allRevisions, int initialChunkSize)
1498
    {
1499
      int attempt = 0;
1500
      for (;;)
1501
      {
1502
        try
1503
        {
1504
          return delegate.syncRevisions(allRevisions, initialChunkSize);
1505
        }
1506
        catch (Exception ex)
1507
        {
1508
          handleException(++attempt, ex);
1509
        }
1510
      }
1511
    }
1512
1513
    public void unlockObjects(CDOView view, Collection<? extends CDOObject> objects, LockType lockType)
1514
    {
1515
      int attempt = 0;
1516
      for (;;)
1517
      {
1518
        try
1519
        {
1520
          delegate.unlockObjects(view, objects, lockType);
1521
          return;
1522
        }
1523
        catch (Exception ex)
1524
        {
1525
          handleException(++attempt, ex);
1526
        }
1527
      }
1528
    }
1529
1530
    public List<CDORemoteSession> getRemoteSessions(InternalCDORemoteSessionManager manager, boolean subscribe)
1531
    {
1532
      int attempt = 0;
1533
      for (;;)
1534
      {
1535
        try
1536
        {
1537
          return delegate.getRemoteSessions(manager, subscribe);
1538
        }
1539
        catch (Exception ex)
1540
        {
1541
          handleException(++attempt, ex);
1542
        }
1543
      }
1544
    }
1545
1546
    public Set<Integer> sendRemoteMessage(CDORemoteSessionMessage message, List<CDORemoteSession> recipients)
1547
    {
1548
      int attempt = 0;
1549
      for (;;)
1550
      {
1551
        try
1552
        {
1553
          return delegate.sendRemoteMessage(message, recipients);
1554
        }
1555
        catch (Exception ex)
1556
        {
1557
          handleException(++attempt, ex);
1558
        }
1559
      }
1560
    }
1561
1562
    public boolean unsubscribeRemoteSessions()
1563
    {
1564
      int attempt = 0;
1565
      for (;;)
1566
      {
1567
        try
1568
        {
1569
          return delegate.unsubscribeRemoteSessions();
1570
        }
1571
        catch (Exception ex)
1572
        {
1573
          handleException(++attempt, ex);
1574
        }
1575
      }
1576
    }
1577
1578
    @Override
1579
    protected void doActivate() throws Exception
1580
    {
1581
      super.doActivate();
1582
      EventUtil.addListener(delegate, delegateListener);
1583
    }
1584
1585
    @Override
1586
    protected void doDeactivate() throws Exception
1587
    {
1588
      EventUtil.removeListener(delegate, delegateListener);
1589
      LifecycleUtil.deactivate(delegate);
1590
      delegate = null;
1591
      super.doDeactivate();
1592
    }
1593
1594
    private void handleException(int attempt, Exception exception)
1595
    {
1596
      try
1597
      {
1598
        getExceptionHandler().handleException(CDOSessionImpl.this, attempt, exception);
1599
      }
1600
      catch (Exception ex)
1601
      {
1602
        throw WrappedException.wrap(ex);
1603
      }
1604
    }
1605
  }
1606
}
1368
}
(-)src/org/eclipse/emf/spi/cdo/InternalCDOSession.java (-81 / +95 lines)
Lines 24-29 Link Here
24
import org.eclipse.emf.cdo.spi.common.revision.InternalCDORevisionManager.RevisionLocker;
24
import org.eclipse.emf.cdo.spi.common.revision.InternalCDORevisionManager.RevisionLocker;
25
import org.eclipse.emf.cdo.view.CDOFetchRuleManager;
25
import org.eclipse.emf.cdo.view.CDOFetchRuleManager;
26
26
27
import org.eclipse.emf.internal.cdo.session.CDOSessionImpl;
28
29
import org.eclipse.net4j.util.concurrent.IRWLockManager;
27
import org.eclipse.net4j.util.lifecycle.ILifecycle;
30
import org.eclipse.net4j.util.lifecycle.ILifecycle;
28
31
29
import org.eclipse.emf.ecore.EStructuralFeature;
32
import org.eclipse.emf.ecore.EStructuralFeature;
Lines 35-119 Link Here
35
 * @author Eike Stepper
38
 * @author Eike Stepper
36
 * @since 2.0
39
 * @since 2.0
37
 */
40
 */
38
public interface InternalCDOSession extends CDOSession, PackageProcessor, PackageLoader, RevisionLocker, ILifecycle
41
public interface InternalCDOSession extends CDOSession, PackageProcessor,
39
{
42
		PackageLoader, RevisionLocker, ILifecycle {
40
  /**
43
	/**
41
   * @since 3.0
44
	 * @since 3.0
42
   */
45
	 */
43
  public InternalCDOSessionConfiguration getConfiguration();
46
	public InternalCDOSessionConfiguration getConfiguration();
44
47
45
  public CDOSessionProtocol getSessionProtocol();
48
	public CDOSessionProtocol getSessionProtocol();
46
49
47
  /**
50
	/**
48
   * @since 3.0
51
	 * @since 3.0
49
   */
52
	 */
50
  public void setSessionProtocol(CDOSessionProtocol sessionProtocol);
53
	public void setSessionProtocol(CDOSessionProtocol sessionProtocol);
51
54
52
  public InternalCDOPackageRegistry getPackageRegistry();
55
	public InternalCDOPackageRegistry getPackageRegistry();
53
56
54
  /**
57
	/**
55
   * @since 3.0
58
	 * @since 3.0
56
   */
59
	 */
57
  public InternalCDORevisionManager getRevisionManager();
60
	public InternalCDORevisionManager getRevisionManager();
58
61
59
  public void setExceptionHandler(CDOSession.ExceptionHandler exceptionHandler);
62
	public void setExceptionHandler(CDOSession.ExceptionHandler exceptionHandler);
60
63
61
  /**
64
	/**
62
   * @since 3.0
65
	 * @since 3.0
63
   */
66
	 */
64
  public void setFetchRuleManager(CDOFetchRuleManager fetchRuleManager);
67
	public void setFetchRuleManager(CDOFetchRuleManager fetchRuleManager);
65
68
66
  /**
69
	/**
67
   * @since 3.0
70
	 * @since 3.0
68
   */
71
	 */
69
  public void setRepositoryInfo(CDORepositoryInfo repositoryInfo);
72
	public void setRepositoryInfo(CDORepositoryInfo repositoryInfo);
70
73
71
  /**
74
	/**
72
   * @since 3.0
75
	 * @since 3.0
73
   */
76
	 */
74
  public InternalCDORemoteSessionManager getRemoteSessionManager();
77
	public InternalCDORemoteSessionManager getRemoteSessionManager();
75
78
76
  /**
79
	/**
77
   * @since 3.0
80
	 * @since 3.0
78
   */
81
	 */
79
  public void setRemoteSessionManager(InternalCDORemoteSessionManager remoteSessionManager);
82
	public void setRemoteSessionManager(
80
83
			InternalCDORemoteSessionManager remoteSessionManager);
81
  /**
84
82
   * @since 3.0
85
	/**
83
   */
86
	 * @since 3.0
84
  public void setSessionID(int sessionID);
87
	 */
85
88
	public void setSessionID(int sessionID);
86
  public void setUserID(String userID);
89
87
90
	public void setUserID(String userID);
88
  /**
91
89
   * @since 3.0
92
	/**
90
   */
93
	 * @since 3.0
91
  public void setLastUpdateTime(long lastUpdateTime);
94
	 */
92
95
	public void setLastUpdateTime(long lastUpdateTime);
93
  public void viewDetached(InternalCDOView view);
96
94
97
	public void viewDetached(InternalCDOView view);
95
  /**
98
96
   * @since 3.0
99
	/**
97
   */
100
	 * @since 3.0
98
  public Object resolveElementProxy(CDORevision revision, EStructuralFeature feature, int accessIndex, int serverIndex);
101
	 */
99
102
	public Object resolveElementProxy(CDORevision revision,
100
  /**
103
			EStructuralFeature feature, int accessIndex, int serverIndex);
101
   * @since 3.0
104
102
   */
105
	/**
103
  public Object getCommitLock();
106
	 * @since 3.0
104
107
	 */
105
  public void handleCommitNotification(long timeStamp, Collection<CDOPackageUnit> newPackageUnits,
108
	public Object getCommitLock();
106
      Set<CDOIDAndVersion> dirtyOIDs, Collection<CDOID> detachedObjects, Collection<CDORevisionDelta> deltas,
109
107
      InternalCDOView excludedView);
110
	public void handleCommitNotification(long timeStamp,
108
111
			Collection<CDOPackageUnit> newPackageUnits,
109
  public void handleSyncResponse(long timestamp, Collection<CDOPackageUnit> newPackageUnits,
112
			Set<CDOIDAndVersion> dirtyOIDs, Collection<CDOID> detachedObjects,
110
      Set<CDOIDAndVersion> dirtyOIDs, Collection<CDOID> detachedObjects);
113
			Collection<CDORevisionDelta> deltas, InternalCDOView excludedView);
111
114
112
  /**
115
	public void handleSyncResponse(long timestamp,
113
   * In some cases we need to sync without propagating event. Lock is a good example.
116
			Collection<CDOPackageUnit> newPackageUnits,
114
   * 
117
			Set<CDOIDAndVersion> dirtyOIDs, Collection<CDOID> detachedObjects);
115
   * @since 3.0
118
116
   */
119
	/**
117
  public void reviseRevisions(final long timeStamp, Set<CDOIDAndVersion> dirtyOIDs, Collection<CDOID> detachedObjects,
120
	 * In some cases we need to sync without propagating event. Lock is a good
118
      InternalCDOView excludedView);
121
	 * example.
122
	 * 
123
	 * @since 3.0
124
	 */
125
	public void reviseRevisions(final long timeStamp,
126
			Set<CDOIDAndVersion> dirtyOIDs, Collection<CDOID> detachedObjects,
127
			InternalCDOView excludedView);
128
129
	/**
130
	 *@author Juan Pedro Silva
131
	 */
132
	public IRWLockManager<CDOSessionImpl, Object> getLockmanager();
119
}
133
}
(-)src/org/eclipse/emf/cdo/session/CDOSession.java (-203 / +230 lines)
Lines 24-29 Link Here
24
import org.eclipse.emf.cdo.view.CDOFetchRuleManager;
24
import org.eclipse.emf.cdo.view.CDOFetchRuleManager;
25
import org.eclipse.emf.cdo.view.CDOView;
25
import org.eclipse.emf.cdo.view.CDOView;
26
26
27
import org.eclipse.emf.internal.cdo.session.CDOSessionImpl;
28
29
import org.eclipse.net4j.util.concurrent.IRWLockManager;
27
import org.eclipse.net4j.util.container.IContainer;
30
import org.eclipse.net4j.util.container.IContainer;
28
import org.eclipse.net4j.util.options.IOptionsEvent;
31
import org.eclipse.net4j.util.options.IOptionsEvent;
29
32
Lines 45-255 Link Here
45
 * <li> {@link CDOSession#getViews() View management}
48
 * <li> {@link CDOSession#getViews() View management}
46
 * </ul>
49
 * </ul>
47
 * <p>
50
 * <p>
48
 * Note that, in order to retrieve, access and store {@link EObject objects} a {@link CDOView view} is needed. The
51
 * Note that, in order to retrieve, access and store {@link EObject objects} a
49
 * various <code>openXYZ</code> methods are provided for this purpose.
52
 * {@link CDOView view} is needed. The various <code>openXYZ</code> methods are
53
 * provided for this purpose.
50
 * 
54
 * 
51
 * @author Eike Stepper
55
 * @author Eike Stepper
52
 * @since 2.0
56
 * @since 2.0
53
 */
57
 */
54
public interface CDOSession extends CDOCommonSession, IContainer<CDOView>
58
public interface CDOSession extends CDOCommonSession, IContainer<CDOView> {
55
{
59
	/**
56
  /**
60
	 * @since 3.0
57
   * @since 3.0
61
	 */
58
   */
62
	public CDOSessionConfiguration getConfiguration();
59
  public CDOSessionConfiguration getConfiguration();
63
60
64
	/**
61
  /**
65
	 * Returns the EMF {@link EPackage.Registry package registry} that is used
62
   * Returns the EMF {@link EPackage.Registry package registry} that is used by all {@link EObject objects} of all
66
	 * by all {@link EObject objects} of all {@link CDOView views} of this
63
   * {@link CDOView views} of this session.
67
	 * session.
64
   * <p>
68
	 * <p>
65
   * This registry is managed by the {@link CDOPackageUnit package unit manager} of this session. All {@link EPackage
69
	 * This registry is managed by the {@link CDOPackageUnit package unit
66
   * packages} that are already persisted in the repository of this session are automatically registered with this
70
	 * manager} of this session. All {@link EPackage packages} that are already
67
   * registry. New packages can be locally registered with this registry and are committed to the repository through a
71
	 * persisted in the repository of this session are automatically registered
68
   * {@link CDOTransaction transaction}, if needed.
72
	 * with this registry. New packages can be locally registered with this
69
   * 
73
	 * registry and are committed to the repository through a
70
   * @see #getPackageUnitManager()
74
	 * {@link CDOTransaction transaction}, if needed.
71
   */
75
	 * 
72
  public CDOPackageRegistry getPackageRegistry();
76
	 * @see #getPackageUnitManager()
73
77
	 */
74
  /**
78
	public CDOPackageRegistry getPackageRegistry();
75
   * Returns the CDO {@link CDORevisionManager revision manager} that manages the {@link CDORevision revisions} of the
79
76
   * repository of this session.
80
	/**
77
   * 
81
	 * Returns the CDO {@link CDORevisionManager revision manager} that manages
78
   * @since 3.0
82
	 * the {@link CDORevision revisions} of the repository of this session.
79
   */
83
	 * 
80
  public CDORevisionManager getRevisionManager();
84
	 * @since 3.0
81
85
	 */
82
  /**
86
	public CDORevisionManager getRevisionManager();
83
   * @since 3.0
87
84
   */
88
	/**
85
  public CDOFetchRuleManager getFetchRuleManager();
89
	 * @since 3.0
86
90
	 */
87
  /**
91
	public CDOFetchRuleManager getFetchRuleManager();
88
   * Returns the CDO {@link CDORemoteSessionManager remote session manager} that keeps track of the other remote
92
89
   * sessions served by the repository of this local session.
93
	/**
90
   */
94
	 * Returns the CDO {@link CDORemoteSessionManager remote session manager}
91
  public CDORemoteSessionManager getRemoteSessionManager();
95
	 * that keeps track of the other remote sessions served by the repository of
92
96
	 * this local session.
93
  public ExceptionHandler getExceptionHandler();
97
	 */
94
98
	public CDORemoteSessionManager getRemoteSessionManager();
95
  /**
99
96
   * Opens and returns a new {@link CDOTransaction transaction} on the given EMF {@link ResourceSet resource set}.
100
	public ExceptionHandler getExceptionHandler();
97
   * 
101
98
   * @see #openTransaction()
102
	/**
99
   */
103
	 * Opens and returns a new {@link CDOTransaction transaction} on the given
100
  public CDOTransaction openTransaction(ResourceSet resourceSet);
104
	 * EMF {@link ResourceSet resource set}.
101
105
	 * 
102
  /**
106
	 * @see #openTransaction()
103
   * Opens and returns a new {@link CDOTransaction transaction} on a new EMF {@link ResourceSet resource set}.
107
	 */
104
   * <p>
108
	public CDOTransaction openTransaction(ResourceSet resourceSet);
105
   * Same as calling <code>openTransaction(new ResourceSetImpl())</code>.
109
106
   * 
110
	/**
107
   * @see #openTransaction(ResourceSet)
111
	 * Opens and returns a new {@link CDOTransaction transaction} on a new EMF
108
   */
112
	 * {@link ResourceSet resource set}.
109
  public CDOTransaction openTransaction();
113
	 * <p>
110
114
	 * Same as calling <code>openTransaction(new ResourceSetImpl())</code>.
111
  /**
115
	 * 
112
   * Opens and returns a new {@link CDOView view} on the given EMF {@link ResourceSet resource set}.
116
	 * @see #openTransaction(ResourceSet)
113
   * 
117
	 */
114
   * @see #openView()
118
	public CDOTransaction openTransaction();
115
   */
119
116
  public CDOView openView(ResourceSet resourceSet);
120
	/**
117
121
	 * Opens and returns a new {@link CDOView view} on the given EMF
118
  /**
122
	 * {@link ResourceSet resource set}.
119
   * Opens and returns a new {@link CDOView view} on a new EMF {@link ResourceSet resource set}.
123
	 * 
120
   * <p>
124
	 * @see #openView()
121
   * Same as calling <code>openView(new ResourceSetImpl())</code>.
125
	 */
122
   * 
126
	public CDOView openView(ResourceSet resourceSet);
123
   * @see #openView(ResourceSet)
127
124
   */
128
	/**
125
  public CDOView openView();
129
	 * Opens and returns a new {@link CDOView view} on a new EMF
126
130
	 * {@link ResourceSet resource set}.
127
  /**
131
	 * <p>
128
   * Opens and returns a new {@link CDOAudit audit} on the given EMF {@link ResourceSet resource set}.
132
	 * Same as calling <code>openView(new ResourceSetImpl())</code>.
129
   * 
133
	 * 
130
   * @see #openAudit()
134
	 * @see #openView(ResourceSet)
131
   */
135
	 */
132
  public CDOAudit openAudit(ResourceSet resourceSet, long timeStamp);
136
	public CDOView openView();
133
137
134
  /**
138
	/**
135
   * Opens and returns a new {@link CDOAudit audit} on a new EMF {@link ResourceSet resource set}.
139
	 * Opens and returns a new {@link CDOAudit audit} on the given EMF
136
   * <p>
140
	 * {@link ResourceSet resource set}.
137
   * Same as calling <code>openAudit(new ResourceSetImpl(), timeStamp)</code>.
141
	 * 
138
   * 
142
	 * @see #openAudit()
139
   * @see #openAudit(ResourceSet, long)
143
	 */
140
   */
144
	public CDOAudit openAudit(ResourceSet resourceSet, long timeStamp);
141
  public CDOAudit openAudit(long timeStamp);
145
142
146
	/**
143
  /**
147
	 * Opens and returns a new {@link CDOAudit audit} on a new EMF
144
   * Returns an array of all open {@link CDOView views}, {@link CDOTransaction transactions} and {@link CDOAudit audits}
148
	 * {@link ResourceSet resource set}.
145
   * of this session.
149
	 * <p>
146
   * 
150
	 * Same as calling <code>openAudit(new ResourceSetImpl(), timeStamp)</code>.
147
   * @see #openView()
151
	 * 
148
   * @see #openTransaction()
152
	 * @see #openAudit(ResourceSet, long)
149
   * @see #openAudit(long)
153
	 */
150
   */
154
	public CDOAudit openAudit(long timeStamp);
151
  public CDOView[] getViews();
155
152
156
	/**
153
  /**
157
	 * Returns an array of all open {@link CDOView views},
154
   * Refreshes the objects cache.
158
	 * {@link CDOTransaction transactions} and {@link CDOAudit audits} of this
155
   * <p>
159
	 * session.
156
   * Takes CDOID and version of all objects in the cache and sends it to the server. {@link CDOTimeStampContext}
160
	 * 
157
   * contains informations of which objects changed/detached. The collection is ordered by timestamp. In the case where
161
	 * @see #openView()
158
   * {@link #isPassiveUpdateEnabled()} is <code>true</code>, this method will return immediately without doing anything.
162
	 * @see #openTransaction()
159
   */
163
	 * @see #openAudit(long)
160
  public Collection<CDOTimeStampContext> refresh();
164
	 */
161
165
	public CDOView[] getViews();
162
  /**
166
163
   * Returns the time stamp of the last commit operation. May not be accurate if
167
	/**
164
   * {@link Options#isPassiveUpdateEnabled() passive updates} are disabled.
168
	 * Refreshes the objects cache.
165
   * 
169
	 * <p>
166
   * @since 3.0
170
	 * Takes CDOID and version of all objects in the cache and sends it to the
167
   */
171
	 * server. {@link CDOTimeStampContext} contains informations of which
168
  public long getLastUpdateTime();
172
	 * objects changed/detached. The collection is ordered by timestamp. In the
169
173
	 * case where {@link #isPassiveUpdateEnabled()} is <code>true</code>, this
170
  /**
174
	 * method will return immediately without doing anything.
171
   * Blocks the calling thread until a commit operation with the given time stamp or higher has occured.
175
	 */
172
   * 
176
	public Collection<CDOTimeStampContext> refresh();
173
   * @since 3.0
177
174
   */
178
	/**
175
  public void waitForUpdate(long updateTime);
179
	 * Returns the time stamp of the last commit operation. May not be accurate
176
180
	 * if {@link Options#isPassiveUpdateEnabled() passive updates} are disabled.
177
  /**
181
	 * 
178
   * Blocks the calling thread until a commit operation with the given time stamp or higher has occured or the given
182
	 * @since 3.0
179
   * timeout has expired.
183
	 */
180
   * 
184
	public long getLastUpdateTime();
181
   * @return <code>true</code> if the specified commit operation has occured within the given timeout period,
185
182
   *         <code>false</code> otherwise.
186
	/**
183
   * @since 3.0
187
	 * Blocks the calling thread until a commit operation with the given time
184
   */
188
	 * stamp or higher has occured.
185
  public boolean waitForUpdate(long updateTime, long timeoutMillis);
189
	 * 
186
190
	 * @since 3.0
187
  /**
191
	 */
188
   * Returns the {@link Options options} of this session.
192
	public void waitForUpdate(long updateTime);
189
   */
193
190
  public Options options();
194
	/**
191
195
	 * Blocks the calling thread until a commit operation with the given time
192
  /**
196
	 * stamp or higher has occured or the given timeout has expired.
193
   * Returns an instance of {@link CDORepositoryInfo} that describes the model repository this {@link CDOSession
197
	 * 
194
   * session} is connected to.
198
	 * @return <code>true</code> if the specified commit operation has occured
195
   * 
199
	 *         within the given timeout period, <code>false</code> otherwise.
196
   * @since 3.0
200
	 * @since 3.0
197
   */
201
	 */
198
  public CDORepositoryInfo getRepositoryInfo();
202
	public boolean waitForUpdate(long updateTime, long timeoutMillis);
199
203
200
  /**
204
	/**
201
   * @author Simon McDuff
205
	 * Returns the {@link Options options} of this session.
202
   */
206
	 */
203
  public interface Options extends CDOCommonSession.Options
207
	public Options options();
204
  {
208
205
    public boolean isGeneratedPackageEmulationEnabled();
209
	/**
206
210
	 * Returns an instance of {@link CDORepositoryInfo} that describes the model
207
    public void setGeneratedPackageEmulationEnabled(boolean generatedPackageEmulationEnabled);
211
	 * repository this {@link CDOSession session} is connected to.
208
212
	 * 
209
    /**
213
	 * @since 3.0
210
     * The {@link CDOCollectionLoadingPolicy collection loading policy} of this {@link CDOSession session} controls how
214
	 */
211
     * a list gets populated. By default, when an object is fetched, all its elements are filled with the proper values.
215
	public CDORepositoryInfo getRepositoryInfo();
212
     * <p>
216
213
     * This could be time-consuming, especially if the reference list does not need to be accessed. In CDO it is
217
	/**
214
     * possible to partially load collections. The default list implementation that is shipped with CDO makes a
218
	 * @author Simon McDuff
215
     * distinction between the two following situations:
219
	 */
216
     * <ol>
220
	public interface Options extends CDOCommonSession.Options {
217
     * <li>How many CDOIDs to fill when an object is loaded for the first time;
221
		public boolean isGeneratedPackageEmulationEnabled();
218
     * <li>Which elements to fill with CDOIDs when the accessed element is not yet filled.
222
219
     * </ol>
223
		public void setGeneratedPackageEmulationEnabled(
220
     * Example:
224
				boolean generatedPackageEmulationEnabled);
221
     * <p>
225
222
     * <code>CDOUtil.createCollectionLoadingPolicy(initialElements, subsequentElements);</code>
226
		/**
223
     * <p>
227
		 * The {@link CDOCollectionLoadingPolicy collection loading policy} of
224
     * The user can also provide its own implementation of the CDOCollectionLoadingPolicy interface.
228
		 * this {@link CDOSession session} controls how a list gets populated.
225
     */
229
		 * By default, when an object is fetched, all its elements are filled
226
    public CDOCollectionLoadingPolicy getCollectionLoadingPolicy();
230
		 * with the proper values.
227
231
		 * <p>
228
    /**
232
		 * This could be time-consuming, especially if the reference list does
229
     * Returns the CDOCollectionLoadingPolicy currently being used by this session.
233
		 * not need to be accessed. In CDO it is possible to partially load
230
     */
234
		 * collections. The default list implementation that is shipped with CDO
231
    public void setCollectionLoadingPolicy(CDOCollectionLoadingPolicy policy);
235
		 * makes a distinction between the two following situations:
232
236
		 * <ol>
233
    /**
237
		 * <li>How many CDOIDs to fill when an object is loaded for the first
234
     * @author Eike Stepper
238
		 * time;
235
     */
239
		 * <li>Which elements to fill with CDOIDs when the accessed element is
236
    public interface GeneratedPackageEmulationEvent extends IOptionsEvent
240
		 * not yet filled.
237
    {
241
		 * </ol>
238
    }
242
		 * Example:
239
243
		 * <p>
240
    /**
244
		 * <code>CDOUtil.createCollectionLoadingPolicy(initialElements, subsequentElements);</code>
241
     * @author Eike Stepper
245
		 * <p>
242
     */
246
		 * The user can also provide its own implementation of the
243
    public interface CollectionLoadingPolicyEvent extends IOptionsEvent
247
		 * CDOCollectionLoadingPolicy interface.
244
    {
248
		 */
245
    }
249
		public CDOCollectionLoadingPolicy getCollectionLoadingPolicy();
246
  }
250
247
251
		/**
248
  /**
252
		 * Returns the CDOCollectionLoadingPolicy currently being used by this
249
   * @author Eike Stepper
253
		 * session.
250
   */
254
		 */
251
  public interface ExceptionHandler
255
		public void setCollectionLoadingPolicy(CDOCollectionLoadingPolicy policy);
252
  {
256
253
    public void handleException(CDOSession session, int attempt, Exception exception) throws Exception;
257
		/**
254
  }
258
		 * @author Eike Stepper
259
		 */
260
		public interface GeneratedPackageEmulationEvent extends IOptionsEvent {
261
		}
262
263
		/**
264
		 * @author Eike Stepper
265
		 */
266
		public interface CollectionLoadingPolicyEvent extends IOptionsEvent {
267
		}
268
	}
269
270
	/**
271
	 * @author Eike Stepper
272
	 */
273
	public interface ExceptionHandler {
274
		public void handleException(CDOSession session, int attempt,
275
				Exception exception) throws Exception;
276
	}
277
278
	/**
279
	 *@author Juan Pedro Silva
280
	 */
281
	public IRWLockManager<CDOSessionImpl, Object> getLockmanager();
255
}
282
}
(-)src/org/eclipse/emf/cdo/view/RemoteLockEvent.java (+30 lines)
Added Link Here
1
/**
2
 * Copyright (c) 2004 - 2009 Eike Stepper (Berlin, Germany) and others.
3
 * All rights reserved. This program and the accompanying materials
4
 * are made available under the terms of the Eclipse Public License v1.0
5
 * which accompanies this distribution, and is available at
6
 * http://www.eclipse.org/legal/epl-v10.html
7
 * 
8
 * Contributors:
9
 *    Eike Stepper - initial API and implementation
10
 */
11
package org.eclipse.emf.cdo.view;
12
13
import org.eclipse.net4j.util.event.INotifier;
14
15
/**
16
 * @author Eike Stepper
17
 */
18
public class RemoteLockEvent implements CDOViewEvent {
19
	public RemoteLockEvent(INotifier source) {
20
		super();
21
		this.source = (CDOView) source;
22
	}
23
24
	private CDOView source;
25
26
	public CDOView getSource() {
27
		return source;
28
	}
29
30
}
(-)src/org/eclipse/emf/cdo/view/RemoteLockReleasedEvent.java (+22 lines)
Added Link Here
1
/**
2
 * Copyright (c) 2004 - 2009 Eike Stepper (Berlin, Germany) and others.
3
 * All rights reserved. This program and the accompanying materials
4
 * are made available under the terms of the Eclipse Public License v1.0
5
 * which accompanies this distribution, and is available at
6
 * http://www.eclipse.org/legal/epl-v10.html
7
 * 
8
 * Contributors:
9
 *    Eike Stepper - initial API and implementation
10
 */
11
package org.eclipse.emf.cdo.view;
12
13
import org.eclipse.net4j.util.event.INotifier;
14
15
/**
16
 * @author Juan Pedro Silva
17
 */
18
public class RemoteLockReleasedEvent extends RemoteLockEvent {
19
	public RemoteLockReleasedEvent(INotifier source) {
20
		super(source);
21
	}
22
}
(-)src/org/eclipse/emf/cdo/view/RemoteLockAcquiredEvent.java (+23 lines)
Added Link Here
1
/**
2
 * Copyright (c) 2004 - 2009 Eike Stepper (Berlin, Germany) and others.
3
 * All rights reserved. This program and the accompanying materials
4
 * are made available under the terms of the Eclipse Public License v1.0
5
 * which accompanies this distribution, and is available at
6
 * http://www.eclipse.org/legal/epl-v10.html
7
 * 
8
 * Contributors:
9
 *    Eike Stepper - initial API and implementation
10
 */
11
package org.eclipse.emf.cdo.view;
12
13
import org.eclipse.net4j.util.event.INotifier;
14
15
/**
16
 * @author Juan Pedro Silva
17
 */
18
public class RemoteLockAcquiredEvent extends RemoteLockEvent {
19
20
	public RemoteLockAcquiredEvent(INotifier source) {
21
		super(source);
22
	}
23
}
(-)src/org/eclipse/emf/cdo/spi/server/InternalSessionManager.java (+6 lines)
Lines 15-23 Link Here
15
import org.eclipse.emf.cdo.common.model.CDOPackageUnit;
15
import org.eclipse.emf.cdo.common.model.CDOPackageUnit;
16
import org.eclipse.emf.cdo.common.revision.delta.CDORevisionDelta;
16
import org.eclipse.emf.cdo.common.revision.delta.CDORevisionDelta;
17
import org.eclipse.emf.cdo.server.ISessionManager;
17
import org.eclipse.emf.cdo.server.ISessionManager;
18
import org.eclipse.emf.cdo.server.IView;
18
import org.eclipse.emf.cdo.server.SessionCreationException;
19
import org.eclipse.emf.cdo.server.SessionCreationException;
19
import org.eclipse.emf.cdo.session.remote.CDORemoteSessionMessage;
20
import org.eclipse.emf.cdo.session.remote.CDORemoteSessionMessage;
20
21
22
import org.eclipse.net4j.util.concurrent.IRWLockManager.LockType;
21
import org.eclipse.net4j.util.security.IUserManager;
23
import org.eclipse.net4j.util.security.IUserManager;
22
24
23
import java.util.List;
25
import java.util.List;
Lines 51-54 Link Here
51
  public void handleRemoteSessionNotification(byte opcode, InternalSession excludedSession);
53
  public void handleRemoteSessionNotification(byte opcode, InternalSession excludedSession);
52
54
53
  public List<Integer> sendMessage(InternalSession sender, CDORemoteSessionMessage message, int[] recipients);
55
  public List<Integer> sendMessage(InternalSession sender, CDORemoteSessionMessage message, int[] recipients);
56
57
  public List<Integer> sendRemoteLock(IView view, List<CDOID> lockedObjects, LockType lockType);
58
59
  public List<Integer> sendRemoteUnLock(IView view, List<CDOID> lockedObjects, LockType lockType);
54
}
60
}
(-)src/org/eclipse/emf/cdo/spi/server/ISessionProtocol.java (+7 lines)
Lines 17-24 Link Here
17
import org.eclipse.emf.cdo.common.protocol.CDOProtocol;
17
import org.eclipse.emf.cdo.common.protocol.CDOProtocol;
18
import org.eclipse.emf.cdo.common.revision.delta.CDORevisionDelta;
18
import org.eclipse.emf.cdo.common.revision.delta.CDORevisionDelta;
19
import org.eclipse.emf.cdo.server.ISession;
19
import org.eclipse.emf.cdo.server.ISession;
20
import org.eclipse.emf.cdo.server.IView;
20
import org.eclipse.emf.cdo.session.remote.CDORemoteSessionMessage;
21
import org.eclipse.emf.cdo.session.remote.CDORemoteSessionMessage;
21
22
23
import org.eclipse.net4j.util.concurrent.IRWLockManager.LockType;
24
22
import java.util.List;
25
import java.util.List;
23
26
24
/**
27
/**
Lines 35-38 Link Here
35
  public void sendRemoteSessionNotification(byte opcode, ISession session);
38
  public void sendRemoteSessionNotification(byte opcode, ISession session);
36
39
37
  public boolean sendRemoteMessageNotification(InternalSession sender, CDORemoteSessionMessage message);
40
  public boolean sendRemoteMessageNotification(InternalSession sender, CDORemoteSessionMessage message);
41
42
  public void sendRemoteLockNotification(IView sender, List<CDOID> lockedObjects, LockType lockType);
43
44
  public void sendRemoteUnLockNotification(IView sender, List<CDOID> lockedObjects, LockType lockType);
38
}
45
}
(-)src/org/eclipse/emf/cdo/internal/server/SessionManager.java (+36 lines)
Lines 20-25 Link Here
20
import org.eclipse.emf.cdo.common.revision.delta.CDORevisionDelta;
20
import org.eclipse.emf.cdo.common.revision.delta.CDORevisionDelta;
21
import org.eclipse.emf.cdo.internal.server.bundle.OM;
21
import org.eclipse.emf.cdo.internal.server.bundle.OM;
22
import org.eclipse.emf.cdo.server.ISession;
22
import org.eclipse.emf.cdo.server.ISession;
23
import org.eclipse.emf.cdo.server.IView;
23
import org.eclipse.emf.cdo.server.SessionCreationException;
24
import org.eclipse.emf.cdo.server.SessionCreationException;
24
import org.eclipse.emf.cdo.session.remote.CDORemoteSessionMessage;
25
import org.eclipse.emf.cdo.session.remote.CDORemoteSessionMessage;
25
import org.eclipse.emf.cdo.spi.server.ISessionProtocol;
26
import org.eclipse.emf.cdo.spi.server.ISessionProtocol;
Lines 27-32 Link Here
27
import org.eclipse.emf.cdo.spi.server.InternalSession;
28
import org.eclipse.emf.cdo.spi.server.InternalSession;
28
import org.eclipse.emf.cdo.spi.server.InternalSessionManager;
29
import org.eclipse.emf.cdo.spi.server.InternalSessionManager;
29
30
31
import org.eclipse.net4j.util.concurrent.IRWLockManager.LockType;
30
import org.eclipse.net4j.util.container.Container;
32
import org.eclipse.net4j.util.container.Container;
31
import org.eclipse.net4j.util.lifecycle.LifecycleUtil;
33
import org.eclipse.net4j.util.lifecycle.LifecycleUtil;
32
import org.eclipse.net4j.util.om.trace.ContextTracer;
34
import org.eclipse.net4j.util.om.trace.ContextTracer;
Lines 391-394 Link Here
391
393
392
    super.doDeactivate();
394
    super.doDeactivate();
393
  }
395
  }
396
397
  /**
398
   * @author Juan Pedro Silva
399
   */
400
  public List<Integer> sendRemoteLock(IView sender, List<CDOID> lockedObjects, LockType lockType)
401
  {
402
    List<Integer> result = new ArrayList<Integer>();
403
    for (InternalSession recipient : getSessions())
404
    {
405
      if (recipient != null && recipient.hasListeners())
406
      {
407
        recipient.getProtocol().sendRemoteLockNotification(sender, lockedObjects, lockType);
408
        result.add(recipient.getSessionID());
409
      }
410
    }
411
    return result;
412
  }
413
414
  /**
415
   * @author Juan Pedro Silva
416
   */
417
  public List<Integer> sendRemoteUnLock(IView sender, List<CDOID> lockedObjects, LockType lockType)
418
  {
419
    List<Integer> result = new ArrayList<Integer>();
420
    for (InternalSession recipient : getSessions())
421
    {
422
      if (recipient != null && recipient.hasListeners())
423
      {
424
        recipient.getProtocol().sendRemoteUnLockNotification(sender, lockedObjects, lockType);
425
        result.add(recipient.getSessionID());
426
      }
427
    }
428
    return result;
429
  }
394
}
430
}
(-)src/org/eclipse/emf/cdo/internal/server/LockManager.java (+14 lines)
Lines 17-22 Link Here
17
import org.eclipse.emf.cdo.server.IView;
17
import org.eclipse.emf.cdo.server.IView;
18
import org.eclipse.emf.cdo.spi.server.InternalLockManager;
18
import org.eclipse.emf.cdo.spi.server.InternalLockManager;
19
import org.eclipse.emf.cdo.spi.server.InternalRepository;
19
import org.eclipse.emf.cdo.spi.server.InternalRepository;
20
import org.eclipse.emf.cdo.view.RemoteLockAcquiredEvent;
21
import org.eclipse.emf.cdo.view.RemoteLockEvent;
22
import org.eclipse.emf.cdo.view.RemoteLockReleasedEvent;
20
23
21
import org.eclipse.net4j.util.ReflectUtil.ExcludeFromDump;
24
import org.eclipse.net4j.util.ReflectUtil.ExcludeFromDump;
22
import org.eclipse.net4j.util.concurrent.RWLockManager;
25
import org.eclipse.net4j.util.concurrent.RWLockManager;
Lines 91-94 Link Here
91
94
92
    super.doDeactivate();
95
    super.doDeactivate();
93
  }
96
  }
97
98
  /**
99
   * @author Juan Pedro Silva
100
   */
101
  protected void notify(RemoteLockEvent event)
102
  {
103
    if (event instanceof RemoteLockAcquiredEvent || event instanceof RemoteLockReleasedEvent) // Redundant
104
    {
105
      fireEvent(event, registeredLockListeners.get());
106
    }
107
  }
94
}
108
}
(-)src/org/eclipse/emf/cdo/internal/server/embedded/EmbeddedServerSessionProtocol.java (+12 lines)
Lines 16-26 Link Here
16
import org.eclipse.emf.cdo.common.protocol.CDOAuthenticationResult;
16
import org.eclipse.emf.cdo.common.protocol.CDOAuthenticationResult;
17
import org.eclipse.emf.cdo.common.revision.delta.CDORevisionDelta;
17
import org.eclipse.emf.cdo.common.revision.delta.CDORevisionDelta;
18
import org.eclipse.emf.cdo.server.ISession;
18
import org.eclipse.emf.cdo.server.ISession;
19
import org.eclipse.emf.cdo.server.IView;
19
import org.eclipse.emf.cdo.session.remote.CDORemoteSessionMessage;
20
import org.eclipse.emf.cdo.session.remote.CDORemoteSessionMessage;
20
import org.eclipse.emf.cdo.spi.server.ISessionProtocol;
21
import org.eclipse.emf.cdo.spi.server.ISessionProtocol;
21
import org.eclipse.emf.cdo.spi.server.InternalRepository;
22
import org.eclipse.emf.cdo.spi.server.InternalRepository;
22
import org.eclipse.emf.cdo.spi.server.InternalSession;
23
import org.eclipse.emf.cdo.spi.server.InternalSession;
23
24
25
import org.eclipse.net4j.util.concurrent.IRWLockManager.LockType;
24
import org.eclipse.net4j.util.lifecycle.Lifecycle;
26
import org.eclipse.net4j.util.lifecycle.Lifecycle;
25
27
26
import java.util.Arrays;
28
import java.util.Arrays;
Lines 81-84 Link Here
81
  {
83
  {
82
    throw new UnsupportedOperationException();
84
    throw new UnsupportedOperationException();
83
  }
85
  }
86
87
  public void sendRemoteLockNotification(IView sender, List<CDOID> lockedObjects, LockType lockType)
88
  {
89
    throw new UnsupportedOperationException();
90
  }
91
92
  public void sendRemoteUnLockNotification(IView sender, List<CDOID> lockedObjects, LockType lockType)
93
  {
94
    throw new UnsupportedOperationException();
95
  }
84
}
96
}
(-)src/org/eclipse/emf/cdo/common/protocol/CDOProtocolConstants.java (+10 lines)
Lines 92-97 Link Here
92
  public static final short SIGNAL_REMOTE_SESSION_NOTIFICATION = 32;
92
  public static final short SIGNAL_REMOTE_SESSION_NOTIFICATION = 32;
93
93
94
  // //////////////////////////////////////////////////////////////////////
94
  // //////////////////////////////////////////////////////////////////////
95
  // Lock Signal IDs
96
97
  /**
98
   * @author Juan Pedro Silva
99
   */
100
  public static final short SIGNAL_REMOTE_LOCK = 35;
101
102
  public static final short SIGNAL_REMOTE_UNLOCK = 36;
103
104
  // //////////////////////////////////////////////////////////////////////
95
  // Session Management
105
  // Session Management
96
106
97
  public static final int ERROR_REPOSITORY_NOT_FOUND = -1;
107
  public static final int ERROR_REPOSITORY_NOT_FOUND = -1;
(-)src/org/eclipse/emf/cdo/internal/net4j/protocol/CDOClientProtocol.java (+78 lines)
Lines 219-229 Link Here
219
    {
219
    {
220
      throw runtimeException;
220
      throw runtimeException;
221
    }
221
    }
222
223
    /**
224
     * @author Juan Pedro Silva
225
     */
226
    try
227
    {
228
      notifyLocks(view, objects, timeout, lockType);
229
    }
230
    catch (Exception ex)
231
    {
232
      ex.printStackTrace();
233
    }
222
  }
234
  }
223
235
224
  public void unlockObjects(CDOView view, Collection<? extends CDOObject> objects, LockType lockType)
236
  public void unlockObjects(CDOView view, Collection<? extends CDOObject> objects, LockType lockType)
225
  {
237
  {
226
    send(new UnlockObjectsRequest(this, view, objects, lockType));
238
    send(new UnlockObjectsRequest(this, view, objects, lockType));
239
240
    /**
241
     * @author Juan Pedro Silva
242
     */
243
    try
244
    {
245
      send(new RemoteUnLockObjectsIndicationRequest(this, view, objects, lockType));
246
    }
247
    catch (Exception ex)
248
    {
249
      ex.printStackTrace();
250
    }
227
  }
251
  }
228
252
229
  public boolean isObjectLocked(CDOView view, CDOObject object, LockType lockType, boolean byOthers)
253
  public boolean isObjectLocked(CDOView view, CDOObject object, LockType lockType, boolean byOthers)
Lines 288-293 Link Here
288
    case CDOProtocolConstants.SIGNAL_REMOTE_MESSAGE_NOTIFICATION:
312
    case CDOProtocolConstants.SIGNAL_REMOTE_MESSAGE_NOTIFICATION:
289
      return new RemoteMessageNotificationIndication(this);
313
      return new RemoteMessageNotificationIndication(this);
290
314
315
      /**
316
       * @author Juan Pedro Silva
317
       */
318
    case CDOProtocolConstants.SIGNAL_REMOTE_LOCK:
319
      return new RemoteLockObjectsIndication(this);
320
321
      /**
322
       * @author Juan Pedro Silva
323
       */
324
    case CDOProtocolConstants.SIGNAL_REMOTE_UNLOCK:
325
      return new RemoteLockReleasedIndication(this);
326
291
    default:
327
    default:
292
      return super.createSignalReactor(signalID);
328
      return super.createSignalReactor(signalID);
293
    }
329
    }
Lines 347-350 Link Here
347
      REVISION_LOADING.stop(request);
383
      REVISION_LOADING.stop(request);
348
    }
384
    }
349
  }
385
  }
386
387
  /**
388
   * @author Juan Pedro Silva
389
   * @throws InterruptedException
390
   */
391
  private void notifyLocks(CDOView view, Map<CDOID, CDOIDAndVersion> objects, long timeout, LockType lockType)
392
      throws InterruptedException
393
  {
394
    InterruptedException interruptedException = null;
395
    RuntimeException runtimeException = null;
396
    try
397
    {
398
      new RemoteLockObjectsIndicationRequest(this, view, objects, view.getSession().options()
399
          .getCollectionLoadingPolicy().getInitialChunkSize(), 1000, lockType).send();
400
    }
401
    catch (RemoteException ex)
402
    {
403
      if (ex.getCause() instanceof RuntimeException)
404
      {
405
        runtimeException = (RuntimeException)ex.getCause();
406
      }
407
      else if (ex.getCause() instanceof InterruptedException)
408
      {
409
        interruptedException = (InterruptedException)ex.getCause();
410
      }
411
    }
412
    catch (Exception ex)
413
    {
414
      ex.printStackTrace();
415
    }
416
417
    if (interruptedException != null)
418
    {
419
      throw interruptedException;
420
    }
421
422
    if (runtimeException != null)
423
    {
424
      throw runtimeException;
425
    }
426
  }
427
350
}
428
}
(-)src/org/eclipse/emf/cdo/internal/net4j/CDONet4jSessionImpl.java (+13 lines)
Lines 23-31 Link Here
23
import org.eclipse.emf.internal.cdo.session.CDOSessionImpl;
23
import org.eclipse.emf.internal.cdo.session.CDOSessionImpl;
24
24
25
import org.eclipse.net4j.signal.ISignalProtocol;
25
import org.eclipse.net4j.signal.ISignalProtocol;
26
import org.eclipse.net4j.util.event.IListener;
26
27
27
import org.eclipse.emf.spi.cdo.CDOSessionProtocol;
28
import org.eclipse.emf.spi.cdo.CDOSessionProtocol;
28
29
30
import java.util.Collection;
31
29
/**
32
/**
30
 * @author Eike Stepper
33
 * @author Eike Stepper
31
 */
34
 */
Lines 111-114 Link Here
111
      this.progressInterval = progressInterval;
114
      this.progressInterval = progressInterval;
112
    }
115
    }
113
  }
116
  }
117
118
  public void registerLockListener(Collection<IListener> lockListeners)
119
  {
120
    throw new UnsupportedOperationException();
121
  }
122
123
  public void unRegisterLockListener(Collection<IListener> lockListeners)
124
  {
125
    throw new UnsupportedOperationException();
126
  }
114
}
127
}
(-)src/org/eclipse/emf/cdo/internal/net4j/protocol/RemoteLockObjectsIndicationRequest.java (+82 lines)
Added Link Here
1
/**
2
 * Copyright (c) 2004 - 2009 Eike Stepper (Berlin, Germany) and others.
3
 * All rights reserved. This program and the accompanying materials
4
 * are made available under the terms of the Eclipse Public License v1.0
5
 * which accompanies this distribution, and is available at
6
 * http://www.eclipse.org/legal/epl-v10.html
7
 * 
8
 * Contributors:
9
 *    Eike Stepper - initial API and implementation
10
 */
11
package org.eclipse.emf.cdo.internal.net4j.protocol;
12
13
import org.eclipse.emf.cdo.common.id.CDOID;
14
import org.eclipse.emf.cdo.common.id.CDOIDAndVersion;
15
import org.eclipse.emf.cdo.common.io.CDODataInput;
16
import org.eclipse.emf.cdo.common.io.CDODataOutput;
17
import org.eclipse.emf.cdo.common.protocol.CDOProtocolConstants;
18
import org.eclipse.emf.cdo.internal.net4j.bundle.OM;
19
import org.eclipse.emf.cdo.transaction.CDOTimeStampContext;
20
import org.eclipse.emf.cdo.view.CDOView;
21
22
import org.eclipse.net4j.util.concurrent.IRWLockManager.LockType;
23
import org.eclipse.net4j.util.om.trace.ContextTracer;
24
25
import java.io.IOException;
26
import java.util.Collection;
27
import java.util.Map;
28
29
/**
30
 * @author Juan Pedro Silva
31
 * @see org.eclipse.emf.cdo.internal.net4j.protocol.LockObjectsRequest
32
 */
33
public class RemoteLockObjectsIndicationRequest extends AbstractSyncRevisionsRequest
34
{
35
  private static final ContextTracer TRACER = new ContextTracer(OM.DEBUG_PROTOCOL, LockObjectsRequest.class);
36
37
  private CDOView view;
38
39
  private LockType lockType;
40
41
  private long timeout;
42
43
  public RemoteLockObjectsIndicationRequest(CDOClientProtocol protocol, CDOView view,
44
      Map<CDOID, CDOIDAndVersion> idAndVersions, int referenceChunk, long timeout, LockType lockType)
45
  {
46
    super(protocol, CDOProtocolConstants.SIGNAL_REMOTE_LOCK, idAndVersions, referenceChunk);
47
    this.view = view;
48
49
    this.timeout = timeout;
50
    this.lockType = lockType;
51
  }
52
53
  @Override
54
  protected void requesting(CDODataOutput out) throws IOException
55
  {
56
    super.requesting(out);
57
    out.writeInt(view.getViewID());
58
    out.writeCDOLockType(lockType);
59
    out.writeLong(timeout);
60
61
    if (TRACER.isEnabled())
62
    {
63
      TRACER.format("Locking of type {0} requested for view {1} with timeout {2}", //$NON-NLS-1$
64
          lockType == LockType.READ ? "read" : "write", view.getViewID(), timeout); //$NON-NLS-1$ //$NON-NLS-2$
65
    }
66
  }
67
68
  @Override
69
  protected Collection<CDOTimeStampContext> confirming(CDODataInput in) throws IOException
70
  {
71
    // Collection<CDOTimeStampContext> contexts = super.confirming(in);
72
    // for (CDOTimeStampContext timestampContext : contexts)
73
    // {
74
    // getSession().reviseRevisions(timestampContext.getTimeStamp(), timestampContext.getDirtyObjects(),
75
    // timestampContext.getDetachedObjects(), null);
76
    // ((InternalCDOView)view).handleInvalidationWithoutNotification(timestampContext.getDirtyObjects(),
77
    // timestampContext.getDetachedObjects(), new HashSet<InternalCDOObject>(), new HashSet<InternalCDOObject>());
78
    // }
79
80
    return null;// contexts;
81
  }
82
}
(-)src/org/eclipse/emf/cdo/internal/net4j/protocol/RemoteUnLockObjectsIndicationRequest.java (+89 lines)
Added Link Here
1
/***************************************************************************
2
 * Copyright (c) 2004 - 2009 Eike Stepper (Berlin, Germany) and others.
3
 * All rights reserved. This program and the accompanying materials
4
 * are made available under the terms of the Eclipse Public License v1.0
5
 * which accompanies this distribution, and is available at
6
 * http://www.eclipse.org/legal/epl-v10.html
7
 *
8
 * Contributors:
9
 *    Simon McDuff - initial API and implementation
10
 **************************************************************************/
11
package org.eclipse.emf.cdo.internal.net4j.protocol;
12
13
import org.eclipse.emf.cdo.CDOObject;
14
import org.eclipse.emf.cdo.common.io.CDODataInput;
15
import org.eclipse.emf.cdo.common.io.CDODataOutput;
16
import org.eclipse.emf.cdo.common.protocol.CDOProtocolConstants;
17
import org.eclipse.emf.cdo.internal.net4j.bundle.OM;
18
import org.eclipse.emf.cdo.view.CDOView;
19
20
import org.eclipse.net4j.util.concurrent.IRWLockManager.LockType;
21
import org.eclipse.net4j.util.om.trace.ContextTracer;
22
23
import java.io.IOException;
24
import java.util.Collection;
25
26
/**
27
 * @author Juan Pedro Silva
28
 * @see org.eclipse.emf.cdo.internal.net4j.protocol.UnlockObjectsRequest
29
 */
30
public class RemoteUnLockObjectsIndicationRequest extends CDOClientRequest<Boolean>
31
{
32
  private static final ContextTracer TRACER = new ContextTracer(OM.DEBUG_PROTOCOL, UnlockObjectsRequest.class);
33
34
  private CDOView view;
35
36
  private Collection<? extends CDOObject> objects;
37
38
  private LockType lockType;
39
40
  public RemoteUnLockObjectsIndicationRequest(CDOClientProtocol protocol, CDOView view,
41
      Collection<? extends CDOObject> objects, LockType lockType)
42
  {
43
    super(protocol, CDOProtocolConstants.SIGNAL_REMOTE_UNLOCK);
44
    this.view = view;
45
    this.objects = objects;
46
    this.lockType = lockType;
47
  }
48
49
  @Override
50
  protected void requesting(CDODataOutput out) throws IOException
51
  {
52
    out.writeInt(view.getViewID());
53
    out.writeCDOLockType(lockType);
54
    if (objects == null)
55
    {
56
      if (TRACER.isEnabled())
57
      {
58
        TRACER.format("Unlocking all objects for view {0}", view.getViewID()); //$NON-NLS-1$
59
      }
60
61
      out.writeInt(CDOProtocolConstants.RELEASE_ALL_LOCKS);
62
    }
63
    else
64
    {
65
      if (TRACER.isEnabled())
66
      {
67
        TRACER.format("Unlocking of type {0} requested for view {1}", lockType == LockType.READ ? "read" //$NON-NLS-1$ //$NON-NLS-2$
68
            : "write", view.getViewID()); //$NON-NLS-1$
69
      }
70
71
      out.writeInt(objects.size());
72
      for (CDOObject object : objects)
73
      {
74
        if (TRACER.isEnabled())
75
        {
76
          TRACER.format("Unlocking requested for objects {0}", object.cdoID()); //$NON-NLS-1$
77
        }
78
79
        out.writeCDOID(object.cdoID());
80
      }
81
    }
82
  }
83
84
  @Override
85
  protected Boolean confirming(CDODataInput in) throws IOException
86
  {
87
    return in.readBoolean();
88
  }
89
}
(-)src/org/eclipse/emf/cdo/internal/net4j/protocol/RemoteLockObjectsIndication.java (+80 lines)
Added Link Here
1
/**
2
 * Copyright (c) 2004 - 2009 Eike Stepper (Berlin, Germany) and others.
3
 * All rights reserved. This program and the accompanying materials
4
 * are made available under the terms of the Eclipse Public License v1.0
5
 * which accompanies this distribution, and is available at
6
 * http://www.eclipse.org/legal/epl-v10.html
7
 * 
8
 * Contributors:
9
 *    Eike Stepper - initial API and implementation
10
 */
11
package org.eclipse.emf.cdo.internal.net4j.protocol;
12
13
import org.eclipse.emf.cdo.common.id.CDOID;
14
import org.eclipse.emf.cdo.common.id.CDOIDAndVersion;
15
import org.eclipse.emf.cdo.common.io.CDODataInput;
16
import org.eclipse.emf.cdo.common.protocol.CDOProtocolConstants;
17
import org.eclipse.emf.cdo.common.revision.CDORevision;
18
import org.eclipse.emf.cdo.internal.net4j.bundle.OM;
19
import org.eclipse.emf.cdo.view.RemoteLockAcquiredEvent;
20
21
import org.eclipse.emf.internal.cdo.view.CDOViewImpl;
22
23
import org.eclipse.net4j.util.concurrent.IRWLockManager.LockType;
24
import org.eclipse.net4j.util.io.IORuntimeException;
25
import org.eclipse.net4j.util.om.trace.ContextTracer;
26
27
import java.io.IOException;
28
import java.util.ArrayList;
29
import java.util.List;
30
31
/**
32
 * @author Juan Pedro Silva
33
 * @see org.eclipse.emf.cdo.server.internal.net4j.protocol.LockObjectsIndication
34
 */
35
public class RemoteLockObjectsIndication extends CDOClientIndication
36
{
37
  private static final ContextTracer TRACER = new ContextTracer(OM.DEBUG_PROTOCOL, CommitNotificationIndication.class);
38
39
  private LockType lockType;
40
41
  private CDOViewImpl view;
42
43
  private List<CDOID> lockedObjects = new ArrayList<CDOID>();
44
45
  private List<CDOIDAndVersion> idAndVersions = new ArrayList<CDOIDAndVersion>();
46
47
  private int referenceChunk = CDORevision.UNCHUNKED;
48
49
  public RemoteLockObjectsIndication(CDOClientProtocol cdoClientProtocol)
50
  {
51
    super(cdoClientProtocol, CDOProtocolConstants.SIGNAL_REMOTE_LOCK);
52
  }
53
54
  @Override
55
  protected void indicating(CDODataInput in) throws IOException
56
  {
57
    // referenceChunk = in.readInt();
58
    // int size = in.readInt();
59
    // for (int i = 0; i < size; i++)
60
    // {
61
    // CDOID id = in.readCDOID();
62
    // int version = in.readInt();
63
    // lockedObjects.add(id);
64
    // idAndVersions.add(CDOIDUtil.createIDAndVersion(id, version));
65
    // }
66
    // int viewID = in.readInt();
67
    // lockType = in.readCDOLockType();
68
    // long timeout = in.readLong();
69
70
    try
71
    {
72
      // view = (CDOViewImpl)getSession().getView(viewID); // The view might not be from this session.
73
      getSession().getLockmanager().notifyEvent(new RemoteLockAcquiredEvent(view));
74
    }
75
    catch (Exception ex) // Interrupted
76
    {
77
      throw new IORuntimeException(ex);
78
    }
79
  }
80
}
(-)src/org/eclipse/emf/cdo/internal/net4j/protocol/RemoteLockReleasedIndication.java (+80 lines)
Added Link Here
1
/**
2
 * Copyright (c) 2004 - 2009 Eike Stepper (Berlin, Germany) and others.
3
 * All rights reserved. This program and the accompanying materials
4
 * are made available under the terms of the Eclipse Public License v1.0
5
 * which accompanies this distribution, and is available at
6
 * http://www.eclipse.org/legal/epl-v10.html
7
 * 
8
 * Contributors:
9
 *    Eike Stepper - initial API and implementation
10
 */
11
package org.eclipse.emf.cdo.internal.net4j.protocol;
12
13
import org.eclipse.emf.cdo.common.id.CDOID;
14
import org.eclipse.emf.cdo.common.id.CDOIDAndVersion;
15
import org.eclipse.emf.cdo.common.io.CDODataInput;
16
import org.eclipse.emf.cdo.common.protocol.CDOProtocolConstants;
17
import org.eclipse.emf.cdo.common.revision.CDORevision;
18
import org.eclipse.emf.cdo.internal.net4j.bundle.OM;
19
import org.eclipse.emf.cdo.view.RemoteLockReleasedEvent;
20
21
import org.eclipse.emf.internal.cdo.view.CDOViewImpl;
22
23
import org.eclipse.net4j.util.concurrent.IRWLockManager.LockType;
24
import org.eclipse.net4j.util.io.IORuntimeException;
25
import org.eclipse.net4j.util.om.trace.ContextTracer;
26
27
import java.io.IOException;
28
import java.util.ArrayList;
29
import java.util.List;
30
31
/**
32
 * @author Juan Pedro Silva
33
 * @see org.eclipse.emf.cdo.server.internal.net4j.protocol.LockObjectsIndication
34
 */
35
public class RemoteLockReleasedIndication extends CDOClientIndication
36
{
37
  private static final ContextTracer TRACER = new ContextTracer(OM.DEBUG_PROTOCOL, CommitNotificationIndication.class);
38
39
  private LockType lockType;
40
41
  private CDOViewImpl view;
42
43
  private List<CDOID> lockedObjects = new ArrayList<CDOID>();
44
45
  private List<CDOIDAndVersion> idAndVersions = new ArrayList<CDOIDAndVersion>();
46
47
  private int referenceChunk = CDORevision.UNCHUNKED;
48
49
  public RemoteLockReleasedIndication(CDOClientProtocol cdoClientProtocol)
50
  {
51
    super(cdoClientProtocol, CDOProtocolConstants.SIGNAL_REMOTE_UNLOCK);
52
  }
53
54
  @Override
55
  protected void indicating(CDODataInput in) throws IOException
56
  {
57
    // referenceChunk = in.readInt();
58
    // int size = in.readInt();
59
    // for (int i = 0; i < size; i++)
60
    // {
61
    // CDOID id = in.readCDOID();
62
    // int version = in.readInt();
63
    // lockedObjects.add(id);
64
    // idAndVersions.add(CDOIDUtil.createIDAndVersion(id, version));
65
    // }
66
    // int viewID = in.readInt();
67
    // lockType = in.readCDOLockType();
68
    // long timeout = in.readLong();
69
70
    try
71
    {
72
      // view = (CDOViewImpl)getSession().getView(viewID); // The view might not be from this session.
73
      getSession().getLockmanager().notifyEvent(new RemoteLockReleasedEvent(view));
74
    }
75
    catch (Exception ex) // Interrupted
76
    {
77
      throw new IORuntimeException(ex);
78
    }
79
  }
80
}
(-)src/org/eclipse/net4j/util/concurrent/RWLockManager.java (+110 lines)
Lines 11-18 Link Here
11
 */
11
 */
12
package org.eclipse.net4j.util.concurrent;
12
package org.eclipse.net4j.util.concurrent;
13
13
14
import org.eclipse.net4j.util.collection.FastList;
14
import org.eclipse.net4j.util.collection.HashBag;
15
import org.eclipse.net4j.util.collection.HashBag;
15
import org.eclipse.net4j.util.concurrent.IRWLockManager.LockType;
16
import org.eclipse.net4j.util.concurrent.IRWLockManager.LockType;
17
import org.eclipse.net4j.util.event.IEvent;
18
import org.eclipse.net4j.util.event.IListener;
16
import org.eclipse.net4j.util.lifecycle.Lifecycle;
19
import org.eclipse.net4j.util.lifecycle.Lifecycle;
17
20
18
import java.util.ArrayList;
21
import java.util.ArrayList;
Lines 635-638 Link Here
635
      throw new UnsupportedOperationException();
638
      throw new UnsupportedOperationException();
636
    }
639
    }
637
  }
640
  }
641
642
  /**
643
   * @author Juan Pedro Silva
644
   */
645
  protected boolean hasListenerRegistered = false;
646
647
  /**
648
   * @author Juan Pedro Silva
649
   */
650
  protected FastList<IListener> registeredLockListeners = new FastList<IListener>()
651
  {
652
    @Override
653
    protected IListener[] newArray(int length)
654
    {
655
      return new IListener[length];
656
    }
657
658
    @Override
659
    protected void firstElementAdded()
660
    {
661
      firstListenerAdded();
662
    }
663
664
    @Override
665
    protected void lastElementRemoved()
666
    {
667
      lastListenerRemoved();
668
    }
669
  };
670
671
  /**
672
   * @author Juan Pedro Silva
673
   */
674
  public void registerLockListeners(Collection<IListener> collToRegister)
675
  {
676
    for (IListener il : collToRegister)
677
    {
678
      registerListener(il);
679
    }
680
  }
681
682
  /**
683
   * @author Juan Pedro Silva
684
   */
685
  public void registerLockListener(IListener listenerToRegister)
686
  {
687
    registerListener(listenerToRegister);
688
  }
689
690
  /**
691
   * @author Juan Pedro Silva
692
   */
693
  public void unRegisterLockListener(IListener listenerToRegister)
694
  {
695
    unRegisterListener(listenerToRegister);
696
  }
697
698
  /**
699
   * @author Juan Pedro Silva
700
   */
701
  public void unRegisterLockListeners(Collection<IListener> collToUnregister)
702
  {
703
    for (IListener il : collToUnregister)
704
    {
705
      unRegisterListener(il);
706
    }
707
  }
708
709
  /**
710
   * @author Juan Pedro Silva
711
   */
712
  public void notifyEvent(IEvent event)
713
  {
714
    notify(event);
715
  }
716
717
  /**
718
   * @author Juan Pedro Silva
719
   */
720
  protected void registerListener(IListener listenerToRegister)
721
  {
722
    if (!hasListenerRegistered)
723
    {
724
      hasListenerRegistered = true;
725
    }
726
    registeredLockListeners.add(listenerToRegister);
727
  }
728
729
  /**
730
   * @author Juan Pedro Silva
731
   */
732
  protected void unRegisterListener(IListener listenerToRegister)
733
  {
734
    registeredLockListeners.remove(listenerToRegister);
735
    if (registeredLockListeners.isEmpty())
736
    {
737
      hasListenerRegistered = false;
738
    }
739
  }
740
741
  /**
742
   * @author Juan Pedro Silva
743
   */
744
  protected void notify(IEvent event)
745
  {
746
    fireEvent(event, registeredLockListeners.get());
747
  }
638
}
748
}
(-)src/org/eclipse/net4j/util/concurrent/IRWLockManager.java (+28 lines)
Lines 10-15 Link Here
10
 */
10
 */
11
package org.eclipse.net4j.util.concurrent;
11
package org.eclipse.net4j.util.concurrent;
12
12
13
import org.eclipse.net4j.util.event.IEvent;
14
import org.eclipse.net4j.util.event.IListener;
15
13
import java.util.Collection;
16
import java.util.Collection;
14
17
15
/**
18
/**
Lines 55-58 Link Here
55
  {
58
  {
56
    WRITE, READ
59
    WRITE, READ
57
  }
60
  }
61
62
  /**
63
   * @author Juan Pedro Silva
64
   */
65
  public void registerLockListeners(Collection<IListener> collToRegister);
66
67
  /**
68
   * @author Juan Pedro Silva
69
   */
70
  public void registerLockListener(IListener listenerToRegister);
71
72
  /**
73
   * @author Juan Pedro Silva
74
   */
75
  public void unRegisterLockListener(IListener listenerToRegister);
76
77
  /**
78
   * @author Juan Pedro Silva
79
   */
80
  public void unRegisterLockListeners(Collection<IListener> collToUnregister);
81
82
  /**
83
   * @author Juan Pedro Silva
84
   */
85
  public void notifyEvent(IEvent event);
58
}
86
}

Return to bug 283274