RequestFactory не заполняет все поля моего прокси-объекта - PullRequest
1 голос
/ 27 февраля 2012

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

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

@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 не должен заполнять весь граф?

1 Ответ

2 голосов
/ 27 февраля 2012

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

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

...