I'm trying to understand RequestFactory but having quite a difficult
time. First, one note: I'm using ORMLite for persistence, I found it
easier and simpler to learn than Hibernate so I'm hoping I can
continue to use it. Those are the @Database annotations in example
below. I've boiled down my application to a smaller amount of code.
I'm really hoping someone can take a quick look at it and tell me what
I'm doing wrong. When I try and load the application in the browser I
get a NullPointerException on response.getFieldsList(). I'm guessing
that after the Form object is fetched from the database the
"connection is closed" or something so calling getFieldsList() doesn't
work because the method "gets more data from the database".
public class FormBuilder implements EntryPoint {
public void onModuleLoad() {
final Label label = new Label();
RootPanel.get("labelContainer").add(label);
final EventBus eventBus = new SimpleEventBus();
EntityRequestFactory requestFactory =
GWT.create(EntityRequestFactory.class);
requestFactory.initialize(eventBus);
requestFactory.formRequest().findForm(1).fire(new
Receiver<FormProxy>() {
@Override
public void onSuccess(FormProxy response) {
for (FieldProxy field :
response.getFieldsList()) {
label.setText(label.getText() +
field.getName());
}
}
});
}
}
@DatabaseTable (tableName="forms")
public class Form {
public Form() {}
@DatabaseField (columnName="form_id", generatedId=true)
private Integer id;
public void setId(Integer id) { this.id = id; }
public Integer getId() { return id; }
public List<Field> getFieldsList() {
return Field.getFieldsList(getId());
}
public static Form findForm(Integer id) {
// Get form record from database
}
}
public class Field {
public Field() {}
@DatabaseField (columnName="field_id", generatedId=true)
private Integer id;
public void setId(Integer id) { this.id = id; }
public Integer getId() { return id; }
/**
* The form to which this field is associated
*/
private Integer formId;
public void setFormId(Integer formId) { this.formId = formId; }
public Integer getFormId() { return this.formId; }
public Form getForm() {
return Form.findForm(getFormId());
}
public static Field findField(Integer id) {
// Get field record from database
}
public static List<Field> getFieldsList(Integer id) {
// Get field records for db where formid = id
}
}
@ProxyFor (Form.class)
public interface FormProxy extends EntityProxy {
Integer getId();
List<FieldProxy> getFieldsList();
void setId(Integer id);
void setTimestamp(Date timestamp);
}
@ProxyFor (Field.class)
public interface FieldProxy extends EntityProxy {
Integer getFormId();
Integer getId();
void setFormId(Integer formId);
void setId(Integer id);
}
@Service (Form.class)
public interface FormRequest extends RequestContext {
Request<FormProxy> findForm(Integer id);
InstanceRequest<FormProxy, List<FieldProxy>> getFieldsList();
}
@Service (Field.class)
public interface FieldRequest extends RequestContext {
Request<FieldProxy> findField(Integer id);
Request<List<FieldProxy>> getFieldsList(Integer formId);
}
--
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.