private ClassInfo parseClassInfo ( ) throws Exception { String className = acceptString ( input . readByte ( ) ) ; Class < ? > type = SerTypeMapper . decodeType ( className , settings , overrideBasePackage , null ) ; int propertyCount = acceptArray ( input . readByte ( ) ) ; if ( propertyCount < 0 ) { throw new IllegalArgumentException ( "Invalid binary data: Expected array with 0 to many elements, but was: " + propertyCount ) ; } MetaProperty < ? > [ ] metaProperties = new MetaProperty < ? > [ propertyCount ] ; if ( ImmutableBean . class . isAssignableFrom ( type ) ) { SerDeserializer deser = settings . getDeserializers ( ) . findDeserializer ( type ) ; MetaBean metaBean = deser . findMetaBean ( type ) ; for ( int i = 0 ; i < propertyCount ; i ++ ) { String propertyName = acceptString ( input . readByte ( ) ) ; metaProperties [ i ] = deser . findMetaProperty ( type , metaBean , propertyName ) ; } } else if ( propertyCount != 0 ) { throw new IllegalArgumentException ( "Invalid binary data: Found non immutable bean class that has meta properties defined: " + type . getName ( ) + ", " + propertyCount + " properties" ) ; } return new ClassInfo ( type , metaProperties ) ; }
parses the class information