Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

requireThat() and requireSingleCommand() are undefined

Tags:

java

corda

I am new to Corda and started with the provided tutorials.

In two different tutorials I ran into the same problem. The functions requireThat() and requireSingleCommand() are undefined.

Below you see my code from the "HelloWorld! Pt. 2" tutorial.

The requireThat() function produces the following error:

The method requireThat((<no type> require) -> {}) is undefined for the type SignTxFlow Java(67108964)

Although, the requireThat() function is part of the net.corda.core.contracts package which is included in the code.

Thank you for your help!

package com.template.flows;

import com.template.states.IOUState;

import co.paralleluniverse.fibers.Suspendable;
import net.corda.core.contracts.ContractState;
import net.corda.core.crypto.SecureHash;
import net.corda.core.flows.FlowException;
import net.corda.core.flows.FlowLogic;
import net.corda.core.flows.FlowSession;
import net.corda.core.flows.InitiatedBy;
import net.corda.core.flows.ReceiveFinalityFlow;
import net.corda.core.flows.SignTransactionFlow;
import net.corda.core.transactions.SignedTransaction;
import net.corda.core.contracts.*;
import net.corda.core.flows.*;
import net.corda.core.contracts.Command;
import net.corda.core.transactions.*;
import net.corda.core.utilities.ProgressTracker;


// ******************
// * Responder flow *
// ******************
@InitiatedBy(IOUFlow.class)
public class IOUFlowResponder extends FlowLogic<Void> {
    private FlowSession otherPartySession;

    public IOUFlowResponder(FlowSession otherPartySession) {
        this.otherPartySession = otherPartySession;
    }

    @Suspendable
    @Override
    public Void call() throws FlowException {

        class SignTxFlow extends SignTransactionFlow {

            private SignTxFlow(FlowSession otherPartySession) {
                super(otherPartySession);
            }

            @Override
            protected void checkTransaction(SignedTransaction stx) {
                requireThat(require -> {
                    ContractState output = stx.getTx().getOutputs().get(0).getData();
                    require.using("this must be an IOU transaction. ", output instanceof IOUState);
                    IOUState iou = (IOUState) output;
                    require.using("The IOU's value can't be too high.", iou.getValue() < 100);
                    return null;
                });
            }
       }

       SecureHash expectedTxId = subFlow(new SignTxFlow(otherPartySession)).getId();

        subFlow(new ReceiveFinalityFlow(otherPartySession, expectedTxId));
        return null;
    }
}
like image 499
Julian Avatar asked May 14 '26 05:05

Julian


1 Answers

The problem is solved, if the package

import static net.corda.core.contracts.ContractsDSL.requireThat;

is implemented at the top.

like image 197
Julian Avatar answered May 15 '26 19:05

Julian