특성 값이 자원에 대한 참조이면 PropertyRequest에는 해당 특성의 PropertyName 오브젝트 대신 NestedPropertyName 오브젝트가 있어야 합니다. NestedPropertyName 오브젝트는 루트 특성 이름 및 중첩 PropertyRequest를 가지고 있습니다. 루트로 이름이 지정된 특성 값에서 참조하는 자원의 특성을 요청합니다.
특성 이름을 지정할 뿐만 아니라 NestedPropertyName에는 자체 PropertyRequest도 포함되어 있습니다. 이러한 중첩 PropertyRequest는 원래 자원(참조된 자원에서 값을 가져오는 자원)의 특성에 의해 참조된 자원의 특성을 지정합니다.
PropertyRequest my_prop_request = new PropertyRequest(ControllableResource.CREATOR_DISPLAY_NAME, ControllableResource.CHECKED_IN.nest( Version.VERSION_NAME, Version.CREATION_DATE). ControllableResource.LAST_MODIFIED);
resource = (ControllableResource) resource.doReadProperties(my_prop_request); String versionName = resource.getCheckIn().getVersionName(); // work with the properties ...
NestedPropertyName에서 PropertyRequest(서버에서 검색할 특성을 지정함)는 MetaPropertyName 요소로 확장 가능하고 이를 통해 클라이언트는 특성의 특정 메타 특성을 요청할 수 있습니다(VALUE 메타 특성 대신에 또는 추가하여).
CqRecord r = p.buildProxy(CqRecord.class, "..."); FieldName<CqRecord> OWNER = new FieldName<CqRecord>("Owner"); FieldName<String> NAME = new FieldName<String>("login_name"); PropertyRequest request = new PropertyRequest(OWNER.nest(StpProperty.TYPE, CqFieldValue.REQUIREDNESS, StpProperty.VALUE.nest(NAME))); CqRecord rec = (CqRecord)r.doReadProperties(request); CqFieldValue<CqRecord> v = rec.getFieldInfo(OWNER); String name = v.getValue().getProperty(NAME); PropertyRequest pnl = new PropertyRequest( CqRecord.FIELDS.nest( StpProperty.VALUE.nest( StpProperty.NAME, StpProperty.TYPE, StpProperty.VALUE))); List<CqFieldValue<?>> fields = ((CqRecord)r.doReadProperties(pnl)).getFields(); for(CqFieldValue<?> field: fields) System.out.println("field " + field.getName() ": " + field.getType() " = " + field.getValue());
NestedPropertyName 내에 중첩된 PropertyRequest에는 추가 NestedPropertyName 오브젝트가 포함될 수 있습니다. 그러므로 서버와 한 번의 상호작용에서 임의 수의 관련 자원과 특성을 검색할 수 있습니다.