@@ -147,7 +147,8 @@ static Reference parseMessageReference(@Nonnull Descriptor messageDescriptor) {
147147 // Handles nesting.
148148 while (containingType != null ) {
149149 // Outermost type in the nested type hierarchy lies at index 0.
150- outerNestedTypeNames .add (0 , containingType .getName ());
150+ // If the Java outer proto class has already been set, apapend after it at index 1.
151+ outerNestedTypeNames .add (hasJavaOuterClass ? 1 : 0 , containingType .getName ());
151152 containingType = containingType .getContainingType ();
152153 }
153154
@@ -158,15 +159,17 @@ static Reference parseMessageReference(@Nonnull Descriptor messageDescriptor) {
158159 .setPakkage (pakkage )
159160 .setEnclosingClassNames (outerNestedTypeNames )
160161 .build ();
162+
161163 String protoPackage = messageDescriptor .getFile ().getPackage ();
162164 String messageFullName = messageDescriptor .getFullName ();
163165 if (hasJavaOuterClass ) {
166+ int packageIndex = protoPackage .length ();
164167 messageFullName =
165168 String .format (
166169 "%s.%s.%s" ,
167- messageFullName .substring (0 , messageFullName . lastIndexOf ( DOT ) ),
170+ messageFullName .substring (0 , packageIndex ),
168171 javaOuterClassname ,
169- messageFullName .substring (messageFullName . lastIndexOf ( DOT ) + 1 ));
172+ messageFullName .substring (packageIndex + 1 ));
170173 }
171174 Preconditions .checkState (
172175 messageReference .fullName ().replace (pakkage , protoPackage ).equals (messageFullName ),
@@ -207,7 +210,8 @@ static Reference parseEnumReference(@Nonnull EnumDescriptor enumDescriptor) {
207210 // Handles nesting.
208211 while (containingType != null ) {
209212 // Outermost type in the nested type hierarchy lies at index 0.
210- outerNestedTypeNames .add (0 , containingType .getName ());
213+ // If the Java outer proto class has already been set, apapend after it at index 1.
214+ outerNestedTypeNames .add (hasJavaOuterClass ? 1 : 0 , containingType .getName ());
211215 containingType = containingType .getContainingType ();
212216 }
213217
@@ -221,12 +225,13 @@ static Reference parseEnumReference(@Nonnull EnumDescriptor enumDescriptor) {
221225 String protoPackage = enumDescriptor .getFile ().getPackage ();
222226 String enumFullName = enumDescriptor .getFullName ();
223227 if (hasJavaOuterClass ) {
228+ int packageIndex = protoPackage .length ();
224229 enumFullName =
225230 String .format (
226231 "%s.%s.%s" ,
227- enumFullName .substring (0 , enumFullName . lastIndexOf ( DOT ) ),
232+ enumFullName .substring (0 , packageIndex ),
228233 javaOuterClassname ,
229- enumFullName .substring (enumFullName . lastIndexOf ( DOT ) + 1 ));
234+ enumFullName .substring (packageIndex + 1 ));
230235 }
231236
232237 Preconditions .checkState (
0 commit comments