set メソッドで 新規の値を指定すると、値は、プロキシに保管されます。値は、クライアント アプリケーションが プロキシ オブジェクトで doWriteProperties メソッドなどの do メソッドを 呼び出すまで、リポジトリ内の実際のリソースには書き込まれません。
製品リポジトリにある基本リソースを更新するには、doWriteProperties メソッドなどの do メソッドを呼び出す必要があります。 このメソッドは、プロキシ内で更新されたすべてのプロパティを、1 つのトランザクションとして製品リソースに書き込みます。 プロキシにプロパティ値を設定する際は、障害は発生しませんが、do メソッドの 呼び出し時は、障害が発生する可能性があります。 そうなった場合は、例外がスローされる可能性があります。
PropertyRequest requestComment = new PropertyRequest (Resource.COMMENT ); Location location = myProvider.location(...); Resource myResource = myProvider.resource(location); myResource = myResource.doReadProperties(requestComment); String comment = myResource.getComment(); myResource.setComment(comment + "addition to comment"); myResource.doWriteProperties(null);doWriteProperties() メソッドは、PropertyRequest パラメータを取ります。
書き込むプロパティ値があらかじめ分かっていて、 最初に現在の値を読み取る必要がない場合は、doWriteProperties() を 呼び出す前に doReadProperties() を呼び出す必要はありません。次の例では、 サンプル データベース内の障害 SAMPL00000005 の Owner フィールドに user = admin を設定します。
cq.record:<record-type>/<record-id>@<db-set-name>/<database-name>この例のレコードのロケーション文字列は、 以下のとおりです。
"cq.record:Defect/SAMPL00000005@7.0.0/SAMPL"ここで、
CqRecord myRecord = myCqProvider.cqRecord(myProvider.stpLocation("cq.record:Defect/SAMPL00000005@7.0.0/SAMPL")); PropertyName<CqRecord> OWNER = new FieldName<CqRecord>("Owner"); myRecord.setProperty(OWNER, myProvider.buildProxy(CqRecord.class, "cq.record:users/admin@7.0.0/SAMPL")); myRecord.doWriteProperties(null);
詳しくは、ロケーションの構文を参照してください。