Adds support for specifying the version of a service to register/lookup.

also autogenerates "IFoo.Stub.registerAsService(String serviceName)"
and "IFoo.getService(String serviceName)" convenience functions that fill in the
proper version from the interface's enclosing package automatically.

Bug: 32405011
Test: hidl_test_java
Change-Id: I59888c8538259a1b0698e597f979c674c7739aa5
diff --git a/generateJava.cpp b/generateJava.cpp
index 6ae84fe..69ce0d1 100644
--- a/generateJava.cpp
+++ b/generateJava.cpp
@@ -217,6 +217,24 @@
 
     out << "public IHwBinder asBinder();\n\n";
 
+    out << "public static "
+        << ifaceName
+        << " getService(String serviceName) {\n";
+
+    out.indent();
+
+    out << "return "
+        << ifaceName
+        << ".asInterface(HwBinder.getService(serviceName, "
+        << mPackage.getPackageMajorVersion()
+        << ", "
+        << mPackage.getPackageMinorVersion()
+        << "));\n";
+
+    out.unindent();
+
+    out << "}\n\n";
+
     status_t err = emitJavaTypeDeclarations(out);
 
     if (err != OK) {
@@ -430,6 +448,18 @@
     out.unindent();
     out << "}\n\n";
 
+    out << "public void registerAsService(String serviceName) {\n";
+    out.indent();
+
+    out << "registerService(serviceName, "
+        << mPackage.getPackageMajorVersion()
+        << ", "
+        << mPackage.getPackageMinorVersion()
+        << ");\n";
+
+    out.unindent();
+    out << "}\n\n";
+
     out << "public void onTransact("
         << "int code, HwParcel request, final HwParcel reply, "
         << "int flags) {\n";