Created by: rienafairefr
PR checklist
-
Read the contribution guidelines. -
Ran the shell script under ./bin/to update Petstore sample so that CIs can verify the change. (For instance, only need to run./bin/{LANG}-petstore.shand./bin/security/{LANG}-petstore.shif updating the {LANG} (e.g. php, ruby, python, etc) code generator or {LANG} client's mustache templates). Windows batch files can be found in.\bin\windows\. -
Filed the PR against the correct branch: master,3.3.x,4.0.x. Default:master. -
Copied the technical committee to review the pull request if your PR is targeting a particular programming language.
Description of the PR
As discussed in #842, in the scope of the Separation of Concerns project, it would be nice to divorce generators (usually language+framework) from its language , in order to limit code repetition, better share code between generators that use the same language without forcing inheritance, and being able to generate new generators for a new language, reusing code without being blocked by language-specific implementation details.
This is a partial implementation of that philsophy, for now I only extracted the type/classes informations (typeMapping, reservedWords, languageSpecificPrimitives, instantiationTypes, defaultIncludes, importMapping). There is Options interface for language to implement (I've implemented the JavaOptions as an example).
Implementation is backward compatible (If the generator class has a non null Options field, it is used, otherwise the fields in the *Codegen class are still used)