Reputation: 1
I want to read a fixed width response from server.
Sample Response
PQRSBNGL1234567890AAHG
Here is sample ffd file
form: COPYBOOK
values:
- name: 'HOSPITALS'
values:
- name: 'BASIC-INFO'
values:
- { name: 'NAME', type: String, length: 4 }
- { name: 'ADDRESS', type: String, length: 4 }
- { name: 'PHONE-NUMBER', type: Integer, length: 10, format: { justify: ZEROES, sign: UNSIGNED } }
- { name: 'ADMIN', type: String, length: 4 }
- name: 'WARDS'
values:
- name: 'BASIC-INFO'
values:
- { name: 'NAME', type: String, length: 4 }
- { name: 'ADDRESS', type: String, length: 4 }
- { name: 'NUMBER', type: Integer, length: 10, format: { justify: ZEROES, sign: UNSIGNED } }
- { name: 'ADMIN', type: String, length: 4 }
I'm trying to read it through set payload set payload screenshot
And then I'm trying it through dataweave script
%dw 2.0
output application/json
---
payload map ( payload01 , indexOfPayload01 ) -> {
Wards: {
"Basic-Info": {
Name: payload01.WARDS."BASIC-INFO".NAME default "",
Address: payload01.WARDS."BASIC-INFO".ADDRESS default "",
Number: payload01.WARDS."BASIC-INFO".NUMBER default 0,
Admin: payload01.WARDS."BASIC-INFO".ADMIN default ""
}
}
}
But i'm getting below error
""java.lang.IllegalStateException - Structure WARDS not defined in schema
java.lang.IllegalStateException: Structure WARDS not defined in schema
at org.mule.weave.v2.module.flatfile.FlatFileSettings.getStructure(FlatFileSettings.scala:131)
at org.mule.weave.v2.module.flatfile.FlatFileReader.ffParser(FlatFileReader.scala:50)
at org.mule.weave.v2.module.flatfile.FlatFileReader.doRead(FlatFileReader.scala:63)
at org.mule.weave.v2.module.reader.Reader.read(Reader.scala:35)
at org.mule.weave.v2.module.reader.Reader.read$(Reader.scala:33)
at org.mule.weave.v2.module.flatfile.FlatFileReader.read(FlatFileReader.scala:22)
at org.mule.weave.v2.el.MuleTypedValue.value(MuleTypedValue.scala:147)
at org.mule.weave.v2.model.values.wrappers.DelegateValue.valueType(DelegateValue.scala:17)
at org.mule.weave.v2.model.values.wrappers.DelegateValue.valueType$(DelegateValue.scala:16)
at org.mule.weave.v2.el.MuleTypedValue.valueType(MuleTypedValue.scala:177)
at org.mule.weave.v2.model.types.ArrayType.accepts(Type.scala:634)
at org.mule.weave.v2.interpreted.node.executors.BinaryOverloadedStaticExecutor.findMatchingFunction(BinaryOverloadedStaticExecutor.scala:151)
at org.mule.weave.v2.interpreted.node.executors.BinaryOverloadedStaticExecutor.executeBinary(BinaryOverloadedStaticExecutor.scala:78)
at org.mule.weave.v2.interpreted.node.executors.BinaryStaticOverloadedFunctionExecutor.executeBinary(BinaryOverloadedStaticExecutor.scala:222)
at org.mule.weave.v2.interpreted.node.BinaryFunctionCallNode.doExecute(FunctionCallNode.scala:81)
at org.mule.weave.v2.interpreted.node.ValueNode.execute(ValueNode.scala:26)
at org.mule.weave.v2.interpreted.node.ValueNode.execute$(ValueNode.scala:21)
at org.mule.weave.v2.interpreted.node.BinaryFunctionCallNode.execute(FunctionCallNode.scala:78)
at org.mule.weave.v2.interpreted.node.structure.DocumentNode.doExecute(DocumentNode.scala:26)
at org.mule.weave.v2.interpreted.node.ValueNode.execute(ValueNode.scala:26)
at org.mule.weave.v2.interpreted.node.ValueNode.execute$(ValueNode.scala:21)
at org.mule.weave.v2.interpreted.node.structure.DocumentNode.execute(DocumentNode.scala:11)
at org.mule.weave.v2.interpreted.InterpretedMappingExecutableWeave.$anonfun$writeWith$3(InterpreterMappingCompilerPhase.scala:264)
at org.mule.weave.v2.module.writer.WriterHelper$.writeValue(Writer.scala:161)
at org.mule.weave.v2.module.writer.WriterHelper$.writeAndGetResult(Writer.scala:139)
at org.mule.weave.v2.interpreted.InterpretedMappingExecutableWeave.writeWith(InterpreterMappingCompilerPhase.scala:264)
at org.mule.weave.v2.el.WeaveExpressionLanguageSession.evaluateWithTimeout(WeaveExpressionLanguageSession.scala:311)
at org.mule.weave.v2.el.WeaveExpressionLanguageSession.$anonfun$evaluate$3(WeaveExpressionLanguageSession.scala:120)
at org.mule.weave.v2.el.WeaveExpressionLanguageSession.doEvaluate(WeaveExpressionLanguageSession.scala:268)
at org.mule.weave.v2.el.WeaveExpressionLanguageSession.evaluate(WeaveExpressionLanguageSession.scala:119)
at org.mule.runtime.core.internal.el.dataweave.DataWeaveExpressionLanguageAdaptor$1.evaluate(DataWeaveExpressionLanguageAdaptor.java:311)
at org.mule.runtime.core.internal.el.DefaultExpressionManagerSession.evaluate(DefaultExpressionManagerSession.java:105)
at com.mulesoft.mule.runtime.core.internal.processor.SetPayloadTransformationTarget.process(SetPayloadTransformationTarget.java:32)
at com.mulesoft.mule.runtime.core.internal.processor.TransformMessageProcessor.lambda$0(TransformMessageProcessor.java:92)
at java.util.Optional.ifPresent(Optional.java:159)
at com.mulesoft.mule.runtime.core.internal.processor.TransformMessageProcessor.process(TransformMessageProcessor.java:92)
at org.mule.runtime.core.api.util.func.CheckedFunction.apply(CheckedFunction.java:25)
at org.mule.runtime.core.api.rx.Exceptions.lambda$checkedFunction$2(Exceptions.java:85)
at org.mule.runtime.core.internal.util.rx.Operators.lambda$nullSafeMap$0(Operators.java:47)
at reactor.core.publisher.FluxHandleFuseable$HandleFuseableSubscriber.onNext(FluxHandleFuseable.java:165)
at org.mule.runtime.core.privileged.processor.chain.AbstractMessageProcessorChain$2.onNext(AbstractMessageProcessorChain.java:527)
at org.mule.runtime.core.privileged.processor.chain.AbstractMessageProcessorChain$2.onNext(AbstractMessageProcessorChain.java:522)
at reactor.core.publisher.FluxHide$SuppressFuseableSubscriber.onNext(FluxHide.java:127)
at reactor.core.publisher.FluxPeekFuseable$PeekFuseableSubscriber.onNext(FluxPeekFuseable.java:204)
at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onNext(FluxOnAssembly.java:351)
at reactor.core.publisher.FluxSubscribeOnValue$ScheduledScalar.run(FluxSubscribeOnValue.java:178)
at reactor.core.scheduler.SchedulerTask.call(SchedulerTask.java:50)
at reactor.core.scheduler.SchedulerTask.call(SchedulerTask.java:27)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at org.mule.service.scheduler.internal.AbstractRunnableFutureDecorator.doRun(AbstractRunnableFutureDecorator.java:151)
at org.mule.service.scheduler.internal.RunnableFutureDecorator.run(RunnableFutureDecorator.java:54)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:750), while reading `payload` as FlatFile.
Trace:
at main (Unknown)" evaluating expression: "%dw 2.0
output application/json
---
payload map ( payload01 , indexOfPayload01 ) -> {
Wards: {
"Basic-Info": {
Name: payload01.WARDS."BASIC-INFO".NAME default "",
Address: payload01.WARDS."BASIC-INFO".ADDRESS default "",
Number: payload01.WARDS."BASIC-INFO".NUMBER default 0,
Admin: payload01.WARDS."BASIC-INFO".ADMIN default ""
}
}
}"."
Am i doing something wrong? I just want to read the string and convert it into JSON object like the schema.
Am i doing something wrong? I just want to read the string and convert it into JSON object like the schema.
Upvotes: 0
Views: 207
Reputation: 11
The structureIdent
property is used to identify a specific structure in FLATFILE form schemas. For FIXEDWIDTH or Cobol COPYBOOK schemas you should use the segmentIdent
property.
Upvotes: 1