You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@polygene.apache.org by "Niclas Hedhman (JIRA)" <ji...@apache.org> on 2016/04/15 11:19:25 UTC

[jira] [Assigned] (ZEST-142) Enum Property in EntityComposite serialization error

     [ https://issues.apache.org/jira/browse/ZEST-142?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Niclas Hedhman reassigned ZEST-142:
-----------------------------------

    Assignee: Niclas Hedhman

> Enum Property in EntityComposite serialization error
> ----------------------------------------------------
>
>                 Key: ZEST-142
>                 URL: https://issues.apache.org/jira/browse/ZEST-142
>             Project: Zest
>          Issue Type: Bug
>    Affects Versions: 2.1
>            Reporter: Mingzhou Zhuang
>            Assignee: Niclas Hedhman
>            Priority: Critical
>              Labels: bug
>
> TestValue as value composite, it's ok.
> TestValue as entity composite, fail?
> {code}
> public enum TestEnum {
>     A, B, C, D
> }
> public interface TestValue {
>     Property<Double> price();
>     Property<TestEnum> testenum();
> }
> public static void main(String[] args) throws ActivationException, AssemblyException, UnitOfWorkCompletionException, JsonProcessingException {
>         SingletonAssembler assembler = new SingletonAssembler() {
>             @Override
>             public void assemble(ModuleAssembly module_)
>                     throws AssemblyException {
>                 module_.values(TestValue.class);    // Value
>                 module_.entities(TestValue.class);  // Entity
>                 module_.services(JacksonValueSerializationService.class)
>                         .taggedWith(ValueSerialization.Formats.JSON)
>                         .visibleIn(Visibility.application)
>                         .instantiateOnStartup();
>                 module_.services(MemoryEntityStoreService.class);
>                 module_.services(UuidIdentityGeneratorService.class);
>             }
>         };
>         Module module = assembler.module();
>         ValueSerialization serialization = module.findService(ValueSerialization.class)
>                 .get();
>         TestValue value;
>         {
>             ValueBuilder<TestValue> builder = module.newValueBuilder(TestValue.class);
>             builder.prototype().price().set(23.45);
>             builder.prototype().testenum().set(TestEnum.B);
>             value = builder.newInstance();
>             _sLogger.info("value {}, {}, {}", value, value.price().get(), value.testenum().get());
>             System.out.println(serialization.serialize(value)); // ok
>             value = serialization.deserialize(TestValue.class, serialization.serialize(value)); // ok
>             _sLogger.info("de value {}, {}, {}", value, value.price().get(), value.testenum().get());
>         }
>         {
>             String valueId = "abcdefg";
>             {
>                 UnitOfWork uow = module.newUnitOfWork(UsecaseBuilder.newUsecase("create"));
>                 EntityBuilder<TestValue> builder = uow.newEntityBuilder(TestValue.class, valueId);
>                 builder.instance().price().set(45.67);
>                 builder.instance().testenum().set(TestEnum.A);
>                 value = builder.newInstance();
>                 try {
>                     uow.complete();
>                 } catch (Exception e_) {
>                     uow.discard();
>                     e_.printStackTrace();
>                 }
>             }
>             {
>                 UnitOfWork uow = module.newUnitOfWork(UsecaseBuilder.newUsecase("create"));
>                 value = uow.get(TestValue.class, valueId);
>                 System.out.println(value.price().get());
>                 System.out.println(value.testenum().get()); // FAIL
>                 uow.discard();
>             }
>         }
>     }
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)