При переходе с 6.0 на 6.1 в скрипте перестал работать метод updatePayment.
Выдаёт ошибку:
Код:
EXCEPTIONS:
Method Invocation bd.updatePayment
Method Invocation bd.updatePayment : at Line: 74 : in file: birthday_bonus : bd .updatePayment ( 0 , cid , payment )
Target exception: java.lang.NullPointerException
at bsh.BSHMethodInvocation.eval(BSHMethodInvocation.java:97)
at bsh.BSHPrimaryExpression.eval(BSHPrimaryExpression.java:102)
at bsh.BSHPrimaryExpression.eval(BSHPrimaryExpression.java:47)
at bsh.BSHBlock.evalBlock(BSHBlock.java:131)
at bsh.BSHBlock.eval(BSHBlock.java:81)
at bsh.BSHBlock.eval(BSHBlock.java:47)
at bsh.BSHIfStatement.eval(BSHIfStatement.java:48)
at bsh.BSHBlock.evalBlock(BSHBlock.java:131)
at bsh.BSHBlock.eval(BSHBlock.java:81)
at bsh.BSHBlock.eval(BSHBlock.java:47)
at bsh.BSHWhileStatement.eval(BSHWhileStatement.java:72)
at bsh.BSHBlock.evalBlock(BSHBlock.java:131)
at bsh.BSHBlock.eval(BSHBlock.java:81)
at bsh.BSHBlock.eval(BSHBlock.java:47)
at bsh.BSHTryStatement.eval(BSHTryStatement.java:86)
at bsh.BSHBlock.evalBlock(BSHBlock.java:131)
at bsh.BSHBlock.eval(BSHBlock.java:81)
at bsh.BshMethod.invokeImpl(BshMethod.java:362)
at bsh.BshMethod.invoke(BshMethod.java:258)
at bsh.BshMethod.invoke(BshMethod.java:186)
at bsh.This.invokeMethod(This.java:255)
at bsh.This.invokeMethod(This.java:174)
at ru.bitel.bgbilling.kernel.script.server.bean.ScriptInstance.invoke(ScriptInstance.java:390)
at bitel.billing.server.script.global.bean.GlobalScriptMachine.runScriptImpl(GlobalScriptMachine.java:131)
at bitel.billing.server.script.global.bean.GlobalScriptMachine.runScript(GlobalScriptMachine.java:73)
at bitel.billing.server.script.global.bean.GlobalScriptManager.executeGlobalScript(GlobalScriptManager.java:40)
at bitel.billing.server.script.global.action.ActionExecuteScript.doAction(ActionExecuteScript.java:32)
at bitel.billing.server.Executer.doModule(Unknown Source)
at bitel.billing.server.Executer$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:415)
at bitel.billing.server.Executer.doPost(Unknown Source)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at ru.bitel.common.server.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:50)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
Если вызвать метод один раз, то всё нормально -работает.
Если вызвать метод несколько раз подряд, хотя-бы два, то вылетает ошибка!
Скрипт начисляет бонусы договорам каждый день и если договоров на текущий день больше одного, то первому договору начисляет бонусы, а на следующем вылетает ошибка и начислений нет.
updatePayment стоит в цикле - по вызову на каждый договор.
Код:
BonusPayment payment = new BonusPayment( 0,
programId,
today.getTime(),
new BigDecimal(bonussum),
today.getTime(),
dateTo.getTime());
bd.updatePayment( 0, cid, payment);