Skip to content

@ValueMapping strips spaces from source  #3153

Description

@Drevsh

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

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions