24 Mart 2021 Çarşamba

MapStruct @ObjectFactory Anotasyonu

Giriş
Örnek
Elimizde şöyle bir kod olsun
public class FooDto {
  char reference;
}

public class Foo {
  MyEnum reference;
  public Foo (String str) {...}
}

public enum MyEnum {
  A('a'), B('b');

  private final char value;

  private MyEnum(char ch) { this.value = ch;}

  public toChar () { return value;}

  public static MyEnum valueOf (char ch) {
    for (MyEnum e : values()) {
      if (e.toChar () == ch) {
        return e;
      }
    }
  }
}
Şöyle yaparız. Burada Foo nesnemiz için @ObjectFactory ile bir factory metodu tanımlıyoruz. Ayrıca Dto'dan gelen char tipini MyEnum tipine eşlemek için createMyEnum metodunu kodluyoruz
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.ObjectFactory;
import org.mapstruct.ReportingPolicy;
@Mapper(unmappedTargetPolicy = ReportingPolicy.ERROR) public interface FooMapper { Foo toFoo(FooDto dto); @ObjectFactory default Foo createFoo() { new Foo ("test"); } default MyEnum createMyEnum(char c){ return MyEnum.valueOf(c); } }


Hiç yorum yok:

Yorum Gönder