You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@polygene.apache.org by zhuangmz08 <zh...@qq.com> on 2016/04/14 18:55:08 UTC

回复: generic property? value composite as map keys?

1. Maybe I should remove generic Property types.
2. I mean, when I serialize TestEntity into EntityStore, it seems to be ok. But when I deserialize it from EntityStore, map2 return expected values but map1 throw [org.qi4j.spi.entitystore.EntityStoreException: org.qi4j.api.value.ValueSerializationException: Could not serialize value]. 




------------------ 原始邮件 ------------------
发件人: "Niclas Hedhman";<ni...@hedhman.org>;
发送时间: 2016年4月15日(星期五) 凌晨0:49
收件人: "dev"<de...@zest.apache.org>; 

主题: Re: generic property? value composite as map keys?



1. No, you can't use generics in Property types. The reason is quite deep,
related to the way we build the internal model of the Mixins and their
State, which (at least at the moment) doesn't allow WildCardTyped classes.
I am not totally sure if it is possible to fix this, but there is no plans
to look into it.

2. Yes, that should be no problem. ValueComposites obeys equals() and
hashCode() from its immutable state, i.e. Property and Association values.
When you say "fail", what do you mean?



On Fri, Apr 15, 2016 at 12:32 AM, zhuangmz08 <zh...@qq.com> wrote:

> Hi, I would like to ask two questions, any help will be appreciated.
>
>
> 1. Can I use generic type in Property?
> DateTimeInterval1 fails while DateTimeInterval2 is ok in the following
> snippet.
> ===========SNIPPET 1===========
> public interface ITimeInterval<T> {
>         Property<T> start();
>         Property<T> end();
> }
> public interface DateTimeInterval1 extends ITimeInterval<LocalDate>,
> ValueComposite { // fail
> }
>
>
> public interface DateTimeInterval2 extends ValueComposite { // ok
>         Property<LocalDate> start();
>         Property<LocalDate> end();
> }
> ===========SNIPPET 1===========
>
>
> 2. Can I use ValueComposite as map keys?
> map1 fails while map2 is ok in the following snippet.
> ===========SNIPPET 2===========
> public interface TestEntity extends EntityComposite {
>         Property<Map<DateTimeInterval2, String>> map1();        // fail
>         Property<Map<String, DateTimeInterval2>> map2();        // ok
> }
> ===========SNIPPET 2===========




-- 
Niclas Hedhman, Software Developer
http://zest.apache.org - New Energy for Java

回复: generic property? value composite as map keys?

Posted by zhuangmz08 <zh...@qq.com>.
OK. But I have to learn how to use Jira first:). I will prepare my testcase and make a new issue.




------------------ 原始邮件 ------------------
发件人: "Niclas Hedhman";<ni...@hedhman.org>;
发送时间: 2016年4月15日(星期五) 上午10:28
收件人: "dev"<de...@zest.apache.org>; 

主题: Re: generic property? value composite as map keys?



Well, inside Zest runtime, that should be automatic. SO I am still
interested in a testcase.

On Fri, Apr 15, 2016 at 9:38 AM, zhuangmz08 <zh...@qq.com> wrote:

> I'm using 2.1. I figure out that the problem is not on Property<Map>, but
> on Map<DateTimeInterval2, V> ser/deserialization. I have to define
> com.fasterxml.jackson.databind.KeyDeserializer when I'm using Jackson.
> Thanks a lot.
>
>
>
>
> ------------------ 原始邮件 ------------------
> 发件人: "Niclas Hedhman";<ni...@hedhman.org>;
> 发送时间: 2016年4月15日(星期五) 上午7:27
> 收件人: "dev"<de...@zest.apache.org>;
>
> 主题: Re: generic property? value composite as map keys?
>
>
>
> I think it should be viewed as a bug. Could you open a Jira ticket, and
> attach a small testcase? That would help a lot.
>
> Is this using 2.1 or 'develop' branch?
>
> If it is for 'develop', then there is a lot of internal changes going on
> regarding the serialization (testcase still helps) and it will be sorted
> out. If it is 2.1, I think it is serious enough to warrant a new release.
>
> Thanks a lot for reporting/finding this.
> Niclas
>
>
>
> On Fri, Apr 15, 2016 at 12:55 AM, zhuangmz08 <zh...@qq.com> wrote:
>
> > 1. Maybe I should remove generic Property types.
> > 2. I mean, when I serialize TestEntity into EntityStore, it seems to be
> > ok. But when I deserialize it from EntityStore, map2 return expected
> values
> > but map1 throw [org.qi4j.spi.entitystore.EntityStoreException:
> > org.qi4j.api.value.ValueSerializationException: Could not serialize
> value].
> >
> >
> >
> >
> > ------------------ 原始邮件 ------------------
> > 发件人: "Niclas Hedhman";<ni...@hedhman.org>;
> > 发送时间: 2016年4月15日(星期五) 凌晨0:49
> > 收件人: "dev"<de...@zest.apache.org>;
> >
> > 主题: Re: generic property? value composite as map keys?
> >
> >
> >
> > 1. No, you can't use generics in Property types. The reason is quite
> deep,
> > related to the way we build the internal model of the Mixins and their
> > State, which (at least at the moment) doesn't allow WildCardTyped
> classes.
> > I am not totally sure if it is possible to fix this, but there is no
> plans
> > to look into it.
> >
> > 2. Yes, that should be no problem. ValueComposites obeys equals() and
> > hashCode() from its immutable state, i.e. Property and Association
> values.
> > When you say "fail", what do you mean?
> >
> >
> >
> > On Fri, Apr 15, 2016 at 12:32 AM, zhuangmz08 <zh...@qq.com> wrote:
> >
> > > Hi, I would like to ask two questions, any help will be appreciated.
> > >
> > >
> > > 1. Can I use generic type in Property?
> > > DateTimeInterval1 fails while DateTimeInterval2 is ok in the following
> > > snippet.
> > > ===========SNIPPET 1===========
> > > public interface ITimeInterval<T> {
> > >         Property<T> start();
> > >         Property<T> end();
> > > }
> > > public interface DateTimeInterval1 extends ITimeInterval<LocalDate>,
> > > ValueComposite { // fail
> > > }
> > >
> > >
> > > public interface DateTimeInterval2 extends ValueComposite { // ok
> > >         Property<LocalDate> start();
> > >         Property<LocalDate> end();
> > > }
> > > ===========SNIPPET 1===========
> > >
> > >
> > > 2. Can I use ValueComposite as map keys?
> > > map1 fails while map2 is ok in the following snippet.
> > > ===========SNIPPET 2===========
> > > public interface TestEntity extends EntityComposite {
> > >         Property<Map<DateTimeInterval2, String>> map1();        // fail
> > >         Property<Map<String, DateTimeInterval2>> map2();        // ok
> > > }
> > > ===========SNIPPET 2===========
> >
> >
> >
> >
> > --
> > Niclas Hedhman, Software Developer
> > http://zest.apache.org - New Energy for Java
> >
>
>
>
> --
> Niclas Hedhman, Software Developer
> http://zest.apache.org - New Energy for Java
>



-- 
Niclas Hedhman, Software Developer
http://zest.apache.org - New Energy for Java

Re: generic property? value composite as map keys?

Posted by Niclas Hedhman <ni...@hedhman.org>.
Well, inside Zest runtime, that should be automatic. SO I am still
interested in a testcase.

On Fri, Apr 15, 2016 at 9:38 AM, zhuangmz08 <zh...@qq.com> wrote:

> I'm using 2.1. I figure out that the problem is not on Property<Map>, but
> on Map<DateTimeInterval2, V> ser/deserialization. I have to define
> com.fasterxml.jackson.databind.KeyDeserializer when I'm using Jackson.
> Thanks a lot.
>
>
>
>
> ------------------ 原始邮件 ------------------
> 发件人: "Niclas Hedhman";<ni...@hedhman.org>;
> 发送时间: 2016年4月15日(星期五) 上午7:27
> 收件人: "dev"<de...@zest.apache.org>;
>
> 主题: Re: generic property? value composite as map keys?
>
>
>
> I think it should be viewed as a bug. Could you open a Jira ticket, and
> attach a small testcase? That would help a lot.
>
> Is this using 2.1 or 'develop' branch?
>
> If it is for 'develop', then there is a lot of internal changes going on
> regarding the serialization (testcase still helps) and it will be sorted
> out. If it is 2.1, I think it is serious enough to warrant a new release.
>
> Thanks a lot for reporting/finding this.
> Niclas
>
>
>
> On Fri, Apr 15, 2016 at 12:55 AM, zhuangmz08 <zh...@qq.com> wrote:
>
> > 1. Maybe I should remove generic Property types.
> > 2. I mean, when I serialize TestEntity into EntityStore, it seems to be
> > ok. But when I deserialize it from EntityStore, map2 return expected
> values
> > but map1 throw [org.qi4j.spi.entitystore.EntityStoreException:
> > org.qi4j.api.value.ValueSerializationException: Could not serialize
> value].
> >
> >
> >
> >
> > ------------------ 原始邮件 ------------------
> > 发件人: "Niclas Hedhman";<ni...@hedhman.org>;
> > 发送时间: 2016年4月15日(星期五) 凌晨0:49
> > 收件人: "dev"<de...@zest.apache.org>;
> >
> > 主题: Re: generic property? value composite as map keys?
> >
> >
> >
> > 1. No, you can't use generics in Property types. The reason is quite
> deep,
> > related to the way we build the internal model of the Mixins and their
> > State, which (at least at the moment) doesn't allow WildCardTyped
> classes.
> > I am not totally sure if it is possible to fix this, but there is no
> plans
> > to look into it.
> >
> > 2. Yes, that should be no problem. ValueComposites obeys equals() and
> > hashCode() from its immutable state, i.e. Property and Association
> values.
> > When you say "fail", what do you mean?
> >
> >
> >
> > On Fri, Apr 15, 2016 at 12:32 AM, zhuangmz08 <zh...@qq.com> wrote:
> >
> > > Hi, I would like to ask two questions, any help will be appreciated.
> > >
> > >
> > > 1. Can I use generic type in Property?
> > > DateTimeInterval1 fails while DateTimeInterval2 is ok in the following
> > > snippet.
> > > ===========SNIPPET 1===========
> > > public interface ITimeInterval<T> {
> > >         Property<T> start();
> > >         Property<T> end();
> > > }
> > > public interface DateTimeInterval1 extends ITimeInterval<LocalDate>,
> > > ValueComposite { // fail
> > > }
> > >
> > >
> > > public interface DateTimeInterval2 extends ValueComposite { // ok
> > >         Property<LocalDate> start();
> > >         Property<LocalDate> end();
> > > }
> > > ===========SNIPPET 1===========
> > >
> > >
> > > 2. Can I use ValueComposite as map keys?
> > > map1 fails while map2 is ok in the following snippet.
> > > ===========SNIPPET 2===========
> > > public interface TestEntity extends EntityComposite {
> > >         Property<Map<DateTimeInterval2, String>> map1();        // fail
> > >         Property<Map<String, DateTimeInterval2>> map2();        // ok
> > > }
> > > ===========SNIPPET 2===========
> >
> >
> >
> >
> > --
> > Niclas Hedhman, Software Developer
> > http://zest.apache.org - New Energy for Java
> >
>
>
>
> --
> Niclas Hedhman, Software Developer
> http://zest.apache.org - New Energy for Java
>



-- 
Niclas Hedhman, Software Developer
http://zest.apache.org - New Energy for Java

回复: generic property? value composite as map keys?

Posted by zhuangmz08 <zh...@qq.com>.
I'm using 2.1. I figure out that the problem is not on Property<Map>, but on Map<DateTimeInterval2, V> ser/deserialization. I have to define com.fasterxml.jackson.databind.KeyDeserializer when I'm using Jackson. Thanks a lot.




------------------ 原始邮件 ------------------
发件人: "Niclas Hedhman";<ni...@hedhman.org>;
发送时间: 2016年4月15日(星期五) 上午7:27
收件人: "dev"<de...@zest.apache.org>; 

主题: Re: generic property? value composite as map keys?



I think it should be viewed as a bug. Could you open a Jira ticket, and
attach a small testcase? That would help a lot.

Is this using 2.1 or 'develop' branch?

If it is for 'develop', then there is a lot of internal changes going on
regarding the serialization (testcase still helps) and it will be sorted
out. If it is 2.1, I think it is serious enough to warrant a new release.

Thanks a lot for reporting/finding this.
Niclas



On Fri, Apr 15, 2016 at 12:55 AM, zhuangmz08 <zh...@qq.com> wrote:

> 1. Maybe I should remove generic Property types.
> 2. I mean, when I serialize TestEntity into EntityStore, it seems to be
> ok. But when I deserialize it from EntityStore, map2 return expected values
> but map1 throw [org.qi4j.spi.entitystore.EntityStoreException:
> org.qi4j.api.value.ValueSerializationException: Could not serialize value].
>
>
>
>
> ------------------ 原始邮件 ------------------
> 发件人: "Niclas Hedhman";<ni...@hedhman.org>;
> 发送时间: 2016年4月15日(星期五) 凌晨0:49
> 收件人: "dev"<de...@zest.apache.org>;
>
> 主题: Re: generic property? value composite as map keys?
>
>
>
> 1. No, you can't use generics in Property types. The reason is quite deep,
> related to the way we build the internal model of the Mixins and their
> State, which (at least at the moment) doesn't allow WildCardTyped classes.
> I am not totally sure if it is possible to fix this, but there is no plans
> to look into it.
>
> 2. Yes, that should be no problem. ValueComposites obeys equals() and
> hashCode() from its immutable state, i.e. Property and Association values.
> When you say "fail", what do you mean?
>
>
>
> On Fri, Apr 15, 2016 at 12:32 AM, zhuangmz08 <zh...@qq.com> wrote:
>
> > Hi, I would like to ask two questions, any help will be appreciated.
> >
> >
> > 1. Can I use generic type in Property?
> > DateTimeInterval1 fails while DateTimeInterval2 is ok in the following
> > snippet.
> > ===========SNIPPET 1===========
> > public interface ITimeInterval<T> {
> >         Property<T> start();
> >         Property<T> end();
> > }
> > public interface DateTimeInterval1 extends ITimeInterval<LocalDate>,
> > ValueComposite { // fail
> > }
> >
> >
> > public interface DateTimeInterval2 extends ValueComposite { // ok
> >         Property<LocalDate> start();
> >         Property<LocalDate> end();
> > }
> > ===========SNIPPET 1===========
> >
> >
> > 2. Can I use ValueComposite as map keys?
> > map1 fails while map2 is ok in the following snippet.
> > ===========SNIPPET 2===========
> > public interface TestEntity extends EntityComposite {
> >         Property<Map<DateTimeInterval2, String>> map1();        // fail
> >         Property<Map<String, DateTimeInterval2>> map2();        // ok
> > }
> > ===========SNIPPET 2===========
>
>
>
>
> --
> Niclas Hedhman, Software Developer
> http://zest.apache.org - New Energy for Java
>



-- 
Niclas Hedhman, Software Developer
http://zest.apache.org - New Energy for Java

Re: generic property? value composite as map keys?

Posted by Niclas Hedhman <ni...@hedhman.org>.
I think it should be viewed as a bug. Could you open a Jira ticket, and
attach a small testcase? That would help a lot.

Is this using 2.1 or 'develop' branch?

If it is for 'develop', then there is a lot of internal changes going on
regarding the serialization (testcase still helps) and it will be sorted
out. If it is 2.1, I think it is serious enough to warrant a new release.

Thanks a lot for reporting/finding this.
Niclas



On Fri, Apr 15, 2016 at 12:55 AM, zhuangmz08 <zh...@qq.com> wrote:

> 1. Maybe I should remove generic Property types.
> 2. I mean, when I serialize TestEntity into EntityStore, it seems to be
> ok. But when I deserialize it from EntityStore, map2 return expected values
> but map1 throw [org.qi4j.spi.entitystore.EntityStoreException:
> org.qi4j.api.value.ValueSerializationException: Could not serialize value].
>
>
>
>
> ------------------ 原始邮件 ------------------
> 发件人: "Niclas Hedhman";<ni...@hedhman.org>;
> 发送时间: 2016年4月15日(星期五) 凌晨0:49
> 收件人: "dev"<de...@zest.apache.org>;
>
> 主题: Re: generic property? value composite as map keys?
>
>
>
> 1. No, you can't use generics in Property types. The reason is quite deep,
> related to the way we build the internal model of the Mixins and their
> State, which (at least at the moment) doesn't allow WildCardTyped classes.
> I am not totally sure if it is possible to fix this, but there is no plans
> to look into it.
>
> 2. Yes, that should be no problem. ValueComposites obeys equals() and
> hashCode() from its immutable state, i.e. Property and Association values.
> When you say "fail", what do you mean?
>
>
>
> On Fri, Apr 15, 2016 at 12:32 AM, zhuangmz08 <zh...@qq.com> wrote:
>
> > Hi, I would like to ask two questions, any help will be appreciated.
> >
> >
> > 1. Can I use generic type in Property?
> > DateTimeInterval1 fails while DateTimeInterval2 is ok in the following
> > snippet.
> > ===========SNIPPET 1===========
> > public interface ITimeInterval<T> {
> >         Property<T> start();
> >         Property<T> end();
> > }
> > public interface DateTimeInterval1 extends ITimeInterval<LocalDate>,
> > ValueComposite { // fail
> > }
> >
> >
> > public interface DateTimeInterval2 extends ValueComposite { // ok
> >         Property<LocalDate> start();
> >         Property<LocalDate> end();
> > }
> > ===========SNIPPET 1===========
> >
> >
> > 2. Can I use ValueComposite as map keys?
> > map1 fails while map2 is ok in the following snippet.
> > ===========SNIPPET 2===========
> > public interface TestEntity extends EntityComposite {
> >         Property<Map<DateTimeInterval2, String>> map1();        // fail
> >         Property<Map<String, DateTimeInterval2>> map2();        // ok
> > }
> > ===========SNIPPET 2===========
>
>
>
>
> --
> Niclas Hedhman, Software Developer
> http://zest.apache.org - New Energy for Java
>



-- 
Niclas Hedhman, Software Developer
http://zest.apache.org - New Energy for Java