public static MessageId fromByteArray(byte[] data) throws IOException { checkNotNull(data); ByteBufCodedInputStream inputStream = ByteBufCodedInputStream.get(Unpooled.wrappedBuffer(data, 0, data.length)); PulsarApi.MessageIdData.Builder builder = PulsarApi.MessageIdData.newBuilder(); PulsarApi.MessageIdData idData; try { idData = builder.mergeFrom(inputStream, null).build(); } catch (UninitializedMessageException e) { throw new IOException(e); } MessageIdImpl messageId; if (idData.hasBatchIndex()) { messageId = new BatchMessageIdImpl(idData.getLedgerId(), idData.getEntryId(), idData.getPartition(), idData.getBatchIndex()); } else { messageId = new MessageIdImpl(idData.getLedgerId(), idData.getEntryId(), idData.getPartition()); } inputStream.recycle(); builder.recycle(); idData.recycle(); return messageId; }
private static void partialBuildFails() { Simple.Builder builder = Simple.newBuilder(); builder.setId(32); try { builder.build(); } catch (UninitializedMessageException e) { System.out.println("got exception"); } }
private static void partialReadFails() throws IOException { ByteArrayInputStream input = new ByteArrayInputStream(WITH_MISSING_FIELD); Simple.Builder builder = Simple.newBuilder(); builder.mergeDelimitedFrom(input); try { builder.build(); } catch (UninitializedMessageException e) { System.out.println("got exception"); } }
@Override public Object getObject(ResponseMessage response) throws ResultParseException { Map<String, String> headers = response.getHeadersMap(); String requestId = headers.get(OTS_HEADER_REQUEST_ID); if (requestId == null){ throw new ClientException("The required header is missing: " + OTS_HEADER_REQUEST_ID); } try { Message result = message.newBuilderForType().mergeFrom(response.getContent()).buildPartial(); if (!result.isInitialized()) { throw new UninitializedMessageException( result).asInvalidProtocolBufferException(); } if (logger.isDebugEnabled()) { logger.debug("PBResponseMessage: {}, RequestId: {}, TraceId: {}", result.toString(), requestId, traceId); } return new ResponseContentWithMeta( result, new OTSResult(headers.get(OTS_HEADER_REQUEST_ID))); } catch(Exception e) { throw new ResultParseException( ResourceManager.getInstance(ServiceConstants.RESOURCE_NAME_COMMON) .getString("FailedToParseResponse"), e); } }
@Test public void testUninitializedException() throws Exception { try { messageProvider.newBuilder(TEST_REQUIRED_UNINITIALIZED_DESC).build(); fail("Should have thrown an exception."); } catch (final UninitializedMessageException e) { assertEquals("Message missing required fields: a, b, c", e.getMessage()); } }
@Test public void testNestedUninitializedException() throws Exception { try { messageProvider.newBuilder(TEST_REQUIRED_FOREIGN_DESC) .setField(fdOptionalMessage, TEST_REQUIRED_UNINITIALIZED) .addRepeatedField(fdRepeatedMessage, TEST_REQUIRED_UNINITIALIZED) .addRepeatedField(fdRepeatedMessage, TEST_REQUIRED_UNINITIALIZED).build(); fail("Should have thrown an exception."); } catch (final UninitializedMessageException e) { assertEquals("Message missing required fields: " + "optional_message.a, " + "optional_message.b, " + "optional_message.c, " + "repeated_message[0].a, " + "repeated_message[0].b, " + "repeated_message[0].c, " + "repeated_message[1].a, " + "repeated_message[1].b, " + "repeated_message[1].c", e.getMessage()); } }
@Test public void testDynamicUninitializedException() throws Exception { try { messageProvider.newBuilder(TestRequired.getDescriptor()).build(); fail("Should have thrown an exception."); } catch (final UninitializedMessageException e) { assertEquals("Message missing required fields: a, b, c", e.getMessage()); } }