Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore: fix sonar issues #3771

Merged
merged 38 commits into from
Sep 18, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
fec9343
exclude httpclient 3
pj892031 Sep 10, 2024
e967081
fix
taban03 Sep 10, 2024
b479236
upgrade spring-boot-actuator
taban03 Sep 10, 2024
807def1
update express
taban03 Sep 12, 2024
2bac6f7
update dependencies
taban03 Sep 13, 2024
9d87528
fix bean issue
taban03 Sep 13, 2024
dfb9a57
fix apache compress dependency (detected by ./gradlew buildEnvironment)
pj892031 Sep 13, 2024
bf7c2af
Merge branch 'v3.x.x' into reboot/bd-2024-09-10
pj892031 Sep 13, 2024
55ff43b
remove obsolete test
taban03 Sep 13, 2024
c49e5bb
update snapshots
taban03 Sep 13, 2024
55e358f
Merge branch 'v3.x.x' into reboot/bd-2024-09-10
taban03 Sep 13, 2024
64624cb
https://sonarcloud.io/project/issues?severities=BLOCKER%2CCRITICAL%2C…
richard-salac Sep 16, 2024
b1af1d0
https://sonarcloud.io/project/issues?impactSeverities=HIGH&issueStatu…
richard-salac Sep 16, 2024
7e3ac12
https://sonarcloud.io/project/issues?impactSeverities=HIGH&issueStatu…
richard-salac Sep 16, 2024
b1f9aec
https://sonarcloud.io/project/issues?impactSeverities=HIGH&issueStatu…
richard-salac Sep 16, 2024
87a07eb
https://sonarcloud.io/project/issues?impactSeverities=HIGH&issueStatu…
richard-salac Sep 16, 2024
7125592
https://sonarcloud.io/project/issues?impactSeverities=HIGH&issueStatu…
richard-salac Sep 16, 2024
6a25d59
https://sonarcloud.io/project/issues?impactSeverities=HIGH&issueStatu…
richard-salac Sep 16, 2024
68b79e4
.collect(Collectors.toList()) -> .toList()
richard-salac Sep 16, 2024
f2a3de7
https://sonarcloud.io/project/issues?impactSeverities=MEDIUM&issueSta…
richard-salac Sep 16, 2024
bde9cd7
https://sonarcloud.io/project/issues?impactSeverities=MEDIUM&issueSta…
richard-salac Sep 16, 2024
cb8650d
https://sonarcloud.io/project/issues?impactSeverities=MEDIUM&issueSta…
richard-salac Sep 16, 2024
51f77c6
https://sonarcloud.io/project/issues?impactSeverities=MEDIUM&issueSta…
richard-salac Sep 16, 2024
3595905
https://sonarcloud.io/project/issues?impactSeverities=HIGH&issueStatu…
richard-salac Sep 17, 2024
aed8fe2
kick the pipeline
richard-salac Sep 17, 2024
a596094
Merge branch 'v3.x.x' into reboot/fix_sonar_v3
pj892031 Sep 17, 2024
c5c785c
https://sonarcloud.io/project/issues?impactSeverities=MEDIUM&issueSta…
richard-salac Sep 17, 2024
26a919f
fix
richard-salac Sep 17, 2024
0233d54
https://sonarcloud.io/project/issues?impactSeverities=MEDIUM&issueSta…
richard-salac Sep 17, 2024
d990901
https://sonarcloud.io/project/issues?impactSeverities=HIGH&issueStatu…
richard-salac Sep 17, 2024
894e3fe
https://sonarcloud.io/project/issues?impactSeverities=HIGH&issueStatu…
richard-salac Sep 17, 2024
8d2269c
https://sonarcloud.io/project/issues?impactSeverities=HIGH&sinceLeakP…
richard-salac Sep 17, 2024
833a0c9
https://sonarcloud.io/project/issues?issueStatuses=OPEN%2CCONFIRMED&p…
richard-salac Sep 17, 2024
aa3ad9d
https://sonarcloud.io/project/issues?issueStatuses=OPEN%2CCONFIRMED&p…
richard-salac Sep 17, 2024
45654aa
https://sonarcloud.io/project/issues?issueStatuses=OPEN%2CCONFIRMED&p…
richard-salac Sep 17, 2024
d8dd18f
Merge branch 'v3.x.x' into reboot/fix_sonar_v3
richard-salac Sep 18, 2024
a0be43c
remove unused variable
taban03 Sep 18, 2024
8a3a453
Merge branch 'v3.x.x' into reboot/fix_sonar_v3
taban03 Sep 18, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,6 @@
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.StreamSupport;

