[protobuf] Re: Is any method available to convert a protobuf object to XML?

2011-06-24 Thread Lars Schouw
Yes, for example in C# you can do like this to create an XPathDocument using 
the protobuf-net lib.

public static XPathDocument Serialize(ProtocolBufferMesage msg)
{
XPathDocument xmlDoc = null;
Serializer.PrepareSerializerTest();

XmlSerializer x = new XmlSerializer(msg.GetType());
using (MemoryStream memoryStream = new MemoryStream())
{
using (TextWriter w = new StreamWriter(memoryStream))
{
x.Serialize(w, msg);
memoryStream.Position = 0;
xmlDoc = new XPathDocument(memoryStream);
}
}
return xmlDoc;
} 

-- 
You received this message because you are subscribed to the Google Groups 
Protocol Buffers group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/protobuf/-/E_KNwOPbenoJ.
To post to this group, send email to protobuf@googlegroups.com.
To unsubscribe from this group, send email to 
protobuf+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/protobuf?hl=en.



Re: [protobuf] Re: Self describing messages

2011-06-24 Thread Jason Hsueh
What are you still missing? The code you've written ought to work after
changing to pass the correct FileDescriptor object to DynamicMessage.

On Fri, Jun 24, 2011 at 12:27 AM, slookin sloo...@gmail.com wrote:

 Yes, in generally it is not Self Describing, but couldn't implement
 real self describing, becase the message size.
 But I'm able upload proto descripter to reciver, so I want to parse
 incomming message using proto descripter.
 Could you help me, how I can do it?

 On Jun 23, 8:12 pm, Jason Hsueh jas...@google.com wrote:
  Oh, I missed that you were reading the FileDescriptorSet from a separate
  file, not the same stream. This isn't exactly self describing since
 when
  you transmit the message you assume the recipient knows what type the
  message is, and has access to the FileDescriptorSet. Seehttp://
 code.google.com/apis/protocolbuffers/docs/techniques.html#self...
 
 
 
 
 
 
 
  On Thu, Jun 23, 2011 at 12:31 AM, slookin sloo...@gmail.com wrote:
   Thanks Jason,
It is all my code (link to real java class -
  http://test.look-in.net/pf/pf.zip.
Could you give me links with examples or explain why i should
   serializes the FileDescriptorSet?
 
   On Jun 22, 8:35 pm, Jason Hsueh jas...@google.com wrote:
On Wed, Jun 22, 2011 at 3:30 AM, slookin sloo...@gmail.com wrote:
 I trying to develop flexible server for reciving message, i'm not
 able to create java classes for each message type, but I can upload
 proto descripter on server. Of course client (sender) will use
 generated java classes for prepare messages:
 
 My code (sender):
 Person.Builder person = Person.newBuilder();
 person.setId(Integer.valueOf(42));
 person.setEmail(test_em...@gmail.com);
 person.setName(Viktor Villari);
 Person p=person.build();
 FileOutputStream fstream = new FileOutputStream (message.pf);
 CodedOutputStream outSream =
 CodedOutputStream.newInstance(fstream);
 p.writeTo(outSream);
 outSream.flush();
 System.out.println(sent);
 
 Reciver (address.descriptor.proto - grenerated via
 descriptor.proto):
FileInputStream input = new FileInputStream
 (address.descriptor.proto);
DescriptorProtos.FileDescriptorSet
 fdsProto=DescriptorProtos.FileDescriptorSet.parseFrom(input);
input = new FileInputStream (message.pf);
//
 System.out.println(fds.getFile(0).getMessageType(0).getName());
System.out.println(File name =
 +fdsProto.getFile(0).getName());
// System.out.println(Message type =
 +fdsProto.getFile(0).getMessageType(0).getName());
// System.out.println(Field info =
 +fdsProto.getFile(0).getMessageType(0).getField(0).getName()+
 +fdsProto.getFile(0).getMessageType(0).getField(0).getType());
FileDescriptor
 fileDescr=FileDescriptor.buildFrom(fdsProto.getFile(0), new
 FileDescriptor[0]);
System.out.println(Message type =
 +fileDescr.getMessageTypes().get(0).getName());
