Thursday, September 1, 2011

Editor and RequestFactory

I have a question about using the RequestFactoryEditorDriver. I am trying to use the editor with request factory on the client side. On the server side I am using Objectify which is modeled after the listWidget example. I have a ProjectRequest class (implementing RequestContext) that defines a save method. 

My question is how do I invoke the save method from the editor. It appears that after a driver.flush() I only have a RequestContext object to work with. That object only has the fire method, but I cannot tell it to use my save(project) method. When I invoke the requestContext.fire() method after doing a .flush(), the request factory appears to contact the server but nothing is persisted. Are there implied methods that the editor or RequestFactory is expecting to be implemented on the server? Should I be using the SimpleBeanEditorDriver instead?

My Editor: 
public class ProjectEditor extends Composite implements Editor<ProjectProxy> {
    interface Binder extends UiBinder<HTMLPanel, ProjectEditor> { }
    private static Binder uiBinder = GWT.create(Binder.class);
    @UiField
    TextBox name;
    public ProjectEditor() {
      initWidget(uiBinder.createAndBindUi(this));
    }
}
 My workflow class:
public class ProjectAddPresenter extends
        Presenter<ProjectAddPresenter.MyView, ProjectAddPresenter.MyProxy> {
    ...
    interface Driver extends
            SimpleBeanEditorDriver<ProjectProxy, ProjectEditor> {}
    @Inject private CommonRequestFactory commonRf;
    private Driver driver;
    @Inject
    public ProjectAddPresenter(final EventBus eventBus,
            final MyView view,
            final MyProxy proxy) {
        super(eventBus, view, proxy);
        this.view = view;
        view.setPresetner(this);
        driver = GWT.create(Driver.class);
    }
    ...
    public void edit() {
        ProjectRequest request = commonRf.projectRequest();
        ProjectProxy project = request.create(ProjectProxy.class);
        ProjectEditor pe = view.getProjectEditor();
        driver.initialize(pe);
        driver.edit(project, request);
    }
    public void createProject(ProjectEditor projectEditor) {
        RequestContext request = driver.flush();
        request.fire(new Receiver<Void>() {
            ...
        });
    }
    ...
}
My ProjectRequest class:
@Service(value = ProjectDao.class, locator = DaoServiceLocator.class)
public interface ProjectRequest extends RequestContext {
  ...
  Request<Void> save(ProjectProxy project);
  ...
}
 Thank you.
 

--
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/-/qpOhqiJGc4sJ.
To post to this group, send email to google-web-toolkit@googlegroups.com.
To unsubscribe from this group, send email to google-web-toolkit+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en.

No comments:

Post a Comment