@ -208,7 +208,8 @@ string ClassName(const Params& params, const EnumDescriptor* descriptor) {
const string full_name = descriptor - > full_name ( ) ;
// Remove enum class name as we use int's for enums
string base_name = full_name . substr ( 0 , full_name . find_last_of ( ' . ' ) ) ;
int last_dot_in_name = full_name . find_last_of ( ' . ' ) ;
string base_name = full_name . substr ( 0 , last_dot_in_name ) ;
if ( ! file - > package ( ) . empty ( ) ) {
if ( file - > package ( ) = = base_name . substr ( 0 , file - > package ( ) . size ( ) ) ) {
@ -226,13 +227,22 @@ string ClassName(const Params& params, const EnumDescriptor* descriptor) {
// Construct the path name from the package and outer class
// Add the java package name if it exs its
// Add the java package name if it exis ts
if ( params . has_java_package ( file_name ) ) {
result + = params . java_package ( file_name ) ;
}
// Add the outer classname if it exists
if ( params . has_java_outer_classname ( file_name ) ) {
// If the java_multiple_files option is present, we will generate enums into separate
// classes, each named after the original enum type. This takes precedence over
// any outer_classname.
if ( params . java_multiple_files ( ) & & last_dot_in_name ! = string : : npos ) {
string enum_simple_name = full_name . substr ( last_dot_in_name + 1 ) ;
if ( ! result . empty ( ) ) {
result + = " . " ;
}
result + = enum_simple_name ;
} else if ( params . has_java_outer_classname ( file_name ) ) {
// Add the outer classname if it exists
if ( ! result . empty ( ) ) {
result + = " . " ;
}