java - NPE while testing -


i've got nullpointerexception on method teststartenbaledfeed on line of rssservicetest service.start(); , on line of rssservice job.addjobchangelistener(new jobchangeadapter() {

the key problem seems job.addchangelistener method called real. know how solve it? rssservicetest , rssservice classes listed below:

package org.eclipse.recommenders.internal.news.rcp;  import static org.hamcrest.corematchers.*; import static org.junit.assert.assertthat; import static org.mockito.mockito.*;  import org.eclipse.mylyn.commons.notifications.core.notificationenvironment; import org.junit.test; import org.junit.runner.runwith; import org.mockito.mockito; import org.mockito.runners.mockitojunitrunner;  import com.google.common.collect.immutablelist; import com.google.common.eventbus.eventbus;  @suppresswarnings("restriction") @runwith(mockitojunitrunner.class) public class rssservicetest {  private static final string first_element = "first"; private static final string second_element = "second";  @test public void teststartenabledfeed() {     feeddescriptor feed = feeddescriptorstest.enabled(first_element);     pollfeedjob job = mock(pollfeedjob.class);     jobprovider provider = mock(jobprovider.class);     newsrcppreferences preferences = mock(newsrcppreferences.class);     when(preferences.isenabled()).thenreturn(true);     when(preferences.getfeeddescriptors()).thenreturn(immutablelist.of(feed));     notificationenvironment environment = mock(notificationenvironment.class);     eventbus bus = mock(eventbus.class);     when(provider.getpollfeedjob(mockito.eq(feed), mockito.eq(preferences), mockito.eq(environment)))             .thenreturn(job);     rssservice service = new rssservice(preferences, bus, environment, provider);     assertthat(preferences, is(notnullvalue()));     assertthat(bus, is(notnullvalue()));     assertthat(environment, is(notnullvalue()));     assertthat(provider, is(notnullvalue()));     assertthat(job, is(notnullvalue()));     assertthat(feed, is(notnullvalue()));     assertthat(service, is(notnullvalue()));     service.start(); } } 

`

package org.eclipse.recommenders.internal.news.rcp;  import static java.lang.long.parselong; import static org.eclipse.recommenders.internal.news.rcp.feedevents.createnewfeeditemsevent; import java.util.hashmap; import java.util.list; import java.util.map; import java.util.set; import java.util.concurrent.timeunit;  import org.eclipse.core.runtime.jobs.ijobchangeevent; import org.eclipse.core.runtime.jobs.job; import org.eclipse.core.runtime.jobs.jobchangeadapter; import org.eclipse.mylyn.commons.notifications.core.notificationenvironment; import org.eclipse.recommenders.internal.news.rcp.feedevents.feedmessagereadevent; import org.eclipse.recommenders.news.rcp.ifeedmessage; import org.eclipse.recommenders.news.rcp.irssservice;  import com.google.common.base.function; import com.google.common.base.predicate; import com.google.common.collect.fluentiterable; import com.google.common.collect.immutablemap; import com.google.common.collect.lists; import com.google.common.collect.maps; import com.google.common.eventbus.eventbus; import com.google.common.eventbus.subscribe;  @suppresswarnings("restriction") public class rssservice implements irssservice {  private static final long default_delay = timeunit.days.tominutes(1); private static final long start_delay = 0;  private final newsrcppreferences preferences; private final eventbus bus; private final notificationenvironment environment; private final jobprovider provider;  private final set<string> readids;  private final hashmap<feeddescriptor, list<ifeedmessage>> groupedmessages = maps.newhashmap();  public rssservice(newsrcppreferences preferences, eventbus bus, notificationenvironment environment,         jobprovider provider) {     this.preferences = preferences;     this.bus = bus;     this.environment = environment;     this.provider = provider;     bus.register(this);      readids = readfeedmessagesproperties.getreadids(); }  @override public void start() {     (final feeddescriptor feed : preferences.getfeeddescriptors()) {         if (feed.isenabled()) {             start(feed);         }     } }  @override public void start(final feeddescriptor feed) {     // final pollfeedjob job = new pollfeedjob(feed, preferences, environment);     final pollfeedjob job = provider.getpollfeedjob(feed, preferences, environment);     job.setsystem(true);     job.setpriority(job.decorate);     job.addjobchangelistener(new jobchangeadapter() {         @override         public void done(ijobchangeevent event) {             boolean newmessage = false;             if (!groupedmessages.containskey(feed)) {                 groupedmessages.put(feed, lists.<ifeedmessage>newarraylist());             }             list<ifeedmessage> feedmessages = groupedmessages.get(feed);             (ifeedmessage message : job.getmessages()) {                 if (!feedmessages.contains(message)) {                     feedmessages.add(message);                     if (!readids.contains(message.getid())) {                         newmessage = true;                     }                 }             }              if (groupedmessages.size() > 0 && newmessage) {                 bus.post(createnewfeeditemsevent());             }              if (!preferences.isenabled() || !isfeedenabled(feed)) {                 return;             }             if (feed.getpollinginterval() != null) {                 job.schedule(timeunit.minutes.tomillis(parselong(feed.getpollinginterval())));                 return;             }             job.schedule(timeunit.minutes.tomillis(default_delay));         }     });      if (!provider.jobexists(feed, preferences, environment)) {         job.schedule(start_delay);     } }  @override public map<feeddescriptor, list<ifeedmessage>> getmessages(final int countperfeed) {     map<feeddescriptor, list<ifeedmessage>> transformedmap = maps.transformvalues(groupedmessages,             new function<list<ifeedmessage>, list<ifeedmessage>>() {                  @override                 public list<ifeedmessage> apply(list<ifeedmessage> input) {                     return fluentiterable.from(input).limit(countperfeed).filter(new predicate<ifeedmessage>() {                          @override                         public boolean apply(ifeedmessage input) {                             return !readids.contains(input.getid());                         }                     }).tolist();                 }             });     map<feeddescriptor, list<ifeedmessage>> filteredmap = maps.filtervalues(transformedmap,             new predicate<list<ifeedmessage>>() {                  @override                 public boolean apply(list<ifeedmessage> input) {                     if (input == null) {                         return false;                     }                     return !input.isempty();                 }              });     return immutablemap.copyof(filteredmap); }  private boolean isfeedenabled(feeddescriptor feed) {     (feeddescriptor fd : preferences.getfeeddescriptors()) {         if (feed.getid().equals(fd.getid())) {             return true;         }     }     return false; }  @subscribe public void handle(feedmessagereadevent event) {     readids.add(event.getid());     readfeedmessagesproperties.writereadids(readids); } } 

`

