phax / ph-jaxb-plugin

JAXB 4.x plugin that adds some commonly needed functionality

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

ph-jaxb-plugin

JAXB 4.0 plugin that adds some commonly needed functionality.

The old version for JAXB 2.2 was called ph-jaxb22-plugin

This project is licensed under the Apache 2 license.

Maven usage

Add something like the following to your pom.xml to use this artifact:

<plugin>
  <groupId>com.evolvedbinary.maven.jvnet</groupId>
  <artifactId>jaxb2-maven-plugin</artifactId>
  <version>0.15.0</version>
  <executions>
    <execution>
      <goals>
        <goal>generate</goal>
      </goals>
    </execution>
  </executions>
  <configuration>
    <!-- regular plugin configuration goes here -->
    <args>
      <!-- other direct arguments like -no-header -->
      <arg>-Xph-default-locale</arg>
      <arg>en_US</arg>
      <arg>-Xph-annotate</arg>
      <arg>-Xph-fields-private</arg>
      <arg>-Xph-code-quality</arg>
      <arg>-Xph-implements</arg>
      <arg>java.io.Serializable</arg>
      <arg>-Xph-equalshashcode</arg>
      <arg>-Xph-tostring</arg>
      <arg>-Xph-list-extension</arg>
      <arg>-Xph-bean-validation11</arg>
      <arg>-Xph-csu</arg>
      <arg>-Xph-cloneable2</arg>
    </args>
  </configuration>
  <dependencies>
    <dependency>
      <groupId>com.helger</groupId>
      <artifactId>ph-jaxb-plugin</artifactId>
      <!-- Use the right version below -->
      <version>4.0.0</version>
    </dependency>
  </dependencies>
</plugin>

For usage with JAXB 2.2 use this dependency:

    <dependency>
      <groupId>com.helger</groupId>
      <artifactId>ph-jaxb22-plugin</artifactId> <!-- different!!! -->
      <version>2.3.3.3</version>
    </dependency>

JAXB Plugins

  • ph-annotate - Create @javax.annotation.Nonnull/@javax.annotation.Nullable annotations in all bean generated objects as well as in the ObjectFactory classes
  • ph-bean-validation10 - inject Bean validation 1.0 annotations (JSR 303)
  • ph-bean-validation11 - inject Bean validation 1.1 annotations (JSR 349)
  • ph-cloneable (since 2.2.11.7) - implement clone() of Cloneable interface and cloneTo(target). This requires the created code to depend on ph-commons.
  • ph-cloneable2 (since 2.2.11.12) - implement clone() of Cloneable using com.helger.commons.lang.IExplicitlyCloneable interface and cloneTo(target). This requires the created code to depend on ph-commons ≥ 9.1.8.
  • ph-code-quality - fix some issues that cause warnings in the generated code.
    • All ObjectFactory QName members are made public.
    • Adding JavaDocs to all ObjectFactory JAXBElement<...> create... methods
  • ph-csu - add @CodingStyleguideUnaware annotations to all classes. This requires the created code to depend on ph-commons.
  • ph-default-locale locale - set Java default locale to the specified parameter. Use e.g. en_US
  • ph-equalshashcode - auto implement equals and hashCode using com.helger.commons.equals.EqualsHelper and com.helger.commons.hashcode.HashCodeGenerator. This requires the created code to depend on ph-commons.
  • ph-fields-private - mark all fields as private
  • ph-implements fullyQualifiedInterfaceName[,otherInterfaceName] - implement 1-n interfaces in all classes/enums (e.g. java.io.Serializable)
  • ph-list-extension - add additional methods for List types:
    • void set...(List) - set a new List
    • boolean has...Entries() - returns true if at least one entry is present
    • boolean hasNo...Entries() - returns true if no entry is present
    • int get...Count() (or get...ListCount) - returns the number of contained entries
    • T get...AtIndex(int) - get the element at the specified index
    • void add...(T) - add a new entry to the list
  • ph-offset-dt-extension (since 2.3.3.2) - add additional methods for Offset* date time types using their Local counterparts
  • ph-tostring - auto implement toString using com.helger.commons.string.ToStringGenerator.getToString(). This requires the created code to depend on ph-commons >= 8.6.2.
  • ph-value-extender (since 2.3.1.3) - create additional constructors with the 'value' as argument as well as getter and setter for the value

