tidied CreateChatFlow
This commit is contained in:
		
							parent
							
								
									974a6be2b5
								
							
						
					
					
						commit
						1c620b2fbc
					
				@ -34,7 +34,6 @@ public class ChatContract implements Contract {
 | 
				
			|||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public void verify(UtxoLedgerTransaction transaction) {
 | 
					    public void verify(UtxoLedgerTransaction transaction) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
//        Command command = requireNonNull( transaction.getCommands().get(0), "Require a single command");  // this doesn't ensure there is one command
 | 
					//        Command command = requireNonNull( transaction.getCommands().get(0), "Require a single command");  // this doesn't ensure there is one command
 | 
				
			||||||
        requireThat( transaction.getCommands().size() == 1, "Require a single command.");
 | 
					        requireThat( transaction.getCommands().size() == 1, "Require a single command.");
 | 
				
			||||||
        Command command = transaction.getCommands().get(0);
 | 
					        Command command = transaction.getCommands().get(0);
 | 
				
			||||||
@ -58,7 +57,6 @@ public class ChatContract implements Contract {
 | 
				
			|||||||
                    input.getParticipants().containsAll(output.getParticipants()) &&
 | 
					                    input.getParticipants().containsAll(output.getParticipants()) &&
 | 
				
			||||||
                    output.getParticipants().containsAll(input.getParticipants()),
 | 
					                    output.getParticipants().containsAll(input.getParticipants()),
 | 
				
			||||||
                    "When command is Update participants must not change.");
 | 
					                    "When command is Update participants must not change.");
 | 
				
			||||||
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        else {
 | 
					        else {
 | 
				
			||||||
            throw new CordaRuntimeException("Unsupported command");
 | 
					            throw new CordaRuntimeException("Unsupported command");
 | 
				
			||||||
 | 
				
			|||||||
@ -5,8 +5,8 @@ import com.r3.developers.csdetemplate.utxoexample.states.ChatState;
 | 
				
			|||||||
import net.corda.v5.application.flows.*;
 | 
					import net.corda.v5.application.flows.*;
 | 
				
			||||||
import net.corda.v5.application.marshalling.JsonMarshallingService;
 | 
					import net.corda.v5.application.marshalling.JsonMarshallingService;
 | 
				
			||||||
import net.corda.v5.application.membership.MemberLookup;
 | 
					import net.corda.v5.application.membership.MemberLookup;
 | 
				
			||||||
import net.corda.v5.application.messaging.FlowMessaging;
 | 
					 | 
				
			||||||
import net.corda.v5.base.annotations.Suspendable;
 | 
					import net.corda.v5.base.annotations.Suspendable;
 | 
				
			||||||
 | 
					import net.corda.v5.base.exceptions.CordaRuntimeException;
 | 
				
			||||||
import net.corda.v5.base.types.MemberX500Name;
 | 
					import net.corda.v5.base.types.MemberX500Name;
 | 
				
			||||||
import net.corda.v5.ledger.common.NotaryLookup;
 | 
					import net.corda.v5.ledger.common.NotaryLookup;
 | 
				
			||||||
import net.corda.v5.ledger.common.Party;
 | 
					import net.corda.v5.ledger.common.Party;
 | 
				
			||||||
@ -15,7 +15,6 @@ import net.corda.v5.ledger.utxo.transaction.UtxoSignedTransaction;
 | 
				
			|||||||
import net.corda.v5.ledger.utxo.transaction.UtxoTransactionBuilder;
 | 
					import net.corda.v5.ledger.utxo.transaction.UtxoTransactionBuilder;
 | 
				
			||||||
import net.corda.v5.membership.MemberInfo;
 | 
					import net.corda.v5.membership.MemberInfo;
 | 
				
			||||||
import net.corda.v5.membership.NotaryInfo;
 | 
					import net.corda.v5.membership.NotaryInfo;
 | 
				
			||||||
import org.jetbrains.annotations.NotNull;
 | 
					 | 
				
			||||||
import org.slf4j.Logger;
 | 
					import org.slf4j.Logger;
 | 
				
			||||||
import org.slf4j.LoggerFactory;
 | 
					import org.slf4j.LoggerFactory;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -45,28 +44,28 @@ public class CreateNewChatFlow implements RPCStartableFlow {
 | 
				
			|||||||
    @CordaInject
 | 
					    @CordaInject
 | 
				
			||||||
    public NotaryLookup notaryLookup;
 | 
					    public NotaryLookup notaryLookup;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @CordaInject
 | 
					 | 
				
			||||||
    public FlowMessaging flowMessaging;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    @CordaInject
 | 
					    @CordaInject
 | 
				
			||||||
    public FlowEngine flowEngine;
 | 
					    public FlowEngine flowEngine;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @NotNull
 | 
					//    @NotNull
 | 
				
			||||||
    @Suspendable
 | 
					    @Suspendable
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public String call(@NotNull RPCRequestData requestBody) throws IllegalArgumentException {
 | 
					//    public String call(@NotNull RPCRequestData requestBody) throws IllegalArgumentException {
 | 
				
			||||||
 | 
					    public String call(RPCRequestData requestBody) {
 | 
				
			||||||
        log.info("CreateNewChatFlow.call() called");
 | 
					        log.info("CreateNewChatFlow.call() called");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        try {
 | 
					        try {
 | 
				
			||||||
            CreateNewChatFlowArgs flowArgs = requestBody.getRequestBodyAs(jsonMarshallingService, CreateNewChatFlowArgs.class);
 | 
					            CreateNewChatFlowArgs flowArgs = requestBody.getRequestBodyAs(jsonMarshallingService, CreateNewChatFlowArgs.class);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            MemberInfo myInfo = memberLookup.myInfo();
 | 
					            MemberInfo myInfo = memberLookup.myInfo();
 | 
				
			||||||
            MemberInfo otherMember = requireNonNull(
 | 
					            MemberInfo otherMember = requireNonNull(
 | 
				
			||||||
                    memberLookup.lookup(MemberX500Name.parse(flowArgs.getOtherMember())),
 | 
					                    memberLookup.lookup(MemberX500Name.parse(flowArgs.getOtherMember())),
 | 
				
			||||||
                    "can't find other member"
 | 
					                    "MemberLookup can't find otherMember specified in flow arguments."
 | 
				
			||||||
            );
 | 
					            );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            ChatState chatState = new ChatState(UUID.randomUUID(),
 | 
					            ChatState chatState = new ChatState(
 | 
				
			||||||
 | 
					                    UUID.randomUUID(),
 | 
				
			||||||
                    flowArgs.getChatName(),
 | 
					                    flowArgs.getChatName(),
 | 
				
			||||||
                    myInfo.getName(),
 | 
					                    myInfo.getName(),
 | 
				
			||||||
                    flowArgs.getMessage(),
 | 
					                    flowArgs.getMessage(),
 | 
				
			||||||
@ -92,19 +91,28 @@ public class CreateNewChatFlow implements RPCStartableFlow {
 | 
				
			|||||||
            // Quasar checkpointing has a bugs handling lambdas in flows.
 | 
					            // Quasar checkpointing has a bugs handling lambdas in flows.
 | 
				
			||||||
            // This is being worked upon.
 | 
					            // This is being worked upon.
 | 
				
			||||||
            PublicKey notaryKey = null;
 | 
					            PublicKey notaryKey = null;
 | 
				
			||||||
            for(MemberInfo info: memberLookup.lookup()){
 | 
					            for(MemberInfo memberInfo: memberLookup.lookup()){
 | 
				
			||||||
                if(Objects.equals(info.getMemberProvidedContext().get("corda.notary.service.name"), notary.getName().toString()) ) {
 | 
					                if(Objects.equals(
 | 
				
			||||||
                    notaryKey = info.getLedgerKeys().get(0);
 | 
					                        memberInfo.getMemberProvidedContext().get("corda.notary.service.name"),
 | 
				
			||||||
 | 
					                        notary.getName().toString())) {
 | 
				
			||||||
 | 
					                    notaryKey = memberInfo.getLedgerKeys().get(0);
 | 
				
			||||||
                    break;
 | 
					                    break;
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            if(notary == null) {
 | 
					
 | 
				
			||||||
                throw new NullPointerException("No notary found");
 | 
					            if(notaryKey == null) {
 | 
				
			||||||
 | 
					                throw new CordaRuntimeException("No notary PublicKey found");
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            log.info("notary.getName()=" + notary.getName());
 | 
					            // This exception would never be reached because if 'notaryLookup.getNotaryServices().iterator().next()'
 | 
				
			||||||
            log.info("chatState = " + chatState);
 | 
					            // didn't return a value, it would have thrown a NoSuchElementException
 | 
				
			||||||
            log.info("chatState.getParticipants().size() = " + chatState.getParticipants().size());
 | 
					//            if(notary == null) {
 | 
				
			||||||
 | 
					//                throw new NullPointerException("No notary found");
 | 
				
			||||||
 | 
					//            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//            log.info("notary.getName()=" + notary.getName());
 | 
				
			||||||
 | 
					//            log.info("chatState = " + chatState);
 | 
				
			||||||
 | 
					//            log.info("chatState.getParticipants().size() = " + chatState.getParticipants().size());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            UtxoTransactionBuilder txBuilder = ledgerService.getTransactionBuilder()
 | 
					            UtxoTransactionBuilder txBuilder = ledgerService.getTransactionBuilder()
 | 
				
			||||||
                    .setNotary(new Party(notary.getName(), notaryKey))
 | 
					                    .setNotary(new Party(notary.getName(), notaryKey))
 | 
				
			||||||
@ -114,17 +122,17 @@ public class CreateNewChatFlow implements RPCStartableFlow {
 | 
				
			|||||||
                    .addSignatories(chatState.getParticipants());
 | 
					                    .addSignatories(chatState.getParticipants());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            log.info("Before UtxoSignedTransaction signedTransaction = txBuilder.toSignedTransaction(myInfo.getLedgerKeys().get(0));");
 | 
					//            log.info("Before UtxoSignedTransaction signedTransaction = txBuilder.toSignedTransaction(myInfo.getLedgerKeys().get(0));");
 | 
				
			||||||
            log.info("myInfo.getLedgerKeys().size() = " + myInfo.getLedgerKeys().size());
 | 
					//            log.info("myInfo.getLedgerKeys().size() = " + myInfo.getLedgerKeys().size());
 | 
				
			||||||
            log.info("myInfo.getLedgerKeys().get(0) = " + myInfo.getLedgerKeys().get(0));
 | 
					//            log.info("myInfo.getLedgerKeys().get(0) = " + myInfo.getLedgerKeys().get(0));
 | 
				
			||||||
            @SuppressWarnings("DEPRECATION")
 | 
					            @SuppressWarnings("DEPRECATION")
 | 
				
			||||||
            UtxoSignedTransaction signedTransaction = txBuilder.toSignedTransaction(myInfo.getLedgerKeys().get(0));
 | 
					            UtxoSignedTransaction signedTransaction = txBuilder.toSignedTransaction(myInfo.getLedgerKeys().get(0));
 | 
				
			||||||
            log.info("After UtxoSignedTransaction signedTransaction = txBuilder.toSignedTransaction(myInfo.getLedgerKeys().get(0));");
 | 
					//            log.info("After UtxoSignedTransaction signedTransaction = txBuilder.toSignedTransaction(myInfo.getLedgerKeys().get(0));");
 | 
				
			||||||
            return flowEngine.subFlow(new AppendChatSubFlow(signedTransaction, otherMember.getName()));
 | 
					            return flowEngine.subFlow(new FinalizeChatSubFlow(signedTransaction, otherMember.getName()));
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        catch (Exception e) {
 | 
					        catch (Exception e) {
 | 
				
			||||||
            log.warn("Failed to process utxo flow for request body '$requestBody' because:'${e.message}'");
 | 
					            log.warn("Failed to process utxo flow for request body '$requestBody' because:'${e.message}'");
 | 
				
			||||||
            throw e;
 | 
					            throw new CordaRuntimeException(e.getMessage());
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -14,14 +14,14 @@ import java.util.Arrays;
 | 
				
			|||||||
import java.util.List;
 | 
					import java.util.List;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@InitiatingFlow(protocol = "append-chat-protocol")
 | 
					@InitiatingFlow(protocol = "append-chat-protocol")
 | 
				
			||||||
public class AppendChatSubFlow implements SubFlow<String> {
 | 
					public class FinalizeChatSubFlow implements SubFlow<String> {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public AppendChatSubFlow(UtxoSignedTransaction signedTransaction, MemberX500Name otherMember) {
 | 
					    public FinalizeChatSubFlow(UtxoSignedTransaction signedTransaction, MemberX500Name otherMember) {
 | 
				
			||||||
        this.signedTransaction = signedTransaction;
 | 
					        this.signedTransaction = signedTransaction;
 | 
				
			||||||
        this.otherMember = otherMember;
 | 
					        this.otherMember = otherMember;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private final static Logger log = LoggerFactory.getLogger(AppendChatSubFlow.class);
 | 
					    private final static Logger log = LoggerFactory.getLogger(FinalizeChatSubFlow.class);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @CordaInject
 | 
					    @CordaInject
 | 
				
			||||||
    public UtxoLedgerService ledgerService;
 | 
					    public UtxoLedgerService ledgerService;
 | 
				
			||||||
@ -94,7 +94,7 @@ public class UpdateChatFlow implements RPCStartableFlow {
 | 
				
			|||||||
            @SuppressWarnings("DEPRECATION")
 | 
					            @SuppressWarnings("DEPRECATION")
 | 
				
			||||||
            UtxoSignedTransaction signedTransaction = txBuilder.toSignedTransaction(myInfo.getLedgerKeys().get(0));
 | 
					            UtxoSignedTransaction signedTransaction = txBuilder.toSignedTransaction(myInfo.getLedgerKeys().get(0));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            return flowEngine.subFlow(new AppendChatSubFlow(signedTransaction, otherMember.getName()));
 | 
					            return flowEngine.subFlow(new FinalizeChatSubFlow(signedTransaction, otherMember.getName()));
 | 
				
			||||||
        } catch (Exception e) {
 | 
					        } catch (Exception e) {
 | 
				
			||||||
            log.warn("Failed to process utxo flow for request body '$requestBody' because:'${e.message}'");
 | 
					            log.warn("Failed to process utxo flow for request body '$requestBody' because:'${e.message}'");
 | 
				
			||||||
            throw e;
 | 
					            throw e;
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user