@@ -51,24 +51,27 @@ public static Map<String, Descriptors.Descriptor> buildFrom(InputStream stream)
5151 fileDescriptors .forEach (fd -> {
5252 String javaPackage = fd .getOptions ().getJavaPackage ();
5353 String protoPackage = fd .getPackage ();
54- fd .getMessageTypes ().stream ().forEach (desc -> descriptorMap .putAll (getFlattenedDescriptors (desc , javaPackage , protoPackage , "" , new HashMap <>())));
54+ fd .getMessageTypes ().stream ().forEach (desc -> descriptorMap .putAll (getFlattenedDescriptors (desc , javaPackage , protoPackage , new HashMap <>())));
5555 });
5656
5757 return descriptorMap ;
5858 }
5959
60- private static Map <String , Descriptors .Descriptor > getFlattenedDescriptors (Descriptors .Descriptor descriptor , String javaPackage , String protoPackage , String parentClassName , Map <String , Descriptors .Descriptor > initialDescriptorMap ) {
61- String className = getClassName (descriptor , parentClassName );
62- String javaClassName = javaPackage .isEmpty () ? className : String .format ("%s.%s" , javaPackage , className );
63- initialDescriptorMap .put (javaClassName , descriptor );
60+ private static Map <String , Descriptors .Descriptor > getFlattenedDescriptors (Descriptors .Descriptor descriptor , String javaPackage , String protoPackage , Map <String , Descriptors .Descriptor > initialDescriptorMap ) {
61+ String fullName = descriptor .getFullName ();
62+ initialDescriptorMap .put (fullName , descriptor );
63+ if (!javaPackage .isEmpty () && !javaPackage .equals (protoPackage )) {
64+ initialDescriptorMap .put (getClassName (descriptor , protoPackage , javaPackage ), descriptor );
65+ }
6466 descriptor .getNestedTypes ()
65- .forEach (desc -> getFlattenedDescriptors (desc , javaPackage , protoPackage , className , initialDescriptorMap ));
67+ .forEach (desc -> getFlattenedDescriptors (desc , javaPackage , protoPackage , initialDescriptorMap ));
6668 return initialDescriptorMap ;
6769 }
6870
69-
70- private static String getClassName (Descriptors .Descriptor descriptor , String parentClassName ) {
71- return parentClassName .isEmpty () ? descriptor .getName () : parentClassName + "." + descriptor .getName ();
71+ private static String getClassName (Descriptors .Descriptor descriptor , String protoPackage , String javaPackage ) {
72+ if (protoPackage .isEmpty ()) {
73+ return String .format ("%s.%s" , javaPackage , descriptor .getFullName ());
74+ }
75+ return descriptor .getFullName ().replaceFirst (protoPackage , javaPackage );
7276 }
73-
7477}
0 commit comments