News and noteworthy

  • v4.0.3 - 2023-09-20
    • If the ph-list-extension is used and get...Count() is already present, a get...ListCount() is created instead
  • v4.0.2 - 2023-04-20
    • Improved debug logging further
    • Fixed consistency error in ph-value-extender plugin. See issue #5 - thx @hujian19
  • v4.0.1 - 2023-04-17
    • Improved logging, so that the -debug switch of XJC is honoured
  • v4.0.0 - 2022-09-13
    • Updated to JAXB 4.0
    • Requires at least Java 11
    • Changed the artifact ID from ph-jaxb22-plugin to ph-jaxb-plugin
    • Changed all the internal namespaces from com.helger.jaxb22.plugin to com.helger.jaxb.plugin
    • Added new plugin -Xph-namespace-prefix to force a certain prefix via @XmlNs annotation
  • v2.3.3.3 - 2021-05-02
    • Requires ph-commons 10.1.0
    • Plugin -Xph-offset-dt-extension now also supports XMLOffsetDate
    • Added class PeriodDuration as being "not clonable"
  • v2.3.3.2 - 2021-03-21
    • Updated to ph-commons 10
    • Added new plugin -Xph-offset-dt-extension
    • Removed plugin -Xph-tostring-legacy
  • v2.3.3.1 - 2020-10-05
    • Cloneable plugins now create a "HashMap" instead of a "CommonsHashMap"
  • v2.3.3.0 - 2020-09-17
    • Updated to Jakarta JAXB 2.3.3
  • v2.3.2.6 - 2020-04-29
    • Fixed an error in cloning if an enumeration from an episode was referenced
  • v2.3.2.5 - 2020-04-24
    • Ignoring static fields if the global binding fixedAttributeAsConstantProperty="true" is used
  • v2.3.2.4 - 2019-12-12
    • Added class DataHandler as being "not clonable"
  • v2.3.2.3 - 2019-10-04
    • Fixed a missing @Valid annotation for anonymous nested types (issue #2)
  • v2.3.2.2 - 2019-05-07
    • Using unbounded version instead of limiting to Java 12.x
  • v2.3.2.1 - 2019-05-06
    • Version number reflects latest JAXB version in use
    • Updated to ph-commons 9.3.3 with Java 12 support
  • v2.3.1.5 - 2019-05-05
    • Started Java 12 support
  • v2.3.1.4 - 2019-01-26
    • Fixed JavaDoc error in created code when constructor parameter is a List
  • v2.3.1.3 - 2019-01-25
    • Integrated ph-ubl-value from ph-ubl as as ph-value-extender into this project.
  • v2.3.1.2 - 2018-12-01
    • Added creation of bean validation @Valid annotation. Cascading bean validation now works properly.
  • v2.3.1.1 - 2018-11-22
    • Added support for JAXB 2.3.1 when using Java 9 or higher - still works with JAXB 2.2.11 for Java 8
    • Updated to ph-commons 9.2.0
    • Created code requires at least ph-commons 9.2.0
  • v2.2.11.13 - 2018-10-31
    • Added QName as an immutable type for cloning
  • v2.2.11.12 - 2018-10-31
    • Added option -Xph-cloneable2 to implement Cloneable based on the com.helger.commons.lang.IExplicitlyCloneable interface. That means that created code requires at least ph-commons 9.1.8.
  • v2.2.11.11 - 2018-03-13
    • Fixed a problem in cloneTo with null List values
  • v2.2.11.10 - 2017-11-05
    • Updated to ph-commons 9.0.0
  • v2.2.11.9 - 2017-02-16
    • Added option -Xph-tostring requires ph-commons >= 8.6.2
    • Added option -Xph-tostring-legacy
  • v2.2.11.8 - 2016-07-27
    • Fixed bug in cloning of abstract class
  • v2.2.11.7 - 2016-06-10
    • JDK8 is required
    • Added generic cloning
    • the ph-csu settings is now also applied on nested generated classes
  • v2.2.11.6 - 2015-07-21
    • Fixed error in getXXXCount method name
  • v2.2.11.5 - 2015-07-01
    • Extended ph-list-extension with the add method
    • Updated to ph-commons 6.0.0
  • v2.2.11.4 - 2015-03-31
    • Disabled the parameter renaming in the PluginCodeQuality so that JavaDocs can be generated with Java 8
  • v2.2.11.3 - 2015-03-11
  • v2.2.11.2 - 2015-02-06
    • Extended ph-csu for all enums as well
  • v2.2.11.1 - 2015-02-06
    • Added new option ph-csu to add the CodingStyleguideUnaware annotation to all classes
  • v2.2.11 - 2014-12-02
    • linked against JAXB 2.2.11
  • v2.2.7 - 2014-08-24
    • linked against JAXB 2.2.7

My personal Coding Styleguide | It is appreciated if you star the GitHub project if you like it.

About

JAXB 4.x plugin that adds some commonly needed functionality

License:Apache License 2.0


Languages

Language:Java 93.4%Language:CSS 6.6%