"(" + Type.getDescriptor( Object.class ) + ")" + Type.getDescriptor( Triple.class ) );
mv.visitMethodInsn( INVOKEVIRTUAL,
Type.getInternalName(TripleStore.class),
"contains",
"(" + Type.getDescriptor( Triple.class ) + ")Z" );
Label l0 = new Label();
mv.visitJumpInsn( IFNE, l0 );
mv.visitVarInsn( ALOAD, 0 );
mv.visitFieldInsn(GETFIELD, wrapperName, "store", Type.getDescriptor( TripleStore.class ) );
mv.visitVarInsn( ALOAD, 0 );
mv.visitLdcInsn( field.resolveAlias() );
mv.visitInsn( BuildUtils.zero( field.getTypeName() ) );
if ( BuildUtils.isPrimitive( field.getTypeName() ) ) {
TraitFactory.valueOf( mv, field.getTypeName() );
size = BuildUtils.sizeOf( field.getTypeName() );
} else {
size = 2;
}
mv.visitMethodInsn( INVOKEVIRTUAL,
wrapperName,
"property",
"(" + Type.getDescriptor( String.class ) + Type.getDescriptor( Object.class ) + ")" + Type.getDescriptor( Triple.class ) );
mv.visitInsn(ICONST_1);
mv.visitMethodInsn( INVOKEVIRTUAL,
Type.getInternalName( TripleStore.class ),
"put",
"(" + Type.getDescriptor( Triple.class ) + "Z)Z" );
if ( core.isFullTraiting() ) {
mv.visitVarInsn( ALOAD, 0 );
mv.visitFieldInsn( GETFIELD, internalWrapper, "object", Type.getDescriptor( core.getDefinedClass() ) );
mv.visitTypeInsn( CHECKCAST, Type.getInternalName( TraitableBean.class ) );
mv.visitMethodInsn( INVOKEINTERFACE, Type.getInternalName( TraitableBean.class ), "_getFieldTMS", Type.getMethodDescriptor( Type.getType( TraitFieldTMS.class ), new Type[] {} ) );
mv.visitVarInsn( ASTORE, 1 );
mv.visitVarInsn( ALOAD, 1 );
mv.visitLdcInsn( field.resolveAlias() );
mv.visitMethodInsn( INVOKEINTERFACE, Type.getInternalName( TraitFieldTMS.class ), "isManagingField", Type.getMethodDescriptor( Type.BOOLEAN_TYPE, new Type[] { Type.getType( String.class ) } ) );
Label l1 = new Label();
mv.visitJumpInsn( IFNE, l1 );
mv.visitVarInsn( ALOAD, 1 );
mv.visitLdcInsn( Type.getType( BuildUtils.getTypeDescriptor( core.getClassName() ) ) );
mv.visitLdcInsn( field.resolveAlias() );
mv.visitMethodInsn( INVOKEINTERFACE, Type.getInternalName( TraitFieldTMS.class ), "registerField", Type.getMethodDescriptor( Type.VOID_TYPE, new Type[]{ Type.getType( Class.class ), Type.getType( String.class ) } ) );