Estou trabalhando em um projeto onde, através da modelagem de objetos, realizo a geração de código-fonte dos mesmos. Para novos objetos, estou usando o JCodeModel e está tudo rodando blzinha. Porém, há determinados objetos que já estão criados (ex. criação de um atributo novo, um método novo, etc), sendo então necessário ajustar a implementação dos mesmos pelo gerador (ao invés de regerá-lo todo - corro o risco de sobrescrever alguma implementação pós-geração). Aí vem a pergunta:
Há alguma API ou mecanismo onde eu consiga carregar o código-fonte e atualizá-lo em nível de programação?
Acho que vc só tem duas alternativas, aprender a usar uma ferramenta que ninguem usa, ou aprender a fazer sem essa ferramenta.
Geração de codigo a partir de modelos é uma ideia que nunca se provou util para projetos sérios. Não entendo porque vc está usando isso.
Tenho dúvidas se alguém saberá ajudá-lo.
Você precisaria de alguma ferramenta de geração de código que suportasse “roundtrip code generation”.
É que o seu principal problema é não jogar fora a implementação que você já fez manualmente.
Por isso, deveria haver na sua ferramenta alguma forma de anotar o código que você escreveu manualmente para que ele fosse recarregado e copiado para o código gerado.
Outra forma, que é um bocado tosca (e que é o principal motivo para o C# suportar isso, num recurso chamado de “classes parciais” ) é separar a parte de implementação (ou seja, é o que você escreveu) da parte de interface (que é a parte gerada do seu código).
Infelizmente ignoro que ferramentas Java suportam isso (“roundtrip code generation”).
Veja se lendo o código-fonte do plugin WindowBuilder do Eclipse você chega a um acordo.
Acredito que o WindowBuilder use alguma API do Eclipse que leia o código original (se não me engano, existe um conjunto imenso de APIs do Eclipse só para isso), o transforme em uma AST (Abstract Syntax Tree), e gere um novo programa (incluindo suas modificações) através da modificação da AST e subsequente geração do código correspondente, mas isso é trabalho para você resolver.