11use bytes:: Bytes ;
2- use lookup:: lookup_v2:: parse_value_path;
32use lookup:: OwnedTargetPath ;
43use serde:: { Deserialize , Serialize } ;
54use smallvec:: { smallvec, SmallVec } ;
@@ -9,6 +8,7 @@ use vector_core::{
98 event:: { Event , LogEvent } ,
109 schema,
1110} ;
11+ use vrl:: path:: PathPrefix ;
1212use vrl:: value:: Kind ;
1313
1414use super :: Deserializer ;
@@ -25,7 +25,7 @@ impl BytesDeserializerConfig {
2525
2626 /// Build the `BytesDeserializer` from this configuration.
2727 pub fn build ( & self ) -> BytesDeserializer {
28- BytesDeserializer :: new ( )
28+ BytesDeserializer
2929 }
3030
3131 /// Return the type of event build by this deserializer.
@@ -37,7 +37,7 @@ impl BytesDeserializerConfig {
3737 pub fn schema_definition ( & self , log_namespace : LogNamespace ) -> schema:: Definition {
3838 match log_namespace {
3939 LogNamespace :: Legacy => schema:: Definition :: empty_legacy_namespace ( ) . with_event_field (
40- & parse_value_path ( log_schema ( ) . message_key ( ) ) . expect ( "valid message key" ) ,
40+ log_schema ( ) . message_key ( ) . expect ( "valid message key" ) ,
4141 Kind :: bytes ( ) ,
4242 Some ( "message" ) ,
4343 ) ,
@@ -54,32 +54,16 @@ impl BytesDeserializerConfig {
5454/// This deserializer can be considered as the no-op action for input where no
5555/// further decoding has been specified.
5656#[ derive( Debug , Clone ) ]
57- pub struct BytesDeserializer {
58- // Only used with the "Legacy" namespace. The "Vector" namespace decodes the data at the root of the event.
59- log_schema_message_key : & ' static str ,
60- }
61-
62- impl Default for BytesDeserializer {
63- fn default ( ) -> Self {
64- Self :: new ( )
65- }
66- }
57+ pub struct BytesDeserializer ;
6758
6859impl BytesDeserializer {
69- /// Creates a new `BytesDeserializer`.
70- pub fn new ( ) -> Self {
71- Self {
72- log_schema_message_key : log_schema ( ) . message_key ( ) ,
73- }
74- }
75-
7660 /// Deserializes the given bytes, which will always produce a single `LogEvent`.
7761 pub fn parse_single ( & self , bytes : Bytes , log_namespace : LogNamespace ) -> LogEvent {
7862 match log_namespace {
7963 LogNamespace :: Vector => log_namespace. new_log_from_data ( bytes) ,
8064 LogNamespace :: Legacy => {
8165 let mut log = LogEvent :: default ( ) ;
82- log. insert ( self . log_schema_message_key , bytes) ;
66+ log. maybe_insert ( PathPrefix :: Event , log_schema ( ) . message_key ( ) , bytes) ;
8367 log
8468 }
8569 }
@@ -107,15 +91,18 @@ mod tests {
10791 #[ test]
10892 fn deserialize_bytes_legacy_namespace ( ) {
10993 let input = Bytes :: from ( "foo" ) ;
110- let deserializer = BytesDeserializer :: new ( ) ;
94+ let deserializer = BytesDeserializer ;
11195
11296 let events = deserializer. parse ( input, LogNamespace :: Legacy ) . unwrap ( ) ;
11397 let mut events = events. into_iter ( ) ;
11498
11599 {
116100 let event = events. next ( ) . unwrap ( ) ;
117101 let log = event. as_log ( ) ;
118- assert_eq ! ( log[ log_schema( ) . message_key( ) ] , "foo" . into( ) ) ;
102+ assert_eq ! (
103+ log[ log_schema( ) . message_key( ) . unwrap( ) . to_string( ) ] ,
104+ "foo" . into( )
105+ ) ;
119106 }
120107
121108 assert_eq ! ( events. next( ) , None ) ;
@@ -124,7 +111,7 @@ mod tests {
124111 #[ test]
125112 fn deserialize_bytes_vector_namespace ( ) {
126113 let input = Bytes :: from ( "foo" ) ;
127- let deserializer = BytesDeserializer :: new ( ) ;
114+ let deserializer = BytesDeserializer ;
128115
129116 let events = deserializer. parse ( input, LogNamespace :: Vector ) . unwrap ( ) ;
130117 assert_eq ! ( events. len( ) , 1 ) ;
0 commit comments