Нелегальный метод - PullRequest
       19

Нелегальный метод

1 голос
/ 23 марта 2011

Я пытаюсь сделать преобразование из одной сторонней библиотеки в другую (gwt-ext в gxt). Чтобы минимизировать авансовые изменения и обеспечить согласованность и тестируемость, мы решили создать прокси-классы, которые реализуют старый API и сопоставляют их с новым API.

Например, что-то вроде Panel теперь может быть ContentPanel. Старая панель могла иметь метод с именем setEl(String name), который теперь должен отображаться на setElement(String name). Чтобы облегчить это, мы создали класс Panel, который содержит ContentPanel. Затем в Eclipse мы вызвали Source -> Generate Delegate Methods..., чтобы создать методы, которые могли бы иметь оба API. Затем любые отсутствующие или измененные API, которые мы создали, имели в нашем классе Panel и передавались соответствующему обработчику в нашем ContentPanel. Когда мы закончим с этим, мы хотим провести рефакторинг нашего класса (в основном, Inlining) и сделать так, чтобы все вызывали методы непосредственно из ContentPanel и использовали любую магию, которую мы делали, вне реализуемых методов в каждом месте, где был вызван старый метод. ,

Каков наилучший способ сделать это? Я думал, что в Eclipse уже есть рефакторинг, который мог бы справиться с этим, но я не могу его найти.

Конечно, если вы думаете, что есть лучший способ выполнить такую ​​миграцию, я также открыт для предложений по этому вопросу.

Ответы [ 2 ]

0 голосов
/ 24 марта 2011

Ответ: не надо. Использование целевого объекта в качестве компонента, а затем делегирование было неправильной стратегией. Нам было бы лучше, если бы наш прокси расширил наш целевой API, а затем реализовал все методы, отсутствующие в новом API, и сопоставил их с новым API. Затем подкладка работала по мере необходимости.

0 голосов
/ 24 марта 2011

IntelliJ IDEA имеет встроенный рефакторинг , что может быть весьма полезно в вашей ситуации. Не уверен, что в Eclipse есть такой, но, может быть, есть плагин для встраивания?

...