@Override
    public NativeEntity<LookupTableDto> createNativeEntity(Entity entity,
                                                           Map<String, ValueReference> parameters,
                                                           Map<EntityDescriptor, Object> nativeEntities,
                                                           String username) {
        if (entity instanceof EntityV1) {
            return decode((EntityV1) entity, parameters, nativeEntities);
        } else {
            throw new IllegalArgumentException("Unsupported entity version: " + entity.getClass());
        }
    }
@Test
    public void createNativeEntity() {
        final Entity entity = EntityV1.builder()
                .id(ModelId.of("1"))
                .type(ModelTypes.LOOKUP_TABLE_V1)
                .data(objectMapper.convertValue(LookupTableEntity.create(
                        ValueReference.of(DefaultEntityScope.NAME),
                        ValueReference.of("http-dsv-no-cache"),
                        ValueReference.of("HTTP DSV without Cache"),
                        ValueReference.of("HTTP DSV without Cache"),
                        ValueReference.of("no-op-cache"),
                        ValueReference.of("http-dsv"),
                        ValueReference.of("Default single value"),
                        ValueReference.of(LookupDefaultValue.Type.STRING),
                        ValueReference.of("Default multi value"),
                        ValueReference.of(LookupDefaultValue.Type.OBJECT)), JsonNode.class))
                .build();
        final EntityDescriptor cacheDescriptor = EntityDescriptor.create("no-op-cache", ModelTypes.LOOKUP_CACHE_V1);
        final CacheDto cacheDto = CacheDto.builder()
                .id("5adf24b24b900a0fdb4e0001")
                .name("no-op-cache")
                .title("No-op cache")
                .description("No-op cache")
                .config(new FallbackCacheConfig())
                .build();
        final EntityDescriptor dataAdapterDescriptor = EntityDescriptor.create("http-dsv", ModelTypes.LOOKUP_ADAPTER_V1);
        final DataAdapterDto dataAdapterDto = DataAdapterDto.builder()
                .id("5adf24a04b900a0fdb4e0002")
                .name("http-dsv")
                .title("HTTP DSV")
                .description("HTTP DSV")
                .config(new FallbackAdapterConfig())
                .build();
        final Map<EntityDescriptor, Object> nativeEntities = ImmutableMap.of(
                cacheDescriptor, cacheDto,
                dataAdapterDescriptor, dataAdapterDto);
        assertThat(lookupTableService.findAll()).isEmpty();

        final NativeEntity<LookupTableDto> nativeEntity = facade.createNativeEntity(entity, Collections.emptyMap(), nativeEntities, "username");

        assertThat(nativeEntity.descriptor().type()).isEqualTo(ModelTypes.LOOKUP_TABLE_V1);
        assertThat(nativeEntity.entity().name()).isEqualTo("http-dsv-no-cache");
        assertThat(nativeEntity.entity().title()).isEqualTo("HTTP DSV without Cache");
        assertThat(nativeEntity.entity().description()).isEqualTo("HTTP DSV without Cache");
        assertThat(nativeEntity.entity().cacheId()).isEqualTo("5adf24b24b900a0fdb4e0001");
        assertThat(nativeEntity.entity().dataAdapterId()).isEqualTo("5adf24a04b900a0fdb4e0002");
        assertThat(nativeEntity.entity().defaultSingleValue()).isEqualTo("Default single value");
        assertThat(nativeEntity.entity().defaultSingleValueType()).isEqualTo(LookupDefaultValue.Type.STRING);
        assertThat(nativeEntity.entity().defaultMultiValue()).isEqualTo("Default multi value");
        assertThat(nativeEntity.entity().defaultMultiValueType()).isEqualTo(LookupDefaultValue.Type.OBJECT);

        assertThat(lookupTableService.findAll()).hasSize(1);
    }