Class JPACMTCodeDataProvider

  • All Implemented Interfaces:
    AuthorizationCodeDataProvider, ClientRegistrationProvider, OAuthDataProvider

    public class JPACMTCodeDataProvider
    extends JPACodeDataProvider
    Same as JPACodeDataProvider (stores Clients and tokens in a rdbms using JPA APIs). The transaction demarcation is handled by the container (be it Spring or Java EE). Sample usage with Spring XML:
     
         <bean id="oauthProvider" class="org.apache.cxf.rs.security.oauth2.grants.code.JPACMTCodeDataProvider"
            init-method="init" destroy-method="close">
    
             <property name="entityManager" ref="entityManager"/>
             <!-- List of accepted scopes -->
             <property name="supportedScopes" ref="supportedScopes"/>
             <!-- List of required scopes -->
             <!-- commented because bug in Resource Owner Flow
             <property name="requiredScopes" ref="coreScopes"/>
             -->
             <!--
             List of scopes that the consent/authorization form should make
             selected by default. For example, asking a user to do an extra click
             to approve an "oidc" scope is a redundant operation because this scope
             is required anyway.
             -->
             <property name="defaultScopes" ref="coreScopes"/>
             <property name="invisibleToClientScopes" ref="invisibleToClientScopes"/>
         </bean>
    
         <bean name="entityManager" class="org.springframework.orm.jpa.support.SharedEntityManagerBean">
             <property name="entityManagerFactory" ref="entityManagerFactory"/>
         </bean>
         ...
     
     
    You can also extend this class and inject your own entityManager: {@code public class MyJPACodeDataProvider extends JPACMTCodeDataProvider {
    • Constructor Detail

      • JPACMTCodeDataProvider

        public JPACMTCodeDataProvider()
    • Method Detail

      • getEntityManager

        protected javax.persistence.EntityManager getEntityManager()
        Returns the entityManaged used for the current operation.
        Overrides:
        getEntityManager in class JPAOAuthDataProvider
      • setEntityManager

        public void setEntityManager​(javax.persistence.EntityManager entityManager)
      • beginIfNeeded

        protected javax.persistence.EntityTransaction beginIfNeeded​(javax.persistence.EntityManager em)
        Doesn't do anything, beginning tx is handled by container.
        Overrides:
        beginIfNeeded in class JPAOAuthDataProvider
      • commitIfNeeded

        protected void commitIfNeeded​(javax.persistence.EntityManager em)
        Doesn't do anything, commit is handled by container.
        Overrides:
        commitIfNeeded in class JPAOAuthDataProvider
      • closeIfNeeded

        protected void closeIfNeeded​(javax.persistence.EntityManager em)
        Doesn't do anything, em lifecycle is handled by container.
        Overrides:
        closeIfNeeded in class JPAOAuthDataProvider
      • lockRefreshTokenForUpdate

        protected void lockRefreshTokenForUpdate​(RefreshToken refreshToken)
      • setPessimisticLockTimeout

        public void setPessimisticLockTimeout​(int pessimisticLockTimeout)
      • setUseJpaLockForExistingRefreshToken

        public void setUseJpaLockForExistingRefreshToken​(boolean useJpaLockForExistingRefreshToken)