Как обеспечить конкретные реализации GWT - PullRequest
7 голосов
/ 09 февраля 2011

Предположим, я работаю над тем, чтобы представить некоторые из своих серверных классов приложению GWT, но некоторые части можно было бы сделать намного лучше, используя специфичные для GWT компоненты (например, JSNI).

Что такоенекоторые способы сделать это без излишеств?

Например, мне известно об использовании подпакета и тега <super-source/>, но для этого требуются разные имена пакетов, что вызывает затмение с жалобами.Общее решение в сообществе состоит в том, чтобы затем сказать Eclipse использовать его в качестве исходной папки, но затем затмение жалуется на наличие двух классов с одинаковым именем.

В идеале, был бы просто способ сохранить всев одном исходном дереве, и фактически имеют разные классы, которые применяют альтернативные реализации.Это было бы похоже на ОО-подход.

Я хотел бы добавить суффикс к классу, подобному _gwt, который выполняет это автоматически, и я знаю, что мог бы написать скрипт для такого преобразования, но этоКонечно, это клочок.

Я рассматривал возможность использования библиотек Google GIN / GUICE для своих проектов в целом, и я думаю, что там может быть какое-то решение, но я не уверен, так как у меня неттщательно его изучили.

Какие решения вы уже использовали в проектах GWT в прошлом?

1 Ответ

7 голосов
/ 09 февраля 2011

Самый простой способ иметь расщепленные реализации - это использовать супер-исходный код, но этого достаточно, чтобы создать экземпляр с уникальным именем или отправить его другому методу. В идеале реализация суперисточника должна быть длиной всего несколько строк, и не настолько плоха, чтобы ее нельзя было свернуть вручную.

Чтобы обойти проблемы двойного отображения Eclipse / javac и имен пакетов, источник GWT использует два корня верхнего уровня для кода пользователя: user / src и user / super. Например, в пакете AutoBeans реализована разделенная реализация цитирования и оценки JSON: для JVM и для браузера .

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...