Initial commit of Java backend to hidl-gen.
Change-Id: I38b62637df74d3e5daf702a8996502d0d5726033
diff --git a/main.cpp b/main.cpp
index 752e5f8..9b0bfab 100644
--- a/main.cpp
+++ b/main.cpp
@@ -31,7 +31,8 @@
const FQName &fqName,
const char *,
Coordinator *coordinator,
- const std::string &outputDir) {
+ const std::string &outputDir,
+ bool java = false) {
CHECK(fqName.isFullyQualified());
@@ -45,7 +46,8 @@
return UNKNOWN_ERROR;
}
- status_t err = ast->generateCpp(outputDir);
+ status_t err =
+ java ? ast->generateJava(outputDir) : ast->generateCpp(outputDir);
return err;
}
@@ -54,7 +56,8 @@
const FQName &packageFQName,
const char *hidl_gen,
Coordinator *coordinator,
- const std::string &outputDir) {
+ const std::string &outputDir,
+ bool java = false) {
CHECK(packageFQName.isValid() &&
!packageFQName.isFullyQualified() &&
@@ -71,7 +74,9 @@
}
for (const auto &fqName : packageInterfaces) {
- err = generateSourcesForFile(fqName, hidl_gen, coordinator, outputDir);
+ err = generateSourcesForFile(
+ fqName, hidl_gen, coordinator, outputDir, java);
+
if (err != OK) {
return err;
}
@@ -222,7 +227,7 @@
return OutputHandler::PASS_PACKAGE;
}
-OutputHandler::ValRes validateForCpp(const FQName &fqName) {
+OutputHandler::ValRes validateForCppOrJava(const FQName &fqName) {
if (fqName.package().empty()) {
fprintf(stderr, "Expecting package name\n");
return OutputHandler::FAILED;
@@ -240,8 +245,8 @@
static std::vector<OutputHandler> formats = {
{"c++",
- true,
- validateForCpp,
+ true /* mNeedsOutputDir */,
+ validateForCppOrJava,
[](const FQName &fqName,
const char *hidl_gen, Coordinator *coordinator,
const std::string &outputDir) -> status_t {
@@ -260,8 +265,31 @@
}
},
+ {"java",
+ true /* mNeedsOutputDir */,
+ validateForCppOrJava,
+ [](const FQName &fqName,
+ const char *hidl_gen, Coordinator *coordinator,
+ const std::string &outputDir) -> status_t {
+ if (fqName.isFullyQualified()) {
+ return generateSourcesForFile(fqName,
+ hidl_gen,
+ coordinator,
+ outputDir,
+ true /* java */);
+ }
+ else {
+ return generateSourcesForPackage(fqName,
+ hidl_gen,
+ coordinator,
+ outputDir,
+ true /* java */);
+ }
+ }
+ },
+
{"makefile",
- false,
+ false /* mNeedsOutputDir */,
validateForMakefile,
generateMakefileForPackage,
},