0

Good day,

Here is the code inside my java.util.ArrayList:

@Override
public boolean addAll(Collection<? extends E> collection) {
    int localLastIndex = lastIndex;
    Object[] dumpArray = collection.toArray();
    if (dumpArray.length == 0) { /this is line 244
        return false;
    }
    if (dumpArray.length > array.length - localLastIndex) { //this is line 247
        localLastIndex = growAtEnd(dumpArray.length, localLastIndex);
    }
    System.arraycopy(dumpArray, 0, this.array, localLastIndex,
            dumpArray.length);
    localLastIndex += dumpArray.length;
    modCount++;
    lastIndex = localLastIndex;
    return true;
}

And here is my error log: I'm getting a null pointer exception.

java.lang.NullPointerException: null
    at java.util.ArrayList.addAll(ArrayList.java:247) ~[na:na]

At line 247, I believe dumpArray will not be null, if it is null, then it will hit null pointer exception early at line 244 because the line already uses dumpArray.

If dumpArray is null, why is addAll() throwing the exception at line 247 if it could have thrown the exception earlier? That is, if dumpArray is null, then shouldn't

    if (dumpArray.length == 0) { /this is line 244

already have thrown the exception?

Here is my code:

    List< FixedDepositReceiptDetail > receipts = new ArrayList< FixedDepositReceiptDetail >( );

    while ( response.isMoreRecords( ) ) {
       receipts.addAll( response.getReceipts( ) );
    }

here is my full stacktrace:

java.lang.NullPointerException: null
    at java.util.ArrayList.addAll(ArrayList.java:247) ~[na:na]
    at com.cv.ibs.cib.eai.impl.AccountQueryServiceImpl.getFixedDepositDetail(AccountQueryServiceImpl.java:239) ~[com.cv.ibs.cib.jar:na]
    at com.cv.ibs.cib.eai.impl.AccountQueryServiceImpl.getAccountDetail(AccountQueryServiceImpl.java:158) ~[com.cv.ibs.cib.jar:na]
    at com.cv.ibs.cib.app.account.command.AccountDetailsCommandHandler.execute(AccountDetailsCommandHandler.java:57) ~[com.cv.ibs.cib.jar:na]
    at com.cv.ibs.cib.app.account.command.AccountDetailsCommandHandler.execute(AccountDetailsCommandHandler.java:1) ~[com.cv.ibs.cib.jar:na]
    at com.cv.common.command.CommandExecutor.doExecute(CommandExecutor.java:50) ~[com.cv.common.jar:na]
    at com.cv.common.command.CommandExecutor.execute(CommandExecutor.java:44) ~[com.cv.common.jar:na]
    at com.cv.common.command.LocalCommandHandler.execute(LocalCommandHandler.java:46) ~[com.cv.common.jar:na]
    at com.cv.common.command.LocalCommandHandler.execute(LocalCommandHandler.java:1) ~[com.cv.common.jar:na]
    at com.cv.common.command.CommandTemplate.execute(CommandTemplate.java:33) ~[com.cv.common.jar:na]
    at com.cv.ibs.cib.app.account.ui.AbstractAccountAction.detail(AbstractAccountAction.java:408) ~[com.cv.ibs.cib.jar:na]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.6.0]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:60) ~[na:1.6.0]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37) ~[na:1.6.0]
    at java.lang.reflect.Method.invoke(Method.java:611) ~[na:1.6.0]
    at net.sourceforge.stripes.controller.DispatcherHelper$6.intercept(DispatcherHelper.java:442) ~[stripes-1.5_cv.jar:955]
    at net.sourceforge.stripes.controller.ExecutionContext.proceed(ExecutionContext.java:158) ~[stripes-1.5_cv.jar:955]
    at com.cv.ibs.cib.common.ui.interceptor.JSTokenInterceptor.intercept(JSTokenInterceptor.java:60) ~[com.cv.ibs.cib.common.jar:na]
    at net.sourceforge.stripes.controller.ExecutionContext.proceed(ExecutionContext.java:155) ~[stripes-1.5_cv.jar:955]
    at org.stripesstuff.plugin.session.SessionStoreInterceptor.intercept(SessionStoreInterceptor.java:52) ~[stripesstuff-0.1.jar:74M]
    at net.sourceforge.stripes.controller.ExecutionContext.proceed(ExecutionContext.java:155) ~[stripes-1.5_cv.jar:955]
    at com.cv.ibs.cib.audit.ui.interceptor.BaseAuditLogInterceptor.intercept(BaseAuditLogInterceptor.java:109) ~[com.cv.ibs.cib.jar:na]
    at net.sourceforge.stripes.controller.ExecutionContext.proceed(ExecutionContext.java:155) ~[stripes-1.5_cv.jar:955]
    at com.cv.ibs.cib.audit.ui.interceptor.BaseAuditLogInterceptor.intercept(BaseAuditLogInterceptor.java:109) ~[com.cv.ibs.cib.jar:na]
    at net.sourceforge.stripes.controller.ExecutionContext.proceed(ExecutionContext.java:155) ~[stripes-1.5_cv.jar:955]
    at com.cv.ibs.cib.audit.ui.interceptor.BaseAuditLogInterceptor.intercept(BaseAuditLogInterceptor.java:109) ~[com.cv.ibs.cib.jar:na]
    at net.sourceforge.stripes.controller.ExecutionContext.proceed(ExecutionContext.java:155) ~[stripes-1.5_cv.jar:955]
    at com.cv.ibs.cib.common.ui.interceptor.TokenInterceptor.intercept(TokenInterceptor.java:122) ~[com.cv.ibs.cib.common.jar:na]
    at net.sourceforge.stripes.controller.ExecutionContext.proceed(ExecutionContext.java:155) ~[stripes-1.5_cv.jar:955]
    at net.sourceforge.stripes.controller.BeforeAfterMethodInterceptor.intercept(BeforeAfterMethodInterceptor.java:113) ~[stripes-1.5_cv.jar:955]
    at net.sourceforge.stripes.controller.ExecutionContext.proceed(ExecutionContext.java:155) ~[stripes-1.5_cv.jar:955]
    at net.sourceforge.stripes.controller.ExecutionContext.wrap(ExecutionContext.java:74) ~[stripes-1.5_cv.jar:955]
    at net.sourceforge.stripes.controller.DispatcherHelper.invokeEventHandler(DispatcherHelper.java:440) ~[stripes-1.5_cv.jar:955]
    at net.sourceforge.stripes.controller.DispatcherServlet.invokeEventHandler(DispatcherServlet.java:285) ~[stripes-1.5_cv.jar:955]
    at net.sourceforge.stripes.controller.DispatcherServlet.doPost(DispatcherServlet.java:167) ~[stripes-1.5_cv.jar:955]
    at net.sourceforge.stripes.controller.DispatcherServlet.doGet(DispatcherServlet.java:67) ~[stripes-1.5_cv.jar:955]
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:575) ~[javax.j2ee.servlet.jar:na]
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:668) ~[javax.j2ee.servlet.jar:na]
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1230) ~[com.ibm.ws.webcontainer.jar:na]
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:779) ~[com.ibm.ws.webcontainer.jar:na]
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:478) ~[com.ibm.ws.webcontainer.jar:na]
    at com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.handleRequest(ServletWrapperImpl.java:178) ~[com.ibm.ws.webcontainer.jar:na]
    at com.ibm.ws.webcontainer.filter.WebAppFilterChain.invokeTarget(WebAppFilterChain.java:136) [com.ibm.ws.webcontainer.jar:na]
    at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:97) [com.ibm.ws.webcontainer.jar:na]
    at net.sourceforge.stripes.controller.StripesFilter.doFilter(StripesFilter.java:246) ~[stripes-1.5_cv.jar:955]
    at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:195) ~[com.ibm.ws.webcontainer.jar:na]
    at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:91) [com.ibm.ws.webcontainer.jar:na]
    at net.sourceforge.stripes.controller.StripesFilter.doFilter(StripesFilter.java:246) ~[stripes-1.5_cv.jar:955]
    at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:195) ~[com.ibm.ws.webcontainer.jar:na]
    at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:91) [com.ibm.ws.webcontainer.jar:na]
    at com.opensymphony.sitemesh.webapp.SiteMeshFilter.obtainContent(SiteMeshFilter.java:129) [sitemesh-2.4.2.jar:na]
    at com.opensymphony.sitemesh.webapp.SiteMeshFilter.doFilter(SiteMeshFilter.java:77) [sitemesh-2.4.2.jar:na]
    at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:195) ~[com.ibm.ws.webcontainer.jar:na]
    at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:91) [com.ibm.ws.webcontainer.jar:na]
    at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:399) [spring-security-core-2.0.7.RELEASE.jar:na]
    at org.springframework.security.intercept.web.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:109) [spring-security-core-2.0.7.RELEASE.jar:na]
    at org.springframework.security.intercept.web.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83) [spring-security-core-2.0.7.RELEASE.jar:na]
    at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:411) [spring-security-core-2.0.7.RELEASE.jar:na]
    at org.springframework.security.ui.SessionFixationProtectionFilter.doFilterHttp(SessionFixationProtectionFilter.java:67) [spring-security-core-2.0.7.RELEASE.jar:na]
    at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53) [spring-security-core-2.0.7.RELEASE.jar:na]
    at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:411) [spring-security-core-2.0.7.RELEASE.jar:na]
    at org.springframework.security.ui.ExceptionTranslationFilter.doFilterHttp(ExceptionTranslationFilter.java:101) [spring-security-core-2.0.7.RELEASE.jar:na]
    at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53) [spring-security-core-2.0.7.RELEASE.jar:na]
    at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:411) [spring-security-core-2.0.7.RELEASE.jar:na]
    at org.springframework.security.wrapper.SecurityContextHolderAwareRequestFilter.doFilterHttp(SecurityContextHolderAwareRequestFilter.java:91) [spring-security-core-2.0.7.RELEASE.jar:na]
    at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53) [spring-security-core-2.0.7.RELEASE.jar:na]
    at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:411) [spring-security-core-2.0.7.RELEASE.jar:na]
    at org.springframework.security.ui.basicauth.BasicProcessingFilter.doFilterHttp(BasicProcessingFilter.java:174) [spring-security-core-2.0.7.RELEASE.jar:na]
    at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53) [spring-security-core-2.0.7.RELEASE.jar:na]
    at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:411) [spring-security-core-2.0.7.RELEASE.jar:na]
    at com.cv.ibs.cib.common.security.filter.AOBAuthenticationProcessFilter.doFilterHttp(AOBAuthenticationProcessFilter.java:99) [com.cv.ibs.cib.jar:na]
    at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53) [spring-security-core-2.0.7.RELEASE.jar:na]
    at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:411) [spring-security-core-2.0.7.RELEASE.jar:na]
    at org.springframework.security.ui.logout.LogoutFilter.doFilterHttp(LogoutFilter.java:89) [spring-security-core-2.0.7.RELEASE.jar:na]
    at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53) [spring-security-core-2.0.7.RELEASE.jar:na]
    at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:411) [spring-security-core-2.0.7.RELEASE.jar:na]
    at com.cv.ibs.cib.common.security.context.SecurityContextDetailsFilter.doFilterHttp(SecurityContextDetailsFilter.java:44) [com.cv.ibs.cib.jar:na]
    at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53) [spring-security-core-2.0.7.RELEASE.jar:na]
    at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:411) [spring-security-core-2.0.7.RELEASE.jar:na]
    at org.springframework.security.context.HttpSessionContextIntegrationFilter.doFilterHttp(HttpSessionContextIntegrationFilter.java:235) [spring-security-core-2.0.7.RELEASE.jar:na]
    at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53) [spring-security-core-2.0.7.RELEASE.jar:na]
    at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:411) [spring-security-core-2.0.7.RELEASE.jar:na]
    at org.springframework.security.util.FilterChainProxy.doFilter(FilterChainProxy.java:188) [spring-security-core-2.0.7.RELEASE.jar:na]
    at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237) [org.springframework.web-3.0.4.RELEASE.jar:3.0.4.RELEASE]
    at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167) [org.springframework.web-3.0.4.RELEASE.jar:3.0.4.RELEASE]
    at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:195) ~[com.ibm.ws.webcontainer.jar:na]
    at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:91) [com.ibm.ws.webcontainer.jar:na]
    at com.cv.ibs.cib.common.ui.filter.MetaContextFactoryFilter.doFilter(MetaContextFactoryFilter.java:61) [com.cv.ibs.cib.jar:na]
    at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:195) ~[com.ibm.ws.webcontainer.jar:na]
    at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:91) [com.ibm.ws.webcontainer.jar:na]
    at org.displaytag.filter.ResponseOverrideFilter.doFilter(ResponseOverrideFilter.java:125) [displaytag-1.2.jar:na]
    at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:195) ~[com.ibm.ws.webcontainer.jar:na]
    at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:91) [com.ibm.ws.webcontainer.jar:na]
    at com.cv.common.web.filter.NoCacheFilter.doFilter(NoCacheFilter.java:65) [com.cv.common.jar:na]
    at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:195) ~[com.ibm.ws.webcontainer.jar:na]
    at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:91) [com.ibm.ws.webcontainer.jar:na]
    at com.cv.common.web.filter.NoCacheFilter.doFilter(NoCacheFilter.java:65) [com.cv.common.jar:na]
    at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:195) ~[com.ibm.ws.webcontainer.jar:na]
    at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:91) [com.ibm.ws.webcontainer.jar:na]
    at com.cv.ibs.cib.common.ui.filter.MDCInfoCaptureFilter.doFilter(MDCInfoCaptureFilter.java:92) [com.cv.ibs.cib.common.jar:na]
    at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:195) ~[com.ibm.ws.webcontainer.jar:na]
    at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:91) [com.ibm.ws.webcontainer.jar:na]
    at com.cv.ibs.cib.common.ui.filter.MDCInfoCaptureFilter.doFilter(MDCInfoCaptureFilter.java:92) [com.cv.ibs.cib.common.jar:na]
    at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:195) ~[com.ibm.ws.webcontainer.jar:na]
    at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:91) [com.ibm.ws.webcontainer.jar:na]
    at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:960) [com.ibm.ws.webcontainer.jar:na]
    at com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:1064) [com.ibm.ws.webcontainer.jar:na]
    at com.ibm.ws.webcontainer.servlet.CacheServletWrapper.handleRequest(CacheServletWrapper.java:87) [com.ibm.ws.webcontainer.jar:na]
    at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:914) [com.ibm.ws.webcontainer.jar:na]
    at com.ibm.ws.webcontainer.WSWebContainer.handleRequest(WSWebContainer.java:1662) [com.ibm.ws.webcontainer.jar:na]
    at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:200) [com.ibm.ws.webcontainer.jar:na]
    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:461) [com.ibm.ws.runtime.jar:na]
    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewRequest(HttpInboundLink.java:528) [com.ibm.ws.runtime.jar:na]
    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.processRequest(HttpInboundLink.java:314) [com.ibm.ws.runtime.jar:na]
    at com.ibm.ws.http.channel.inbound.impl.HttpICLReadCallback.complete(HttpICLReadCallback.java:88) [com.ibm.ws.runtime.jar:na]
    at com.ibm.ws.ssl.channel.impl.SSLReadServiceContext$SSLReadCompletedCallback.complete(SSLReadServiceContext.java:1818) [com.ibm.ws.runtime.jar:na]
    at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:175) [com.ibm.ws.runtime.jar:na]
    at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217) [com.ibm.ws.runtime.jar:na]
    at com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161) [com.ibm.ws.runtime.jar:na]
    at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:138) [com.ibm.ws.runtime.jar:na]
    at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:204) [com.ibm.ws.runtime.jar:na]
    at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:775) [com.ibm.ws.runtime.jar:na]
    at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:905) [com.ibm.ws.runtime.jar:na]
    at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1864) [com.ibm.ws.runtime.jar:na]

