final JSONObject clients = this.configFile.getJSONObject(CLIENTS);
for (final Iterator<?> j = clients.keys(); j.hasNext();) {
final String clientName = (String) j.next();
final JSONObject settings = clients.getJSONObject(clientName);
final OAuth2Client client = new OAuth2Client(this.encrypter);
final String providerName = settings.getString(PROVIDER_NAME);
final OAuth2Provider provider = providers.get(providerName);
client.setAuthorizationUrl(provider.getAuthorizationUrl());
client.setClientAuthenticationType(provider.getClientAuthenticationType());
client.setAuthorizationHeader(provider.isAuthorizationHeader());
client.setUrlParameter(provider.isUrlParameter());
client.setTokenUrl(provider.getTokenUrl());
String redirectUri = settings.optString(OAuth2Message.REDIRECT_URI, null);
if (redirectUri == null) {
redirectUri = this.globalRedirectUri;
}
final String secret = settings.optString(OAuth2Message.CLIENT_SECRET);
final String clientId = settings.getString(OAuth2Message.CLIENT_ID);
final String typeS = settings.optString(TYPE, null);
String grantType = settings.optString(OAuth2Message.GRANT_TYPE, null);
final String sharedToken = settings.optString(OAuth2Message.SHARED_TOKEN, "false");
if ("true".equalsIgnoreCase(sharedToken)) {
client.setSharedToken(true);
}
try {
client.setEncryptedSecret(secret.getBytes("UTF-8"));
} catch (final OAuth2EncryptionException e) {
throw new OAuth2PersistenceException(e);
}
client.setClientId(clientId);
if (this.authority != null) {
redirectUri = redirectUri.replace("%authority%", this.authority.getAuthority());
redirectUri = redirectUri.replace("%contextRoot%", this.contextRoot);
redirectUri = redirectUri.replace("%origin%", this.authority.getOrigin());
redirectUri = redirectUri.replace("%scheme", this.authority.getScheme());
}
client.setRedirectUri(redirectUri);
if (grantType == null || grantType.length() == 0) {
grantType = OAuth2Message.AUTHORIZATION;
}
client.setGrantType(grantType);
OAuth2Accessor.Type type = OAuth2Accessor.Type.UNKNOWN;
if (OAuth2Message.CONFIDENTIAL_CLIENT_TYPE.equals(typeS)) {
type = OAuth2Accessor.Type.CONFIDENTIAL;
} else if (OAuth2Message.PUBLIC_CLIENT_TYPE.equals(typeS)) {
type = OAuth2Accessor.Type.PUBLIC;
}
client.setType(type);
final JSONArray dArray = settings.optJSONArray(ALLOWED_DOMAINS);
if (dArray != null) {
final ArrayList<String> domains = new ArrayList<String>();
for (int i = 0; i < dArray.length(); i++) {
domains.add(dArray.optString(i));
}
client.setAllowedDomains(domains.toArray(new String[domains.size()]));
}
internalMap.put(clientName, client);
}
} catch (RuntimeException e) {
throw e;
} catch (final Exception e) {
LOG.logp(Level.WARNING, CLAZZ, method, "Exception loading clients.", e);
throw new OAuth2PersistenceException(e);
}
final Set<OAuth2Client> ret = new HashSet<OAuth2Client>(gadgetBindings.size());
for (final OAuth2GadgetBinding binding : gadgetBindings.values()) {
final String clientName = binding.getClientName();
final OAuth2Client cachedClient = internalMap.get(clientName);
final OAuth2Client client = cachedClient.clone();
client.setGadgetUri(binding.getGadgetUri());
client.setServiceName(binding.getGadgetServiceName());
client.setAllowModuleOverride(binding.isAllowOverride());
ret.add(client);
}
return ret;
}