Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

NullPointerExpection when trying to write an constrained condition-group #53

Open
NLueg opened this issue Oct 8, 2019 · 1 comment
Open
Assignees
Labels
bug Something isn't working parsing

Comments

@NLueg
Copy link
Contributor

NLueg commented Oct 8, 2019

Expected Behavior

In case of a falsy rule, I would expect to get a informative message.

Current Behavior

For following rule, I get a NullPointerExpection in the parsing-process

name must equals place or 

Here the stacktrace that I got:

io.openvalidation.common.utils.ThrowingConsumer.accept(ThrowingConsumer.java:29)
java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
io.openvalidation.antlr.transformation.TransformerBase.eachTreeChild(TransformerBase.java:50)
io.openvalidation.antlr.transformation.TransformerBase.eachTreeChild(TransformerBase.java:44)
io.openvalidation.antlr.transformation.parsetree.PTRuleConstrainedTransformer.transform(PTRuleConstrainedTransformer.java:62)
io.openvalidation.antlr.transformation.parsetree.PTRuleConstrainedTransformer.transform(PTRuleConstrainedTransformer.java:33)
io.openvalidation.antlr.transformation.TransformerBase.createASTItem(TransformerBase.java:64)
io.openvalidation.antlr.transformation.parsetree.PTModelTransformer.lambda$transform$1(PTModelTransformer.java:52)
io.openvalidation.common.utils.ThrowingConsumer.accept(ThrowingConsumer.java:27)
java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
io.openvalidation.antlr.transformation.TransformerBase.eachTreeChild(TransformerBase.java:50)
io.openvalidation.antlr.transformation.TransformerBase.eachTreeChild(TransformerBase.java:44)
io.openvalidation.antlr.transformation.parsetree.PTModelTransformer.transform(PTModelTransformer.java:45)
io.openvalidation.antlr.MainASTBuildListener.exitMain(MainASTBuildListener.java:45)
io.openvalidation.antlr.generated.mainParser$MainContext.exitRule(mainParser.java:143)
org.antlr.v4.runtime.Parser.triggerExitRuleEvent(Parser.java:408)
org.antlr.v4.runtime.Parser.exitRule(Parser.java:642)
io.openvalidation.antlr.generated.mainParser.main(mainParser.java:279)
io.openvalidation.antlr.ANTLRExecutor.run(ANTLRExecutor.java:52)
io.openvalidation.antlr.ANTLRExecutor.run(ANTLRExecutor.java:34)
io.openvalidation.antlr.OpenValidationANTLRParser.parse(OpenValidationANTLRParser.java:29)
io.openvalidation.core.Engine.parse(Engine.java:101)
io.openvalidation.core.Engine.generateCode(Engine.java:75)
io.openvalidation.core.OpenValidation.generateCode(OpenValidation.java:144)
io.openvalidation.core.OpenValidation.generateCode(OpenValidation.java:85)
io.openvalidation.core.OpenValidation.generate(OpenValidation.java:67)
io.openvalidation.rest.service.OpenValidationServiceImpl.generate(OpenValidationServiceImpl.java:46)
io.openvalidation.rest.controller.LintingController.generate(LintingController.java:50)
jdk.internal.reflect.GeneratedMethodAccessor99.invoke(Unknown Source)
java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.base/java.lang.reflect.Method.invoke(Method.java:566)
org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:189)
org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138)
org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:102)
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:892)
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:797)
org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1038)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:942)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1005)
org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:908)
javax.servlet.http.HttpServlet.service(HttpServlet.java:660)
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:882)
javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:200)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:200)
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:490)
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:408)
org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:834)
org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1415)
org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
java.base/java.lang.Thread.run(Thread.java:834)

Possible Solution

Complete the rule manually

Steps to Reproduce (for bugs)

  1. Parse the given rule with the culture en and the language Java

Context

I wanted to implement code-completion for constrained rules.
This is not possible with this error.

@NLueg NLueg added bug Something isn't working parsing labels Oct 8, 2019
@jages jages assigned jages and lionelpa and unassigned jages Jan 31, 2020
@jages
Copy link
Contributor

jages commented Jan 31, 2020

Another case for the need to improve error reporting on incomplete rules.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working parsing
Projects
None yet
Development

No branches or pull requests

3 participants