private static BinaryMessages.DynamicField.Builder buildDynamicField( Object value) { BinaryMessages.DynamicField.Builder fieldBuilder = BinaryMessages.DynamicField.newBuilder(); if(value instanceof String) { fieldBuilder.setType(BinaryMessages.DynamicField.Type.STRING); fieldBuilder.setStringValue((String)value); } else if(value instanceof Number) { fieldBuilder.setType(BinaryMessages.DynamicField.Type.NUM); fieldBuilder.setNumericValue(((Number)value).doubleValue()); } else if(value instanceof Boolean) { fieldBuilder.setType(BinaryMessages.DynamicField.Type.BOOL); fieldBuilder.setBooleanValue((Boolean) value); } return fieldBuilder; }
@Test(expected=UnrecognizedMessageTypeException.class) public void deserializeWellFormedButConfusedMessage() throws IOException, UnrecognizedMessageTypeException { // Build a simple message that's missing a name BinaryMessages.VehicleMessage.Builder builder = BinaryMessages.VehicleMessage.newBuilder(); builder.setType(BinaryMessages.VehicleMessage.Type.SIMPLE); BinaryMessages.SimpleMessage.Builder messageBuilder = BinaryMessages.SimpleMessage.newBuilder(); BinaryMessages.DynamicField.Builder fieldBuilder = BinaryMessages.DynamicField.newBuilder(); fieldBuilder.setType(BinaryMessages.DynamicField.Type.NUM); fieldBuilder.setNumericValue(42); messageBuilder.setValue(fieldBuilder); builder.setSimpleMessage(messageBuilder); BinaryMessages.VehicleMessage serialized = builder.build(); ByteArrayOutputStream output = new ByteArrayOutputStream(); serialized.writeTo(output); InputStream input = new ByteArrayInputStream(output.toByteArray()); BinaryFormatter.deserialize(input); }
@Test public void deserializeNoErrors() throws IOException, UnrecognizedMessageTypeException { BinaryMessages.VehicleMessage.Builder builder = BinaryMessages.VehicleMessage.newBuilder(); builder.setType(BinaryMessages.VehicleMessage.Type.SIMPLE); BinaryMessages.SimpleMessage.Builder messageBuilder = BinaryMessages.SimpleMessage.newBuilder(); messageBuilder.setName(messageName); BinaryMessages.DynamicField.Builder fieldBuilder = BinaryMessages.DynamicField.newBuilder(); fieldBuilder.setType(BinaryMessages.DynamicField.Type.NUM); fieldBuilder.setNumericValue(42); messageBuilder.setValue(fieldBuilder); builder.setSimpleMessage(messageBuilder); BinaryMessages.VehicleMessage serialized = builder.build(); ByteArrayOutputStream output = new ByteArrayOutputStream(); serialized.writeTo(output); InputStream input = new ByteArrayInputStream(output.toByteArray()); try { message = (SimpleVehicleMessage) BinaryFormatter.deserialize(input); } catch(UnrecognizedMessageTypeException e) {} assertEquals(message.getName(), messageName); assertEquals(message.getValue(), value); }
public Builder mergeFrom(com.openxc.BinaryMessages.DynamicField other) { if (other == com.openxc.BinaryMessages.DynamicField.getDefaultInstance()) return this; if (other.hasType()) { setType(other.getType()); } if (other.hasStringValue()) { bitField0_ |= 0x00000002; stringValue_ = other.stringValue_; onChanged(); } if (other.hasNumericValue()) { setNumericValue(other.getNumericValue()); } if (other.hasBooleanValue()) { setBooleanValue(other.getBooleanValue()); } this.mergeUnknownFields(other.unknownFields); onChanged(); return this; }