我在GWT应用程序中使用CXF JAXB生成的类。我希望将equals()和hashCode()添加到生成的类中。我已经成功地在maven POM中使用了JAXB2 Basics插件(http://confluence.highsource.org/display/J2B/JAXB2+Basics+Plugins)和带有CXF的JAXB2 Basics Runtime来生成它们。但是,生成的类现在与GWT不兼容。这些类具有GWT未仿真的依赖项,例如java.util.ResourceBundle,java.net.URL。
我正在考虑使用CustomEqualsStrategy,但仍然会留下org.jvnet.jaxb2_commons.locator.ObjectLocator类。有人有这个工作吗?
答案 0 :(得分:1)
这个问题现在有了答案。
我与James(OP,@ ja6a)合作,我们一起开发了JAXB2 SimpleEquals Plugin和JAXB2 SimpleHashCode Plugin,它们可以生成无运行时 无反射 equals(...)
和hashCode()
方法。由于没有额外的运行时依赖性,这与GWT兼容。
生成代码的示例:
用法:
-XsimpleEquals
和-XsimpleHashCode
个开关以下是示例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>
如上所述,不需要运行时。
这些插件可处理大量箱子和角落箱以及角落箱角。例如,我们必须对JAXBElement
和数组等内容实施特殊处理,因为它们不会实现hashCode()
和equals(...)
方法。插件还处理原始类型。
非常感谢 James Annesley 的帮助。