Code formating and removing unused imports (#2072)

Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
This commit is contained in:
Avgustin Marinov
2024-11-18 09:13:58 +02:00
committed by GitHub
parent 8cf693ddbe
commit c3bcc4371d
24 changed files with 79 additions and 95 deletions

View File

@@ -21,7 +21,6 @@ import io.qameta.allure.Description;
import io.qameta.allure.Feature; import io.qameta.allure.Feature;
import io.qameta.allure.Story; import io.qameta.allure.Story;
import org.apache.commons.io.IOUtils; import org.apache.commons.io.IOUtils;
import org.assertj.core.api.Assertions;
import org.eclipse.hawkbit.artifact.repository.model.DbArtifactHash; import org.eclipse.hawkbit.artifact.repository.model.DbArtifactHash;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;

View File

@@ -52,7 +52,8 @@ public class EventPublisherAutoConfiguration {
* @return publisher bean * @return publisher bean
*/ */
@Bean(name = AbstractApplicationContext.APPLICATION_EVENT_MULTICASTER_BEAN_NAME) @Bean(name = AbstractApplicationContext.APPLICATION_EVENT_MULTICASTER_BEAN_NAME)
ApplicationEventMulticaster applicationEventMulticaster(@Qualifier("asyncExecutor") final Executor executor, final TenantAware tenantAware) { ApplicationEventMulticaster applicationEventMulticaster(
@Qualifier("asyncExecutor") final Executor executor, final TenantAware tenantAware) {
final SimpleApplicationEventMulticaster simpleApplicationEventMulticaster = new TenantAwareApplicationEventPublisher( final SimpleApplicationEventMulticaster simpleApplicationEventMulticaster = new TenantAwareApplicationEventPublisher(
tenantAware, applicationEventFilter()); tenantAware, applicationEventFilter());
simpleApplicationEventMulticaster.setTaskExecutor(executor); simpleApplicationEventMulticaster.setTaskExecutor(executor);

View File

@@ -11,7 +11,6 @@ package org.eclipse.hawkbit.cache;
import java.util.Collection; import java.util.Collection;
import java.util.Collections; import java.util.Collections;
import java.util.stream.Collectors;
import org.eclipse.hawkbit.tenancy.TenantAware; import org.eclipse.hawkbit.tenancy.TenantAware;
import org.springframework.cache.Cache; import org.springframework.cache.Cache;

View File

@@ -93,7 +93,8 @@ public abstract class AbstractServerRtException extends RuntimeException {
* @param error detail * @param error detail
* @param cause of the exception * @param cause of the exception
*/ */
protected AbstractServerRtException(final String message, final SpServerError error, final Throwable cause, final Map<String, Object> info) { protected AbstractServerRtException(
final String message, final SpServerError error, final Throwable cause, final Map<String, Object> info) {
super(message, cause); super(message, cause);
this.error = error; this.error = error;
this.info = info; this.info = info;

View File

@@ -152,8 +152,8 @@ public enum SpServerError {
SP_REPO_OPERATION_NOT_SUPPORTED( SP_REPO_OPERATION_NOT_SUPPORTED(
"hawkbit.server.error.operation.notSupported", "hawkbit.server.error.operation.notSupported",
"Operation or method is (no longer) supported by service."), "Operation or method is (no longer) supported by service."),
SP_MAINTENANCE_SCHEDULE_INVALID( SP_MAINTENANCE_SCHEDULE_INVALID(
"hawkbit.server.error.maintenanceScheduleInvalid", "hawkbit.server.error.maintenanceScheduleInvalid",
"Information for schedule, duration or timezone is missing; or there is no valid maintenance window available in future."), "Information for schedule, duration or timezone is missing; or there is no valid maintenance window available in future."),
SP_AUTO_ASSIGN_ACTION_TYPE_INVALID( SP_AUTO_ASSIGN_ACTION_TYPE_INVALID(
"hawkbit.server.error.repo.invalidAutoAssignActionType", "hawkbit.server.error.repo.invalidAutoAssignActionType",

View File

@@ -43,7 +43,8 @@ class DdiConfirmationBaseTest {
final String id = "1234"; final String id = "1234";
final DdiDeployment ddiDeployment = new DdiDeployment(FORCED, ATTEMPT, Collections.emptyList(), AVAILABLE); final DdiDeployment ddiDeployment = new DdiDeployment(FORCED, ATTEMPT, Collections.emptyList(), AVAILABLE);
final String actionStatus = "TestAction"; final String actionStatus = "TestAction";
final DdiActionHistory ddiActionHistory = new DdiActionHistory(actionStatus, List.of("Action status message 1", "Action status message 2")); final DdiActionHistory ddiActionHistory = new DdiActionHistory(
actionStatus, List.of("Action status message 1", "Action status message 2"));
final DdiConfirmationBaseAction ddiConfirmationBaseAction = new DdiConfirmationBaseAction(id, ddiDeployment, ddiActionHistory); final DdiConfirmationBaseAction ddiConfirmationBaseAction = new DdiConfirmationBaseAction(id, ddiDeployment, ddiActionHistory);
// Test // Test

View File

@@ -17,7 +17,6 @@ import static org.eclipse.hawkbit.ddi.json.model.DdiDeployment.HandlingType.ATTE
import static org.eclipse.hawkbit.ddi.json.model.DdiDeployment.HandlingType.FORCED; import static org.eclipse.hawkbit.ddi.json.model.DdiDeployment.HandlingType.FORCED;
import java.io.IOException; import java.io.IOException;
import java.util.Arrays;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
@@ -44,7 +43,8 @@ public class DdiDeploymentBaseTest {
final String id = "1234"; final String id = "1234";
final DdiDeployment ddiDeployment = new DdiDeployment(FORCED, ATTEMPT, Collections.emptyList(), AVAILABLE); final DdiDeployment ddiDeployment = new DdiDeployment(FORCED, ATTEMPT, Collections.emptyList(), AVAILABLE);
final String actionStatus = "TestAction"; final String actionStatus = "TestAction";
final DdiActionHistory ddiActionHistory = new DdiActionHistory(actionStatus, List.of("Action status message 1", "Action status message 2")); final DdiActionHistory ddiActionHistory = new DdiActionHistory(
actionStatus, List.of("Action status message 1", "Action status message 2"));
final DdiDeploymentBase ddiDeploymentBase = new DdiDeploymentBase(id, ddiDeployment, ddiActionHistory); final DdiDeploymentBase ddiDeploymentBase = new DdiDeploymentBase(id, ddiDeployment, ddiActionHistory);
// Test // Test

View File

@@ -90,7 +90,7 @@ public class DdiStatusTest {
@Description("Verify that deserialization fails for known properties with a wrong datatype") @Description("Verify that deserialization fails for known properties with a wrong datatype")
public void shouldFailForObjectWithWrongDataTypes() throws IOException { public void shouldFailForObjectWithWrongDataTypes() throws IOException {
// Setup // Setup
final String serializedDdiStatus = "{\"execution\":[\"proceeding\"],\"result\":{\"finished\":\"none\"," + final String serializedDdiStatus = "{\"execution\":[\"proceeding\"],\"result\":{\"finished\":\"none\"," +
"\"progress\":{\"cnt\":30,\"of\":100}},\"details\":[]}"; "\"progress\":{\"cnt\":30,\"of\":100}},\"details\":[]}";
// Test // Test

View File

@@ -98,7 +98,10 @@ public class DdiRootController implements DdiRootControllerRestApi {
private static final String GIVEN_ACTION_IS_NOT_ASSIGNED_TO_GIVEN_TARGET = "given action ({}) is not assigned to given target ({})."; private static final String GIVEN_ACTION_IS_NOT_ASSIGNED_TO_GIVEN_TARGET = "given action ({}) is not assigned to given target ({}).";
private static final String FALLBACK_REMARK = "Initiated using the Device Direct Integration API without providing a remark."; private static final String FALLBACK_REMARK = "Initiated using the Device Direct Integration API without providing a remark.";
/**
* File suffix for MDH hash download (see Linux md5sum).
*/
private static final String ARTIFACT_MD5_DWNL_SUFFIX = ".MD5SUM";
@Autowired @Autowired
private ConfirmationManagement confirmationManagement; private ConfirmationManagement confirmationManagement;
@Autowired @Autowired
@@ -121,6 +124,7 @@ public class DdiRootController implements DdiRootControllerRestApi {
private ArtifactUrlHandler artifactUrlHandler; private ArtifactUrlHandler artifactUrlHandler;
@Autowired @Autowired
private EntityFactory entityFactory; private EntityFactory entityFactory;
@Override @Override
public ResponseEntity<List<DdiArtifact>> getSoftwareModulesArtifacts( public ResponseEntity<List<DdiArtifact>> getSoftwareModulesArtifacts(
final String tenant, final String tenant,
@@ -572,6 +576,27 @@ public class DdiRootController implements DdiRootControllerRestApi {
return null; return null;
} }
/**
* Write a md5 file response.
*
* @param response the response
* @param md5Hash of the artifact
* @param filename as provided by the client
* @throws IOException cannot write output stream
*/
private static void writeMD5FileResponse(final HttpServletResponse response, final String md5Hash, final String filename)
throws IOException {
if (md5Hash == null) {
throw new IllegalArgumentException("MD5 hash must not be null");
}
final byte[] content = (md5Hash + " " + filename).getBytes(StandardCharsets.US_ASCII);
response.setContentType("text/plain");
response.setContentLength(content.length);
response.setHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename=" + filename + ARTIFACT_MD5_DWNL_SUFFIX);
response.getOutputStream().write(content);
}
private ActionStatus checkAndLogDownload(final HttpServletRequest request, final Target target, final Long module) { private ActionStatus checkAndLogDownload(final HttpServletRequest request, final Target target, final Long module) {
final Action action = controllerManagement final Action action = controllerManagement
.getActionForDownloadByTargetAndSoftwareModule(target.getControllerId(), module) .getActionForDownloadByTargetAndSoftwareModule(target.getControllerId(), module)
@@ -713,7 +738,8 @@ public class DdiRootController implements DdiRootControllerRestApi {
return new DdiDeploymentBase(Long.toString(action.getId()), ddiDeployment, actionHistory); return new DdiDeploymentBase(Long.toString(action.getId()), ddiDeployment, actionHistory);
} }
private DdiConfirmationBaseAction generateDdiConfirmationBase(final Target target, final Action action, final Integer actionHistoryMessageCount) { private DdiConfirmationBaseAction generateDdiConfirmationBase(
final Target target, final Action action, final Integer actionHistoryMessageCount) {
final DdiActionHistory actionHistory = generateDdiActionHistory(action, actionHistoryMessageCount).orElse(null); final DdiActionHistory actionHistory = generateDdiActionHistory(action, actionHistoryMessageCount).orElse(null);
final DdiDeployment ddiDeployment = generateDdiDeployment(target, action); final DdiDeployment ddiDeployment = generateDdiDeployment(target, action);
return new DdiConfirmationBaseAction(Long.toString(action.getId()), ddiDeployment, actionHistory); return new DdiConfirmationBaseAction(Long.toString(action.getId()), ddiDeployment, actionHistory);
@@ -753,29 +779,4 @@ public class DdiRootController implements DdiRootControllerRestApi {
return DdiAutoConfirmationState.disabled(); return DdiAutoConfirmationState.disabled();
}); });
} }
/**
* File suffix for MDH hash download (see Linux md5sum).
*/
private static final String ARTIFACT_MD5_DWNL_SUFFIX = ".MD5SUM";
/**
* Write a md5 file response.
*
* @param response the response
* @param md5Hash of the artifact
* @param filename as provided by the client
* @throws IOException cannot write output stream
*/
private static void writeMD5FileResponse(final HttpServletResponse response, final String md5Hash, final String filename) throws IOException {
if (md5Hash == null) {
throw new IllegalArgumentException("MD5 hash must not be null");
}
final byte[] content = (md5Hash + " " + filename).getBytes(StandardCharsets.US_ASCII);
response.setContentType("text/plain");
response.setContentLength(content.length);
response.setHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename=" + filename + ARTIFACT_MD5_DWNL_SUFFIX);
response.getOutputStream().write(content);
}
} }

View File

@@ -20,7 +20,5 @@ import org.springframework.context.annotation.Import;
*/ */
@Configuration @Configuration
@ConditionalOnClass(DdiApiConfiguration.class) @ConditionalOnClass(DdiApiConfiguration.class)
@Import({ DdiApiConfiguration.class, DdiSecurityProperties.class} ) @Import({ DdiApiConfiguration.class, DdiSecurityProperties.class })
public class DdiApiAutoConfiguration { public class DdiApiAutoConfiguration {}
}

View File

@@ -26,11 +26,11 @@ import java.util.UUID;
import io.qameta.allure.Description; import io.qameta.allure.Description;
import io.qameta.allure.Feature; import io.qameta.allure.Feature;
import io.qameta.allure.Story; import io.qameta.allure.Story;
import org.eclipse.hawkbit.artifact.repository.urlhandler.ArtifactUrl;
import org.eclipse.hawkbit.artifact.repository.urlhandler.ArtifactUrlHandler;
import org.eclipse.hawkbit.artifact.repository.ArtifactFilesystem; import org.eclipse.hawkbit.artifact.repository.ArtifactFilesystem;
import org.eclipse.hawkbit.artifact.repository.model.AbstractDbArtifact; import org.eclipse.hawkbit.artifact.repository.model.AbstractDbArtifact;
import org.eclipse.hawkbit.artifact.repository.model.DbArtifactHash; import org.eclipse.hawkbit.artifact.repository.model.DbArtifactHash;
import org.eclipse.hawkbit.artifact.repository.urlhandler.ArtifactUrl;
import org.eclipse.hawkbit.artifact.repository.urlhandler.ArtifactUrlHandler;
import org.eclipse.hawkbit.dmf.amqp.api.EventTopic; import org.eclipse.hawkbit.dmf.amqp.api.EventTopic;
import org.eclipse.hawkbit.dmf.amqp.api.MessageHeaderKey; import org.eclipse.hawkbit.dmf.amqp.api.MessageHeaderKey;
import org.eclipse.hawkbit.dmf.amqp.api.MessageType; import org.eclipse.hawkbit.dmf.amqp.api.MessageType;
@@ -74,22 +74,16 @@ class AmqpMessageDispatcherServiceTest extends AbstractIntegrationTest {
private static final Long TENANT_ID = 4711L; private static final Long TENANT_ID = 4711L;
private static final URI AMQP_URI = IpUtil.createAmqpUri("vHost", "mytest"); private static final URI AMQP_URI = IpUtil.createAmqpUri("vHost", "mytest");
private static final String TEST_TOKEN = "testToken"; private static final String TEST_TOKEN = "testToken";
private static final String CONTROLLER_ID = "1"; private static final String CONTROLLER_ID = "1";
private AmqpMessageDispatcherService amqpMessageDispatcherService; private AmqpMessageDispatcherService amqpMessageDispatcherService;
private RabbitTemplate rabbitTemplate; private RabbitTemplate rabbitTemplate;
private DefaultAmqpMessageSenderService senderService; private DefaultAmqpMessageSenderService senderService;
private Target testTarget; private Target testTarget;
@BeforeEach @BeforeEach
public void beforeEach() throws Exception { public void beforeEach() throws Exception {
testTarget = targetManagement.create(entityFactory.target().create().controllerId(CONTROLLER_ID) testTarget = targetManagement.create(entityFactory.target().create().controllerId(CONTROLLER_ID)
.securityToken(TEST_TOKEN).address(AMQP_URI.toString())); .securityToken(TEST_TOKEN).address(AMQP_URI.toString()));
@@ -362,5 +356,4 @@ class AmqpMessageDispatcherServiceTest extends AbstractIntegrationTest {
clazz.getTypeName()); clazz.getTypeName());
return (T) rabbitTemplate.getMessageConverter().fromMessage(message); return (T) rabbitTemplate.getMessageConverter().fromMessage(message);
} }
} }

View File

@@ -11,7 +11,6 @@ package org.eclipse.hawkbit.mgmt.rest.resource;
import java.text.MessageFormat; import java.text.MessageFormat;
import java.util.AbstractMap.SimpleEntry; import java.util.AbstractMap.SimpleEntry;
import java.util.Arrays;
import java.util.Collection; import java.util.Collection;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
@@ -336,7 +335,8 @@ public class MgmtDistributionSetResource implements MgmtDistributionSetRestApi {
} }
@Override @Override
public ResponseEntity<Void> assignSoftwareModules(final Long distributionSetId, final List<MgmtSoftwareModuleAssignment> softwareModuleIDs) { public ResponseEntity<Void> assignSoftwareModules(
final Long distributionSetId, final List<MgmtSoftwareModuleAssignment> softwareModuleIDs) {
distributionSetManagement.assignSoftwareModules( distributionSetManagement.assignSoftwareModules(
distributionSetId, distributionSetId,
softwareModuleIDs.stream() softwareModuleIDs.stream()
@@ -404,8 +404,8 @@ public class MgmtDistributionSetResource implements MgmtDistributionSetRestApi {
distributionSetInvalidationManagement distributionSetInvalidationManagement
.invalidateDistributionSet( .invalidateDistributionSet(
new DistributionSetInvalidation(Collections.singletonList(distributionSetId), new DistributionSetInvalidation(Collections.singletonList(distributionSetId),
MgmtRestModelMapper.convertCancelationType(invalidateRequestBody.getActionCancelationType()), MgmtRestModelMapper.convertCancelationType(invalidateRequestBody.getActionCancelationType()),
invalidateRequestBody.isCancelRollouts())); invalidateRequestBody.isCancelRollouts()));
return ResponseEntity.ok().build(); return ResponseEntity.ok().build();
} }
} }

View File

@@ -15,7 +15,6 @@ import org.eclipse.hawkbit.mgmt.json.model.PagedList;
import org.eclipse.hawkbit.mgmt.json.model.softwaremoduletype.MgmtSoftwareModuleType; import org.eclipse.hawkbit.mgmt.json.model.softwaremoduletype.MgmtSoftwareModuleType;
import org.eclipse.hawkbit.mgmt.json.model.softwaremoduletype.MgmtSoftwareModuleTypeRequestBodyPost; import org.eclipse.hawkbit.mgmt.json.model.softwaremoduletype.MgmtSoftwareModuleTypeRequestBodyPost;
import org.eclipse.hawkbit.mgmt.json.model.softwaremoduletype.MgmtSoftwareModuleTypeRequestBodyPut; import org.eclipse.hawkbit.mgmt.json.model.softwaremoduletype.MgmtSoftwareModuleTypeRequestBodyPut;
import org.eclipse.hawkbit.mgmt.rest.api.MgmtRestConstants;
import org.eclipse.hawkbit.mgmt.rest.api.MgmtSoftwareModuleTypeRestApi; import org.eclipse.hawkbit.mgmt.rest.api.MgmtSoftwareModuleTypeRestApi;
import org.eclipse.hawkbit.mgmt.rest.resource.util.PagingUtility; import org.eclipse.hawkbit.mgmt.rest.resource.util.PagingUtility;
import org.eclipse.hawkbit.repository.EntityFactory; import org.eclipse.hawkbit.repository.EntityFactory;

View File

@@ -39,7 +39,6 @@ import org.eclipse.hawkbit.mgmt.json.model.target.MgmtTargetAttributes;
import org.eclipse.hawkbit.mgmt.json.model.target.MgmtTargetAutoConfirm; import org.eclipse.hawkbit.mgmt.json.model.target.MgmtTargetAutoConfirm;
import org.eclipse.hawkbit.mgmt.json.model.target.MgmtTargetAutoConfirmUpdate; import org.eclipse.hawkbit.mgmt.json.model.target.MgmtTargetAutoConfirmUpdate;
import org.eclipse.hawkbit.mgmt.json.model.target.MgmtTargetRequestBody; import org.eclipse.hawkbit.mgmt.json.model.target.MgmtTargetRequestBody;
import org.eclipse.hawkbit.mgmt.rest.api.MgmtRestConstants;
import org.eclipse.hawkbit.mgmt.rest.api.MgmtTargetRestApi; import org.eclipse.hawkbit.mgmt.rest.api.MgmtTargetRestApi;
import org.eclipse.hawkbit.mgmt.rest.resource.util.PagingUtility; import org.eclipse.hawkbit.mgmt.rest.resource.util.PagingUtility;
import org.eclipse.hawkbit.repository.ConfirmationManagement; import org.eclipse.hawkbit.repository.ConfirmationManagement;

View File

@@ -19,7 +19,6 @@ import org.eclipse.hawkbit.mgmt.json.model.distributionsettype.MgmtDistributionS
import org.eclipse.hawkbit.mgmt.json.model.targettype.MgmtTargetType; import org.eclipse.hawkbit.mgmt.json.model.targettype.MgmtTargetType;
import org.eclipse.hawkbit.mgmt.json.model.targettype.MgmtTargetTypeRequestBodyPost; import org.eclipse.hawkbit.mgmt.json.model.targettype.MgmtTargetTypeRequestBodyPost;
import org.eclipse.hawkbit.mgmt.json.model.targettype.MgmtTargetTypeRequestBodyPut; import org.eclipse.hawkbit.mgmt.json.model.targettype.MgmtTargetTypeRequestBodyPut;
import org.eclipse.hawkbit.mgmt.rest.api.MgmtRestConstants;
import org.eclipse.hawkbit.mgmt.rest.api.MgmtTargetTypeRestApi; import org.eclipse.hawkbit.mgmt.rest.api.MgmtTargetTypeRestApi;
import org.eclipse.hawkbit.mgmt.rest.resource.util.PagingUtility; import org.eclipse.hawkbit.mgmt.rest.resource.util.PagingUtility;
import org.eclipse.hawkbit.repository.EntityFactory; import org.eclipse.hawkbit.repository.EntityFactory;

View File

@@ -1,11 +1,11 @@
hawkBit Runtime hawkBit Runtime
=== ===
| Folder | Description | | Folder | Description |
|--------------------------|------------------------------------------------------------------------------------------------------------------------------| |------------------------|------------------------------------------------------------------------------------------------------------------------------|
| `.sandbox/` | Content of the hawkBit sandbox installation running on [hawkbit.eclipseprojects.io](https://hawkbit.eclipseprojects.io/UI/). | | `.sandbox/` | Content of the hawkBit sandbox installation running on [hawkbit.eclipseprojects.io](https://hawkbit.eclipseprojects.io/UI/). |
| `docker/` | Docker related files, such es Dockerfiles, compose and stack files to quickly start up an hawkBit. | | `docker/` | Docker related files, such es Dockerfiles, compose and stack files to quickly start up an hawkBit. |
| `docker/docker_build/` | Docker images build related files, such es Dockerfiles and build shell scripts. | | `docker/docker_build/` | Docker images build related files, such es Dockerfiles and build shell scripts. |
Note: micro service setup requires all services using DB to use same shared DB. So, they don't work with default in Note: micro service setup requires all services using DB to use same shared DB. So, they don't work with default in
memory H2 database. Docker compose with mysql shows an example setup. memory H2 database. Docker compose with mysql shows an example setup.

View File

@@ -94,5 +94,4 @@ public class JpaAutoConfirmationStatus extends AbstractJpaTenantAwareBaseEntity
+ initiator + ", bosch_user=" + getCreatedBy() + ", activatedAt=" + getCreatedAt() + ", remark=" + initiator + ", bosch_user=" + getCreatedBy() + ", activatedAt=" + getCreatedAt() + ", remark="
+ remark + "]"; + remark + "]";
} }
} }

View File

@@ -122,9 +122,6 @@ public abstract class AbstractIntegrationTest {
* {@link SystemManagement#getTenantMetadata()}; * {@link SystemManagement#getTenantMetadata()};
*/ */
protected static final int DEFAULT_DS_TYPES = RepositoryConstants.DEFAULT_DS_TYPES_IN_TENANT + 1; protected static final int DEFAULT_DS_TYPES = RepositoryConstants.DEFAULT_DS_TYPES_IN_TENANT + 1;
private static final String ARTIFACT_DIRECTORY = createTempDir();
@Autowired @Autowired
protected EntityFactory entityFactory; protected EntityFactory entityFactory;
@Autowired @Autowired
@@ -190,6 +187,7 @@ public abstract class AbstractIntegrationTest {
protected ServiceMatcher serviceMatcher; protected ServiceMatcher serviceMatcher;
@Autowired @Autowired
protected ApplicationEventPublisher eventPublisher; protected ApplicationEventPublisher eventPublisher;
private static final String ARTIFACT_DIRECTORY = createTempDir();
@BeforeAll @BeforeAll
public static void beforeClass() { public static void beforeClass() {

View File

@@ -50,6 +50,18 @@ public class SecurityManagedConfiguration {
******************"""; ******************""";
public static final int DOS_FILTER_ORDER = -200; public static final int DOS_FILTER_ORDER = -200;
public static FilterRegistrationBean<DosFilter> dosFilter(final Collection<String> includeAntPaths,
final HawkbitSecurityProperties.Dos.Filter filterProperties,
final HawkbitSecurityProperties.Clients clientProperties) {
final FilterRegistrationBean<DosFilter> filterRegBean = new FilterRegistrationBean<>();
filterRegBean.setFilter(new DosFilter(includeAntPaths, filterProperties.getMaxRead(),
filterProperties.getMaxWrite(), filterProperties.getWhitelist(), clientProperties.getBlacklist(),
clientProperties.getRemoteIpHeader()));
return filterRegBean;
}
/** /**
* Filter to protect the hawkBit server system management interface against too many requests. * Filter to protect the hawkBit server system management interface against too many requests.
* *
@@ -88,18 +100,6 @@ public class SecurityManagedConfiguration {
return firewall; return firewall;
} }
public static FilterRegistrationBean<DosFilter> dosFilter(final Collection<String> includeAntPaths,
final HawkbitSecurityProperties.Dos.Filter filterProperties,
final HawkbitSecurityProperties.Clients clientProperties) {
final FilterRegistrationBean<DosFilter> filterRegBean = new FilterRegistrationBean<>();
filterRegBean.setFilter(new DosFilter(includeAntPaths, filterProperties.getMaxRead(),
filterProperties.getMaxWrite(), filterProperties.getWhitelist(), clientProperties.getBlacklist(),
clientProperties.getRemoteIpHeader()));
return filterRegBean;
}
private static class IgnorePathsStrictHttpFirewall extends StrictHttpFirewall { private static class IgnorePathsStrictHttpFirewall extends StrictHttpFirewall {
private final Collection<String> pathsToIgnore; private final Collection<String> pathsToIgnore;

View File

@@ -9,7 +9,6 @@
*/ */
package org.eclipse.hawkbit.rest.util; package org.eclipse.hawkbit.rest.util;
import java.util.Arrays;
import java.util.stream.Stream; import java.util.stream.Stream;
import lombok.AccessLevel; import lombok.AccessLevel;

View File

@@ -20,9 +20,9 @@ import java.util.function.Supplier;
import org.eclipse.hawkbit.ContextAware; import org.eclipse.hawkbit.ContextAware;
import org.eclipse.hawkbit.im.authentication.SpPermission.SpringEvalExpressions; import org.eclipse.hawkbit.im.authentication.SpPermission.SpringEvalExpressions;
import org.eclipse.hawkbit.tenancy.TenantAware;
import org.eclipse.hawkbit.tenancy.TenantAwareAuthenticationDetails; import org.eclipse.hawkbit.tenancy.TenantAwareAuthenticationDetails;
import org.eclipse.hawkbit.tenancy.TenantAwareUser; import org.eclipse.hawkbit.tenancy.TenantAwareUser;
import org.eclipse.hawkbit.tenancy.TenantAware;
import org.eclipse.hawkbit.tenancy.UserAuthoritiesResolver; import org.eclipse.hawkbit.tenancy.UserAuthoritiesResolver;
import org.springframework.lang.Nullable; import org.springframework.lang.Nullable;
import org.springframework.security.core.Authentication; import org.springframework.security.core.Authentication;

View File

@@ -20,8 +20,8 @@ import jakarta.validation.constraints.NotNull;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.eclipse.hawkbit.im.authentication.SpPermission.SpringEvalExpressions; import org.eclipse.hawkbit.im.authentication.SpPermission.SpringEvalExpressions;
import org.eclipse.hawkbit.tenancy.TenantAwareAuthenticationDetails;
import org.eclipse.hawkbit.tenancy.TenantAware; import org.eclipse.hawkbit.tenancy.TenantAware;
import org.eclipse.hawkbit.tenancy.TenantAwareAuthenticationDetails;
import org.springframework.security.access.hierarchicalroles.RoleHierarchy; import org.springframework.security.access.hierarchicalroles.RoleHierarchy;
import org.springframework.security.authentication.AnonymousAuthenticationToken; import org.springframework.security.authentication.AnonymousAuthenticationToken;
import org.springframework.security.core.Authentication; import org.springframework.security.core.Authentication;

View File

@@ -14,13 +14,11 @@ import static org.assertj.core.api.Assertions.assertThat;
import java.util.Collection; import java.util.Collection;
import java.util.LinkedList; import java.util.LinkedList;
import java.util.List; import java.util.List;
import java.util.stream.Collectors;
import io.qameta.allure.Description; import io.qameta.allure.Description;
import io.qameta.allure.Feature; import io.qameta.allure.Feature;
import io.qameta.allure.Story; import io.qameta.allure.Story;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.util.ReflectionUtils; import org.springframework.util.ReflectionUtils;
/** /**