/** * Set the provider qualifier for the session from the provider name * * @param providerName linked to a {@link org.agorava.api.atinject.ProviderRelated} qualifier * @return this builder * @throws ProviderMismatchException if parameter is null or if no provider exists for this name */ public Builder providerName(String providerName) throws ProviderMismatchException { qualifier = AgoravaContext.getServicesToQualifier().get(providerName); if (qualifier == null) throw new ProviderMismatchException("No provider found with name : " + providerName); return this; }
/** * Set the provider qualifier for the session * * @param qualifier with {@link org.agorava.api.atinject.ProviderRelated} meta-annotation * @return this builder * @throws ProviderMismatchException if parameter is null or if no provider exists for this qualifier */ public Builder qualifier(Annotation qualifier) throws ProviderMismatchException { this.qualifier = qualifier; if (qualifier != null && AgoravaContext.getQualifierToService().containsKey(qualifier)) return this; else throw new ProviderMismatchException("No provider found for qualifier : " + qualifier); }
@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(); }