Fixes to avoid Quasar bug, bug fix in chat verification, switch from List.of to Array.asList
This commit is contained in:
		
							parent
							
								
									d475cb19d7
								
							
						
					
					
						commit
						e9c1139bfd
					
				@ -20,25 +20,24 @@ import static com.r3.developers.csdetemplate.utxoexample.workflows.ResponderVali
 | 
				
			|||||||
import static com.r3.developers.csdetemplate.utxoexample.workflows.ResponderValidationHelpers.checkMessageFromMatchesCounterparty;
 | 
					import static com.r3.developers.csdetemplate.utxoexample.workflows.ResponderValidationHelpers.checkMessageFromMatchesCounterparty;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@InitiatedBy(protocol = "append-chat-protocol")
 | 
					@InitiatedBy(protocol = "append-chat-protocol")
 | 
				
			||||||
class AppendChatResponderFlow implements ResponderFlow {
 | 
					public class AppendChatResponderFlow implements ResponderFlow {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
private final Logger log = LoggerFactory.getLogger(AppendChatResponderFlow.class);
 | 
					private final Logger log = LoggerFactory.getLogger(AppendChatResponderFlow.class);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@CordaInject
 | 
					@CordaInject
 | 
				
			||||||
public UtxoLedgerService utxoLedgerService;
 | 
					public UtxoLedgerService utxoLedgerService;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @CordaSerializable
 | 
					    /*
 | 
				
			||||||
    static public class TxValidator implements UtxoTransactionValidator {
 | 
					    static public class TxValidator implements UtxoTransactionValidator {
 | 
				
			||||||
        private final Logger log = LoggerFactory.getLogger(AppendChatResponderFlow.class);
 | 
					        private final Logger log = LoggerFactory.getLogger(AppendChatResponderFlow.class);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        @ConstructorForDeserialization
 | 
					 | 
				
			||||||
        public TxValidator(FlowSession session) {
 | 
					        public TxValidator(FlowSession session) {
 | 
				
			||||||
            this.session = session;
 | 
					            this.session = session;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        @Override
 | 
					        @Override
 | 
				
			||||||
        public void checkTransaction(@NotNull UtxoLedgerTransaction ledgerTransaction) {
 | 
					        public void checkTransaction(@NotNull UtxoLedgerTransaction ledgerTransaction) {
 | 
				
			||||||
            ChatState state = (ChatState) ledgerTransaction.getInputContractStates().get(0);
 | 
					            ChatState state = (ChatState) ledgerTransaction.getOutputContractStates().get(0);
 | 
				
			||||||
            if (checkForBannedWords(state.getMessage()) || !checkMessageFromMatchesCounterparty(state, session.getCounterparty())) {
 | 
					            if (checkForBannedWords(state.getMessage()) || !checkMessageFromMatchesCounterparty(state, session.getCounterparty())) {
 | 
				
			||||||
                throw new IllegalStateException("Failed verification");
 | 
					                throw new IllegalStateException("Failed verification");
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
@ -48,12 +47,27 @@ public UtxoLedgerService utxoLedgerService;
 | 
				
			|||||||
        private FlowSession session;
 | 
					        private FlowSession session;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Suspendable
 | 
					    @Suspendable
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public void call(@NotNull FlowSession session) {
 | 
					    public void call(@NotNull FlowSession session) {
 | 
				
			||||||
 | 
					        log.info("AppendChatResponderFlow.call() called");
 | 
				
			||||||
        try {
 | 
					        try {
 | 
				
			||||||
            TxValidator txValidator = new TxValidator(session);
 | 
					            //TxValidator txValidator = new TxValidator(session);
 | 
				
			||||||
 | 
					            UtxoTransactionValidator txValidator = ledgerTransaction -> {
 | 
				
			||||||
 | 
					                ChatState state = (ChatState) ledgerTransaction.getOutputContractStates().get(0);
 | 
				
			||||||
 | 
					                log.info("ChatState.getMessage() = " + state.getMessage());
 | 
				
			||||||
 | 
					                log.info("ledgerTransaction.getOutputContractStates().size() = " + ledgerTransaction.getOutputContractStates().size()) ;
 | 
				
			||||||
 | 
					                log.info("session.getCounterParty()=" + session.getCounterparty());
 | 
				
			||||||
 | 
					                log.info("state.getMessageFrom()=" + state.getMessageFrom());
 | 
				
			||||||
 | 
					                log.info("checkForBannedWords(state.getMessage) = " + checkForBannedWords(state.getMessage()));
 | 
				
			||||||
 | 
					                log.info("checkMessageFromMatchesCounterparty(state, session.getCounterparty())=" + checkMessageFromMatchesCounterparty(state, session.getCounterparty()));
 | 
				
			||||||
 | 
					                if (checkForBannedWords(state.getMessage()) || !checkMessageFromMatchesCounterparty(state, session.getCounterparty())) {
 | 
				
			||||||
 | 
					                    throw new IllegalStateException("Failed verification");
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                log.info("Verified the transaction - " + ledgerTransaction.getId());
 | 
				
			||||||
 | 
					            };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            // This is not a problem.
 | 
					            // This is not a problem.
 | 
				
			||||||
            UtxoSignedTransaction finalizedSignedTransaction = utxoLedgerService.receiveFinality(session, txValidator);
 | 
					            UtxoSignedTransaction finalizedSignedTransaction = utxoLedgerService.receiveFinality(session, txValidator);
 | 
				
			||||||
 | 
				
			|||||||
@ -52,7 +52,6 @@ public class AppendChatSubFlow implements SubFlow<String> {
 | 
				
			|||||||
            );
 | 
					            );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            retVal = finalizedSignedTransaction.getId().toString();
 | 
					            retVal = finalizedSignedTransaction.getId().toString();
 | 
				
			||||||
            //retVal = "The returned";
 | 
					 | 
				
			||||||
            log.info("Success! Response: " + retVal);
 | 
					            log.info("Success! Response: " + retVal);
 | 
				
			||||||
        } catch (Exception e) {
 | 
					        } catch (Exception e) {
 | 
				
			||||||
            log.warn("Finality failed", e);
 | 
					            log.warn("Finality failed", e);
 | 
				
			||||||
 | 
				
			|||||||
@ -32,7 +32,7 @@ import static java.util.Objects.*;
 | 
				
			|||||||
@InitiatingFlow(protocol = "create-chat-protocol")
 | 
					@InitiatingFlow(protocol = "create-chat-protocol")
 | 
				
			||||||
public class CreateNewChatFlow implements RPCStartableFlow {
 | 
					public class CreateNewChatFlow implements RPCStartableFlow {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private final Logger log = LoggerFactory.getLogger(CreateNewChatFlow.class);
 | 
					    private final static Logger log = LoggerFactory.getLogger(CreateNewChatFlow.class);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @CordaInject
 | 
					    @CordaInject
 | 
				
			||||||
    public JsonMarshallingService jsonMarshallingService;
 | 
					    public JsonMarshallingService jsonMarshallingService;
 | 
				
			||||||
@ -90,6 +90,8 @@ public class CreateNewChatFlow implements RPCStartableFlow {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
             */
 | 
					             */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            // Quasar checkpointing has a bugs handling lambdas in flows.
 | 
				