java.lang.nullpointerexception @ org.eclipse.core.internal.jobs.internaljob.addjobchangelistener(internaljob.java:161) @ org.eclipse.core.runtime.jobs.job.addjobchangelistener(job.java:182) @ org.eclipse.recommenders.internal.news.rcp.rssservice.start(rssservice.java:77) @ org.eclipse.recommenders.internal.news.rcp.rssservice.start(rssservice.java:66) @ org.eclipse.recommenders.internal.news.rcp.rssservicetest.teststartenabledfeed(rssservicetest.java:43) @ sun.reflect.nativemethodaccessorimpl.invoke0(native method) @ sun.reflect.nativemethodaccessorimpl.invoke(unknown source) @ sun.reflect.delegatingmethodaccessorimpl.invoke(unknown source) @ java.lang.reflect.method.invoke(unknown source) @ org.junit.runners.model.frameworkmethod$1.runreflectivecall(frameworkmethod.java:47) @ org.junit.internal.runners.model.reflectivecallable.run(reflectivecallable.java:12) @ org.junit.runners.model.frameworkmethod.invokeexplosively(frameworkmethod.java:44) @ org.junit.internal.runners.statements.invokemethod.evaluate(invokemethod.java:17) @ org.junit.runners.parentrunner.runleaf(parentrunner.java:271) @ org.junit.runners.blockjunit4classrunner.runchild(blockjunit4classrunner.java:70) @ org.junit.runners.blockjunit4classrunner.runchild(blockjunit4classrunner.java:50) @ org.junit.runners.parentrunner$3.run(parentrunner.java:238) @ org.junit.runners.parentrunner$1.schedule(parentrunner.java:63) @ org.junit.runners.parentrunner.runchildren(parentrunner.java:236) @ org.junit.runners.parentrunner.access$000(parentrunner.java:53) @ org.junit.runners.parentrunner$2.evaluate(parentrunner.java:229) @ org.junit.runners.parentrunner.run(parentrunner.java:309) @ org.mockito.internal.runners.junit45andhigherrunnerimpl.run(junit45andhigherrunnerimpl.java:37) @ org.mockito.runners.mockitojunitrunner.run(mockitojunitrunner.java:62) @ org.eclipse.jdt.internal.junit4.runner.junit4testreference.run(junit4testreference.java:50) @ org.eclipse.jdt.internal.junit.runner.testexecution.run(testexecution.java:38) @ org.eclipse.jdt.internal.junit.runner.remotetestrunner.runtests(remotetestrunner.java:459) @ org.eclipse.jdt.internal.junit.runner.remotetestrunner.runtests(remotetestrunner.java:675) @ org.eclipse.jdt.internal.junit.runner.remotetestrunner.run(remotetestrunner.java:382) @ org.eclipse.pde.internal.junit.runtime.remoteplugintestrunner.main(remoteplugintestrunner.java:62) @     org.eclipse.pde.internal.junit.runtime.platformuitestharness$1.run(platformuitestharness.java:47) @ org.eclipse.swt.widgets.runnablelock.run(runnablelock.java:35) @     org.eclipse.swt.widgets.synchronizer.runasyncmessages(synchronizer.java:136) @ org.eclipse.swt.widgets.display.runasyncmessages(display.java:4147) @ org.eclipse.swt.widgets.display.readanddispatch(display.java:3764) @ org.eclipse.jface.window.window.runeventloop(window.java:832) @ org.eclipse.jface.window.window.open(window.java:808) @ org.eclipse.jface.dialogs.messagedialog.open(messagedialog.java:341) @ org.eclipse.recommenders.internal.rcp.rcpmodule$2.run(rcpmodule.java:248) @ org.eclipse.swt.widgets.runnablelock.run(runnablelock.java:35) @     org.eclipse.swt.widgets.synchronizer.runasyncmessages(synchronizer.java:136) @ org.eclipse.swt.widgets.display.runasyncmessages(display.java:4147) @ org.eclipse.swt.widgets.display.readanddispatch(display.java:3764) @ org.eclipse.e4.ui.internal.workbench.swt.partrenderingengine$9.run(partrenderingengine.java:1151) @ org.eclipse.core.databinding.observable.realm.runwithdefault(realm.java:332) @ org.eclipse.e4.ui.internal.workbench.swt.partrenderingengine.run(partrenderingengine.java:1032) @ org.eclipse.e4.ui.internal.workbench.e4workbench.createandrunui(e4workbench.java:148) @ org.eclipse.ui.internal.workbench$5.run(workbench.java:636) @ org.eclipse.core.databinding.observable.realm.runwithdefault(realm.java:332) @ org.eclipse.ui.internal.workbench.createandrunworkbench(workbench.java:579) @ org.eclipse.ui.platformui.createandrunworkbench(platformui.java:150) @ org.eclipse.ui.internal.ide.application.ideapplication.start(ideapplication.java:135) @ org.eclipse.pde.internal.junit.runtime.nonuithreadtestapplication.runapp(nonuithreadtestapplication.java:54) @ org.eclipse.pde.internal.junit.runtime.uitestapplication.runapp(uitestapplication.java:47) @ org.eclipse.pde.internal.junit.runtime.nonuithreadtestapplication.start(nonuithreadtestapplication.java:48) @ org.eclipse.equinox.internal.app.eclipseapphandle.run(eclipseapphandle.java:196) @ org.eclipse.core.runtime.internal.adaptor.eclipseapplauncher.runapplication(eclipseapplauncher.java:134) @ org.eclipse.core.runtime.internal.adaptor.eclipseapplauncher.start(eclipseapplauncher.java:104) @ org.eclipse.core.runtime.adaptor.eclipsestarter.run(eclipsestarter.java:380) @ org.eclipse.core.runtime.adaptor.eclipsestarter.run(eclipsestarter.java:235) @ sun.reflect.nativemethodaccessorimpl.invoke0(native method) @ sun.reflect.nativemethodaccessorimpl.invoke(unknown source) @ sun.reflect.delegatingmethodaccessorimpl.invoke(unknown source) @ java.lang.reflect.method.invoke(unknown source) @ org.eclipse.equinox.launcher.main.invokeframework(main.java:648) @ org.eclipse.equinox.launcher.main.basicrun(main.java:603) @ org.eclipse.equinox.launcher.main.run(main.java:1465) @ org.eclipse.equinox.launcher.main.main(main.java:1438) 

the first thing change

when(provider.getpollfeedjob(mockito.eq(feed), mockito.eq(preferences), mockito.eq(environment)))         .thenreturn(job); 

to

when(provider.getpollfeedjob(any(feeddescriptor.class), any(newsrcppreferences.class), any(notificationenvironment.class)))         .thenreturn(job); 

this ensure provider in fact giving mock job.

then add

donothing().when(job).addjobchangelistener(any(jobchangeadapter.class)); 

or can second 1 first. either way 2 things can try.


Comments

Popular posts from this blog

android - MPAndroidChart - How to add Annotations or images to the chart -

javascript - Add class to another page attribute using URL id - Jquery -

firefox - Where is 'webgl.osmesalib' parameter? -