Si el valor de una propiedad es una referencia a un recurso, es posible que PropertyRequest contenga un objeto NestedPropertyName en lugar del objeto PropertyName de la propiedad. El objeto NestedPropertyName tiene un nombre de propiedad raíz y una PropertyRequest anidada. Solicita propiedades del recurso al que hace referencia el valor de la propiedad denominada raíz.
Además de especificar el nombre de la propiedad, un objeto NestedPropertyName también incluye su propia PropertyRequest. Esta PropertyRequest anidada especifica las propiedades del recurso a las que hace referencia la propiedad del recurso original cuyos valores deben obtenerse a partir del recurso al que se hace referencia.
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 ...
En un NestedPropertyName, la PropertyRequest que designa a las propiedades que deben recuperarse desde el servidor puede aumentarse con elementos MetaPropertyName, los cuales permiten al cliente solicitar metapropiedades específicas de una propiedad (en lugar o además de su metapropiedad 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());
La PropertyRequest anidada en un NestedPropertyName puede, en sí misma, contener objetos NestedPropertyName adicionales. Por lo tanto, en una interacción con el servidor, es posible recuperar un número arbitrario de recursos relacionados y sus propiedades.