/**
Expand Down Expand Up @@ -179,6 +178,6 @@ private <T> List<T> toList(final Iterable<T> iterable) {
return Collections.emptyList();
}
return StreamSupport.stream(iterable.spliterator(), false)
.collect(Collectors.toList());
.toList();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,15 +10,6 @@

package org.zowe.apiml.apicatalog.instance;

import org.zowe.apiml.apicatalog.model.APIContainer;
import org.zowe.apiml.apicatalog.services.cached.CachedProductFamilyService;
import org.zowe.apiml.apicatalog.services.cached.CachedServicesService;
import org.zowe.apiml.message.log.ApimlLogger;
import org.zowe.apiml.product.constants.CoreService;
import org.zowe.apiml.product.gateway.GatewayNotAvailableException;
import org.zowe.apiml.product.instance.InstanceInitializationException;
import org.zowe.apiml.product.logging.annotations.InjectApimlLogger;
import org.zowe.apiml.product.registry.CannotRegisterServiceException;
import com.netflix.appinfo.InstanceInfo;
import com.netflix.discovery.shared.Application;
import com.netflix.discovery.shared.Applications;
Expand All @@ -29,6 +20,15 @@
import org.springframework.retry.annotation.Recover;
import org.springframework.retry.annotation.Retryable;
import org.springframework.stereotype.Service;
import org.zowe.apiml.apicatalog.model.APIContainer;
import org.zowe.apiml.apicatalog.services.cached.CachedProductFamilyService;
import org.zowe.apiml.apicatalog.services.cached.CachedServicesService;
import org.zowe.apiml.message.log.ApimlLogger;
import org.zowe.apiml.product.constants.CoreService;
import org.zowe.apiml.product.gateway.GatewayNotAvailableException;
import org.zowe.apiml.product.instance.InstanceInitializationException;
import org.zowe.apiml.product.logging.annotations.InjectApimlLogger;
import org.zowe.apiml.product.registry.CannotRegisterServiceException;

import java.util.Collection;
import java.util.List;
Expand Down Expand Up @@ -60,8 +60,8 @@ public class InstanceInitializeService {
* @throws CannotRegisterServiceException if the fetch fails or the catalog is not registered with the discovery
*/
@Retryable(
value = {RetryException.class},
exclude = CannotRegisterServiceException.class,
retryFor = {RetryException.class},
noRetryFor = CannotRegisterServiceException.class,
maxAttempts = 5,
backoff = @Backoff(delayExpression = "#{${apiml.service-registry.serviceFetchDelayInMillis}}"))
public void retrieveAndRegisterAllInstancesWithCatalog() throws CannotRegisterServiceException {
Expand Down Expand Up @@ -102,7 +102,7 @@ private void updateCacheWithAllInstances() {
List<Application> listApplication = discoveryApplications.getRegisteredApplications()
.stream()
.filter(application -> !application.getInstances().isEmpty())
.collect(Collectors.toList());
.toList();

// Return an empty string if no services are found after filtering
if (listApplication.isEmpty()) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,33 +11,26 @@
package org.zowe.apiml.apicatalog.instance;


import com.netflix.appinfo.InstanceInfo;
import com.netflix.discovery.shared.Application;
import com.netflix.discovery.shared.Applications;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;
import org.zowe.apiml.apicatalog.model.APIContainer;
import org.zowe.apiml.apicatalog.services.cached.CachedProductFamilyService;
import org.zowe.apiml.apicatalog.services.cached.CachedServicesService;
import org.zowe.apiml.apicatalog.util.ContainerServiceMockUtil;
import org.zowe.apiml.apicatalog.util.ContainerServiceState;
import org.zowe.apiml.product.constants.CoreService;
import org.zowe.apiml.product.gateway.GatewayClient;
import com.netflix.appinfo.InstanceInfo;
import com.netflix.discovery.shared.Application;
import com.netflix.discovery.shared.Applications;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;

import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.stream.Collectors;

import static org.mockito.Mockito.*;
import static org.zowe.apiml.constants.EurekaMetadataDefinition.CATALOG_ID;
import static org.mockito.Mockito.any;
import static org.mockito.Mockito.anyString;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;

class InstanceRefreshServiceTest {

Expand Down Expand Up @@ -79,7 +72,7 @@ void prepareState() {
discoveredState.setServices(new ArrayList<>());
discoveredState.setContainers(new ArrayList<>());
discoveredState.setInstances(new ArrayList<>());
discoveredState.setApplications(new ArrayList<>());
discoveredState.setApplications(new ArrayList<>());
}

@Nested
Expand All @@ -97,7 +90,7 @@ void prepareApplication() {
discoveredState.getInstances().add(newInstanceOfService);
Application service5 = new Application("service5", Collections.singletonList(newInstanceOfService));
discoveredState.getApplications().add(service5);

teachMocks();
}

Expand All @@ -110,7 +103,7 @@ void addServiceToCache() {

verify(cachedProductFamilyService, times(1))
.saveContainerFromInstance("api-five", newInstanceOfService);
}
}
}

@Nested
Expand All @@ -123,21 +116,21 @@ void prepareService() {
service3 = cachedState.getApplications()
.stream()
.filter(application -> application.getName().equalsIgnoreCase("service3"))
.collect(Collectors.toList()).get(0);
.toList().get(0);

changedInstanceOfService = service3.getInstances().get(0);
changedInstanceOfService.getMetadata().put(CATALOG_ID, "api-three");
service3.getInstances().add(0, changedInstanceOfService);
discoveredState.getApplications().add(service3);
discoveredState.getApplications().add(service3);

teachMocks();

}

@Test
void serviceIsRemovedFromCache() {
changedInstanceOfService.setActionType(InstanceInfo.ActionType.DELETED);

underTest.refreshCacheFromDiscovery();

verify(cachedProductFamilyService, times(1))
Expand All @@ -149,7 +142,7 @@ void serviceIsRemovedFromCache() {
@Test
void serviceIsModifiedInCache() {
changedInstanceOfService.setActionType(InstanceInfo.ActionType.MODIFIED);

APIContainer apiContainer3 = cachedState.getContainers()
.stream()
.filter(apiContainer -> apiContainer.getId().equals("api-three"))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -98,12 +98,14 @@ void providedNoInstanceInfoIsReturned_thenInstanceInitializationExceptionIsThrow

@Test
void testGetInstanceInfo_whenResponseHasEmptyBody() {
HttpClientMockHelper.mockResponse(response, "");
InstanceInfo instanceInfo = instanceRetrievalService.getInstanceInfo(CoreService.API_CATALOG.getServiceId());
assertNull(instanceInfo);
}

@Test
void testGetInstanceInfo_whenResponseCodeIsSuccessWithUnParsedJsonText() {
HttpClientMockHelper.mockResponse(response, "UNPARSABLE_JSON");
InstanceInfo instanceInfo = instanceRetrievalService.getInstanceInfo(CoreService.API_CATALOG.getServiceId());
assertNull(instanceInfo);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,13 @@

package org.zowe.apiml.apicatalog.util;

import com.netflix.appinfo.InstanceInfo;
import com.netflix.discovery.shared.Application;
import org.zowe.apiml.apicatalog.model.APIContainer;
import org.zowe.apiml.apicatalog.model.APIService;
import org.zowe.apiml.apicatalog.services.cached.CachedServicesService;
import com.netflix.appinfo.InstanceInfo;
import com.netflix.discovery.shared.Application;

import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;

import static org.mockito.Mockito.when;
Expand Down Expand Up @@ -81,10 +80,8 @@ private int generateInstancesAndServices(ContainerServiceState containerServiceS
int limit) {
List<InstanceInfo> generatedInstances = Stream.iterate(index, i -> i + 1)
.limit(limit)
.map(mIndex -> {
return getInstance(mIndex, serviceId);
}).collect(Collectors.toList());

.map(mIndex -> getInstance(mIndex, serviceId))
.toList();

addApiService(serviceId, containerServiceState.getServices(), services);
addInstancesToApplications(
Expand Down
59 changes: 31 additions & 28 deletions api-catalog-ui/frontend/src/components/Error/ErrorFormatter.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -31,59 +31,62 @@ function extractAjaxError(error) {
return null;
}

function formaHtmlError(message, color) {
function formatHtmlError(message, color) {
return (
<Typography key={uuidv4()} variant="h5" style={{ color, fontWeight: 'semiBold' }}>
{htmr(message)}
</Typography>
);
}

const formatError = (error) => {
let message = 'Could not determine error';
function handleValidError(error) {
let message = error.error;
let color = colorDanger;
const extractedAjaxError = extractAjaxError(error.error);
if (extractedAjaxError) {
const { msg, clr } = extractedAjaxError;
return formatHtmlError(msg, clr);
}
if (error.key !== null && error.key !== undefined) {
message = `${error.key} : ${error.text}`;
switch (error.messageType.levelStr) {
case 'ERROR':
color = colorDanger;
break;
case 'WARNING':
color = colorWarning;
break;
default:
color = colorDanger;
}
}
return formatHtmlError(message, color);
}

const formatError = (error) => {
const message = 'Could not determine error';

if (error === null || error === undefined) {
return formaHtmlError(message, color);
return formatHtmlError(message, colorDanger);
}

if (error.id !== undefined && error.timestamp !== undefined) {
message = error.error;
color = colorDanger;
const extractedAjaxError = extractAjaxError(error.error);
if (extractedAjaxError) {
const { msg, clr } = extractedAjaxError;
return formaHtmlError(msg, clr);
}
if (error.key !== null && error.key !== undefined) {
message = `${error.key} : ${error.text}`;
switch (error.messageType.levelStr) {
case 'ERROR':
color = colorDanger;
break;
case 'WARNING':
color = colorWarning;
break;
default:
color = colorDanger;
}
}
return formaHtmlError(message, color);
return handleValidError(error);
}

if (error.name === 'AjaxError') {
const extractedAjaxError = extractAjaxError(error);
if (extractedAjaxError) {
const { msg, clr } = extractedAjaxError;
return formaHtmlError(msg, clr);
return formatHtmlError(msg, clr);
}
}

if (error.message !== undefined) {
return formaHtmlError(error.message, colorDanger);
return formatHtmlError(error.message, colorDanger);
}

return formaHtmlError(message, color);
return formatHtmlError(message, colorDanger);
};

export default formatError;
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,10 @@

package org.zowe.apiml.extension;

import static com.fasterxml.jackson.databind.DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.dataformat.yaml.YAMLFactory;
import lombok.extern.slf4j.Slf4j;
import org.zowe.apiml.extension.ExtensionDefinition.ApimlServices;

import java.io.File;
import java.nio.charset.Charset;
Expand All @@ -21,14 +24,8 @@
import java.util.List;
import java.util.Objects;
import java.util.Optional;
import java.util.stream.Collectors;

import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.dataformat.yaml.YAMLFactory;

import org.zowe.apiml.extension.ExtensionDefinition.ApimlServices;

import lombok.extern.slf4j.Slf4j;
import static com.fasterxml.jackson.databind.DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES;

@Slf4j
public class ExtensionConfigReader {
Expand All @@ -46,7 +43,7 @@ public String[] getBasePackages() {
.filter(Objects::nonNull)
.map(ApimlServices::getBasePackage)
.filter(Objects::nonNull)
.collect(Collectors.toList())
.toList()
.toArray(new String[0]);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,12 @@

package org.zowe.apiml.security.common.filter;

import jakarta.servlet.FilterChain;
import jakarta.servlet.ServletException;
import jakarta.servlet.ServletRequest;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletRequestWrapper;
import jakarta.servlet.http.HttpServletResponse;
import lombok.Getter;
import lombok.NonNull;
import lombok.RequiredArgsConstructor;
Expand All @@ -20,20 +26,13 @@
import org.zowe.apiml.product.logging.annotations.InjectApimlLogger;
import org.zowe.apiml.security.common.verify.CertificateValidator;

import jakarta.servlet.FilterChain;
import jakarta.servlet.ServletException;
import jakarta.servlet.ServletRequest;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletRequestWrapper;
import jakarta.servlet.http.HttpServletResponse;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.security.cert.Certificate;
import java.security.cert.CertificateFactory;
import java.security.cert.X509Certificate;
import java.util.*;
import java.util.function.Predicate;
import java.util.stream.Collectors;

/**
* This filter processes certificates on request. It decides, which certificates are considered for client authentication
Expand Down Expand Up @@ -147,7 +146,7 @@ protected void doFilterInternal(@NonNull HttpServletRequest request, @NonNull Ht
private X509Certificate[] selectCerts(X509Certificate[] certs, Predicate<X509Certificate> test) {
return Arrays.stream(certs)
.filter(test)
.collect(Collectors.toList()).toArray(new X509Certificate[0]);
.toList().toArray(new X509Certificate[0]);
}

public String base64EncodePublicKey(X509Certificate cert) {
Expand Down
Loading
Loading