I was trying to run car insurance project in corda but but i am not able to know how to pass the claimInfo data in object type can any one help me
https://github.com/corda/samples/tree/release-V4/carinsurance-QueryableState
i am trying to pass the data like this
start InsuranceClaimInitiator claimInfo: {claimNumber: "aa",claimDescription: "rrrr", claimAmount: 9}, policyNumber: "aaa"
is this right or should we need to pass differently ????
its showing me this error
Wed Feb 19 16:34:55 IST 2020>>> flow start InsuranceClaimFlow$InsuranceClaimInitiator claimInfo: {claimNmuber: "c001",claimDescription: "hello",claimAmount: 123}, policyNumber: "hello"
No matching constructor found:
- [class net.corda.examples.carinsurance.flows.ClaimInfo, class java.lang.String]: Could not parse as a command: Cannot construct instance of `net.corda.examples.carinsurance.flows.ClaimInfo` (no Creators, like default construct, exist): cannot deserialize from Object value (no delegate- or property-based Creator)
at [Source: UNKNOWN; line: -1, column: -1]
Wed Feb 19 16:35:16 IST 2020>>> flow start InsuranceClaimFlow$InsuranceClaimInitiator {claimInfo: {claimNmuber: "c001",claimDescription: "hello",claimAmount: 123}}, policyNumber: "hello"
flow start InsuranceClaimFlow$InsuranceClaimInitiator {claimInfo: {claimNmuber: "c001",claimDescription: "hello",claimAmount: 123}}, policyNumber: "hello": exception: Expected a field name (Scalar value in YAML), got this instead: <org.yaml.snakeyaml.events.MappingStartEvent(anchor=null, tag=null, implicit=true)>
at [Source: (StringReader); line: 1, column: 4]
Wed Feb 19 16:36:00 IST 2020>>> [ERROR] 16:36:00+0530 [pool-8-thread-5] command.CRaSHSession. - Error while evaluating request 'flow start InsuranceClaimFlow$InsuranceClaimInitiator {claimInfo: {claimNmuber: "c001",claimDescription: "hello",claimAmount: 123}}, policyNumber: "hello"' flow start InsuranceClaimFlow$InsuranceClaimInitiator {claimInfo: {claimNmuber: "c001",claimDescription: "hello",claimAmount: 123}}, policyNumber: "hello": exception: Expected a field name (Scalar value in YAML), got this instead: <org.yaml.snakeyaml.events.MappingStartEvent(anchor=null, tag=null, implicit=true)>
at [Source: (StringReader); line: 1, column: 4] [errorCode=rc1dem, moreInformationAt=https://errors.corda.net/OS/4.3/rc1dem]
Add a default constructor to the ClaimInfo and it should work fine. Also mark the parameterized constructor with @ConstructorForDeserialization. It requires a default constructor to deserialize.
public ClaimInfo(){
this.claimNumber = null;
this.claimDescription = null;
this.claimAmount = 0;
}
@ConstructorForDeserialization
public ClaimInfo(String claimNumber, String claimDescription, int claimAmount) {
this.claimNumber = claimNumber;
this.claimDescription = claimDescription;
this.claimAmount = claimAmount;
}
I think we should update this in the sample, or better you could make a PR if you wish.
i am still getting the same error
I noticed you had a typo "claimNmuber". Did you correct this ?
Yes i have corrected the typo but still same error can anyone run this project at their end and see if it is working or not.
so after adding the default constructor the code is working
Thanks everyone