Support Article
Create REST Integration wizard throws NPE while generating rules
SA-85779
Summary
On using the below sample JSON in the Create Integration wizard to generate the Data Model to send JSON requests, the wizard displays a NullPointerException.
{
"accountNonMonDetailsRequest":{
"nonMonDetailsRequest":{
"clientSource":"R",
"requestAction":"R",
"requestFunction":"A",
"requestDetails":{
"accountNumber":"1234567890",
"numberOfDays":0,
"numberOfMonths":0,
"transactionCodeGroup":{
"transactionCode":[
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
""
]
}
},
"pagingDetails":{
"numberOfRows":"",
"startRow":"",
"endRow":"",
"startKeyGroup":{
"startKey":""
},
"endKeyGroup":{
"endKey":""
}
}
}
}
}
Error Messages
[WebContainer : 431] [TABTHREAD2] [PEGCustSvc:01.30.01] (internal.util.PRServiceUtils) ERROR xxxx.xxx-xxx.xxx|xx.xx.xxx.xxx Pega01 - Rule Generator thrown exception:
java.lang.NullPointerException
at com.pega.pegarules.integration.config.internal.mapping.RuleGeneratorREST.addRequestDTSteps(RuleGeneratorREST.java:767)
at com.pega.pegarules.integration.config.internal.mapping.RuleGeneratorREST.addRequestDTSteps(RuleGeneratorREST.java:826)
at com.pega.pegarules.integration.config.internal.mapping.RuleGeneratorREST.addRequestDTSteps(RuleGeneratorREST.java:808)
at com.pega.pegarules.integration.config.internal.mapping.RuleGeneratorREST.addRequestDTSteps(RuleGeneratorREST.java:808)
at com.pega.pegarules.integration.config.internal.mapping.RuleGeneratorREST.addRequestDTSteps(RuleGeneratorREST.java:808)
at com.pega.pegarules.integration.config.internal.mapping.RuleGeneratorREST.addRequestDTSteps(RuleGeneratorREST.java:808)
at com.pega.pegarules.integration.config.internal.mapping.RuleGeneratorREST.addRequestDataTransformInfo(RuleGeneratorREST.java:528)
at com.pega.pegarules.integration.config.internal.mapping.RuleGeneratorREST.addDataPageInfoForREST(RuleGeneratorREST.java:411)
at com.pega.pegarules.integration.config.internal.mapping.RuleGeneratorREST.processConnectorMetadata(RuleGeneratorREST.java:193)
at com.pega.pegarules.integration.config.internal.mapping.RuleGeneratorREST.generateRules(RuleGeneratorREST.java:160)
at com.pega.pegarules.integration.config.internal.mapping.RuleGeneratorREST.evaluateRules(RuleGeneratorREST.java:132)
at com.pega.pegarules.integration.engine.internal.util.PRServiceUtils.generateRulesFromMetadata(PRServiceUtils.java:1665)
at com.pega.pegarules.integration.engine.internal.util.PRServiceUtils.evaluateRulesFromMetadata(PRServiceUtils.java:1747)
at com.pegarules.generated.activity.ra_action_pzevaluaterules_741023a7c733dbad47a0375bb3f8491a.step4_circum0(ra_action_pzevaluaterules_741023a7c733dbad47a0375bb3f8491a.java:428)
at com.pegarules.generated.activity.ra_action_pzevaluaterules_741023a7c733dbad47a0375bb3f8491a.perform(ra_action_pzevaluaterules_741023a7c733dbad47a0375bb3f8491a.java:130)
at com.pega.pegarules.session.internal.mgmt.Executable.doActivity(Executable.java:3375)
at com.pega.pegarules.exec.internal.declare.infengine.pages.DeclarativePageDirectoryImpl.runRule(DeclarativePageDirectoryImpl.java:918)
at com.pega.pegarules.exec.internal.declare.infengine.pages.DeclarativePageDirectoryImpl.runLoadActivity(DeclarativePageDirectoryImpl.java:440)
at com.pega.pegarules.session.internal.mgmt.base.handler.ReadOnlyDataPageHandler.loadDataPage(ReadOnlyDataPageHandler.java:235)
at com.pega.pegarules.session.internal.mgmt.base.handler.ReadOnlyDataPageHandler.findDataPage(ReadOnlyDataPageHandler.java:382)
at com.pega.pegarules.session.internal.mgmt.base.AbstractPageDirectory.findDataPageInCurrentDir(AbstractPageDirectory.java:893)
at com.pega.pegarules.session.internal.mgmt.base.AbstractPageDirectory.getDirectPage(AbstractPageDirectory.java:658)
at com.pega.pegarules.session.internal.mgmt.base.ThreadPageDir.getDirectPage(ThreadPageDir.java:473)
at com.pega.pegarules.session.internal.mgmt.base.ThreadPageDir.getPage(ThreadPageDir.java:431)
at com.pega.pegarules.session.internal.mgmt.base.ThreadPageDir.getPage(ThreadPageDir.java:423)
at com.pega.pegarules.session.internal.mgmt.PRThreadImpl.getPage(PRThreadImpl.java:508)
at com.pega.pegarules.data.internal.clipboard.PropertyReferenceImpl.getTopPage(PropertyReferenceImpl.java:2192)
at com.pega.pegarules.data.internal.clipboard.PropertyReferenceImpl.getTopPage(PropertyReferenceImpl.java:2136)
at com.pega.pegarules.data.internal.clipboard.PropertyReferenceImpl.resolveEmbeddedPages(PropertyReferenceImpl.java:1817)
at com.pega.pegarules.data.internal.clipboard.PropertyReferenceImpl.doGet(PropertyReferenceImpl.java:1392)
at com.pega.pegarules.data.internal.clipboard.PropertyReferenceImpl.doGet(PropertyReferenceImpl.java:1372)
at com.pega.pegarules.data.internal.clipboard.PropertyReferenceImpl.doGet(PropertyReferenceImpl.java:1356)
at com.pega.pegarules.data.internal.clipboard.PropertyReferenceImpl.get(PropertyReferenceImpl.java:1182)
at com.pega.pegarules.session.internal.mgmt.Executable.getProperty(Executable.java:2241)
at com.pegarules.generated.html_section.ra_stream_pzgenerationpreview_9548810b83796779662d325e8f7750cc.gridBeginLayout_2(ra_stream_pzgenerationpreview_9548810b83796779662d325e8f7750cc.java:379)
at com.pegarules.generated.html_section.ra_stream_pzgenerationpreview_9548810b83796779662d325e8f7750cc.pzLayoutBodyWrapper_2(ra_stream_pzgenerationpreview_9548810b83796779662d325e8f7750cc.java:253)
at com.pegarules.generated.html_section.ra_stream_pzgenerationpreview_9548810b83796779662d325e8f7750cc.pzLayout_1(ra_stream_pzgenerationpreview_9548810b83796779662d325e8f7750cc.java:714)
at com.pegarules.generated.html_section.ra_stream_pzgenerationpreview_9548810b83796779662d325e8f7750cc.pzSectionBody_1(ra_stream_pzgenerationpreview_9548810b83796779662d325e8f7750cc.java:244)
at com.pegarules.generated.html_section.ra_stream_pzgenerationpreview_9548810b83796779662d325e8f7750cc.execute(ra_stream_pzgenerationpreview_9548810b83796779662d325e8f7750cc.java:100)
at com.pega.pegarules.session.internal.mgmt.Executable.getStream(Executable.java:3908)
at com.pega.pegarules.session.internal.mgmt.autostreams.AutoStreamRuleRuntime.getSectionStream(AutoStreamRuleRuntime.java:149)
Steps to Reproduce
- Run the Create REST Integration wizard.
- Use the provided JSON file to create the Request Data Model for the Connect-REST Integration.
Root Cause
A defect in Pegasystems’ code or rules.
Some valid JSON constructs cause issues with older versions of the REST Import wizard.
Resolution
Perform the following local-change:
- Remove the array of empty string values from the sample JSON as below:
{
"accountNonMonDetailsRequest":{
"nonMonDetailsRequest":{
"clientSource":"R",
"requestAction":"R",
"requestFunction":"A",
"requestDetails":{
"accountNumber":"1234567890",
"numberOfDays":0,
"numberOfMonths":0,
"transactionCodeGroup":{
"transactionCode":[
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
""
]
}
},
"pagingDetails":{
"numberOfRows":"",
"startRow":"",
"endRow":"",
"startKeyGroup":{
"startKey":""
},
"endKeyGroup":{
"endKey":""
}
}
}
}
}
- Run the REST wizard using the updated sample JSON response file.
- After generating the data source, manually convert the transactionCode text property to a page list property of type SingleValue-Text.
Published September 6, 2019 - Updated October 8, 2020
Have a question? Get answers now.
Visit the Collaboration Center to ask questions, engage in discussions, share ideas, and help others.