Moe, Are you using PlaceHistoryMapperWithFactory? If so, my best guess is that you're forgetting to call setFactory in your onModuleLoad():
AppPlaceHistoryMapper historyMapper = GWT.create(AppPlaceHistoryMapper.class); historyMapper.setFactory(ginjector.getAppPlaceFactory()); If that's not it, take a look at the generated code to see if you can figure out what exactly is null on that line (-gen compiler option). HTH. - Amir On Oct 23, 2:54 pm, moejo <mahamad.el.tan...@gmail.com> wrote: > Hi All, > > I'm working on getting an example together and I am having issues > setting up the injectors for the code you've suggested above (Amir, > david, Aodhagán). So far, I've setup everything as you've suggested > for the AppActivityMapper, AppPlaceFactory, AppPlaceHistoryMapper, > Places and ActivityPlace. However, I am obviously missing something > in the GIN module itself (apologize in advance, just started to use > GIN). > > The pages are changing successfully, but no history token changes are > made. > > The error i get is: > > Caused by: com.google.gwt.event.shared.UmbrellaException: One or more > exceptions caught, see full set in UmbrellaException#getCauses > at > com.google.gwt.event.shared.SimpleEventBus.doFire(SimpleEventBus.java: > 214) > > Caused by: java.lang.NullPointerException: null > at > com.google.gwt.sample.contacts.client.mvp.AppPlaceHistoryMapperImpl.getPref > ixAndToken(AppPlaceHistoryMapperImpl.java: > 24) > at > com.google.gwt.place.impl.AbstractPlaceHistoryMapper.getToken(AbstractPlace > HistoryMapper.java: > 66) > at > com.google.gwt.place.shared.PlaceHistoryHandler.tokenForPlace(PlaceHistoryH > andler.java: > 156) > at com.google.gwt.place.shared.PlaceHistoryHandler.access > $1(PlaceHistoryHandler.java:151) > at com.google.gwt.place.shared.PlaceHistoryHandler > $1.onPlaceChange(PlaceHistoryHandler.java:103) > at > com.google.gwt.place.shared.PlaceChangeEvent.dispatch(PlaceChangeEvent.java : > 57) > at > com.google.gwt.place.shared.PlaceChangeEvent.dispatch(PlaceChangeEvent.java : > 1) > at > com.google.gwt.event.shared.SimpleEventBus.doFire(SimpleEventBus.java: > 204) > at > com.google.gwt.event.shared.SimpleEventBus.fireEvent(SimpleEventBus.java: > 103) > at > com.google.gwt.place.shared.PlaceController.goTo(PlaceController.java: > 120) > at com.google.gwt.sample.contacts.client.activity.ContactActivity > $1.onClick(ContactActivity.java:94) > > My NewContactPlace is as follows: > > public class NewContactPlace extends > ActivityPlace<EditContactActivity> { > > @Inject > public NewContactPlace(EditContactActivity activity) { > super(activity); > GWT.log("NewContactPlace.ActivityProvider: " + activity); > } > > private String placeName; > > public void setPlaceName(String token) { > this.placeName = token; > } > > public String getPlaceName() { > return placeName; > } > > @Prefix("new") > public static class Tokenizer implements > PlaceTokenizer<NewContactPlace> { > > // Since the place is injectable, we'll let Gin do the > construction. > private final Provider<NewContactPlace> placeProvider; > > @Inject > public Tokenizer(Provider<NewContactPlace> placeProvider) { > this.placeProvider = placeProvider; > GWT.log("NewContactPlace.Tokenizer.PlaceProvider: " + > placeProvider); > } > > @Override > public String getToken(NewContactPlace place) { > return place.getPlaceName(); > } > > @Override > public NewContactPlace getPlace(String token) { > NewContactPlace place = placeProvider.get(); > place.setPlaceName(token); > return place; > // If place requires any more work, do it here. > } > > } > > } > > However, (and I'm pretty sure here's the problem, is my GINModule: > > @Override > protected void configure() { > > // bind the EventBus > > bind(EventBus.class).to(SimpleEventBus.class).in(Singleton.class); > > bind(PlaceController.class).to(InjectablePlaceController.class).in(Singleto > n.class); > > // bind the mapper > > bind(ActivityMapper.class).to(AppActivityMapper.class).in(Singleton.class); > > // bind the views > bind(IContactsViewDisplay.class).to(ContactsView.class); > bind(IEditDisplay.class).to(EditContactView.class); > > } > > I've not used providers before, so I'm guessing I need to define a > provider? or is there somewhere else I might be missing. > > Any help would be much appreciated. > > Cheers > > Moe > > On Oct 22, 11:58 pm, Thomas Broyer <t.bro...@gmail.com> wrote: > > > > > On 22 oct, 19:50, David Chandler <drfibona...@google.com> wrote: > > > > Hi Richard, > > > > We're still working on an official story for how best to use runAsync > > > with Activities and Places. In the mean time, feedback on your > > > experiences is welcome. GWT's AsyncProxy class or the AsyncProvider in > > > GIN trunk look promising as ways to wrap Activity creation with a > > > runAsync() call. > > > > If view creation is initiated only through the corresponding Activity, > > > then wrapping Activity creation with runAsync() will defer loading of > > > the view code also, and you'll be able to see this in the SOYC report. > > > > References: > > >http://code.google.com/webtoolkit/doc/latest/DevGuideCodeSplitting.html > > >http://code.google.com/webtoolkit/doc/latest/DevGuideCompileReport.html > > > Just so it doesn't get forgotten, see > > alsohttp://code.google.com/p/google-web-toolkit/issues/detail?id=5129 > > I implemented the proposed ActivityAsyncProxy (see comment #4, as a > > concrete class, passing a GIN Provider<Activity> to the constructor) > > as a proof-of-concept but haven't used it yet (to tell the truth, not > > even tested it), so I cannot comment on how well/bad it works. -- You received this message because you are subscribed to the Google Groups "Google Web Toolkit" group. To post to this group, send email to google-web-tool...@googlegroups.com. To unsubscribe from this group, send email to google-web-toolkit+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en.