public <T> T deserialize(final byte[] bytes) { try { Schema<VO> schema = getSchema(VO.class); VO vo = deserializeInternal(bytes, schema.newMessage(), schema); if (vo != null && vo.getValue() != null) { return (T) vo.getValue(); } } catch (final Exception e) { throw new IllegalStateException(e.getMessage(), e); } return null; }
public <T> void writeObject(final int fieldNumber, final T value, final Schema<T> schema, final boolean repeated) throws IOException { final boolean lastEntityField = entityField; entityField = false; schema.writeTo(this, value); entityField = lastEntityField; }
static void verify(int field, Schema<?> schema) { if(field < 3 || field > 127) { throw new IllegalArgumentException( "The indexed fields must be 3-127. (" + field + " on " + schema.messageName() + ")"); } if(null == schema.getFieldName(field)) { throw new IllegalArgumentException("The field: " + field + " does not exist for " + schema.messageName()); } }
private <T> T mergeObjectEncodedAsGroup(T value, final Schema<T> schema) throws IOException { if(value == null) value = schema.newMessage(); schema.mergeFrom(this, value); if(!schema.isInitialized(value)) throw new UninitializedMessageException(value, schema); // handling is in #readFieldNumber checkLastTagWas(0); return value; }
schema.messageFullName()); value = schema.newMessage(); schema.mergeFrom(this, value); schema.messageFullName()); if(!schema.isInitialized(value)) throw new UninitializedMessageException(value, schema);
/** * Serializes the {@code message} into an {@link XMLStreamWriter} * using the given {@code schema}. */ public static <T> void writeTo(XMLStreamWriter writer, T message, Schema<T> schema) throws IOException, XMLStreamException, XmlOutputException { writer.writeStartElement(schema.messageName()); schema.writeTo(new XmlOutput(writer, schema), message); writer.writeEndElement(); }
if(tag != START_ELEMENT || !schema.messageName().equals(parser.getLocalName())) throw new XmlInputException("Expected token START_ELEMENT: " + schema.messageName()); final T message = schema.newMessage(); schema.mergeFrom(input, message);
schema.messageFullName()); schema.messageFullName()); final T message = schema.newMessage(); schema.mergeFrom(input, message); schema.messageFullName());
/** * Parses the {@code messages} (delimited) from the {@link InputStream} * using the given {@code schema}. * * @return the list containing the messages. */ public static <T> List<T> parseListFrom(final InputStream in, final Schema<T> schema) throws IOException { int size = in.read(); if(size == -1) return Collections.emptyList(); if(size > 0x7f) size = CodedInput.readRawVarint32(in, size); final ArrayList<T> list = new ArrayList<T>(size); final CodedInput input = new CodedInput(in, true); for(int i = 0; i < size; i++) { final T message = schema.newMessage(); list.add(message); schema.mergeFrom(input, message); input.checkLastTagWas(0); } assert in.read() == -1; return list; }
public void mergeFrom(Input input, final Object message) throws IOException { final Schema<Object> schema = lastSchema; // merge using this input. schema.mergeFrom(this, message); if(!schema.isInitialized(message)) throw new UninitializedMessageException(message, schema); // restore lastSchema = schema; }
public void writeByteArray(int fieldNumber, byte[] value, boolean repeated) throws IOException { writeB64(schema.getFieldName(fieldNumber), value, 0, value.length, repeated); }
/** * Returns the serialized size of the message. */ private static <T> int serTo(ProtostuffOutput output, T message, Schema<T> schema) { try { schema.writeTo(output, message); if(DSUtils.isBufferOverflow(output)) { throw DSRuntimeExceptions.invalidArg("Entity too large: " + schema.messageFullName()); } return output.getSize(); } catch (IOException e) { throw new RuntimeException("Serializing to a LinkedBuffer threw an IOException " + "(should never happen).", e); } finally { output.clear(); } }
public <T> void mergeTo(T message, Schema<T> schema) { final MCInput input = new MCInput(this); try { schema.mergeFrom(input, message); } catch (IOException e) { throw new RuntimeException("Should not happen.", e); } }
/** * Merges the {@code message} from the {@link XMLStreamReader} * using the given {@code schema}. */ public static <T> void mergeFrom(XMLStreamReader parser, T message, Schema<T> schema) throws IOException, XMLStreamException, XmlInputException { //final String simpleName = schema.messageName(); if(parser.nextTag() != START_ELEMENT || !schema.messageName().equals(parser.getLocalName())) { throw new XmlInputException("Expected token START_ELEMENT: " + schema.messageName()); } if(parser.nextTag() == END_ELEMENT) { //if(!simpleName.equals(parser.getLocalName())) // throw new XmlInputException("Expecting token END_ELEMENT: " + simpleName); // empty message; return; } schema.mergeFrom(new XmlInput(parser), message); //if(!simpleName.equals(parser.getLocalName())) // throw new XmlInputException("Expecting token END_ELEMENT: " + simpleName); }
/** * Merges the {@code message} from the JsonParser using the given {@code schema}. */ public static <T> void mergeFrom(JsonParser parser, T message, Schema<T> schema, boolean numeric) throws IOException { if(parser.nextToken() != JsonToken.START_OBJECT) { throw new JsonInputException("Expected token: { but was " + parser.getCurrentToken() + " on message " + schema.messageFullName()); } schema.mergeFrom(new JsonInput(parser, numeric), message); if(parser.getCurrentToken() != JsonToken.END_OBJECT) { throw new JsonInputException("Expected token: } but was " + parser.getCurrentToken() + " on message " + schema.messageFullName()); } }
public <T> void handleUnknownField(int fieldNumber, Schema<T> schema) throws IOException { final String name = parser.getLocalName(); while(true) { switch(next()) { case END_ELEMENT: if(name.equals(parser.getLocalName())) { // we can skip this unknown scalar field. nextTag(); return; } throw new XmlInputException("Unknown field: " + name + " on message " + schema.messageFullName()); case END_DOCUMENT: // malformed xml. case START_ELEMENT: // message field // we do not know how deep this message is throw new XmlInputException("Unknown field: " + name + " on message " + schema.messageFullName()); } } }
final int num = schema.getFieldNumber(name); schema.messageFullName()); case END_DOCUMENT: schema.messageFullName());
if (!schema.isInitialized(message)) return RpcService.ERR_MSG_INVALID_REQUEST_MESSAGE;
protected Input begin(Pipe.Schema<?> pipeSchema) throws IOException { //final String simpleName = pipeSchema.wrappedSchema.messageName(); try { if(parser.nextTag() != START_ELEMENT || !pipeSchema.wrappedSchema.messageName().equals(parser.getLocalName())) { throw new XmlInputException("Expected token START_ELEMENT: " + pipeSchema.wrappedSchema.messageName()); } if(parser.nextTag() == END_ELEMENT) { //if(!simpleName.equals(parser.getLocalName())) // throw new XmlInputException("Expecting token END_ELEMENT: " + // simpleName); // empty message; return null; } } catch(XMLStreamException e) { throw new XmlInputException(e); } return xmlInput; }
private <T> T mergeObjectEncodedAsGroup(T value, final Schema<T> schema) throws IOException { if(value == null) value = schema.newMessage(); schema.mergeFrom(this, value); if(!schema.isInitialized(value)) throw new UninitializedMessageException(value, schema); // handling is in #readFieldNumber checkLastTagWas(0); return value; }