Jörg Michelberger created DIRMINA-990: -----------------------------------------
Summary: 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 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 sourcce 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)