2012-02-27 4 views
1

Не могли бы вы рассказать мне, как я могу заставить поля RequestFactory заполнить свой прокси-сервер объекта, которые также являются прокси-объектами?RequestFactory не заполняет все поля моего объекта proxy

Вот родительский прокси

@ProxyFor(value = Organization.class, locator = PojoLocator.class) 
public interface OrganizationProxy extends EntityProxy 
{ 
    public String getName(); 
    public void setName(String name); 
    public String getAddress(); 
    public void setAddress(String address); 
    public PersonProxy getContactPerson(); 
    public void setContactPerson(PersonProxy contactPerson); 
} 

, как вы можете видеть, что содержит другой прокси-сервер в качестве поля. Вот как выглядит PersonProxy

@ProxyFor(value = Person.class, locator = PojoLocator.class) 
public interface PersonProxy extends EntityProxy 
{ 
    public String getName(); 
    public void setName(String name); 
    public String getPhoneNumber(); 
    public void setPhoneNumber(String phoneNumber); 
    public String getEmail(); 
    public void setEmail(String email); 
    public OrganizationProxy getOrganization(); 
    public void setOrganization(OrganizationProxy organization); 
} 

В моем интерфейсе RequestContext У меня есть метод Request<OrganizationProxy> findOrganizationById(long id). Класс DAO, который извлекает реальную организацию из хранилища данных, устанавливает поле contactPerson, но на клиенте всегда null. На самом деле RequestFactory даже не вызывает Organization.getContactPerson().

Мой клиент вызов выглядит следующим образом

createFactory().contextOrder().findOrganizationById(1).fire(new Receiver<OrganizationProxy>() 
{ 
    @Override 
    public void onSuccess(OrganizationProxy response) 
    { 
     if (response == null) 
     { 
      organizationProxy = orderRequestContext.create(OrganizationProxy.class); 
      organizationProxy.setContactPerson(orderRequestContext.create(PersonProxy.class)); 
     } else 
      organizationProxy = orderRequestContext.edit(response); 

     // Copy the data in the object into the UI 
     driver.edit(organizationProxy); 
    } 

    @Override 
    public void onFailure(ServerFailure error) 
    { 
     createConfirmationDialogBox(error.getMessage()).center(); 
    } 
}); 

Что я здесь отсутствует? Должен ли я что-то делать вручную? Предполагается, что RequestFactory не заполняет весь граф?

ответ

2

Извините, но я нашел ответ. У меня должен быть RTFM.

При запросе сервера RequestFactory автоматически не устанавливает отношения заполнения в графе объектов. Для этого используйте метод with() по запросу и укажите название связанного объекта как строку