@Override
    public ProxyInvocationHandler parserInterfaceToProxy(Object target, String objectName) {
        // eliminate the bean without two phase annotation.
        Set<String> methodsToProxy = this.tccProxyTargetMethod(target);
        if (methodsToProxy.isEmpty()) {
            return null;
        }
        // register resource and enhance with interceptor
        DefaultResourceRegisterParser.get().registerResource(target, objectName);
        return new TccActionInterceptorHandler(target, methodsToProxy);
    }
@Test
    public void testNestTcc_required_new_should_both_commit() throws Exception {
        //given
        RootContext.unbind();
        DefaultResourceManager.get();
        DefaultResourceManager.mockResourceManager(BranchType.TCC, resourceManager);

        TransactionManagerHolder.set(transactionManager);

        TccActionImpl tccAction = new TccActionImpl();
        TccAction tccActionProxy =  ProxyUtil.createProxy(tccAction);
        Assertions.assertNotNull(tccActionProxy);

        NestTccActionImpl nestTccAction = new NestTccActionImpl();
        nestTccAction.setTccAction(tccActionProxy);

        //when
        ProxyInvocationHandler proxyInvocationHandler = DefaultInterfaceParser.get().parserInterfaceToProxy(nestTccAction, nestTccAction.getClass().getName());

        //then
        Assertions.assertNotNull(proxyInvocationHandler);

        //when
        NestTccAction nestTccActionProxy = ProxyUtil.createProxy(nestTccAction);
        //then
        Assertions.assertNotNull(nestTccActionProxy);


        // transaction commit test
        GlobalTransaction tx = GlobalTransactionContext.getCurrentOrCreate();

        try {
            tx.begin(60000, "testBiz");

            boolean result = nestTccActionProxy.prepareNestRequiredNew(null, 2);

            Assertions.assertTrue(result);

            if (result) {
                tx.commit();
            } else {
                tx.rollback();
            }
        } catch (Exception exx) {
            tx.rollback();
            throw exx;
        }

        Assertions.assertTrue(nestTccAction.isCommit());
        Assertions.assertTrue(tccAction.isCommit());

    }