final JSONObject clients = this.configFile.getJSONObject(JSONOAuth2Persister.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(JSONOAuth2Persister.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(JSONOAuth2Persister.TYPE, null);
String grantType = settings.optString(OAuth2Message.GRANT_TYPE, null);
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());
}
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);
internalMap.put(clientName, client);
}
} catch (final Exception e) {
if (JSONOAuth2Persister.LOG.isLoggable()) {
JSONOAuth2Persister.LOG.log("OAuth2PersistenceException", 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 client = internalMap.get(clientName);
client.setGadgetUri(binding.getGadgetUri());
client.setServiceName(binding.getGadgetServiceName());
client.setAllowModuleOverride(binding.isAllowOverride());
ret.add(client);
}
return ret;
}