UserProxy editable = request.edit(request.create(UserProxy.class)); That's your problem right there. You don't call RequestContext#edit() on the proxy that's returned from RequestContext#create
On Thu, Jun 2, 2011 at 4:13 PM, chris <[email protected]> wrote: > When submitting RequestContext with a new EntityProxy I get error > Autobean is frozen but when editing an existing proxy no error. I also > get two EntityChangeEvent's when submitting the context for the newly > created entity. > > > So I have searched for a while and I believe this may be an issue with > having a ValueListBox subeditor and creating a new EntityProxy. I have > two functions that use the same editor. I have tried multiple things > including making sure I am not reusing EditorDriver, Editor or > RequestContext. > > > 15:13:51.332 [ERROR] [virtualFactory] Uncaught exception escaped > java.lang.IllegalStateException: The AutoBean has been frozen > at > com.google.web.bindery.autobean.shared.impl.AbstractAutoBean.checkFrozen(AbstractAutoBean.java: > 195) > at > com.google.web.bindery.autobean.shared.impl.AbstractAutoBean.setProperty(AbstractAutoBean.java: > 270) > at sun.reflect.GeneratedMethodAccessor524.invoke(Unknown Source) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java: > 43) > at java.lang.reflect.Method.invoke(Method.java:613) > at > com.google.gwt.dev.shell.MethodAdaptor.invoke(MethodAdaptor.java:103) > at > com.google.gwt.dev.shell.MethodDispatch.invoke(MethodDispatch.java:71) > at > com.google.gwt.dev.shell.OophmSessionHandler.invoke(OophmSessionHandler.java: > 167) > > > /** This function throws Autobean frozen exeption and I see two > EntitiProxyChange events when this fires. > The function is successful though but I am wondering if there is > something I am doing wrong > */ > private void showAddAccountView() { > UserEditor editor = new UserEditor(); > UserEditorDriver driver = GWT.create(UserEditorDriver.class); > > driver.initialize(editor); > editor.setDriver(driver); > UserRequest request = > clientFactory.daoRequestFactory().userRequest(); > UserProxy editable = > request.edit(request.create(UserProxy.class)); > request.saveAndReturn(editable).with(driver.getPaths()); > driver.edit(editable, request); > > DialogBox db = new DialogBox(); > db.setAutoHideEnabled(true); > db.setAnimationEnabled(true); > db.setGlassEnabled(true); > db.setWidget(editor); > db.center(); > } > > /** This function has no problems when firing context as it is editing > an already created EntitiyProxy */ > > private void onAccountSelected(SelectionChangeEvent event) { > UserEditor editor = new UserEditor(); > UserEditorDriver driver = GWT.create(UserEditorDriver.class); > > driver.initialize(editor); > editor.setDriver(driver); > UserRequest request = > clientFactory.daoRequestFactory().userRequest(); > UserProxy editable = > request.edit(selectionModel.getSelectedObject()); > request.saveAndReturn(editable).with(driver.getPaths()); > driver.edit(editable, request); > > accountEditorPanel.setWidget(editor); > } > > > > > --------------- > Editor View. > ---------------- > > > > public class UserEditor extends Composite implements Editor<UserProxy> > { > > @UiTemplate("templates/UserEditor.ui.xml") > interface Binder extends UiBinder<Widget, UserEditor> { > } > > > @UiField TextBox name; > @UiField TextBox email; > > @UiField (provided=true) > ValueListBox<UserRole> role = new ValueListBox<UserRole>(new > AbstractRenderer<UserRole>() { > > @Override > public String render(UserRole object) { > return object == null ? "" : object.name(); > } > }); > > @UiField Button submit; > > > private RequestFactoryEditorDriver<UserProxy, UserEditor> driver; > > > public UserEditor() { > > initWidget(GWT.<Binder>create(Binder.class).createAndBindUi(this)); > > role.setAcceptableValues(Arrays.asList(UserRole.values())); > } > > @UiHandler("submit") > void onClick(ClickEvent event) { > UserRequest request = (UserRequest) driver.flush(); > > // Check for errors > if (driver.hasErrors()) { > List<EditorError> errors = driver.getErrors(); > for (EditorError error : errors) { > Logger.getLogger("UserEditor").info("Errors occurred in > user editor" + error.getMessage()); > } > return; > } > > request.fire(); > } > > public void setDriver(RequestFactoryEditorDriver<UserProxy, > UserEditor> driver) { > this.driver = driver; > } > } > > > Thank you in advance for your assistance. > > -- > You received this message because you are subscribed to the Google Groups > "Google Web Toolkit" group. > 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. > > -- You received this message because you are subscribed to the Google Groups "Google Web Toolkit" group. 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.
