Skip to content

Commit

Permalink
Merge pull request #92 from healenium/feature/EPMHLM-428
Browse files Browse the repository at this point in the history
EPMHLM-428
  • Loading branch information
Alex-Reif authored Oct 15, 2024
2 parents 7eb59f2 + 3597d5c commit f47f288
Show file tree
Hide file tree
Showing 15 changed files with 81 additions and 281 deletions.
2 changes: 1 addition & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
FROM eclipse-temurin:17-jdk-alpine
FROM eclipse-temurin:22-alpine
COPY /build/libs/healenium-backend-*.jar /healenium-backend.jar
CMD java -jar /healenium-backend.jar
14 changes: 7 additions & 7 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
plugins {
id 'org.springframework.boot' version '3.2.3'
id 'org.springframework.boot' version '3.3.4'
id 'io.spring.dependency-management' version "1.1.4"
id 'java'
id 'maven-publish'
id 'jacoco'
}

group 'com.epam.healenium'
version '3.4.5'
version '3.4.6'


repositories {
Expand All @@ -23,21 +23,21 @@ dependencies {
implementation 'org.springframework.boot:spring-boot-starter-actuator'
implementation 'org.springframework.boot:spring-boot-starter-webflux'
implementation 'org.springframework.boot:spring-boot-starter-logging'
implementation 'org.springframework.boot:spring-boot-starter-validation'
implementation 'org.liquibase:liquibase-core:4.25.1'
implementation 'org.postgresql:postgresql:42.6.1'
implementation 'com.zaxxer:HikariCP:3.3.1'
implementation 'com.vladmihalcea:hibernate-types-52:2.7.0'
implementation 'javax.validation:validation-api:2.0.1.Final'
implementation 'org.yaml:snakeyaml:2.0'
implementation 'com.google.guava:guava:32.1.1-jre'

implementation 'org.seleniumhq.selenium:selenium-java:4.16.1'
implementation 'com.epam.healenium:tree-comparing:0.4.13'
implementation 'com.epam.healenium:tree-comparing:0.4.14'
implementation 'org.seleniumhq.selenium:selenium-java:4.25.0'
implementation 'org.projectlombok:lombok:1.18.22'
implementation 'org.mapstruct:mapstruct:1.3.1.Final'
implementation group: 'io.netty', name: 'netty-handler', version: '4.1.104.Final'
implementation group: 'ch.qos.logback', name: 'logback-classic', version: '1.4.14'
implementation group: 'ch.qos.logback', name: 'logback-core', version: '1.4.14'
implementation group: 'ch.qos.logback', name: 'logback-classic', version: '1.5.8'
implementation group: 'ch.qos.logback', name: 'logback-core', version: '1.5.8'
implementation 'com.fasterxml.jackson.core:jackson-databind:2.16.0'

implementation 'org.testcontainers:junit-jupiter:1.19.3'
Expand Down
16 changes: 16 additions & 0 deletions src/main/java/com/epam/healenium/controller/HealingController.java
Original file line number Diff line number Diff line change
Expand Up @@ -14,16 +14,21 @@
import com.epam.healenium.service.SelectorService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.ResponseEntity;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.MethodArgumentNotValidException;
import org.springframework.validation.FieldError;
import org.springframework.web.servlet.ModelAndView;

import javax.validation.Valid;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
Expand Down Expand Up @@ -181,4 +186,15 @@ public ModelAndView migrate() {
return modelAndView;
}

@ExceptionHandler(MethodArgumentNotValidException.class)
public ResponseEntity<?> handleValidationExceptions(MethodArgumentNotValidException ex) {
Map<String, String> errors = new HashMap<>();
ex.getBindingResult().getAllErrors().forEach((error) -> {
String fieldName = ((FieldError) error).getField();
String errorMessage = error.getDefaultMessage();
errors.put(fieldName, errorMessage);
});
return ResponseEntity.badRequest().body(errors);
}

}
19 changes: 17 additions & 2 deletions src/main/java/com/epam/healenium/mapper/HealingMapper.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.epam.healenium.mapper;

import com.epam.healenium.model.Locator;
import com.epam.healenium.model.domain.Healing;
import com.epam.healenium.model.domain.HealingResult;
import com.epam.healenium.model.dto.HealingDto;
Expand All @@ -25,12 +26,26 @@ public interface HealingMapper {

default HealingResult resultDtoToModel(HealingResultDto dto) {
HealingResult result = new HealingResult();
result.setLocator(dto.getLocator());
result.setScore(dto.getScore());
result.setLocator(getLocator(dto));
result.setScore(getScore(dto));
result.setCreateDate(LocalDateTime.now());
return result;
}

default Double getScore(HealingResultDto dto) {
if (dto.getScore() == null || dto.getScore() < 0 || dto.getScore() > 1) {
throw new RuntimeException("Invalid Score value: " + dto.getScore());
}
return dto.getScore();
}

default Locator getLocator(HealingResultDto dto) {
if (dto.getLocator() == null || !dto.getLocator().getType().contains("By")) {
throw new RuntimeException("Invalid Locator value: " + dto.getLocator());
}
return dto.getLocator();
}

@IterableMapping(elementTargetType = HealingResult.class)
Set<HealingResult> resultDtoToModel(Collection<HealingResultDto> dto);

Expand Down
5 changes: 2 additions & 3 deletions src/main/java/com/epam/healenium/mapper/SelectorMapper.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
import com.epam.healenium.constants.Constants;
import com.epam.healenium.model.Locator;
import com.epam.healenium.model.domain.Selector;
import com.epam.healenium.model.dto.RequestDto;
import com.epam.healenium.model.dto.SelectorDto;
import com.epam.healenium.model.dto.SelectorRequestDto;
import com.epam.healenium.model.wrapper.NodePathWrapper;
Expand Down Expand Up @@ -35,8 +34,8 @@ default Selector toSelector(SelectorRequestDto dto, String id, Optional<Selector
return element;
}

default List<RequestDto> toRequestDto(List<Selector> selector) {
List<RequestDto> requestDtoResult = new ArrayList<>();
default List<SelectorRequestDto> toRequestDto(List<Selector> selector) {
List<SelectorRequestDto> requestDtoResult = new ArrayList<>();
for (Selector selectorEntity : selector) {
SelectorRequestDto requestDto = new SelectorRequestDto();
requestDto.setId(selectorEntity.getUid());
Expand Down
14 changes: 0 additions & 14 deletions src/main/java/com/epam/healenium/model/SessionContext.java

This file was deleted.

20 changes: 15 additions & 5 deletions src/main/java/com/epam/healenium/model/dto/SelectorRequestDto.java
Original file line number Diff line number Diff line change
@@ -1,26 +1,36 @@
package com.epam.healenium.model.dto;

import com.epam.healenium.treecomparing.Node;
import lombok.AllArgsConstructor;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.Pattern;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.ToString;

import java.io.Serializable;
import java.util.List;

@Data
@EqualsAndHashCode(callSuper = true)
public class SelectorRequestDto extends RequestDto {
@EqualsAndHashCode
public class SelectorRequestDto {

private String id;
@Pattern(regexp = "^By.*", message = "The field must start with 'By'")
private String type;
@ToString.Exclude
private List<List<Node>> nodePath;
private List<String> elementIds;
private String sessionId;
private boolean enableHealing;
private boolean urlKey;
@NotBlank
private String locator;
@NotBlank
private String className;
@NotBlank
private String methodName;
@Pattern(regexp = "^(findElement|findElements)$", message = "The command must be either 'findElement' or 'findElements'")
private String command;
@NotBlank
private String url;
}

92 changes: 0 additions & 92 deletions src/main/java/com/epam/healenium/node/MobileNodeService.java

This file was deleted.

13 changes: 0 additions & 13 deletions src/main/java/com/epam/healenium/node/NodeService.java

This file was deleted.

Loading

0 comments on commit f47f288

Please sign in to comment.