org.chromium.debug.core/src/org/chromium/debug/core/model/BreakpointMap.java
changeset 355 8726e95bcbba
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.chromium.debug.core/src/org/chromium/debug/core/model/BreakpointMap.java	Mon Jun 07 16:51:19 2010 -0700
@@ -0,0 +1,59 @@
+// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package org.chromium.debug.core.model;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.chromium.sdk.Breakpoint;
+
+/**
+ * TODO(peter.rybin): this class is obsolete, it only holds useful inner class;
+ * consider removing this class.
+ */
+public class BreakpointMap {
+
+  /**
+   * A one-to-one map between SDK and UI breakpoints inside one debug target.
+   */
+  public static class InTargetMap {
+    private final Map<Breakpoint, ChromiumLineBreakpoint> sdkToUiMap =
+        new HashMap<Breakpoint, ChromiumLineBreakpoint>();
+    private final Map<ChromiumLineBreakpoint, Breakpoint> uiToSdkMap =
+      new HashMap<ChromiumLineBreakpoint, Breakpoint>();
+
+    public InTargetMap() {
+    }
+
+    public synchronized Breakpoint getSdkBreakpoint(ChromiumLineBreakpoint chromiumLineBreakpoint) {
+      return uiToSdkMap.get(chromiumLineBreakpoint);
+    }
+
+    public synchronized ChromiumLineBreakpoint getUiBreakpoint(Breakpoint sdkBreakpoint) {
+      return sdkToUiMap.get(sdkBreakpoint);
+    }
+
+    public synchronized void add(Breakpoint sdkBreakpoint, ChromiumLineBreakpoint uiBreakpoint) {
+      Object conflict1 = uiToSdkMap.put(uiBreakpoint, sdkBreakpoint);
+      Object conflict2 = sdkToUiMap.put(sdkBreakpoint, uiBreakpoint);
+      if (conflict1 != null || conflict2 != null) {
+        throw new RuntimeException();
+      }
+    }
+
+    public synchronized void remove(ChromiumLineBreakpoint lineBreakpoint) {
+      Breakpoint sdkBreakpoint = uiToSdkMap.remove(lineBreakpoint);
+      if (sdkBreakpoint == null) {
+        throw new RuntimeException();
+      }
+      sdkToUiMap.remove(sdkBreakpoint);
+    }
+
+    public synchronized void clear() {
+      sdkToUiMap.clear();
+      uiToSdkMap.clear();
+    }
+  }
+}