Kindly advise.

lightning_missile
  • 2,821
  • 5
  • 30
  • 58
Panadol Chong
  • 1,793
  • 13
  • 54
  • 119
  • 2
    What JDK implementation are you using? – haggisandchips Jun 06 '16 at 10:01
  • 2
    Can you post the code that initialises your arraylist? – lightning_missile Jun 06 '16 at 10:04
  • where and how is `array` initialized? – Hazim Jun 06 '16 at 10:08
  • Also, it seems you didn't read the rest of the stacktrace. I'm pretty sure java.util.ArrayList is not the real cause. – lightning_missile Jun 06 '16 at 10:13
  • @haggisandchips, I am using JDK 1.6 – Panadol Chong Jun 06 '16 at 10:17
  • @morbidCode, Just upload my code. – Panadol Chong Jun 06 '16 at 10:21
  • @Panadol Chong I mean your getReceipts() method code – lightning_missile Jun 06 '16 at 10:24
  • 1
    `if (dumpArray.length > array.length - localLastIndex) ` What is `array` in `array.length` ? I suspect this one is null – Bruno Grieder Jun 06 '16 at 10:24
  • @morbidCode, my getReceipts() method is just a simple get set method. As I know, even my getReceipts() method return null, I am suppose to hit error at line 243 instead of line 247, right? – Panadol Chong Jun 06 '16 at 10:31
  • @BrunoGrieder, the `array` is actually equal to `receipts` list object. If it is null, then I should hit null pointer exception at early, but not go in to `addAll()` method only hit null pointer exception. – Panadol Chong Jun 06 '16 at 10:32
  • @PanadolChong then if `array` is `receipts` why do you use `array`and not `this` in method `addAll` ? – Bruno Grieder Jun 06 '16 at 10:35
  • 1
    @Panadol Chong can you post the full stacktrace? – lightning_missile Jun 06 '16 at 10:37
  • 1
    Can you give the exact jdk version you are using? For example in jdk1.6.0_39 the line 247 of ArrayList.java is a comment line. – Thomas Kläger Jun 06 '16 at 10:47
  • 1
    I think you need to quote the JDK vendor as well - so far I cannot find the ArrayList source that relates to your question. – haggisandchips Jun 06 '16 at 11:03
  • 1
    Seems to be IBM implementation. By the way, I'm not sure that he deserves the downvotes... – Dani Jun 06 '16 at 11:14
  • 1
    @Dani agreed, but the question is a little bit unclear. I'll edit it. – lightning_missile Jun 06 '16 at 14:57
  • 1
    @Panadol Chong I tried to edit the question to make it clearer. Hope this helps you. – lightning_missile Jun 06 '16 at 15:08
  • @PanadolChong the likelihood there is a bug in the actual JDK ArrayList is astronomically low compared the probability of a bug in your code. Almost certainly, either your `ArrayList` is null or the thing you are passing to `addAll` is null. – Louis Wasserman Jun 06 '16 at 17:28
  • 1
    I have to agree with @louis-wasserman. Your use case suggests that this would be occurring regularly for thousands upon thousands of people. My suspicion is that you have the wrong source code and the passed collection is what is null. Have you tried debugging your code so that you can verify your source matches up and that would also allow you to verify the exception is being thrown at the line you think - or rather that line 247 is what you think it is. – haggisandchips Jun 06 '16 at 18:59
  • 2
    Probably you are looking at a version of `ArrayList.java` from a different release and the line numbers are of by 4, so that line 247 is `Object[] dumpArray = collection.toArray();`. A `NullPointerException` is thrown on this line if you pass `null` to `addAll` – Thomas Kläger Jun 06 '16 at 19:24

0 Answers0