(I believe the BaseMessage superclass of Account is optional, not sure).
A convention based approach would be like this
package org.infinispan.protostream.domain;
import org.infinispan.protostream.BaseMessage;
/**
* @author ebernard(a)redhat.com
*/
public class Account {
private int id;
private String description;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
@Override
public String toString() {
return "Account{" +
"id=" + id +
", description='" + description + '\'' +
", unknownFieldSet='" + unknownFieldSet + '\''
+
'}';
}
}
Or let's imagine that we need to make id use a specific protobuf type
package org.infinispan.protostream.domain;
import org.infinispan.protostream.BaseMessage;
/**
* @author ebernard(a)redhat.com
*/
public class Account {
@PSType(UINT32)
private int id;
private String description;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
@Override
public String toString() {
return "Account{" +
"id=" + id +
", description='" + description + '\'' +
", unknownFieldSet='" + unknownFieldSet + '\''
+
'}';
}
}
Note that a concern is that field ordering (in the bytecode) is not guaranteed across VMs
and compilation and I believe that is an important factor of ProtoBuf. So somehow we would
need a way to express field indexes wich would amke the annotation approach more verbose.
On Mon 2013-07-15 16:04, Manik Surtani wrote:
I'm sorry I missed this. Is there an example of each API
somewhere?
On 15 Jul 2013, at 14:01, Emmanuel Bernard <emmanuel(a)hibernate.org> wrote:
> Mircea, Adrian and I had an IRC chat on ProtoStream and ProtoStuff.
>
> check out
>
http://transcripts.jboss.org/channel/irc.freenode.org/%23infinispan/2013/...
> starting at 11:00 and finishing at 12:30
>
> A short summary of what has been discussed:
>
> - ProtoStream is a good cross-platform solution but
> - complicated for the simple pure Java case
> - encourages a technical superclass (EJB 2 !!!!!)
> - ProtoStuff convention + annotation based approach
>
https://code.google.com/p/protostuff/wiki/ProtostuffRuntime is nice
> for the pure Java case
> - ProtoStuff is many things and has a non ProtoBuf compliant format for
> cycle ref and polymorphism
> - ProtoStream supports unknown fields (future version of a schema),
> ProtoBuf does not
> - we could build a convention based solution atop ProtoStream
> - assuming UnknownFieldSet and BaseMessage are optional
> - using (cross platform) conventions
> - with metadata to go beyond conventions (annotation, programmatic
> API, XML...)
>
> public long size; //uses fixed64 by default
> @PSType(UINT64) long size; //override protobuf type
>
> - Infinispan will/could(?) have a repo of schema that can be queries
> - we are talking about how the schema is resolved / generated
> - what we send through the wire is independent of the Proto*
>
> A ProtoBuf vs ProtoStream comparison points
>
https://gist.github.com/mmarkus/5999646
>
> Emmanuel
> _______________________________________________
> infinispan-dev mailing list
> infinispan-dev(a)lists.jboss.org
>
https://lists.jboss.org/mailman/listinfo/infinispan-dev
--
Manik Surtani
manik(a)jboss.org
twitter.com/maniksurtani
Platform Architect, JBoss Data Grid
http://red.ht/data-grid
_______________________________________________
infinispan-dev mailing list
infinispan-dev(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/infinispan-dev