2011-02-09 9 views
7

GWTアプリケーションにサーバーサイドクラスの一部を公開しているとしますが、GWT固有のコンポーネント(JSNIなど)を使用して特定の部分をさらにうまく処理できます。特定のGWT実装を提供する方法

あまりにもハッキリではなく、そうするための技術は何ですか?

たとえば、私はサブパッケージを使用し、<super-source/>タグを使用していることに気付いていますが、これはパッケージ名が異なる必要があります。コミュニティの一般的な解決策は、それをソースフォルダとして使用するようにeclipseに指示することですが、eclipseは同じ名前の2つのクラスが存在すると不満を持ちます。

理想的には、すべてを単一のソースツリーに保持する方法があり、実際には別の実装を適用するクラスがあります。これはより多くのオブジェクト指向のアプローチのように感じるでしょう。

私はこれを自動的に達成する_gwtのようなクラスに接尾辞を追加したいと思います。この種の変換を行うためのスクリプトを書くことができますが、それは確かに間違いです。

GoogleのGIN/GUICEライブラリを一般的なプロジェクトに使用することを検討していましたが、何らかの解決方法があると思いますが、徹底的に調査していないのでわかりません。

過去にGWTプロジェクトで試した解決策は何ですか?

答えて

7

分割実装を行う最も簡単な方法は、スーパーソースコードを使用することですが、一意の名前のインスタンスをインスタンス化したり、別のメソッドにディスパッチするだけで十分です。理想的には、スーパーソースの実装はわずか数行に過ぎず、手動でロールアップすることはできません。

Eclipse/javacのダブルマッピングとパッケージ名の問題を回避するために、GWTソースはユーザーコードとしてuser/srcとuser/superの2つのtop-level rootsを使用します。たとえば、AutoBeansパッケージには、JSON引用と評価の分割実装があります(one for the JVMone for the browser)。

スーパーソースを実装するためのクールディーな方法はありません。これは、言語で指定できるもの以外の機能です。外部ツールを使用せずに「この環境でこの実装を使用する」と言うことはできません。

+1

+1 Googleのソリューションを参照してください。最高の賭けのようだ。私はこの代替ソースパスを別のプロジェクトとして使用することができます。これはメインプロジェクトに依存し、1つ1つのベースでさまざまなクラスをオーバーライドすることができ、理想的には重複コードが最小限に抑えられます。 –

関連する問題