void wrap(LoggedEvent rawEvent) { final RecordMetadataImpl metadata = new RecordMetadataImpl( objectMapper, partitionId, rawMetadata.getIntent(), rawMetadata.getRecordType(), rawMetadata.getRejectionType(), BufferUtil.bufferAsString(rawMetadata.getRejectionReason()), rawMetadata.getValueType()); record = recordMapper.map(rawEvent, metadata); exporterIndex = 0; shouldExecuteSideEffects = record != null; }
protected void initMetadata( final RecordType type, final Intent intent, final UnpackedObject value) { metadata.reset(); final ValueType valueType = typeRegistry.get(value.getClass()); if (valueType == null) { // usually happens when the record is not registered at the TypedStreamEnvironment throw new RuntimeException("Missing value type mapping for record: " + value.getClass()); } metadata.recordType(type); metadata.valueType(valueType); metadata.intent(intent); }
public TypedWorkflowInstanceRecord() { recordMetadata = new RecordMetadata(); recordMetadata.recordType(RecordType.EVENT); recordMetadata.valueType(ValueType.WORKFLOW_INSTANCE); }
final RecordMetadata recordMetadata = new RecordMetadata(); recordMetadata .intent(DeploymentIntent.DISTRIBUTED) .valueType(ValueType.DEPLOYMENT) .recordType(RecordType.EVENT);
@Override public EventProcessor onEvent(final LoggedEvent event) { final long position = event.getPosition(); metadata.reset(); event.readMetadata(metadata); final TypedRecordProcessor<?> currentProcessor = recordProcessors.get( metadata.getRecordType(), metadata.getValueType(), metadata.getIntent().value()); if (currentProcessor != null) { final UnpackedObject value = eventCache.get(metadata.getValueType()); value.reset(); event.readValue(value); typedEvent.wrap(event, metadata, value); eventProcessorWrapper.wrap(currentProcessor, typedEvent, position); return eventProcessorWrapper; } else { return null; } }
eventMetadata.recordType(RecordType.COMMAND); eventMetadata.intent(Intent.fromProtocolValue(eventType, intent)); eventMetadata.valueType(eventType);
private TypedRecord<WorkflowInstanceRecord> mockTypedRecord(long key, long parentKey) { final WorkflowInstanceRecord workflowInstanceRecord = createWorkflowInstanceRecord(parentKey); final TypedRecord<WorkflowInstanceRecord> typedRecord = mock(TypedRecord.class); when(typedRecord.getKey()).thenReturn(key); when(typedRecord.getValue()).thenReturn(workflowInstanceRecord); final RecordMetadata metadata = new RecordMetadata(); metadata.intent(WorkflowInstanceIntent.ELEMENT_ACTIVATED); when(typedRecord.getMetadata()).thenReturn(metadata); return typedRecord; }
public MetadataFilter buildTypeFilter() { return m -> recordProcessors.containsKey(m.getRecordType(), m.getValueType(), m.getIntent().value()); }
@Test public void shouldWriteCommandRequestEventType() { // given final int writtenLength = writeCommandRequestToBuffer( buffer, LOG_STREAM_PARTITION_ID, null, ValueType.JOB, JobIntent.CREATE); // when final boolean isHandled = messageHandler.onRequest(serverOutput, DEFAULT_ADDRESS, buffer, 0, writtenLength, 123); // then assertThat(isHandled).isTrue(); final BufferedLogStreamReader logStreamReader = new BufferedLogStreamReader(logStream, true); waitForAvailableEvent(logStreamReader); final LoggedEvent loggedEvent = logStreamReader.next(); final RecordMetadata eventMetadata = new RecordMetadata(); loggedEvent.readMetadata(eventMetadata); assertThat(eventMetadata.getValueType()).isEqualTo(ValueType.JOB); assertThat(eventMetadata.getIntent()).isEqualTo(JobIntent.CREATE); }
private void stage( RecordType type, Intent intent, long key, RejectionType rejectionType, DirectBuffer rejectionReason, RecordMetadata metadata, UnpackedObject value) { writer .partitionId(partitionId) .key(key) .intent(intent) .recordType(type) .valueType(metadata.getValueType()) .rejectionType(rejectionType) .rejectionReason(rejectionReason) .valueWriter(value); this.requestId = metadata.getRequestId(); this.requestStreamId = metadata.getRequestStreamId(); isResponseStaged = true; }
@Test public void shouldRejectCancelCommand() { // when final TypedRecord<TimerRecord> timerRecord = timerRecordForActivity("timer"); envRule.writeCommand(timerRecord.getKey(), TimerIntent.TRIGGER, timerRecord.getValue()); envRule.writeCommand(timerRecord.getKey(), TimerIntent.CANCEL, timerRecord.getValue()); streamProcessor.unblock(); // then final TypedRecord<TimerRecord> rejection = findTimerCommandRejection(); assertThat(rejection.getMetadata().getIntent()).isEqualTo(TimerIntent.CANCEL); assertThat(rejection.getMetadata().getRejectionType()).isEqualTo(RejectionType.NOT_FOUND); }
@Override public void writeRejection(TypedRecord<?> rejection) { final RecordMetadata metadata = rejection.getMetadata(); stage( RecordType.COMMAND_REJECTION, metadata.getIntent(), rejection.getKey(), rejection.getMetadata().getRejectionType(), rejection.getMetadata().getRejectionReason(), rejection.getMetadata(), rejection.getValue()); }
@Test public void shouldHandleCommandRequest() { // given final int writtenLength = writeCommandRequestToBuffer( buffer, LOG_STREAM_PARTITION_ID, null, ValueType.JOB, JobIntent.CREATE); // when final boolean isHandled = messageHandler.onRequest( serverOutput, DEFAULT_ADDRESS, buffer, 0, writtenLength, REQUEST_ID); // then assertThat(isHandled).isTrue(); final BufferedLogStreamReader logStreamReader = new BufferedLogStreamReader(logStream, true); waitForAvailableEvent(logStreamReader); final LoggedEvent loggedEvent = logStreamReader.next(); final byte[] valueBuffer = new byte[JOB_EVENT.length]; loggedEvent .getValueBuffer() .getBytes(loggedEvent.getValueOffset(), valueBuffer, 0, loggedEvent.getValueLength()); assertThat(loggedEvent.getValueLength()).isEqualTo(JOB_EVENT.length); assertThat(valueBuffer).isEqualTo(JOB_EVENT); final RecordMetadata eventMetadata = new RecordMetadata(); loggedEvent.readMetadata(eventMetadata); assertThat(eventMetadata.getRequestId()).isEqualTo(REQUEST_ID); assertThat(eventMetadata.getRequestStreamId()).isEqualTo(DEFAULT_ADDRESS.getStreamId()); }
public RecordMetadata() { reset(); }
protected static boolean isRecordOfType(final LoggedEvent event, final ValueType type) { if (event == null) { return false; } final RecordMetadata metadata = getMetadata(event); return metadata.getValueType() == type; } }
public static boolean isRejection(final LoggedEvent event) { final RecordMetadata metadata = getMetadata(event); return metadata.getRecordType() == RecordType.COMMAND_REJECTION; }
public static boolean hasIntent(final LoggedEvent event, final Intent intent) { if (event == null) { return false; } final RecordMetadata metadata = getMetadata(event); return metadata.getIntent() == intent; }
public TestStreams.FluentLogWriter event(final UnpackedObject event) { final ValueType eventType = VALUE_TYPES.get(event.getClass()); if (eventType == null) { throw new RuntimeException("No event type registered for getValue " + event.getClass()); } this.metadata.valueType(eventType); this.value = event; return this; }
public FluentLogWriter intent(final Intent intent) { this.metadata.intent(intent); return this; }