Paul, Ugh ... ok, makes sense now. Jackson is like that. We actually had someone do a PR for secondary indexes to allow method annotation, but ... we hadn't done it for links. It's now on the todo list.
Thanks, - Roach On Tue, Jul 30, 2013 at 3:37 PM, Paul Ingalls <[email protected]> wrote: > I figured out what I was doing. I had a getter/setter for the fields in > addition to the fields themselves, since they were private. I had to > JsonIgnore the getters/setters since I couldn't tag them with the riak > annotations. > > Paul Ingalls > Founder & CEO Fanzo > [email protected] > @paulingalls > http://www.linkedin.com/in/paulingalls > > > > On Jul 30, 2013, at 2:34 PM, Brian Roach <[email protected]> wrote: > > Paul, > > The annotated fields are not included in the Serialization using the > JSONConverter (at least, not in the current version of the client; I > think I did some fixes around that way back in like v1.0.7). If they > are, you've got something odd going on in your domain object. > > Here's a (very basic) example: > > public class App3 > { > > public static void main(String[] args) throws RiakException > { > IRiakClient client = RiakFactory.pbcClient(); > Bucket b = client.fetchBucket("test_bucket").execute(); > > MyPojo mp = new MyPojo(); > mp.key = "key0"; > mp.value = "This is my value"; > > Set<RiakLink> links = new HashSet<RiakLink>(); > for (int i = 1; i < 4; i++) > { > RiakLink link = new RiakLink("test_bucket", "key" + i, > "myLinkTag"); > links.add(link); > } > mp.links = links; > b.store(mp).execute(); > > mp = b.fetch("key0", MyPojo.class).execute(); > > System.out.println(mp.key); > System.out.println(mp.value); > for (RiakLink link : mp.links) > { > System.out.println(link.getKey()); > } > > client.shutdown(); > } > > } > > class MyPojo > { > public @RiakKey String key; > public @RiakLinks Collection<RiakLink> links; > public String value; > > } > > ----------------------- > That outputs: > > key0 > This is my value > key2 > key3 > key1 > > Checking it with curl shows it as it should be: > > roach$ curl -v localhost:8098/buckets/test_bucket/keys/key0 > * About to connect() to localhost port 8098 (#0) > * Trying ::1... Connection refused > * Trying 127.0.0.1... connected > * Connected to localhost (127.0.0.1) port 8098 (#0) > > GET /buckets/test_bucket/keys/key0 HTTP/1.1 > User-Agent: curl/7.21.4 (universal-apple-darwin11.0) libcurl/7.21.4 > OpenSSL/0.9.8x zlib/1.2.5 > Host: localhost:8098 > Accept: */* > > < HTTP/1.1 200 OK > < X-Riak-Vclock: a85hYGBgzGDKBVIcypz/fga+nNWUwZTInMfK4Lcq5zRfFgA= > < Vary: Accept-Encoding > < Server: MochiWeb/1.1 WebMachine/1.10.0 (never breaks eye contact) > < Link: </buckets/test_bucket/keys/key1>; riaktag="myLinkTag", > </buckets/test_bucket/keys/key3>; riaktag="myLinkTag", > </buckets/test_bucket/keys/key2>; riaktag="myLinkTag", > </buckets/test_bucket>; rel="up" > < Last-Modified: Tue, 30 Jul 2013 21:21:18 GMT > < ETag: "1ikpRECrH40O93LxiTmnKz" > < Date: Tue, 30 Jul 2013 21:21:57 GMT > < Content-Type: application/json; charset=UTF-8 > < Content-Length: 28 > < > * Connection #0 to host localhost left intact > * Closing connection #0 > {"value":"This is my value"} > > > > On Tue, Jul 30, 2013 at 2:38 PM, Paul Ingalls <[email protected]> wrote: > > Hey Brian, > > After a bit of messing around, I'm now dropping objects into the correct > bucket using the links annotation. However, I am noticing that the json is > including the metadata from the domain object, i.e. things tagged with > @RiakKey, @RiakIndex or @RiakLinks. I was under the impression this data > would be left out. I wouldn't care a whole lot, but when I'm getting data > back in via a fetch, the JSONConverter is crashing saying it doesn't know > how to convert the RiakLink object since there isn't an appropriate > constructor for it. > > Do I need to specifically @JsonIgnore fields tagged with one of the Riak > tags? > > Thanks! > > Paul > > > Paul Ingalls > Founder & CEO Fanzo > [email protected] > @paulingalls > http://www.linkedin.com/in/paulingalls > > > > On Jul 30, 2013, at 11:20 AM, Paul Ingalls <[email protected]> wrote: > > Ok, thats perfect. I totally missed the annotation for links… > > Will give that a shot… > > Thanks! > > Paul Ingalls > Founder & CEO Fanzo > [email protected] > @paulingalls > http://www.linkedin.com/in/paulingalls > > > > On Jul 30, 2013, at 11:16 AM, Brian Roach <[email protected]> wrote: > > Paul, > > I'm not quite sure I understand what you're asking. > > If you do a fetch and have siblings each one is converted to your > domain object using the Converter and then passed as a Collection to > the ConflictResolver. Each sibling is going to include its links > and/or indexes as long as the Converter is injecting them into the > domain object and you can resolve them in the ConflictResolver. > > The default JSONConverter, for example, injects them into your domain > object via annotations from the com.basho.riak.client.convert[1] > package. > > Thanks, > Brian Roach > > http://basho.github.io/riak-java-client/1.4.0/com/basho/riak/client/convert/package-summary.html > > > On Tue, Jul 30, 2013 at 11:41 AM, Paul Ingalls <[email protected]> wrote: > > Newbie with Riak, and looking at the java client. > > Specifically, I've been digging into the domain mapping apis. Looking into > the code, it appears to me that, if I'm using links a bunch or even > secondary indexes, that I could lose some data during the conflict > resolution phase. I see where links and other relevant user data gets > cached during the conversion phase from the fetch and then patched back in > during the conversion phase for the store. However, it doesn't look like > you have the opportunity during the resolution phase to merge metadata. > Should I focus on using the raw client, or am I missing something? > > Thanks! > > Paul > > > > > Paul Ingalls > Founder & CEO Fanzo > [email protected] > @paulingalls > http://www.linkedin.com/in/paulingalls > > > > > _______________________________________________ > 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
