Build JDI support jar. am: ff9d11e469 am: afccc8cedd
am: 0cec42ec32

Change-Id: I85fac7aeae92200f2ab3e5e698472dc9e4c24228
diff --git a/Android.bp b/Android.bp
index 28e8223..56fb729 100644
--- a/Android.bp
+++ b/Android.bp
@@ -124,3 +124,47 @@
     required: ["libnpt"],
     defaults: ["upstream-jdwp-defaults"],
 }
+
+genrule {
+    name: "jdwp_generated_java",
+    tools: ["jdwpgen"],
+    cmd: "$(location jdwpgen) $(in) -jdi $(out)",
+    srcs: ["make/data/jdwp/jdwp.spec"],
+    out: ["JDWP.java"],
+}
+
+python_binary_host {
+  name: "jdi_prop_gen",
+  srcs: ["etc/jdigen.py"],
+  main: "etc/jdigen.py",
+}
+
+genrule {
+  name: "jdi_generated_properties",
+  tools: ["jdi_prop_gen"],
+  cmd: "$(location jdi_prop_gen) $(in) $(out)",
+  out: ["jdi.java"],
+  srcs: ["src/share/classes/com/sun/tools/jdi/resources/jdi.properties"],
+}
+
+// The classes needed to support JDI and debug remote processes.
+java_library_host {
+  name: "jdi-support",
+  srcs: [
+    // The JDI interface definition.
+    "src/share/classes/com/sun/jdi/**/*.java",
+    // The JDI interface implementation
+    "src/share/classes/com/sun/tools/jdi/**/*.java",
+    // The JDWP.java file that contains all the constants.
+    ":jdwp_generated_java",
+    // The properties class which holds information about the various connectors.
+    ":jdi_generated_properties",
+  ],
+  exclude_srcs: [
+    // We don't support process attachment and lack some of the classes to even compile this file.
+    "src/share/classes/com/sun/tools/jdi/ProcessAttachingConnector.java",
+  ],
+  services: ["etc/com.sun.jdi.connect.Connector"],
+  javacflags: ["-g"],
+  notice: "LICENSE",
+}
\ No newline at end of file
diff --git a/etc/com.sun.jdi.connect.Connector b/etc/com.sun.jdi.connect.Connector
new file mode 100644
index 0000000..01de058
--- /dev/null
+++ b/etc/com.sun.jdi.connect.Connector
@@ -0,0 +1,2 @@
+com.sun.tools.jdi.SocketAttachingConnector
+com.sun.tools.jdi.SocketListeningConnector
\ No newline at end of file
diff --git a/etc/jdigen.py b/etc/jdigen.py
new file mode 100644
index 0000000..a5ba1a5
--- /dev/null
+++ b/etc/jdigen.py
@@ -0,0 +1,60 @@
+# Copyright (C) 2019 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+from __future__ import print_function
+import sys
+
+args = sys.argv
+
+if len(args) != 3:
+  print("Usage: jdigen <input> <output>")
+  sys.exit(1)
+
+TEMPLATE = """
+// Copyright (C) 2019 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.sun.tools.jdi.resources;
+import java.util.ListResourceBundle;
+public final class jdi extends ListResourceBundle {{
+  protected final Object[][] getContents() {{
+    return new Object[][] {{
+      {values}
+    }};
+  }}
+}}
+"""
+
+INSTANCE_FORMAT = '{{ "{key}", "{value}" }},\n'
+
+VALUES = ""
+with open(args[1], 'r+') as inp:
+  for l in inp.readlines():
+    key, value = l.split('=')
+    VALUES += INSTANCE_FORMAT.format(key = key.strip(), value = value.strip())
+
+with open(args[2], 'w') as out:
+  out.write(TEMPLATE.format(values = VALUES))