@ValueMapping strips spaces from source
Expected behavior
It seems like @ValueMapping strips spaces from the source. A single spaces is honored while multiple spaces seem to reduced to a single entry.
Given:
@ValueMapping(source = " PR", target = "PR") @ValueMapping(source = "EP ", target = "EP") @ValueMapping(source = " WE ", target = "WE") @ValueMapping(source = MappingConstants.ANY_REMAINING, target = MappingConstants.THROW_EXCEPTION) OrderStatus fromOrderSelectionOutput(String orderStatus);
I expected the following mapping to be created:
@Override public OrderStatus fromOrderSelectionOutput(String orderStatus) { if ( orderStatus == null ) { return null; } OrderStatus orderStatus1; switch ( orderStatus ) { case " PR": orderStatus1 = OrderStatus.PR; break; case "EP ": orderStatus1 = OrderStatus.EP; break; case " WE ": orderStatus1 = OrderStatus.WE; break; case "ABGE": orderStatus1 = OrderStatus.ABGE; break; case "AUFG": orderStatus1 = OrderStatus.AUFG; break; case "BZEP": orderStatus1 = OrderStatus.BZEP; break; case "EP": orderStatus1 = OrderStatus.EP; break; case "FEST": orderStatus1 = OrderStatus.FEST; break; case "GEBU": orderStatus1 = OrderStatus.GEBU; break; case "PR": orderStatus1 = OrderStatus.PR; break; case "WE": orderStatus1 = OrderStatus.WE; break; default: throw new IllegalArgumentException( "Unexpected enum constant: " + orderStatus ); } return orderStatus1; }
Notice the double spaces. (" PR", "ER ", " WE ").
Actual behavior
But the following mapping is created which reduces the double spaces to single spaces.
@Override public OrderStatus fromOrderSelectionOutput(String orderStatus) { if ( orderStatus == null ) { return null; } OrderStatus orderStatus1; switch ( orderStatus ) { case " PR": orderStatus1 = OrderStatus.PR; break; case "EP ": orderStatus1 = OrderStatus.EP; break; case " WE ": orderStatus1 = OrderStatus.WE; break; case "ABGE": orderStatus1 = OrderStatus.ABGE; break; case "AUFG": orderStatus1 = OrderStatus.AUFG; break; case "BZEP": orderStatus1 = OrderStatus.BZEP; break; case "EP": orderStatus1 = OrderStatus.EP; break; case "FEST": orderStatus1 = OrderStatus.FEST; break; case "GEBU": orderStatus1 = OrderStatus.GEBU; break; case "PR": orderStatus1 = OrderStatus.PR; break; case "WE": orderStatus1 = OrderStatus.WE; break; default: throw new IllegalArgumentException( "Unexpected enum constant: " + orderStatus ); } return orderStatus1; }
Steps to reproduce the problem
See above.
MapStruct Version
1.5.3.Final