// when
final LinkRepresentation link = Util.serviceActionListInvokeFirstReference(client, "PrimitiveValuedEntities");
domainObjectRepr = client.follow(link).getEntity().as(DomainObjectRepresentation.class);
// then members (types)
DomainObjectMemberRepresentation property;
ScalarValueRepresentation scalarRepr;
property = domainObjectRepr.getProperty("booleanProperty");
assertThat(property.getMemberType(), is("property"));
assertThat(property.getFormat(), is(nullValue()));
assertThat(property.getXIsisFormat(), is("boolean"));
scalarRepr = property.getRepresentation("value").as(ScalarValueRepresentation.class);
assertThat(scalarRepr.isBoolean(), is(true));
Boolean booleanValue = scalarRepr.asBoolean();
assertThat(booleanValue, is(equalTo(Boolean.TRUE)));
property = domainObjectRepr.getProperty("byteProperty");
assertThat(property.getMemberType(), is("property"));
assertThat(property.getFormat(), is("int"));
assertThat(property.getXIsisFormat(), is("byte"));
scalarRepr = property.getRepresentation("value").as(ScalarValueRepresentation.class);
assertThat(scalarRepr.isIntegralNumber(), is(true));
Byte byteValue = scalarRepr.asByte();
assertThat(byteValue, is((byte)123));
property = domainObjectRepr.getProperty("shortProperty");
assertThat(property.getMemberType(), is("property"));
assertThat(property.getFormat(), is("int"));
assertThat(property.getXIsisFormat(), is("short"));
scalarRepr = property.getRepresentation("value").as(ScalarValueRepresentation.class);
assertThat(scalarRepr.isIntegralNumber(), is(true));
Short shortValue = scalarRepr.asShort();
assertThat(shortValue, is((short)32123));
property = domainObjectRepr.getProperty("intProperty");
assertThat(property.getMemberType(), is("property"));
assertThat(property.getFormat(), is("int"));
assertThat(property.getXIsisFormat(), is("int"));
scalarRepr = property.getRepresentation("value").as(ScalarValueRepresentation.class);
assertThat(scalarRepr.isInt(), is(true));
Integer intValue = scalarRepr.asInt();
assertThat(intValue, is(987654321));
property = domainObjectRepr.getProperty("longProperty");
assertThat(property.getMemberType(), is("property"));
assertThat(property.getFormat(), is("int"));
assertThat(property.getXIsisFormat(), is("long"));
scalarRepr = property.getRepresentation("value").as(ScalarValueRepresentation.class);
assertThat(scalarRepr.isLong(), is(true));
Long longValue = scalarRepr.asLong();
assertThat(longValue, is(2345678901234567890L));
property = domainObjectRepr.getProperty("charProperty");
assertThat(property.getMemberType(), is("property"));
assertThat(property.getFormat(), is(nullValue()));
assertThat(property.getXIsisFormat(), is("char"));
scalarRepr = property.getRepresentation("value").as(ScalarValueRepresentation.class);
assertThat(scalarRepr.isString(), is(true));
Character charValue = scalarRepr.asChar();
assertThat(charValue, is('a'));
property = domainObjectRepr.getProperty("floatProperty");
assertThat(property.getMemberType(), is("property"));
assertThat(property.getFormat(), is("decimal"));
assertThat(property.getXIsisFormat(), is("float"));
scalarRepr = property.getRepresentation("value").as(ScalarValueRepresentation.class);
assertThat(scalarRepr.isNumber(), is(true));
assertThat(scalarRepr.isIntegralNumber(), is(false));
Float floatValue = scalarRepr.asFloat();
assertThat(floatValue, is(12345678901234567890.1234567890F));
property = domainObjectRepr.getProperty("doubleProperty");
assertThat(property.getMemberType(), is("property"));
assertThat(property.getFormat(), is("decimal"));
assertThat(property.getXIsisFormat(), is("double"));
scalarRepr = property.getRepresentation("value").as(ScalarValueRepresentation.class);
assertThat(scalarRepr.isDouble(), is(true));
Double doubleValue = scalarRepr.asDouble();
assertThat(doubleValue, is(12345678901234567890.1234567890));
// and then member types have links to details (selected ones inspected only)
property = domainObjectRepr.getProperty("booleanProperty");
assertThat(property.getLinkWithRel(Rel.DETAILS),
isLink()
.href(matches(".+\\/objects\\/PRMV\\/\\d+\\/properties\\/booleanProperty"))
.httpMethod(RestfulHttpMethod.GET)
.type(RepresentationType.OBJECT_PROPERTY.getMediaType()));
property = domainObjectRepr.getProperty("byteProperty");
assertThat(property.getLinkWithRel(Rel.DETAILS),
isLink()
.href(matches(".+\\/objects\\/PRMV\\/\\d+\\/properties\\/byteProperty"))
.httpMethod(RestfulHttpMethod.GET)
.type(RepresentationType.OBJECT_PROPERTY.getMediaType()));
property = domainObjectRepr.getProperty("shortProperty");
assertThat(property.getLinkWithRel(Rel.DETAILS),
isLink()
.href(matches(".+\\/objects\\/PRMV\\/\\d+\\/properties\\/shortProperty"))
.httpMethod(RestfulHttpMethod.GET)
.type(RepresentationType.OBJECT_PROPERTY.getMediaType()));
// can navigate using fully qualified form of Rel
property = domainObjectRepr.getProperty("booleanProperty");
assertThat(property.getLinkWithRel(Rel.DETAILS.andParam("property", "booleanProperty")),
isLink()
.href(matches(".+\\/objects\\/PRMV\\/\\d+\\/properties\\/booleanProperty"))
.httpMethod(RestfulHttpMethod.GET)
.type(RepresentationType.OBJECT_PROPERTY.getMediaType()));