package com.stormpath.sdk.impl.provider;
import com.stormpath.sdk.impl.ds.InternalDataStore;
import com.stormpath.sdk.impl.resource.EnumProperty;
import com.stormpath.sdk.impl.resource.Property;
import com.stormpath.sdk.impl.resource.StringProperty;
import com.stormpath.sdk.provider.AccessTokenType;
import com.stormpath.sdk.provider.GenericOAuth2Provider;
import java.util.Map;
/**
* @since 1.3.0
*/
public class DefaultGenericOAuth2Provider extends AbstractOAuthProvider<GenericOAuth2Provider> implements GenericOAuth2Provider {
private static final StringProperty AUTHORIZAION_ENDPOINT = new StringProperty("authorizationEndpoint");
private static final StringProperty TOKEN_ENDPOINT = new StringProperty("tokenEndpoint");
private static final StringProperty RESOURCE_ENDPOINT = new StringProperty("resourceEndpoint");
private static final EnumProperty<AccessTokenType> ACCESS_TOKEN_TYPE = new EnumProperty<>("accessTokenType", AccessTokenType.class);
static final Map<String,Property> PROPERTY_DESCRIPTORS = createPropertyDescriptorMap(PROVIDER_ID, CREATED_AT,
MODIFIED_AT, CLIENT_ID, CLIENT_SECRET, SCOPE, USER_INFO_MAPPING_RULES, AUTHORIZAION_ENDPOINT,
TOKEN_ENDPOINT, RESOURCE_ENDPOINT, ACCESS_TOKEN_TYPE);
public DefaultGenericOAuth2Provider(InternalDataStore dataStore) {
super(dataStore);
}
public DefaultGenericOAuth2Provider(InternalDataStore dataStore, String providerId) {
super(dataStore);
setProviderId(providerId);
}
public DefaultGenericOAuth2Provider(InternalDataStore dataStore, Map<String, Object> properties) {
super(dataStore, properties);
if (properties.containsKey(PROVIDER_ID.getName())) {
setProviderId((String) properties.get(PROVIDER_ID.getName()));
}
}
@Override
public Map<String, Property> getPropertyDescriptors() {
return PROPERTY_DESCRIPTORS;
}
@Override
protected String getConcreteProviderId() {
return getProviderId();
}
@Override
public String getAuthorizationEndpoint() {
return getString(AUTHORIZAION_ENDPOINT);
}
@Override
public String getTokenEndpoint() {
return getString(TOKEN_ENDPOINT);
}
@Override
public String getResourceEndpoint() {
return getString(RESOURCE_ENDPOINT);
}
@Override
public AccessTokenType getAccessType() {
String value = getStringProperty(ACCESS_TOKEN_TYPE.getName());
if (value == null) {
return null;
}
return AccessTokenType.fromNameKey(value);
}
public GenericOAuth2Provider setProviderId(String providerId) {
setProperty(PROVIDER_ID, providerId);
return this;
}
public GenericOAuth2Provider setAuthorizationEndpoint(String authorizationEndpoint) {
setProperty(AUTHORIZAION_ENDPOINT, authorizationEndpoint);
return this;
}
public GenericOAuth2Provider setTokenEndpoint(String tokenEndpoint) {
setProperty(TOKEN_ENDPOINT, tokenEndpoint);
return this;
}
public GenericOAuth2Provider setResourceEndpoint(String resourceEndpoint) {
setProperty(RESOURCE_ENDPOINT, resourceEndpoint);
return this;
}
public GenericOAuth2Provider setAccessTokenType(AccessTokenType accessTokenType) {
setProperty(ACCESS_TOKEN_TYPE, accessTokenType);
return this;
}
@Override
public String getProviderType() {
return IdentityProviderType.OAUTH2.getNameKey();
}
}