Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [eclipselink-users] XML attribute mapping to Java 5 Enum

Just as a followup,

After creating the EnumTypeConverter, you can override the default values, if you want your XML values to be something different than the String representation of your Enum value.

You would do something like:

EnumTypeConverter converter = new EnumTypeConverter(mapping, ValueType.class, false);
converter.addConversionValue("Max", "Maximum");
converter.addConversionValue("Min", "Minimum");
converter.addConversionValue("Nom", "Nominal");

-Matt



Leon Derks wrote:

For the ones interested in Java 5 enum conversion. We did this as follows:

We added an afterload method that adds an EnumTypeConverter.

It is important that the value of in the type attribute in XML matches the name of the Java enum.

By the way, is this the only way to do this? We couldn't find a way to get this done in the workbench.

See below for the details.

public static void valueAfterLoader(ClassDescriptor valueDescriptor) {
       //enum conversion
DatabaseMapping mapping = valueDescriptor.getMappingForAttributeName("type"); EnumTypeConverter converter = new EnumTypeConverter(mapping, ValueType.class, false);
       ((XMLDirectMapping) mapping).setConverter(converter);
   }

XML:
<Value type="Maximum" value="80"/>

public enum ValueType {

   Maximum("Maximum"), Minimum("Minimum"), Nominal("Nominal");

   private final String description;

   private ValueType(String description) {
       this.description = description;
   }

   public String value() {
       return description;
   }

   public String toString() {
       return description;
   }

}

_______________________________________________
eclipselink-users mailing list
eclipselink-users@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/eclipselink-users




Back to the top