
net.nemerosa.ontrack.extension.issues.support.IssueServiceRegistryImpl Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of ontrack-extension-issues Show documentation
Show all versions of ontrack-extension-issues Show documentation
Ontrack module: ontrack-extension-issues
package net.nemerosa.ontrack.extension.issues.support;
import net.nemerosa.ontrack.extension.api.ExtensionManager;
import net.nemerosa.ontrack.extension.issues.IssueServiceExtension;
import net.nemerosa.ontrack.extension.issues.IssueServiceRegistry;
import net.nemerosa.ontrack.extension.issues.model.ConfiguredIssueService;
import net.nemerosa.ontrack.extension.issues.model.IssueServiceConfiguration;
import net.nemerosa.ontrack.extension.issues.model.IssueServiceConfigurationIdentifier;
import net.nemerosa.ontrack.extension.issues.model.IssueServiceConfigurationRepresentation;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.*;
import java.util.stream.Collectors;
@Service
public class IssueServiceRegistryImpl implements IssueServiceRegistry {
private final ExtensionManager extensionManager;
@Autowired
public IssueServiceRegistryImpl(ExtensionManager extensionManager) {
this.extensionManager = extensionManager;
}
protected Map getIssueServiceExtensionMap() {
return extensionManager.getExtensions(IssueServiceExtension.class).stream()
.collect(Collectors.toMap(
IssueServiceExtension::getId,
x -> x
)
);
}
@Override
public Collection getIssueServices() {
return getIssueServiceExtensionMap().values();
}
@Override
public IssueServiceExtension getIssueService(String id) {
return getOptionalIssueService(id)
.orElseThrow(() -> new IssueServiceNotAvailableException(id));
}
@Override
public Optional getOptionalIssueService(String id) {
return Optional.ofNullable(getIssueServiceExtensionMap().get(id));
}
@Override
public List getAvailableIssueServiceConfigurations() {
List issueServiceConfigurationRepresentations = new ArrayList<>();
for (IssueServiceExtension issueServiceExtension : getIssueServiceExtensionMap().values()) {
List extends IssueServiceConfiguration> configurationList = issueServiceExtension.getConfigurationList();
for (IssueServiceConfiguration issueServiceConfiguration : configurationList) {
issueServiceConfigurationRepresentations.add(
IssueServiceConfigurationRepresentation.of(
issueServiceExtension,
issueServiceConfiguration
)
);
}
}
return issueServiceConfigurationRepresentations;
}
@Override
public IssueServiceConfiguration getIssueServiceConfigurationById(String id) {
if (StringUtils.isBlank(id)) {
return null;
} else {
return getIssueServiceConfigurationById(IssueServiceConfigurationIdentifier.parse(id));
}
}
@Override
public ConfiguredIssueService getConfiguredIssueService(String issueServiceConfigurationIdentifier) {
// Parsing
IssueServiceConfigurationIdentifier identifier = IssueServiceConfigurationIdentifier.parse(issueServiceConfigurationIdentifier);
if (identifier != null) {
Optional issueService = getOptionalIssueService(identifier.getServiceId());
if (issueService.isPresent()) {
return new ConfiguredIssueService(
issueService.get(),
issueService.get().getConfigurationByName(identifier.getName())
);
} else {
return null;
}
} else {
return null;
}
}
private IssueServiceConfiguration getIssueServiceConfigurationById(IssueServiceConfigurationIdentifier identifier) {
Optional issueService = getOptionalIssueService(identifier.getServiceId());
if (issueService.isPresent()) {
return issueService.get().getConfigurationByName(identifier.getName());
} else {
return null;
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy