Deepak,
That's why in our company we have index annotations at method level,
for us we agreed that an index is not really a POJO property but a
pseudo/computed property, it was a waste for us to add a field just
because an index, so we have our own branch of the Riak java client
where the methods can be annotated as index, I requested this change
before but something stopped it, I do believe indexes are kind of
special and could go on method without need to wait for other
annotations to behave the same:
Then you would just need:
*@RiakIndex(name="something")**
**@JsonIgnore *// Optional if you want this index to behave like a
pseudo property and not be serialized at all*
*public int getSomething(){
return someCalculatedInteger;
}
Here is a link to our branch:
*git clone https://github.com/guidomedina/riak-java-client.git**
**git checkout temetra-riak-java-client*
*mvn clean install*
Then on target you will see riak-java-client-1.0.6t.jar
Best regards,
Guido
On 26/09/12 07:10, Deepak Balasubramanyam wrote:
I see. All index annotations will need the @JsonProperty annotation to
survive serialization then. I guess another side effect which will
break backward compatibility will be experienced by map-reduce queries
on any entity that contains these indexes. They will not return the
indexed value either since the json value will no longer contain them.
Unless of course you use @JsonProperty.
Thanks for letting me know about the change.
Deepak Bala
On Tue, Sep 25, 2012 at 9:04 PM, Brian Roach <[email protected]
<mailto:[email protected]>> wrote:
This is not a bug, it's a feature ;) The fact that the index values
were were being serialized was actually not consistant with our other
annotated fields, so I made the decision to bring it in line and not
do so.
I actually highlighted the change in the CHANGELOG:
af12b6c - The default JSONConverter now supports multiple values via a
@RiakIndex annotated Set<> (Integer or String). Note this also brings
serialization/deserialization in line with our other annotaded fields
in that these values will not be present in the resulting JSON. To
override this behavior the Jackson @JsonProperty annotation can be
supplied
Thanks,
Brian Roach
On Tue, Sep 25, 2012 at 1:01 AM, Deepak Balasubramanyam
<[email protected] <mailto:[email protected]>> wrote:
> I switched to the java riak-client 1.0.6 to take it for a spin,
and several
> test cases of mine failed. Upon further investigation I found
that any
> member variable that contains the @RiakIndex annotation does not
serialize
> into Riak anymore. You can reproduce the problem with the
following type
>
> @JsonSerialize(include=JsonSerialize.Inclusion.NON_NULL)
> public class MyType
> {
> public static final String SOME_NAME_STR_REFERENCE = "blah";
> @RiakKey
> private String myKey;
> @RiakIndex(name=SOME_NAME_STR_REFERENCE)
> private String indexedProp;
> // Getters and setters go here
> }
>
> Make a call to bucket.store(typeRef).execute() followed by a GET to
> /riak/myBucket/myKey. The indexedProp element will be missing in
the json
> for calls made on riak-client version 1.0.6 but will be
available when the
> call is made from riak-client version 1.0.5.
>
> Thanks
> Deepak Bala
>
> _______________________________________________
> riak-users mailing list
> [email protected] <mailto:[email protected]>
> http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com
>
_______________________________________________
riak-users mailing list
[email protected]
http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com
_______________________________________________
riak-users mailing list
[email protected]
http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com