diff --git a/spring-xsuaa/pom.xml b/spring-xsuaa/pom.xml
index f71cbbc59d..ed549eeb67 100644
--- a/spring-xsuaa/pom.xml
+++ b/spring-xsuaa/pom.xml
@@ -69,7 +69,13 @@
2.6
compile
-
+
+ org.mockito
+ mockito-core
+ 2.23.0
+ test
+
+
diff --git a/spring-xsuaa/src/main/java/com/sap/cloud/security/xsuaa/token/TokenImpl.java b/spring-xsuaa/src/main/java/com/sap/cloud/security/xsuaa/token/TokenImpl.java
index fde677ecfd..51768ae12e 100644
--- a/spring-xsuaa/src/main/java/com/sap/cloud/security/xsuaa/token/TokenImpl.java
+++ b/spring-xsuaa/src/main/java/com/sap/cloud/security/xsuaa/token/TokenImpl.java
@@ -10,6 +10,7 @@
import java.util.Collection;
import java.util.Map;
+import com.sap.xs2.security.container.XSTokenRequestImpl;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.lang.Nullable;
@@ -51,7 +52,6 @@ public class TokenImpl implements Token {
private final Log logger = LogFactory.getLog(getClass());
private String xsappname = null;
private Jwt jwt;
- private RestTemplate restTemplate;
/**
* @param jwt
@@ -246,6 +246,8 @@ public String requestToken(XSTokenRequest tokenRequest) throws URISyntaxExceptio
Assert.notNull(tokenRequest, "tokenRequest argument is required");
Assert.isTrue(tokenRequest.isValid(), "tokenRequest is not valid");
+ RestTemplate restTemplate = tokenRequest instanceof XSTokenRequestImpl ? ((XSTokenRequestImpl) tokenRequest).getRestTemplate() : null;
+
XsuaaTokenExchanger tokenExchanger = new XsuaaTokenExchanger(restTemplate, this);
try {
return tokenExchanger.requestToken(tokenRequest);
@@ -265,10 +267,6 @@ public boolean hasClaim(String claim) {
return jwt.containsClaim(claim);
}
-
- public void setRestTemplate(RestTemplate restTemplate) {
- this.restTemplate = restTemplate;
- }
/**
* For custom access to the claims of the authentication token.
diff --git a/spring-xsuaa/src/main/java/com/sap/cloud/security/xsuaa/token/XsuaaTokenExchanger.java b/spring-xsuaa/src/main/java/com/sap/cloud/security/xsuaa/token/XsuaaTokenExchanger.java
index 946bf2e428..e56c624c77 100644
--- a/spring-xsuaa/src/main/java/com/sap/cloud/security/xsuaa/token/XsuaaTokenExchanger.java
+++ b/spring-xsuaa/src/main/java/com/sap/cloud/security/xsuaa/token/XsuaaTokenExchanger.java
@@ -1,9 +1,19 @@
+/**
+ * Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved.
+ * This file is licensed under the Apache Software License,
+ * v. 2 except as noted otherwise in the LICENSE file
+ * https://github.com/SAP/cloud-security-xsuaa-integration/blob/master/LICENSE
+ */
package com.sap.cloud.security.xsuaa.token;
-import com.sap.xs2.security.container.UserInfoException;
-import com.sap.xs2.security.container.XSTokenRequestImpl;
-import com.sap.xsa.security.container.XSTokenRequest;
-import net.minidev.json.JSONObject;
+import java.io.IOException;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.util.Base64;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
@@ -12,13 +22,10 @@
import org.springframework.web.client.RestTemplate;
import org.springframework.web.util.UriComponentsBuilder;
-import java.io.IOException;
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.util.Base64;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import com.sap.xs2.security.container.UserInfoException;
+import com.sap.xsa.security.container.XSTokenRequest;
+
+import net.minidev.json.JSONObject;
public class XsuaaTokenExchanger {
Token token;
diff --git a/spring-xsuaa/src/main/java/com/sap/xs2/security/container/XSTokenRequestImpl.java b/spring-xsuaa/src/main/java/com/sap/xs2/security/container/XSTokenRequestImpl.java
index 961f8be915..bcfbb564dd 100644
--- a/spring-xsuaa/src/main/java/com/sap/xs2/security/container/XSTokenRequestImpl.java
+++ b/spring-xsuaa/src/main/java/com/sap/xs2/security/container/XSTokenRequestImpl.java
@@ -1,3 +1,9 @@
+/**
+ * Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights reserved.
+ * This file is licensed under the Apache Software License,
+ * v. 2 except as noted otherwise in the LICENSE file
+ * https://github.com/SAP/cloud-security-xsuaa-integration/blob/master/LICENSE
+ */
package com.sap.xs2.security.container;
import java.net.URI;
@@ -9,6 +15,8 @@
import java.util.Objects;
import com.sap.xsa.security.container.XSTokenRequest;
+import org.springframework.lang.Nullable;
+import org.springframework.web.client.RestTemplate;
public class XSTokenRequestImpl implements XSTokenRequest {
@@ -22,6 +30,7 @@ public class XSTokenRequestImpl implements XSTokenRequest {
private int type;
private String clientId;
private String clientSecret;
+ private RestTemplate restTemplate;
private Map additionalAuthorizationAttributes;
@@ -110,8 +119,7 @@ public Map getAdditionalAuthorizationAttributes() {
* @return this mutable object
*/
public XSTokenRequest setAdditionalAuthorizationAttributes(Map additionalAuthorizationAttributes) {
- this.additionalAuthorizationAttributes = (additionalAuthorizationAttributes == null) ? null
- : new HashMap<>(additionalAuthorizationAttributes);
+ this.additionalAuthorizationAttributes = (additionalAuthorizationAttributes == null) ? null : new HashMap<>(additionalAuthorizationAttributes);
return this;
}
@@ -169,4 +177,25 @@ private boolean hasAnyNullValues(List