System.out.println(Field info =
 +fileDescr.getMessageTypes().get(0).getFields().get(0).getName()+
 type=
 +fileDescr.getMessageTypes().get(0).getFields().get(0).getType());
DynamicMessage
 dm=DynamicMessage.parseFrom(fdsProto.getDescriptor(),
 input);
 
On this line, you are passing the descriptor for the
 FileDescriptorSet.
   You
should be using fileDescr to get at the Person message type. (Note
 that
   your
description scheme does not indicate what message type is actually
 used.
   But
I also don't see the code snippet that serializes the
 FileDescriptorSet,
   or
for that matter delimit between the FileDescriptorSet and the
 serialized
Person data, so maybe you are doing something elsewhere)
 
System.out.println(DynamicMessage to string
 \n+dm.toString());
// problem line
System.out.println(Person.name  = +

 dm.getField(fileDescr.getMessageTypes().get(0).getFields().get(0)));
//
 
 Output:
 File name = addressbook.proto
 Message type = Person
 Field info = name type= STRING
 DynamicMessage to string
 2: Viktor Villari
 3: 42
 4: test_em...@gmail.com
 
 Exception in thread main java.lang.IllegalArgumentException:
 FieldDescriptor does not match message type.
at
 
  
 com.google.protobuf.DynamicMessage.verifyContainingType(DynamicMessage.java:
 242)
at
   com.google.protobuf.DynamicMessage.getField(DynamicMessage.java:
 160)
at net.lookin.protobuf.Test.main(Test.java:64)
 
 Why I recive exception?
 How I can access to specific field value in DynamicMessage?
 
 --
 You received this message because you are subscribed to the Google
   Groups
 Protocol Buffers group.
 To post to this group, 

Re: [protobuf] Re: Is any method available to convert a protobuf object to XML?

2011-06-24 Thread Marc Gravell
The code shown uses XmlSerializer - it doesn't use protobuf-net at all. 
protobuf-net does tend to be friendly towards this, however you would:

- deserialize with protobuf-net into objects
- serialize with XmlSerializer

The only point of co tact between the two is the object model in the middle.

On 24 Jun 2011, at 16:29, Lars Schouw sch...@gmail.com wrote:

 Yes, for example in C# you can do like this to create an XPathDocument using 
 the protobuf-net lib.
 
 public static XPathDocument Serialize(ProtocolBufferMesage msg)
 {
 XPathDocument xmlDoc = null;
 Serializer.PrepareSerializerTest();
 
 XmlSerializer x = new XmlSerializer(msg.GetType());
 using (MemoryStream memoryStream = new MemoryStream())
 {
 using (TextWriter w = new StreamWriter(memoryStream))
 {
 x.Serialize(w, msg);
 memoryStream.Position = 0;
 xmlDoc = new XPathDocument(memoryStream);c
 }
 }
 return xmlDoc;
 } 
 -- 
 You received this message because you are subscribed to the Google Groups 
 Protocol Buffers group.
 To view this discussion on the web visit 
 https://groups.google.com/d/msg/protobuf/-/E_KNwOPbenoJ.
 To post to this group, send email to protobuf@googlegroups.com.
 To unsubscribe from this group, send email to 
 protobuf+unsubscr...@googlegroups.com.
 For more options, visit this group at 
 http://groups.google.com/group/protobuf?hl=en.

-- 
You received this message because you are subscribed to the Google Groups 
Protocol Buffers group.
To post to this group, send email to protobuf@googlegroups.com.
To unsubscribe from this group, send email to 
protobuf+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/protobuf?hl=en.



[protobuf] PROTOMAK 0.0.2.RELEASE just released

2011-06-24 Thread Marco Tedone
Hi, Protomak is a tool to auto-convert XSDs to .proto files. We have
just released version 0.0.2.RELEASE. You can find out more at
http://www.jemos.eu/projects/protomak

Regards,

Marco

-- 
You received this message because you are subscribed to the Google Groups 
Protocol Buffers group.
To post to this group, send email to protobuf@googlegroups.com.
To unsubscribe from this group, send email to 
protobuf+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/protobuf?hl=en.