package eu.eudat.security.validators; import eu.eudat.security.validators.facebook.FacebookTokenValidator; import eu.eudat.security.validators.google.GoogleTokenValidator; import eu.eudat.security.validators.linkedin.LinkedInTokenValidator; import eu.eudat.security.validators.twitter.TwitterTokenValidator; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; /** * Created by ikalyvas on 1/9/2018. */ @Service("tokenValidatorFactory") public class TokenValidatorFactoryImpl implements TokenValidatorFactory{ public enum LoginProvider { GOOGLE((short) 1), FACEBOOK((short) 2), TWITTER((short) 3), LINKEDIN((short) 4); private short value; private LoginProvider(short value) { this.value = value; } public short getValue() { return value; } public static LoginProvider fromInteger(int value) { switch (value) { case 1: return GOOGLE; case 2: return FACEBOOK; case 3: return TWITTER; case 4: return LINKEDIN; default: throw new RuntimeException("Unsupported LoginProvider"); } } } private GoogleTokenValidator googleTokenValidator; private FacebookTokenValidator facebookTokenValidator; private LinkedInTokenValidator linkedInTokenValidator; private TwitterTokenValidator twitterTokenValidator; @Autowired public TokenValidatorFactoryImpl(GoogleTokenValidator googleTokenValidator, FacebookTokenValidator facebookTokenValidator,LinkedInTokenValidator linkedInTokenValidator,TwitterTokenValidator twitterTokenValidator) { this.googleTokenValidator = googleTokenValidator; this.facebookTokenValidator = facebookTokenValidator; this.linkedInTokenValidator = linkedInTokenValidator; this.twitterTokenValidator = twitterTokenValidator; } public TokenValidator getProvider(LoginProvider provider) { switch (provider) { case GOOGLE: return this.googleTokenValidator; case FACEBOOK: return this.facebookTokenValidator; case LINKEDIN: return this.linkedInTokenValidator; case TWITTER: return this.twitterTokenValidator; default: throw new RuntimeException("Login Provider Not Implemented"); } } }