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: public class MyJPACodeDataProvider extends JPACMTCodeDataProvider { @PersistenceContext @Override public void setEntityManager(EntityManager entityManager) { super.setEntityManager(entityManager); } }
  • Constructor Details

    • JPACMTCodeDataProvider

      public JPACMTCodeDataProvider()
  • Method Details

    • getEntityManager

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

      public void setEntityManager(jakarta.persistence.EntityManager entityManager)
    • beginIfNeeded

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

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

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

      protected RefreshToken updateExistingRefreshToken(RefreshToken rt, ServerAccessToken at)
      Overrides:
      updateExistingRefreshToken in class AbstractOAuthDataProvider
    • lockRefreshTokenForUpdate

      protected void lockRefreshTokenForUpdate(RefreshToken refreshToken)
    • setPessimisticLockTimeout

      public void setPessimisticLockTimeout(int pessimisticLockTimeout)
    • setUseJpaLockForExistingRefreshToken

      public void setUseJpaLockForExistingRefreshToken(boolean useJpaLockForExistingRefreshToken)