@Override public String startDanceFor(String providerName) { return startDanceFor(providerName, null); }
@Override public String startDanceFor(Annotation provider) { buildSessionFor(provider); return getCurrentService().getAuthorizationUrl(); }
@Override public void endDance(String verifier) { getCurrentSession().setVerifier(verifier); endDance(); }
@Override public synchronized void endDance() { OAuthSession currentSession = getCurrentSession(); System.out.println("Verifier ("+ getVerifierParamName() + ") : " + currentSession.getVerifier()); // FIXME replace with logger or disable if (currentSession.getAccessToken() == null) { currentSession.setAccessToken(getCurrentService().getAccessToken(currentSession.getRequestToken(), currentSession.getVerifier())); } if (currentSession.getAccessToken() != null) { currentSession.setRequestToken(null); currentSession.setUserProfile(getCurrentUserProfileService().getUserProfile()); currentSession.getRepo().add(currentSession); completeEvt.select(currentSession.getServiceQualifier()).fire(new OAuthComplete(SocialEvent.Status.SUCCESS, "", currentSession)); //TODO: reactivate logger } else { // FIXME Launch an exception !! } }
@Override public OAuthSession resolveSessionForQualifier(Annotation qualifier) { OAuthSession current = getCurrentSession(); if (current.getServiceQualifier().equals(qualifier)) { return current; } if (getCurrentRepository().getCurrent().equals(OAuthSession.NULL)) { buildSessionFor(qualifier); } else if (!getCurrentRepository().getCurrent().getServiceQualifier().equals(qualifier)) { throw new ProviderMismatchException("Inconsistent state between repo and service. In repo Session provider is " + getCurrentRepository().getCurrent().getServiceName() + " while service provider is " + qualifier); } return getCurrentRepository().getCurrent(); }
@Override public OAuthSession buildSessionFor(Annotation qualifier) { OAuthSession res = new OAuthSession.Builder().qualifier(qualifier).repo(unProxifyRepo(getCurrentRepository())).build(); getCurrentRepository().setCurrent(res); return res; }
@Override public void killCurrentSession() { getCurrentRepository().removeCurrent(); }
@Override public OAuthService getCurrentService() { return services.select(getCurrentSession().getServiceQualifier()).get(); }
@PostConstruct protected void init() { objectMapper.enable(SerializationFeature.WRITE_ENUMS_USING_TO_STRING).setSerializationInclusion(JsonInclude.Include .NON_NULL); objectMapper.enable(DeserializationFeature.READ_ENUMS_USING_TO_STRING); for (Module module : moduleInstances) { registerModule(module); } } }
@Override public String getVerifierParamName() { return getCurrentService().getVerifierParamName(); }
@Override public OAuthSession buildSessionFor(String providerName) { OAuthSession res; Annotation qualifier = getServicesToQualifier().get(providerName); if (qualifier == null) { throw new AgoravaException("Cannot find configured service provider with name : " + providerName); } return buildSessionFor(qualifier); }
@Override public String startDanceFor(String providerName, String internalCallBack) { OAuthSession session = buildSessionFor(providerName); if (internalCallBack != null && !"".equals(internalCallBack.trim())) { session.getExtraData().put(AgoravaConstants.INTERN_CALLBACK_PARAM, internalCallBack); } return getCurrentService().getAuthorizationUrl(); }
@Override public void setCurrentSession(OAuthSession session) { getCurrentRepository().setCurrent(session); }
@Override public String startDanceFor(Class<? extends Annotation> providerClass) { Annotation qualifier = getClassToQualifierQualifier().get(providerClass); if (qualifier == null) { throw new AgoravaException("Cannot find configured service provider with class : " + providerClass); } return startDanceFor(qualifier); }
@Override public UserProfileService getCurrentUserProfileService() { return userProfileServices.select(getCurrentSession().getServiceQualifier()).get(); }
@Override public void killSession(OAuthSession session) { getCurrentRepository().remove(session); }
@Override public List<OAuthSession> getAllActiveSessions() { return new ArrayList(getCurrentRepository().getAll()); }