# Hierarchy For All Packages

Package Hierarchies:

- com.jangular.backend,
- com.jangular.backend.config,
- com.jangular.backend.controller,
- com.jangular.backend.dto,
- com.jangular.backend.enums,
- com.jangular.backend.exception,
- com.jangular.backend.models,
- com.jangular.backend.repository,
- com.jangular.backend.security,
- com.jangular.backend.security.jwt,
- com.jangular.backend.security.model,
- com.jangular.backend.service,
- com.jangular.backend.utils

## Class Hierarchy

- java.lang.Object
  - com.jangular.backend.controller.AuthController
  - com.jangular.backend.security.model.AuthenticationRequest
  - com.jangular.backend.security.model.AuthenticationResponse
  - com.jangular.backend.service.AuthenticationService
  - com.jangular.backend.dto.AuthRequest
  - com.jangular.backend.dto.AuthResponse
  - com.jangular.backend.BackendApplication
  - com.jangular.backend.security.CustomUserDetailsService (implements org.springframework.security.core.userdetails.UserDetailsService)
  - com.jangular.backend.config.DatabaseInitializer
  - com.jangular.backend.config.FlywayConfig
  - org.springframework.web.filter.GenericFilterBean (implements org.springframework.beans.factory.BeanNameAware, org.springframework.beans.factory.DisposableBean, org.springframework.context.EnvironmentAware, org.springframework.core.env.EnvironmentCapable, jakarta.servlet.Filter, org.springframework.beans.factory.InitializingBean, org.springframework.web.context.ServletContextAware)
    - org.springframework.web.filter.OncePerRequestFilter
      - com.jangular.backend.security.jwt.JwtAuthenticationFilter
  - com.jangular.backend.security.jwt.JwtAccessDeniedHandler (implements org.springframework.security.web.access.AccessDeniedHandler)
  - com.jangular.backend.security.jwt.JwtAuthenticationEntryPoint (implements org.springframework.security.web.AuthenticationEntryPoint)
  - com.jangular.backend.security.jwt.JwtTokenProvider
  - com.jangular.backend.security.jwt.JwtTokenUtil
  - com.jangular.backend.models.PasswordHistory
  - com.jangular.backend.models.RefreshToken
  - com.jangular.backend.security.model.RefreshTokenRequest
  - com.jangular.backend.dto.RegisterRequest
  - com.jangular.backend.models.Role
  - com.jangular.backend.utils.SecurityUtils
  - java.lang.Throwable (implements java.io.Serializable)
    - java.lang.Exception
      - java.lang.RuntimeException
        - com.jangular.backend.exception.AccountLockedException
        - com.jangular.backend.exception.BadCredentialsException
        - com.jangular.backend.exception.ResourceNotFoundException
        - com.jangular.backend.exception.TokenException
  - com.jangular.backend.dto.TokenRefreshRequest
  - com.jangular.backend.service.TokenService
  - com.jangular.backend.models.User
  - com.jangular.backend.controller.UserController
  - com.jangular.backend.dto.UserDTO
  - com.jangular.backend.models.UserLoginHistory
  - com.jangular.backend.service.UserLoginHistoryService
  - com.jangular.backend.security.UserPrincipal (implements org.springframework.security.core.userdetails.UserDetails)
  - com.jangular.backend.service.UserService
  - com.jangular.backend.config.WebSecurityConfig

## Interface Hierarchy

- org.springframework.data.repository.query.QueryByExampleExecutor<T>
  - org.springframework.data.jpa.repository.JpaRepository<T,ID> (also extends org.springframework.data.repository.ListCrudRepository<T,ID>, org.springframework.data.repository.ListPagingAndSortingRepository<T,ID>)
    - com.jangular.backend.repository.PasswordHistoryRepository
    - com.jangular.backend.repository.RefreshTokenRepository
    - com.jangular.backend.repository.RoleRepository
    - com.jangular.backend.repository.UserLoginHistoryRepository
    - com.jangular.backend.repository.UserRepository
- org.springframework.data.repository.Repository<T,ID>
  - org.springframework.data.repository.CrudRepository<T,ID>
    - org.springframework.data.repository.ListCrudRepository<T,ID>
      - org.springframework.data.jpa.repository.JpaRepository<T,ID> (also extends org.springframework.data.repository.ListPagingAndSortingRepository<T,ID>, org.springframework.data.repository.query.QueryByExampleExecutor<T>)
        - com.jangular.backend.repository.PasswordHistoryRepository
        - com.jangular.backend.repository.RefreshTokenRepository
        - com.jangular.backend.repository.RoleRepository
        - com.jangular.backend.repository.UserLoginHistoryRepository
        - com.jangular.backend.repository.UserRepository
  - org.springframework.data.repository.PagingAndSortingRepository<T,ID>
    - org.springframework.data.repository.ListPagingAndSortingRepository<T,ID>
      - org.springframework.data.jpa.repository.JpaRepository<T,ID> (also extends org.springframework.data.repository.ListCrudRepository<T,ID>, org.springframework.data.repository.query.QueryByExampleExecutor<T>)
        - com.jangular.backend.repository.PasswordHistoryRepository
        - com.jangular.backend.repository.RefreshTokenRepository
        - com.jangular.backend.repository.RoleRepository
        - com.jangular.backend.repository.UserLoginHistoryRepository
        - com.jangular.backend.repository.UserRepository

## Enum Class Hierarchy

- java.lang.Object
  - java.lang.Enum<E> (implements java.lang.Comparable<T>, java.lang.constant.Constable, java.io.Serializable)
    - com.jangular.backend.enums.RoleName