Null Pointer Exception (503 Service Unavailabe)

json trades.json
Namespace(json=‘trades.json’)
http://localhost:8081/portfolio/analyze {
“name”: “Anand”,
“portfolioTrades”: [
{
“symbol”: “AAPL”,
“quantity”: 100,
“tradeType”: “BUY”,
“purchaseDate”: “2019-01-02”
},
{
“symbol”: “MSFT”,
“quantity”: 10,
“tradeType”: “BUY”,
“purchaseDate”: “2019-01-02”
},
{
“symbol”: “GOOGL”,
“quantity”: 50,
“tradeType”: “BUY”,
“purchaseDate”: “2019-01-02”
}
]
}
<Response [503]>
{
“timestamp”: “2020-03-12T20:32:13.248+0000”,
“status”: 503,
“error”: “Service Unavailable”,
“message”: “Provider error”,
“trace”: “org.springframework.web.server.ResponseStatusException: 503 SERVICE_UNAVAILABLE “Provider error”; nested exception is java.lang.NullPointerException\n\tat com.crio.stock.annualreturnapp.AnnualReturnsController.calculateReturns(AnnualReturnsController.java:46)\n\tat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n\tat sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.lang.reflect.Method.invoke(Method.java:498)\n\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190)\n\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138)\n\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:106)\n\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:888)\n\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:793)\n\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)\n\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040)\n\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)\n\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)\n\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)\n\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:660)\n\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)\n\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:741)\n\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)\n\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)\n\tat org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)\n\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)\n\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)\n\tat org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)\n\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)\n\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)\n\tat org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)\n\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)\n\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)\n\tat org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)\n\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)\n\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)\n\tat org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)\n\tat org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)\n\tat org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:526)\n\tat org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)\n\tat org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)\n\tat org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)\n\tat org.apache.catalina.valves.RemoteIpValve.invoke(RemoteIpValve.java:747)\n\tat org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)\n\tat org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:367)\n\tat org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)\n\tat org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:860)\n\tat org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1591)\n\tat org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)\n\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n\tat org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)\n\tat java.lang.Thread.run(Thread.java:748)\nCaused by: java.lang.NullPointerException\n\tat com.crio.stock.annualreturnapp.AnnualReturnsController.calculateReturns(AnnualReturnsController.java:40)\n\t… 51 more\n”,
“path”: “/portfolio/analyze”

My buildUri is correct and it is like:
protected String buildUri(String symbol, LocalDate startDate, LocalDate endDate) {

   String uriTemplate = "https://api.tiingo.com/tiingo/daily/" + symbol + "/prices?" 

        + "startDate=" + startDate.toString() + "&endDate=" + endDate.toString() + "&token=<MY TOKEN>";

   System.out.println(uriTemplate);

   return uriTemplate;

}
Anyone pls help me with this?

Hey, we do have potential FAQ on this, please go through this -

Also,

  • Just verify your logic
  • Make sure you are making the right API call

Hey @ndsingh , Probably you guys are comparing NULL string objects.

Hint: divider.compareIgnoreCase("bingo")
Chances are that divider object might be null!

stackoverflow.com

rockit

Why do I get a NullPointerException when comparing a String with null?

java, nullpointerexception

Hope this helps!!!

I have double checked the uribuilder still not able to resolve

check getStockQuote function it might possible that the array of tiingoCandle is empty , add a check for this condition ex:-
if (tiingoCandles != null) {
candles = Arrays.asList(tiingoCandles);
}
return candles;

let me check with this
!

Hey, was you issue resolved or you still facing issues with it?

No sir! I am still struggling

  • Since you are getting a 503 error then there is a probability that your try to hit the wrong endpoint/url. So it will not work when you try to hit it with RestTemplate.

  • Also use try catch for null pointer exception or simply throw the exeption

I don’t know how but this time I started once again and my issue is resolved now. Thanks everyone for the help!

Well done, Awesome! Good Luck for future modules :slight_smile:

Closing this topic as your issue has been resolved by the community.