0

GWT アプリケーションで CXF JAXB 生成クラスを使用しています。生成されたクラスに equals() と hashCode() を追加したいと思います。JAXB2 Basics Plugins ( http://confluence.highsource.org/display/J2B/JAXB2+Basics+Plugins ) と JAXB2 Basics Runtime を maven POM の CXF で使用して、それらを生成することに成功しました。ただし、生成されたクラスは現在、GWT と互換性がありません。クラスには、GWT によってエミュレートされない依存関係があります (例: java.util.ResourceBundle、java.net.URL)。

CustomEqualsStrategy の使用を検討していますが、それでも org.jvnet.jaxb2_commons.locator.ObjectLocator クラスが残ります。誰かがこれを機能させましたか?

4

1 に答える 1

1

この質問には現在答えがあります。

私は James (OP、@ja6a) と協力して、ランタイムフリーのリフレクションフリーとメソッドを生成するJAXB2 SimpleEqualsプラグインJAXB2 SimpleHashCode プラグインを共同で開発しました。追加のランタイム依存関係がないため、これは GWT と互換性があります。 equals(...)hashCode()

生成されたコードの例:

使用法:

以下は、サンプルのスニペットですpom.xml

        <plugin>
            <groupId>org.jvnet.jaxb2.maven2</groupId>
            <artifactId>maven-jaxb2-plugin</artifactId>
            <configuration>
                <extension>true</extension>
                <args>
                    <arg>-XsimpleEquals</arg>
                    <arg>-XsimpleHashCode</arg>
                </args>
                <plugins>
                    <plugin>
                        <groupId>org.jvnet.jaxb2_commons</groupId>
                        <artifactId>jaxb2-basics</artifactId>
                    </plugin>
                </plugins>
            </configuration>
        </plugin>

前述のとおり、ランタイムは必要ありません。

これらのプラグインは、膨大な数のケースとコーナー ケースとコーナー ケースのコーナーを処理します。たとえば、s や配列などはメソッドを実装しないため、特別な処理を実装する必要JAXBElementがありました。プラグインはプリミティブ型も処理します。hashCode()equals(...)

James Annesleyの助けに感謝します。

于 2014-12-19T14:48:37.313 に答える