A RequestContext is a "builder"; you queue things into it and then fire().
Once fire()d, it's no longer usable; you have to create a new one and start
over.
On Tuesday, May 29, 2012 2:02:07 AM UTC+2, jmbz84 wrote:
>
> Hello,
>
> I'm trying to set up a basic editor in gwt. Everything works fine, the
> editor displays the data and saves but when I try to save again (i.e.
> press the save button 2 times) it throws me the error "A request is
> already in progress " in the second save, but the first time the
> editor saves the data correctly.
>
> How can I solve this, perhaps creating a new Request?
>
> //
> //Methods that edit and save the editor, locate in
> ComposerEditorContainer class
> //
> public void edit(RequestContext requestContext) {
>
> editorDriver = GWT.create(Driver.class);
> editorDriver.initialize(requestFactory, composerEditor);
> editorDriver.edit(composer, requestContext);
> }
>
> public void save() {
>
> ComposerRequest composerRequest = (ComposerRequest)
> editorDriver
> .flush();
> ComposerProxy newProxy = composerRequest.edit(composer);
> composerRequest.persist(newProxy).fire();
> }
>
> //
> //Events in a presenter that save and initialize the editor
> //
> eventBus.addHandler(SaveButtonClickedEvent.TYPE,
> new SaveButtonClickedEventHandler() {
> @Override
> public void
> onSaveButtonClicked(SaveButtonClickedEvent event) {
>
> ((ComposerEditorContainer)
> composerEditorContainer)
> .save();
> }
>
> });
>
> //this method gets the ComposerProxy from the event and initializes
> the editor
> //
> eventBus.addHandler(BrowserItemClickedEvent.TYPE,
> new BrowserItemClickedEventHandler() {
> @Override
> public void onBrowserItemClicked(
>
> BrowserItemClickedEvent
> event) {
>
>
> requestFactory =
> GWT.create(AppRequestFactory.class);
> requestFactory.initialize(new
> SimpleEventBus());
>
> ComposerRequest request =
> requestFactory
>
> .getComposerRequest();
>
>
> Request<ComposerProxy> req
> = request.findComposer(event
>
> .getclickedItem().getValue());
>
>
> req.fire(new
> Receiver<ComposerProxy>() {
>
> public void
> onSuccess(ComposerProxy arg0) {
>
>
> ComposerEditorContainer
> editorContainer = new
> ComposerEditorContainer(
>
> requestFactory,
> arg0);
>
> editorContainer.edit(requestFactory
>
>
> .getComposerRequest());
>
> view.clear();
>
>
> view.addWidget(editorContainer);
>
>
>
> composerEditorContainer
> = editorContainer;
> }
> });
>
> }
> });
>
>
> //Error that appears when saving for the second time
> Caused by: java.lang.IllegalStateException: A request is already in
> progress
> at
> com.google.web.bindery.requestfactory.shared.impl.AbstractRequestContext.checkLocked(AbstractRequestContext.java:
>
>
> 960)
> at
> com.google.web.bindery.requestfactory.shared.impl.AbstractRequestContext.editProxy(AbstractRequestContext.java:
>
>
> 510)
> at
> com.google.web.bindery.requestfactory.shared.impl.AbstractRequestContext.edit(AbstractRequestContext.java:
>
>
> 502)
> at
> com.google.test.client.editor.ComposerEditorContainer.save(ComposerEditorContainer.java:
>
>
> 58)
> at com.google.test.client.presenter.BrowserDetailPresenter
> $1.onSaveButtonClicked(BrowserDetailPresenter.java:48)
> at
> com.google.test.client.event.SaveButtonClickedEvent.dispatch(SaveButtonClickedEvent.java:
>
>
> 17)
--
You received this message because you are subscribed to the Google Groups
"Google Web Toolkit" group.
To view this discussion on the web visit
https://groups.google.com/d/msg/google-web-toolkit/-/ZTLkfXUQ2vUJ.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/google-web-toolkit?hl=en.