[
https://issues.apache.org/jira/browse/DIRMINA-990?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14176839#comment-14176839
]
Emmanuel Lecharny commented on DIRMINA-990:
-------------------------------------------
Ahhh... Sadly, MINA 2.0.9 is currently being voted.
We could get your patch included in 2.0.10, as we have some more fixes to apply
soon.
> Control flow over exceptional path in AbstractIoBuffer
> ------------------------------------------------------
>
> Key: DIRMINA-990
> URL: https://issues.apache.org/jira/browse/DIRMINA-990
> Project: MINA
> Issue Type: Improvement
> Components: Core
> Affects Versions: 2.0.8
> Reporter: Jörg Michelberger
> Labels: patch, performance
>
> There is control flow over exceptional path in
> ObjectOutputStream.writeClassDescriptor() method used in
> AbstractIoBuffer.putObject, so that serialization of primitive types is done
> via exception path. As an other point, serialization of array types is done
> via asking the classloader with a ClassForName call. Both could be a
> performance issue. I append the original source and a possible fix for this
> issue, which hopefully hits all cases the inventor of the original code wants
> to hit. Is it possible to get this in the upcomming 2.0.9 release of MINA?
> Original code:
> {code}
> protected void writeClassDescriptor(ObjectStreamClass desc)
> throws IOException {
> try {
> Class<?> clz = Class.forName(desc.getName());
> if (!Serializable.class.isAssignableFrom(clz)) { //
> NON-Serializable class
> write(0);
> super.writeClassDescriptor(desc);
> } else { // Serializable class
> write(1);
> writeUTF(desc.getName());
> }
> } catch (ClassNotFoundException ex) { // Primitive types
> write(0);
> super.writeClassDescriptor(desc);
> }
> }
> {code}
> Possible fix
> {code}
> protected void writeClassDescriptor(ObjectStreamClass desc)
> throws IOException {
> if (desc.forClass().isArray() ||
> desc.forClass().isPrimitive() ||
> !Serializable.class.isAssignableFrom(desc.forClass())) {
> write(0);
> super.writeClassDescriptor(desc);
>
> } else {
> // Serializable class
> write(1);
> writeUTF(desc.getName());
> }
> }
> {code}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)