Программа / Скрипт для автоматического аннотирования классов Java - PullRequest
0 голосов
/ 28 января 2012

У меня более тысячи POJO, свойства которых мне нужно правильно аннотировать в соответствии с созданной мной библиотекой аннотаций для синтаксического анализа XML. Поскольку число POJO велико и они уже аннотированы JAXB, мне нужна автоматизация 2 3 задач:

  1. Удаление "всех" существующих аннотаций
  2. Повторное аннотирование POJO с 1

Правила просты для (1) - удалить любую строку, начинающуюся с "@"

(2) является сложным, и я хочу начать с обнаружения «открытого класса XYZ» в классе Java и аннотирования его с помощью @BeanName (beanName = "XYZ") *

После этого, как элемент действия (3), мне нужно определить тип данных моей переменной в POJO, аннотировать его следующим образом:

@ClassMember(dataType = DataType.INTEGER, memberName = "tripId")
    public int tripId;
    @ClassMember(dataType = DataType.COMPLEX, memberName = "stop")
    public Stop stop;

Я думаю, что сценарий sed тоже может помочь, но я предпочитаю Java, как я «догадываюсь», мне может понадобиться использовать отражение для следующих шагов.

Спасибо!

РЕДАКТИРОВАТЬ: Я понимаю, что приведенные выше случаи очень просты и могут быть достигнуты с помощью инструментов регулярных выражений, но мне нужен скрипт / программа для этого. Если сообщество может помочь мне написать код для «простых» случаев, подобных этому, я могу расширить для сложных сценариев - что «невозможно» (без большого ручного вмешательства) с помощью инструментов регулярных выражений, встроенных в IDE.

РЕДАКТИРОВАТЬ 2: Я добавил пункт (3), чтобы моя проблема выглядела «реальной»

Ответы [ 2 ]

1 голос
/ 28 января 2012

Вы можете выполнять поиск / замену регулярных выражений во всех ваших java-файлах.В IntelliJ IDEA:

  1. Заменить @.* на ""

  2. Искать:

public class (.*) \{

и заменить на:

@BeanName(beanName="\$1")\npublic class \$1 \{

Конечно, это может быть сделано и в других редакторах, но обратная ссылка с использованием \$1 может отличаться.

0 голосов
/ 29 января 2012

Intellij's Структурный поиск и замена сможет помочь. Если вы открыты для написания некоторых программ, попробуйте eclipse AST модификация . Он также имеет пример кода для начала.

...