weixin_39721807 2020-11-30 09:16
浏览 0

Mapping failed when PropertyMap source type is an interface of source

Original issue is at #144 comment : 144#issuecomment-279717769 And problem I had addressed at 144#issuecomment-279963373

Minimum reproducer as following code snippet the testMapping2 will failed

java
package org.modelmapper.bugs;

import static org.testng.Assert.assertEquals;

import org.modelmapper.AbstractTest;
import org.modelmapper.PropertyMap;
import org.testng.annotations.Test;


public class GH202 extends AbstractTest {

    public void testMapping1() {
        modelMapper.addMappings(new Mappings1());

        DestinationModel dest = modelMapper.map(new SourceModel(), DestinationModel.class);

        assertEquals(dest.getName(), "Bob Alice");
        assertEquals(dest.getNestedModel().getAge(), "99");
    }

    public void testMapping2() {
        modelMapper.addMappings(new Mappings2());

        DestinationModel dest = modelMapper.map(new SourceModel(), DestinationModel.class);

        assertEquals(dest.getName(), "Bob Alice");
        assertEquals(dest.getNestedModel().getAge(), "99");
    }

    static class DestinationModel {
        private String name;
        private NestedDestinationModel nestedModel;

        public String getName() {
            return name;
        }

        public void setName(final String name) {
            this.name = name;
        }

        public NestedDestinationModel getNestedModel() {
            return nestedModel;
        }

        public void setNestedModel(final NestedDestinationModel nestedModel) {
            this.nestedModel = nestedModel;
        }
    }

    static class NestedDestinationModel {
        private String age;

        public String getAge() {
            return age;
        }

        public void setAge(final String age) {
            this.age = age;
        }
    }

    static class SourceModel implements MappingInterface {
        public String getName() {
            return "Bob Alice";
        }

        public String getAge() {
            return "99";
        }
    }

    interface MappingInterface {
        String getName();
        String getAge();
    }

    class Mappings1 extends PropertyMap<sourcemodel destinationmodel> {
        protected void configure() {
            map().setName(source.getName());
            map().getNestedModel().setAge(source.getAge());
        }
    }

    class Mappings2 extends PropertyMap<mappinginterface destinationmodel> {
        protected void configure() {
            map().setName(source.getName());
            map().getNestedModel().setAge(source.getAge());
        }
    }
}
</mappinginterface></sourcemodel>

该提问来源于开源项目:modelmapper/modelmapper

  • 写回答

0条回答 默认 最新

    报告相同问题?