			||||||
 | 
					            // This is being worked upon.
 | 
				
			||||||
            PublicKey notaryKey = null;
 | 
					            PublicKey notaryKey = null;
 | 
				
			||||||
            for(MemberInfo info: memberLookup.lookup()){
 | 
					            for(MemberInfo info: memberLookup.lookup()){
 | 
				
			||||||
                if(Objects.equals(info.getMemberProvidedContext().get("corda.notary.service.name"), notary.getName().toString()) ) {
 | 
					                if(Objects.equals(info.getMemberProvidedContext().get("corda.notary.service.name"), notary.getName().toString()) ) {
 | 
				
			||||||
 | 
				
			|||||||
@ -17,7 +17,7 @@ public final class ResponderValidationHelpers {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    @Suspendable
 | 
					    @Suspendable
 | 
				
			||||||
    public static boolean checkMessageFromMatchesCounterparty(ChatState state, MemberX500Name otherMember) {
 | 
					    public static boolean checkMessageFromMatchesCounterparty(ChatState state, MemberX500Name otherMember) {
 | 
				
			||||||
        return state.getMessageFrom() == otherMember;
 | 
					        return state.getMessageFrom().equals(otherMember);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // This class just introduces a scope for some helper functions and should not be instantiated.
 | 
					    // This class just introduces a scope for some helper functions and should not be instantiated.
 | 
				
			||||||
 | 
				
			|||||||
@ -108,3 +108,14 @@ public class UpdateChatFlow implements RPCStartableFlow {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					RequestBody for triggering the flow via http-rpc:
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    "clientRequestId": "update-1",
 | 
				
			||||||
 | 
					    "flowClassName": "com.r3.developers.csdetemplate.utxoexample.workflows.UpdateChatFlow",
 | 
				
			||||||
 | 
					    "requestData": {
 | 
				
			||||||
 | 
					        "id":" ** chat id **",
 | 
				
			||||||
 | 
					        "message": "How are you today?"
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
@ -13,7 +13,6 @@ public final class CorDappHelpers {
 | 
				
			|||||||
        Collection<T> results = collection.stream().filter(filterFn).collect(Collectors.toList());
 | 
					        Collection<T> results = collection.stream().filter(filterFn).collect(Collectors.toList());
 | 
				
			||||||
        if(results.size() != 1){
 | 
					        if(results.size() != 1){
 | 
				
			||||||
            throw new IllegalArgumentException(exceptionMsg);
 | 
					            throw new IllegalArgumentException(exceptionMsg);
 | 
				
			||||||
            //throw new Exception(exceptionMsg);
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        return results.iterator().next();
 | 
					        return results.iterator().next();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user