Commit 06eed37e authored by Max Cai's avatar Max Cai
Browse files

Fix outer classname for javamicro/javanano.

- File class name is defined as the java_outer_classname option value
  or the file name ToCamelCase; never the single message's ClassName.
- File-scope enums are translated to constants in the file class,
  regardless of java_multiple_files.
- If java_multiple_files=true, and file's class name equals a message's
  class name, no error. This is done by detecting that the outer class
  is not needed and skipping the outer class codegen and clash checks.
  Note: there is a disparity between java[lite] and the previous
  java{micr|nan}o: when generating code for a single-message proto, the
  outer class is omitted by java{micr|nan}o if the file does not have
  java_outer_classname. This change makes java{micr|nan}o align with
  java[lite] codegen and create the outer class, but will print some
  info to warn of potential change of code.
- Also fixed the "is_own_file" detection and made all parseX() methods
  static. Previously, all messages in a java_multiple_files=true file
  are (incorrectly) considered to be in their own files, including
  nested messages, causing them to become inner classes (instance-
  bound) and forcing the parseX() methods to lose the static modifier.
- This change supersedes c/60164 and c/60086, which causes javanano to
  put enum values into enum shell classes if java_multiple_files=true.
  We now always use the parent class to host the enum values. A future
  change will add a command line option to provide more flexibility.
- Elaborated in java/README.txt.

Change-Id: I684932f90e0a028ef37c662b221def5ffa202439
parent 064b60c6
Loading
Loading
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment