Well, in looking at the various uses of that method I am a bit confused. 
1. The JMSAppender will use Java serialization if it isn’t a MapMessage or a 
String. 
2. CassandraManager uses some sort of TypeConverter to convert the Serializable 
- but it only seems to handle a limited set of types. For example, using a 
LogEventProxy will result in a null value being inserted.
3. NoSQLDatabaseManager only uses the serializable form if it is a MapMessage.
4. What JdbcDatabaseManager does seems to depend on what the column type is.

Those are pretty much the only usages I have seen. So what should be done 
depends on how it would apply to any one of those cases. I suspect you are 
correct Remko, and that it should just return the byte array.

Ralph

> On Jan 16, 2018, at 8:38 AM, Remko Popma <[email protected]> wrote:
> 
> I think what Mikael meant is that Serializable is just a marker interface
> that does not provide any guidance on what methods to call on it to turn
> the result into bytes.
> Unless we want to use java serialization, and I presume one of the main
> reasons for creating a custom binary layout (other than performance) is to
> avoid java serialization and the associated security risks.
> 
> How should a custom binary layout turn the result of `toSerializable` into
> bytes without using java serialization? - may be the question that Mikael
> is trying to answer. Correct me if I'm wrong,  Mikael.
> I think a custom binary layout should just return the bytes it produced
> itself. Either as a byte array or as a ByteBuffer.
> 
> 
> On Wed, Jan 17, 2018 at 12:23 AM, Ralph Goers <[email protected]>
> wrote:
> 
>> I think MessageLayout is a special case as it only returns the message
>> portion of the LogEvent. Most Layouts return all of the LogEvent
>> attributes. Even so, you could have AbstractLayout<LogEventProxy> if you
>> wanted the serialized version of the LogEvent. It can also be anything else
>> that implements Serializable.
>> 
>> Ralph
>> 
>>> On Jan 16, 2018, at 8:06 AM, Remko Popma <[email protected]> wrote:
>>> 
>>> Doesn't that depend on the generic type T of the Layout<T>?
>>> For example, MessageLayout extends AbstractLayout<Message> returns a
>>> Message instance.
>>> You could return a ByteBuffer, but generally for an efficient binary
>> layout
>>> I would look at the encode method instead.
>>> 
>>> On Tue, Jan 16, 2018 at 11:45 PM, Mikael Ståldal <[email protected]>
>> wrote:
>>> 
>>>> How is a binary layout (extending AbstractLayout) supposed to implement
>>>> the toSerializable method in the Layout interface?
>>>> 
>>>> Why is that method there?
>>>> 
>>>> 
>> 
>> 
>> 


Reply via email to