![JAR search and dependency download from the Maven repository](/logo.png)
com.rcore.restapi.config.RestApiConfig Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of rest-api Show documentation
Show all versions of rest-api Show documentation
REST API component for Clean Arch apps
package com.rcore.restapi.config;
import com.rcore.adapter.domain.file.FileAdapter;
import com.rcore.adapter.domain.picture.PictureAdapter;
import com.rcore.adapter.domain.token.TokenAdapter;
import com.rcore.adapter.domain.user.UserAdapter;
import com.rcore.domain.file.config.FileConfig;
import com.rcore.domain.file.port.FileIdGenerator;
import com.rcore.domain.file.port.FileRepository;
import com.rcore.domain.file.port.FileStorage;
import com.rcore.domain.picture.config.PictureConfig;
import com.rcore.domain.picture.port.PictureCompressor;
import com.rcore.domain.picture.port.PictureIdGenerator;
import com.rcore.domain.picture.port.PictureRepository;
import com.rcore.domain.picture.port.PictureStorage;
import com.rcore.domain.role.port.RoleRepository;
import com.rcore.domain.token.config.TokenConfig;
import com.rcore.domain.token.port.AccessTokenIdGenerator;
import com.rcore.domain.token.port.AccessTokenStorage;
import com.rcore.domain.token.port.RefreshTokenIdGenerator;
import com.rcore.domain.token.port.RefreshTokenRepository;
import com.rcore.domain.token.port.impl.TokenSaltGeneratorImpl;
import com.rcore.domain.token.usecase.CreateAccessTokenUseCase;
import com.rcore.domain.token.usecase.CreateRefreshTokenUseCase;
import com.rcore.domain.token.usecase.ExpireTokenUseCase;
import com.rcore.domain.user.config.UserConfig;
import com.rcore.domain.user.port.PasswordGenerator;
import com.rcore.domain.user.port.UserIdGenerator;
import com.rcore.domain.user.port.UserRepository;
import com.rcore.domain.user.port.impl.PasswordGeneratorImpl;
import lombok.RequiredArgsConstructor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
/**
* В данном конфиге создаем бины всех адаптеров
*/
@EnableWebMvc
@RequiredArgsConstructor
@Configuration
public class RestApiConfig {
private final PictureRepository pictureRepository;
private final PictureIdGenerator pictureIdGenerator;
private final PictureStorage pictureStorage;
private final PictureCompressor pictureCompressor;
private final FileRepository fileRepository;
private final FileIdGenerator fileIdGenerator;
private final FileStorage fileStorage;
private final UserRepository userRepository;
private final UserIdGenerator userIdGenerator;
private final PasswordGenerator passwordGenerator = new PasswordGeneratorImpl();
private final RoleRepository roleRepository;
private final RefreshTokenRepository refreshTokenRepository;
private final AccessTokenStorage accessTokenStorage;
private final AccessTokenIdGenerator accessTokenIdGenerator;
private final RefreshTokenIdGenerator refreshTokenIdGenerator;
private final TokenSaltGeneratorImpl tokenSaltGenerator = new TokenSaltGeneratorImpl();
@Bean
public PictureAdapter pictureAdapter() {
return new PictureAdapter(new PictureConfig(pictureRepository, pictureIdGenerator, pictureStorage, pictureCompressor));
}
@Bean
public FileAdapter fileAdapter() {
return new FileAdapter(new FileConfig(fileRepository, fileIdGenerator, fileStorage));
}
@Bean
public TokenAdapter tokenAdapter() {
return new TokenAdapter(new TokenConfig(refreshTokenRepository, accessTokenStorage, userRepository, accessTokenIdGenerator, refreshTokenIdGenerator, tokenSaltGenerator));
}
@Bean
public UserAdapter userAdapter() {
return new UserAdapter(new UserConfig(
userRepository, userIdGenerator, passwordGenerator,
new ExpireTokenUseCase(refreshTokenRepository),
new CreateRefreshTokenUseCase(refreshTokenIdGenerator, refreshTokenRepository, tokenSaltGenerator),
new CreateAccessTokenUseCase(accessTokenIdGenerator, new CreateRefreshTokenUseCase(refreshTokenIdGenerator, refreshTokenRepository, tokenSaltGenerator)),
refreshTokenRepository,
roleRepository)
);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy