RequestFactoryの周りに私の心を包み込みたいのですが、いくつか問題があります。私は不変型(joda-time LocalDate)のvalueproxyであるプロパティを持つentityproxyを持っており、このエンティティプロキシをサーバーへの呼び出しで使用する際に問題が発生しています。不変なValueProxyプロパティを持つEntityProxies - > "setterを見つけることができませんでした"
私は、entityproxyのプロパティのゲッターを含め、valueproxyのプリミティブプロパティのゲッターを含むだけでプロパティを読み取り専用にしました。
しかし、私が知る限り、サービスメソッドの呼び出しでentityproxyを引数として使用すると、参照されるvalueproxyは自動的に編集済みとしてマークされ、そのすべてのプロパティはデルタに含まれますか?
これにより、ReflectiveServiceLayerは、LocalDateの欠落しているセッターについて例外をスローします。
私は、これを回避するために "setProperty"をオーバーライドするServiceLayerDecoratorを実装するアイデアを思いついていますが、それが良い解決策であるかどうかはわかりません。これを修正する "適切な"方法はありますか?理想的には、私はAbstractRequestContextに、サーバへの呼び出しに不変のプロパティを含めないようにしたいと思います。
私は
編集GWT 2.3を使用しています:私はこのような回避策を作成したが、私はまだこれが正しいアプローチであるかどうかがわからないよ:
public class ImmutablePropertyFixServiceLayer extends ServiceLayerDecorator {
@Override
public void setProperty(Object domainObject, String property, Class<?> expectedType, Object value) {
Method setter = getTop().getSetter(domainObject.getClass(), property);
if (setter != null) {
super.setProperty(domainObject, property, expectedType, value);
} else {
//System.out.println(domainObject.getClass().getName() + "." + property + " doesn't have a setter");
}
}
}
お返事ありがとうございます。私は、RequestFactoryを使用してスキップしました。私は、私が、私のドメインオブジェクトをどのように実装して、RequestFactoryをいくつかのDTOソリューションを使って最初に打ち破ったという制約を課し続けました。 ) とにかく、私が持っていた問題 – henriks
...この場合、値プロキシオブジェクトは、それらが持っていてはならないときに編集済みとしてマークされていました。 RFには差分変更のみをサーバーに送り返すメカニズムがありますが、これはプリミティブプロパティに適用されたように見え、値プロキシ内部のプリミティブには拡張されませんでしたか?この場合、サーバー側のRFは、値プロキシが表す不変オブジェクトのプロパティを変更しようとし続けていたため、問題でした。 – henriks
明示するコメントがもう1つあります。これらのオブジェクトは実際にクライアント上に作成されていませんクライアントが提供しようとしていたプロパティが変更不可能なため、クライアントから提供されたプロパティを無視すると状態が矛盾する場合がありました。 – henriks