java.lang.Object
org.eclipse.persistence.oxm.mappings.nullpolicy.AbstractNullPolicy
org.eclipse.persistence.oxm.mappings.nullpolicy.NullPolicy

public class NullPolicy extends AbstractNullPolicy
PUBLIC: Description: This null policy is the default implementation class.
Marshal:
The boolean value of the isSet() state of a node has no effect on whether a node will be written out for a null value - a set is always performed unless the isSetPerformedForAbsentNode flag is set to false for absent nodes.
Unmarshal:

The following instance field can be set on top of the two from AbstractNullPolicy:

  • isSetPerformedForAbsentNode:

 Usage:

Unmarshal null direct element xsi:nil node:

Code Sample
XMLDescriptor aDescriptor = new XMLDescriptor();
aDescriptor.setJavaClass(Employee.class);
aDescriptor.setDefaultRootElement("employee");
XMLDirectMapping firstNameMapping = new XMLDirectMapping();
firstNameMapping.setAttributeName("firstname");
firstNameMapping.setXPath("first-name/text()");
AbstractNullPolicy aNullPolicy = new NullPolicy();
aDescriptor.addMapping(firstNameMapping);
aNullPolicy.setSetPerformedForAbsentNode(false); // no effect
aNullPolicy.setNullRepresentedByEmptyNodeNode(false); // default or no effect
aNullPolicy.setNullRepresentedByXsiNil(false); // default or no effect

Input XML
<employee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <firstname xsi:nil=true/>
</employee>

Output Object State
anEmployee.getFirstname() = null
anEmployee.isSet(firstname) = true

Marshal null composite object (isSet=true) as empty node: .

Code Sample
XMLDescriptor aDescriptor = new XMLDescriptor();
aDescriptor.setJavaClass(Team.class);
aDescriptor.setDefaultRootElement("team");
XMLCompositeObjectMapping aManagerMapping = new XMLCompositeObjectMapping();
aManagerMapping.setAttributeName("manager");
aManagerMapping.setXPath("manager/text()");
// do not modify the default NullPolicy or the 3 boolean flags
AbstractNullPolicy aNullPolicy = afirstNameMapping.getNullPolicy();
aDescriptor.addMapping(aManagerMapping);
aNullPolicy.setMarshalNullRepresentation(XMLNullRepresentationType.EMPTY_NODE);

Input Object State
aTeam.getManager() = null
aTeam.isSet(manager) = no effect

Output XML
<team xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <manager/>
</team>

See Also:
  • NullCapableValue
  • Constructor Details

    • NullPolicy

      public NullPolicy()
      Default Constructor
    • NullPolicy

      public NullPolicy(String anIsSetMethodName, boolean bIsSetPerformedForAbsentNode, boolean bIsNullRepresentedByEmptyNode, boolean bIsNullRepresentedByXsiNil)
      Specific Constructor to set the Unmarshal flags
      Parameters:
      anIsSetMethodName -
      bIsSetPerformedForAbsentNode -
      bIsNullRepresentedByEmptyNode -
      bIsNullRepresentedByXsiNil -
    • NullPolicy

      public NullPolicy(String anIsSetMethodName, boolean bIsSetPerformedForAbsentNode, boolean bIsNullRepresentedByEmptyNode, boolean bIsNullRepresentedByXsiNil, XMLNullRepresentationType aMarshalNullRepresentation)
      Specific Constructor to set both the Marshal enum and the Unmarshal flags
      Parameters:
      anIsSetMethodName -
      bIsSetPerformedForAbsentNode -
      bIsNullRepresentedByEmptyNode -
      bIsNullRepresentedByXsiNil -
      aMarshalNullRepresentation -
  • Method Details

    • xPathNode

      public void xPathNode(org.eclipse.persistence.internal.oxm.XPathNode xPathNode, org.eclipse.persistence.internal.oxm.NullCapableValue nullCapableValue)
      Description copied from class: AbstractNullPolicy
      INTERNAL: When using the SAX Platform this allows a NodeValue to be registered to receive events from the TreeObjectBuilder.
      Specified by:
      xPathNode in class AbstractNullPolicy
    • setSetPerformedForAbsentNode

      public void setSetPerformedForAbsentNode(boolean performSet)
      Set the isSetPerformedForAbsentNode flag
      Parameters:
      performSet -