mirror of
https://github.com/scm-manager/scm-manager.git
synced 2025-10-26 08:06:09 +01:00
fixed build on Java > 8
This commit is contained in:
@@ -5,6 +5,9 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
||||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||
|
||||
## Unreleased
|
||||
### Added
|
||||
- Support for Java versions > 8
|
||||
|
||||
### Changed
|
||||
- Upgrade [Legman](https://github.com/sdorra/legman) to v1.6.2 in order to fix execution on Java versions > 8
|
||||
- Upgrade [Lombok](https://projectlombok.org/) to version 1.18.10 in order to fix build on Java versions > 8
|
||||
|
||||
@@ -91,6 +91,7 @@ public final class RepositoryService implements Closeable {
|
||||
private final PreProcessorUtil preProcessorUtil;
|
||||
private final RepositoryServiceProvider provider;
|
||||
private final Repository repository;
|
||||
@SuppressWarnings("rawtypes")
|
||||
private final Set<ScmProtocolProvider> protocolProviders;
|
||||
private final WorkdirProvider workdirProvider;
|
||||
|
||||
@@ -104,7 +105,10 @@ public final class RepositoryService implements Closeable {
|
||||
*/
|
||||
RepositoryService(CacheManager cacheManager,
|
||||
RepositoryServiceProvider provider, Repository repository,
|
||||
PreProcessorUtil preProcessorUtil, Set<ScmProtocolProvider> protocolProviders, WorkdirProvider workdirProvider) {
|
||||
PreProcessorUtil preProcessorUtil,
|
||||
@SuppressWarnings("rawtypes") Set<ScmProtocolProvider> protocolProviders,
|
||||
WorkdirProvider workdirProvider
|
||||
) {
|
||||
this.cacheManager = cacheManager;
|
||||
this.provider = provider;
|
||||
this.repository = repository;
|
||||
@@ -445,19 +449,23 @@ public final class RepositoryService implements Closeable {
|
||||
return provider.getSupportedFeatures().contains(feature);
|
||||
}
|
||||
|
||||
public <T extends ScmProtocol> Stream<T> getSupportedProtocols() {
|
||||
public Stream<ScmProtocol> getSupportedProtocols() {
|
||||
return protocolProviders.stream()
|
||||
.filter(protocolProvider -> protocolProvider.getType().equals(getRepository().getType()))
|
||||
.map(this::<T>createProviderInstanceForRepository);
|
||||
.map(this::createProviderInstanceForRepository);
|
||||
}
|
||||
|
||||
private <T extends ScmProtocol> T createProviderInstanceForRepository(ScmProtocolProvider<T> protocolProvider) {
|
||||
@SuppressWarnings("rawtypes")
|
||||
private ScmProtocol createProviderInstanceForRepository(ScmProtocolProvider protocolProvider) {
|
||||
return protocolProvider.get(repository);
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
public <T extends ScmProtocol> T getProtocol(Class<T> clazz) {
|
||||
return this.<T>getSupportedProtocols()
|
||||
return this.getSupportedProtocols()
|
||||
.filter(scmProtocol -> clazz.isAssignableFrom(scmProtocol.getClass()))
|
||||
// no idea how to fix this, without cast
|
||||
.map(p -> (T) p)
|
||||
.findFirst()
|
||||
.orElseThrow(() -> new IllegalArgumentException(String.format("no implementation for %s and repository type %s", clazz.getName(),getRepository().getType())));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user