I have the following try
block in which I am expecting a response from the exchange
method of RestTemplate
:
try{
response = restOperations.exchange("http://localhost:8080/midpoint/ws/rest/users/00000000-0000-0000-0000-000000000002",
HttpMethod.GET,
new HttpEntity<String>(createHeaders("administrator", "5ecr3t")),
UserType.class);
logger.info(response.getBody());
}
I am expecting a response of type UserType
, the request is executed correctly with a status of 200 OK, but all the fields of UserType
model are null, so the response I am receiving from the REST call is not being bind (mapped).
The required fields of UserType
are annotated as:
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "UserType", propOrder = {
"fullName",
"givenName",
"familyName",
"additionalNames",
"locality",
"assignment",
"activation",
"specialWithInternalizedName",
"singleActivation",
"multiActivation",
"multiActivationCopy",
"singleConstruction",
"multiConstruction",
"multiConstructionCopy"
})
An example of the servers response:
<?xml version="1.0" encoding="UTF-8"?>
<user xmlns="http://midpoint.evolveum.com/xml/ns/public/common/common-3" xmlns:c="http://midpoint.evolveum.com/xml/ns/public/common/common-3" xmlns:icfs="http://midpoint.evolveum.com/xml/ns/public/connector/icf-1/resource-schema-3" xmlns:q="http://prism.evolveum.com/xml/ns/public/query-3" xmlns:ri="http://midpoint.evolveum.com/xml/ns/public/resource/instance-3" xmlns:t="http://prism.evolveum.com/xml/ns/public/types-3" oid="00000000-0000-0000-0000-000000000002" version="194">
<name>administrator</name>
<metadata>
<requestTimestamp>2017-01-31T14:04:14.575+01:00</requestTimestamp>
<createTimestamp>2017-01-31T14:04:14.658+01:00</createTimestamp>
<createChannel>http://midpoint.evolveum.com/xml/ns/public/gui/channels-3#init</createChannel>
</metadata>
<assignment id="1">
<metadata>
<requestTimestamp>2017-01-31T14:04:14.575+01:00</requestTimestamp>
<createTimestamp>2017-01-31T14:04:14.658+01:00</createTimestamp>
<createChannel>http://midpoint.evolveum.com/xml/ns/public/gui/channels-3#init</createChannel>
</metadata>
<targetRef oid="00000000-0000-0000-0000-000000000004" type="c:RoleType" />
<activation>
<effectiveStatus>enabled</effectiveStatus>
</activation>
</assignment>
<activation>
<administrativeStatus>enabled</administrativeStatus>
<effectiveStatus>enabled</effectiveStatus>
<enableTimestamp>2017-01-31T14:04:14.598+01:00</enableTimestamp>
<lockoutStatus>normal</lockoutStatus>
</activation>
<iteration>0</iteration>
<iterationToken />
<roleMembershipRef oid="00000000-0000-0000-0000-000000000004" type="c:RoleType" />
<fullName>midPoint Administrator</fullName>
<givenName>midPoint</givenName>
<familyName>Administrator</familyName>
<credentials>
<password>
<lastSuccessfulLogin>
<timestamp>2017-02-16T17:01:21.861+01:00</timestamp>
</lastSuccessfulLogin>
<previousSuccessfulLogin>
<timestamp>2017-02-16T16:44:00.493+01:00</timestamp>
</previousSuccessfulLogin>
<metadata>
<createTimestamp>2017-01-31T14:04:14.598+01:00</createTimestamp>
<createChannel>http://midpoint.evolveum.com/xml/ns/public/gui/channels-3#init</createChannel>
</metadata>
<value>
<t:encryptedData>
<t:encryptionMethod>
<t:algorithm>http://www.w3.org/2001/04/xmlenc#aes128-cbc</t:algorithm>
</t:encryptionMethod>
<t:keyInfo>
<t:keyName>HZZUFItbX7fYQO41GT3PHJtIf2Q=</t:keyName>
</t:keyInfo>
<t:cipherData>
<t:cipherValue>SZusPiIgcrzoqDfm9uTzmrI6r4lG/OolTRIc7V/0aVo=</t:cipherValue>
</t:cipherData>
</t:encryptedData>
</value>
</password>
</credentials>
</user>
I solve my problem adding the jackson
dependency in my pom.xml
file:
<dependency>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-xml</artifactId>
</dependency>