Skip to content

Commit

Permalink
PS-953 Fix the nested className for JNI (#53)
Browse files Browse the repository at this point in the history
  • Loading branch information
codingrhythm committed May 8, 2020
1 parent ba7ecf9 commit ecf521a
Show file tree
Hide file tree
Showing 4 changed files with 19 additions and 15 deletions.
9 changes: 5 additions & 4 deletions protobuf/protoc-gen-cruxclient/api_generator.cc
Expand Up @@ -401,6 +401,7 @@ void APIGenerator::PrintDjinniYAML(
auto messages = GetMessagesFromFile(file);
for (const auto message : messages) {
vars["message_name"] = ClassName(message, false);
vars["java_message_name"] = UnderscoresToDollar(vars["message_name"]);
vars["cpp_type_name"] = DotsToColons(message->full_name());
vars["objc_header"] = DotsToSlashs(message->full_name());
vars["file_name"] = StripProto(file->name());
Expand Down Expand Up @@ -442,8 +443,8 @@ void APIGenerator::PrintDjinniYAML(

printer->Print("java:\n");
printer->Indent();
printer->Print(vars, "typename: '$java_package$.$message_name$'\n");
printer->Print(vars, "boxed: '$java_package$.$message_name$'\n");
printer->Print(vars, "typename: '$java_package$.$java_message_name$'\n");
printer->Print(vars, "boxed: '$java_package$.$java_message_name$'\n");
printer->Print("reference: true\n");
printer->Print("generic: false\n");
printer->Print("hash: '%s.hashCode()'\n");
Expand All @@ -454,7 +455,7 @@ void APIGenerator::PrintDjinniYAML(
printer->Print(vars, "translator: 'djinni::$cpp_type_name$::Translator'\n");
printer->Print(vars, "header: '\"$main_file_name$.djinni.jni.h\"'\n");
printer->Print(vars, "typename: jobject\n");
printer->Print(vars, "typeSignature: 'L$java_package_slashes$/$message_name$;'\n");
printer->Print(vars, "typeSignature: 'L$java_package_slashes$/$java_message_name$;'\n");
printer->Outdent();

printer->Print("\n");
Expand Down Expand Up @@ -554,7 +555,7 @@ void APIGenerator::PrintDjinniJNISupport(
vars["dir"] = dir;
auto messages = GetMessagesFromFile(file);
for (const auto message : messages) {
vars["message_name"] = ClassName(message, false);
vars["message_name"] = UnderscoresToDollar(ClassName(message, false));
vars["cpp_type_name"] = DotsToColons(message->full_name());
vars["file_name"] = StripProto(file->name());
vars["cpp_header"] = DotsToSlashs(ToLower(message->full_name()));
Expand Down
4 changes: 4 additions & 0 deletions protobuf/protoc-gen-cruxclient/common.h
Expand Up @@ -133,6 +133,10 @@ inline std::string DotsToSlashs(const std::string &name) {
return StringReplace(name, ".", "/");
}

inline std::string UnderscoresToDollar(const std::string &name) {
return StringReplace(name, "_", "$");
}

inline std::string ToLower(const std::string &input) {
std::string output = input;
std::transform(output.begin(), output.end(), output.begin(),
Expand Down
Expand Up @@ -209,10 +209,10 @@ struct Translator {
#include "routeguide/v1/message.pb.h"
namespace djinni::routeguide::v1::RouteSummary::Details {
struct JNIInfo {
const GlobalRef<jclass> clazz { jniFindClass("io/grpc/examples/routeguide/RouteSummary_Details") };
const GlobalRef<jclass> clazz { jniFindClass("io/grpc/examples/routeguide/RouteSummary$Details") };
const jmethodID method_toBytes { jniGetMethodID(clazz.get(), "toByteArray", "()[B") };
const jmethodID method_byteSize { jniGetMethodID(clazz.get(), "getSerializedSize", "()I") };
const jmethodID method_fromBytes { jniGetStaticMethodID(clazz.get(), "parseFrom", "([B)Lio/grpc/examples/routeguide/RouteSummary_Details;") };
const jmethodID method_fromBytes { jniGetStaticMethodID(clazz.get(), "parseFrom", "([B)Lio/grpc/examples/routeguide/RouteSummary$Details;") };
};

struct Translator {
Expand Down Expand Up @@ -250,10 +250,10 @@ struct Translator {
#include "routeguide/v1/message.pb.h"
namespace djinni::routeguide::v1::RouteSummary::Details::MoreDetails {
struct JNIInfo {
const GlobalRef<jclass> clazz { jniFindClass("io/grpc/examples/routeguide/RouteSummary_Details_MoreDetails") };
const GlobalRef<jclass> clazz { jniFindClass("io/grpc/examples/routeguide/RouteSummary$Details$MoreDetails") };
const jmethodID method_toBytes { jniGetMethodID(clazz.get(), "toByteArray", "()[B") };
const jmethodID method_byteSize { jniGetMethodID(clazz.get(), "getSerializedSize", "()I") };
const jmethodID method_fromBytes { jniGetStaticMethodID(clazz.get(), "parseFrom", "([B)Lio/grpc/examples/routeguide/RouteSummary_Details_MoreDetails;") };
const jmethodID method_fromBytes { jniGetStaticMethodID(clazz.get(), "parseFrom", "([B)Lio/grpc/examples/routeguide/RouteSummary$Details$MoreDetails;") };
};

struct Translator {
Expand Down Expand Up @@ -287,4 +287,3 @@ struct Translator {
}
};
} //namespace djinni::routeguide::v1::RouteSummary::Details::MoreDetails

Expand Up @@ -168,16 +168,16 @@ objcpp:
translator: 'djinni::routeguide::v1::RouteSummary::Details::Translator'
header: '"routeguide/v1/message.djinni.objc.h"'
java:
typename: 'io.grpc.examples.routeguide.RouteSummary_Details'
boxed: 'io.grpc.examples.routeguide.RouteSummary_Details'
typename: 'io.grpc.examples.routeguide.RouteSummary$Details'
boxed: 'io.grpc.examples.routeguide.RouteSummary$Details'
reference: true
generic: false
hash: '%s.hashCode()'
jni:
translator: 'djinni::routeguide::v1::RouteSummary::Details::Translator'
header: '"routeguide/v1/message.djinni.jni.h"'
typename: jobject
typeSignature: 'Lio/grpc/examples/routeguide/RouteSummary_Details;'
typeSignature: 'Lio/grpc/examples/routeguide/RouteSummary$Details;'

---
name: pb_RouteSummary_Details_MoreDetails
Expand All @@ -198,14 +198,14 @@ objcpp:
translator: 'djinni::routeguide::v1::RouteSummary::Details::MoreDetails::Translator'
header: '"routeguide/v1/message.djinni.objc.h"'
java:
typename: 'io.grpc.examples.routeguide.RouteSummary_Details_MoreDetails'
boxed: 'io.grpc.examples.routeguide.RouteSummary_Details_MoreDetails'
typename: 'io.grpc.examples.routeguide.RouteSummary$Details$MoreDetails'
boxed: 'io.grpc.examples.routeguide.RouteSummary$Details$MoreDetails'
reference: true
generic: false
hash: '%s.hashCode()'
jni:
translator: 'djinni::routeguide::v1::RouteSummary::Details::MoreDetails::Translator'
header: '"routeguide/v1/message.djinni.jni.h"'
typename: jobject
typeSignature: 'Lio/grpc/examples/routeguide/RouteSummary_Details_MoreDetails;'
typeSignature: 'Lio/grpc/examples/routeguide/RouteSummary$Details$MoreDetails;'

0 comments on commit ecf521a

Please sign in to comment.