O valor de várias propriedades é uma referência a um outro recurso.
Se o valor de uma propriedade for uma referência a um recurso, o PropertyRequest poderá conter o objeto NestedPropertyName em vez do objeto PropertyName para a propriedade. O objeto NestedPropertyName tem um nome de propriedade raiz e um PropertyRequest aninhado. Ele solicita propriedades do recurso com referência pelo valor da propriedade nomeada como raiz.
Além de especificar o nome da propriedade, um NestedPropertyName também incluir seu próprio PropertyRequest. Esse PropertyRequest aninhado especifica as propriedades do recurso referenciado pela propriedade do recurso original cujos valores serão obtidos do recurso referenciado.
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(); // trabalhar com as propriedades...
Em um NestedPropertyName, o PropertyRequest que designa as propriedades a serem recuperadas do servidor pode ser aumentado com elementos de MetaPropertyName, que permitem que o cliente solicite metapropriedades específicas de uma propriedade (em vez de, ou além de, sua metapropriedade 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());
O próprio PropertyRequest aninhado em um NestedPropertyName pode conter objetos NestedPropertyName adicionais. Portanto, em uma interação com o servidor, é possível recuperar um número arbitrário de recursos relacionados e suas propriedades.