This is an automated email from the ASF dual-hosted git repository. gongchao pushed a commit to branch remove-hibernate in repository https://gitbox.apache.org/repos/asf/hertzbeat.git
commit e6f7afc9ea846ea00511be4fb41d3f4835465b6e Author: tomsun28 <[email protected]> AuthorDate: Sat Apr 20 23:41:59 2024 +0800 use eclipse link instead of hibernate Signed-off-by: tomsun28 <[email protected]> --- alerter/pom.xml | 6 --- collector/pom.xml | 5 --- common/pom.xml | 17 +++++--- .../common/config/EclipseLinkCustomizer.java | 49 ++++++++++++++++++++++ .../common/config/EclipseLinkJpaConfiguration.java | 41 ++++++++++++++++++ .../hertzbeat/common/entity/alerter/Alert.java | 9 ++-- .../common/entity/alerter/AlertConverge.java | 4 +- .../common/entity/alerter/AlertDefine.java | 12 +++--- .../entity/alerter/AlertDefineMonitorBind.java | 5 +-- .../common/entity/alerter/AlertSilence.java | 4 +- .../entity/alerter/JsonMapAttributeConverter.java | 5 +++ .../manager/JsonByteListAttributeConverter.java | 5 +++ .../manager/JsonLongListAttributeConverter.java | 21 ++++++---- .../manager/JsonOptionListAttributeConverter.java | 5 +++ .../manager/JsonStringListAttributeConverter.java | 15 +++++-- .../entity/manager/JsonTagAttributeConverter.java | 4 ++ .../manager/JsonTagListAttributeConverter.java | 5 +++ .../hertzbeat/common/entity/manager/Monitor.java | 10 ++--- .../common/entity/manager/NoticeReceiver.java | 34 +++++++-------- .../common/entity/manager/NoticeRule.java | 6 +-- .../common/entity/manager/NoticeTemplate.java | 6 +-- .../hertzbeat/common/entity/manager/Param.java | 6 +-- .../hertzbeat/common/entity/warehouse/History.java | 4 +- .../apache/hertzbeat/common/util/IpDomainUtil.java | 3 +- .../common/util/SnowFlakeIdGenerator.java | 13 +----- manager/pom.xml | 5 --- .../org/apache/hertzbeat/manager/dao/ParamDao.java | 2 +- .../hertzbeat/manager/pojo/dto/LoginDto.java | 8 ++-- 28 files changed, 206 insertions(+), 103 deletions(-) diff --git a/alerter/pom.xml b/alerter/pom.xml index 82c7177ff..dcbce501f 100644 --- a/alerter/pom.xml +++ b/alerter/pom.xml @@ -53,12 +53,6 @@ <artifactId>spring-boot-configuration-processor</artifactId> <optional>true</optional> </dependency> - <!-- validation --> - <dependency> - <groupId>org.springframework.boot</groupId> - <artifactId>spring-boot-starter-validation</artifactId> - <scope>provided</scope> - </dependency> <!-- kafka --> <dependency> <groupId>org.apache.kafka</groupId> diff --git a/collector/pom.xml b/collector/pom.xml index 2a37d59bd..f4887a954 100644 --- a/collector/pom.xml +++ b/collector/pom.xml @@ -59,11 +59,6 @@ <groupId>org.apache.hertzbeat</groupId> <artifactId>hertzbeat-remoting</artifactId> </dependency> - <!-- validation --> - <dependency> - <groupId>org.springframework.boot</groupId> - <artifactId>spring-boot-starter-validation</artifactId> - </dependency> <!-- run sql script--> <dependency> <groupId>org.springframework</groupId> diff --git a/common/pom.xml b/common/pom.xml index c24a05669..20b6683ce 100644 --- a/common/pom.xml +++ b/common/pom.xml @@ -46,20 +46,25 @@ <artifactId>spring-boot-autoconfigure</artifactId> </dependency> <!-- jpa --> -<!-- <dependency>--> -<!-- <groupId>org.eclipse.persistence</groupId>--> -<!-- <artifactId>org.eclipse.persistence.jpa</artifactId>--> -<!-- <version>4.0.2</version>--> -<!-- </dependency>--> + <dependency> + <groupId>org.eclipse.persistence</groupId> + <artifactId>org.eclipse.persistence.jpa</artifactId> + <version>4.0.2</version> + </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> + <exclusions> + <exclusion> + <groupId>org.hibernate.orm</groupId> + <artifactId>hibernate-core</artifactId> + </exclusion> + </exclusions> </dependency> <!-- validation --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-validation</artifactId> - <scope>provided</scope> </dependency> <!-- jackson --> <dependency> diff --git a/common/src/main/java/org/apache/hertzbeat/common/config/EclipseLinkCustomizer.java b/common/src/main/java/org/apache/hertzbeat/common/config/EclipseLinkCustomizer.java new file mode 100644 index 000000000..a848a3ce9 --- /dev/null +++ b/common/src/main/java/org/apache/hertzbeat/common/config/EclipseLinkCustomizer.java @@ -0,0 +1,49 @@ +package org.apache.hertzbeat.common.config; + +import lombok.extern.slf4j.Slf4j; +import org.eclipse.persistence.config.SessionCustomizer; +import org.eclipse.persistence.descriptors.ClassDescriptor; +import org.eclipse.persistence.mappings.DatabaseMapping; +import org.eclipse.persistence.sessions.Session; + +/** + * change column name that from upper-case to lower-case-with-underscore + */ +@Slf4j +public class EclipseLinkCustomizer implements SessionCustomizer { + + @Override + public void customize(Session session) throws Exception { + for (ClassDescriptor descriptor : session.getDescriptors().values()) { + for (DatabaseMapping mapping : descriptor.getMappings()) { + if (mapping.isDirectToFieldMapping()) { + // update the column name to lower case with underscore + if (!mapping.getField().getName().equalsIgnoreCase(mapping.getAttributeName())) { + // already custom define the column name, ignore + continue; + } + // todo here i try to change column name that from upper-case to lower-case-with-underscore + // but failed, when update name, something relate exception happen more +// mapping.getField().setName(convertCamelCase(mapping.getAttributeName())); + } + } + } + + } + + private String convertCamelCase(String camelCase) { + StringBuilder result = new StringBuilder(); + if (camelCase != null && !camelCase.isEmpty()) { + result.append(Character.toLowerCase(camelCase.charAt(0))); + for (int i = 1; i < camelCase.length(); i++) { + char currentChar = camelCase.charAt(i); + if (Character.isUpperCase(currentChar)) { + result.append('_').append(Character.toLowerCase(currentChar)); + } else { + result.append(currentChar); + } + } + } + return result.toString(); + } +} diff --git a/common/src/main/java/org/apache/hertzbeat/common/config/EclipseLinkJpaConfiguration.java b/common/src/main/java/org/apache/hertzbeat/common/config/EclipseLinkJpaConfiguration.java new file mode 100644 index 000000000..b59604bae --- /dev/null +++ b/common/src/main/java/org/apache/hertzbeat/common/config/EclipseLinkJpaConfiguration.java @@ -0,0 +1,41 @@ +package org.apache.hertzbeat.common.config; + +import org.eclipse.persistence.config.PersistenceUnitProperties; +import org.springframework.beans.factory.ObjectProvider; +import org.springframework.boot.autoconfigure.orm.jpa.JpaBaseConfiguration; +import org.springframework.boot.autoconfigure.orm.jpa.JpaProperties; +import org.springframework.context.annotation.Configuration; +import org.springframework.orm.jpa.vendor.AbstractJpaVendorAdapter; +import org.springframework.orm.jpa.vendor.EclipseLinkJpaVendorAdapter; +import org.springframework.transaction.jta.JtaTransactionManager; + +import javax.sql.DataSource; +import java.util.HashMap; +import java.util.Map; + +/** + * jpa eclipselink impl config + */ +@Configuration +public class EclipseLinkJpaConfiguration extends JpaBaseConfiguration { + + protected EclipseLinkJpaConfiguration(DataSource dataSource, JpaProperties properties, + ObjectProvider<JtaTransactionManager> jtaTransactionManager) { + super(dataSource, properties, jtaTransactionManager); + } + + @Override + protected AbstractJpaVendorAdapter createJpaVendorAdapter() { + return new EclipseLinkJpaVendorAdapter(); + } + + @Override + protected Map<String, Object> getVendorProperties() { + HashMap<String, Object> map = new HashMap<>(8); + map.put(PersistenceUnitProperties.DDL_GENERATION, "create-or-extend-tables"); + map.put(PersistenceUnitProperties.SESSION_CUSTOMIZER, "org.apache.hertzbeat.common.config.EclipseLinkCustomizer"); + map.put(PersistenceUnitProperties.LOGGING_LEVEL,"WARNING"); + map.put(PersistenceUnitProperties.ALLOW_NATIVE_SQL_QUERIES, "true"); + return map; + } +} diff --git a/common/src/main/java/org/apache/hertzbeat/common/entity/alerter/Alert.java b/common/src/main/java/org/apache/hertzbeat/common/entity/alerter/Alert.java index daf389f2e..fe85d8ea9 100644 --- a/common/src/main/java/org/apache/hertzbeat/common/entity/alerter/Alert.java +++ b/common/src/main/java/org/apache/hertzbeat/common/entity/alerter/Alert.java @@ -17,14 +17,13 @@ package org.apache.hertzbeat.common.entity.alerter; +import jakarta.validation.constraints.Size; import org.apache.hertzbeat.common.util.JsonUtil; import io.swagger.v3.oas.annotations.media.Schema; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; -import org.hibernate.annotations.GenericGenerator; -import org.hibernate.validator.constraints.Length; import org.springframework.data.annotation.CreatedBy; import org.springframework.data.annotation.CreatedDate; import org.springframework.data.annotation.LastModifiedBy; @@ -55,9 +54,7 @@ import static io.swagger.v3.oas.annotations.media.Schema.AccessMode.READ_WRITE; public class Alert { @Id - @GeneratedValue(strategy = GenerationType.IDENTITY, generator = "snow-flake-id") - @GenericGenerator(name = "snow-flake-id", - strategy = "org.apache.hertzbeat.common.util.SnowFlakeIdGenerator") + @GeneratedValue(strategy = GenerationType.IDENTITY) @Schema(title = "Alarm record entity primary key index ID", description = "Alarm record entity primary key index ID", example = "87584674384", accessMode = READ_ONLY) @@ -66,7 +63,7 @@ public class Alert { @Schema(title = "Alert target object: monitor availability-available metrics-app.metrics.field", description = "Alert target object: monitor availability-available metrics-app.metrics.field", example = "1", accessMode = READ_WRITE) - @Length(max = 255) + @Size(max = 255) private String target; @Schema(title = "Alarm definition ID associated with the alarm", diff --git a/common/src/main/java/org/apache/hertzbeat/common/entity/alerter/AlertConverge.java b/common/src/main/java/org/apache/hertzbeat/common/entity/alerter/AlertConverge.java index 5c8df4139..1db223f74 100644 --- a/common/src/main/java/org/apache/hertzbeat/common/entity/alerter/AlertConverge.java +++ b/common/src/main/java/org/apache/hertzbeat/common/entity/alerter/AlertConverge.java @@ -18,6 +18,7 @@ package org.apache.hertzbeat.common.entity.alerter; import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.Size; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -25,7 +26,6 @@ import lombok.NoArgsConstructor; import org.apache.hertzbeat.common.entity.manager.JsonByteListAttributeConverter; import org.apache.hertzbeat.common.entity.manager.JsonTagListAttributeConverter; import org.apache.hertzbeat.common.entity.manager.TagItem; -import org.hibernate.validator.constraints.Length; import org.springframework.data.annotation.CreatedBy; import org.springframework.data.annotation.CreatedDate; import org.springframework.data.annotation.LastModifiedBy; @@ -63,7 +63,7 @@ public class AlertConverge { @Schema(title = "Policy name", description = "Policy name", example = "converge-1", accessMode = READ_WRITE) - @Length(max = 100) + @Size(max = 100) @NotNull private String name; diff --git a/common/src/main/java/org/apache/hertzbeat/common/entity/alerter/AlertDefine.java b/common/src/main/java/org/apache/hertzbeat/common/entity/alerter/AlertDefine.java index 41417272f..39864488e 100644 --- a/common/src/main/java/org/apache/hertzbeat/common/entity/alerter/AlertDefine.java +++ b/common/src/main/java/org/apache/hertzbeat/common/entity/alerter/AlertDefine.java @@ -19,13 +19,13 @@ package org.apache.hertzbeat.common.entity.alerter; import com.google.common.base.Objects; import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.Size; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; import org.apache.hertzbeat.common.entity.manager.JsonTagListAttributeConverter; import org.apache.hertzbeat.common.entity.manager.TagItem; -import org.hibernate.validator.constraints.Length; import org.springframework.data.annotation.CreatedBy; import org.springframework.data.annotation.CreatedDate; import org.springframework.data.annotation.LastModifiedBy; @@ -63,24 +63,24 @@ public class AlertDefine { private Long id; @Schema(title = "Monitoring Type", example = "linux", accessMode = READ_WRITE) - @Length(max = 100) + @Size(max = 100) @NotNull private String app; @Schema(title = "Monitoring Metrics", example = "cpu", accessMode = READ_WRITE) - @Length(max = 100) + @Size(max = 100) @NotNull private String metric; @Schema(title = "Monitoring Metrics Field", example = "usage", accessMode = READ_WRITE) - @Length(max = 100) + @Size(max = 100) private String field; @Schema(title = "Is Apply All Default", example = "false", accessMode = READ_WRITE) private boolean preset; @Schema(title = "Alarm Threshold Expr", example = "usage>90", accessMode = READ_WRITE) - @Length(max = 2048) + @Size(max = 2048) @Column(length = 2048) private String expr; @@ -111,7 +111,7 @@ public class AlertDefine { @Schema(title = "Alarm Template", example = "linux {monitor_name}: {monitor_id} cpu usage high", accessMode = READ_WRITE) - @Length(max = 2048) + @Size(max = 2048) @Column(length = 2048) private String template; diff --git a/common/src/main/java/org/apache/hertzbeat/common/entity/alerter/AlertDefineMonitorBind.java b/common/src/main/java/org/apache/hertzbeat/common/entity/alerter/AlertDefineMonitorBind.java index 912b75588..06d522863 100644 --- a/common/src/main/java/org/apache/hertzbeat/common/entity/alerter/AlertDefineMonitorBind.java +++ b/common/src/main/java/org/apache/hertzbeat/common/entity/alerter/AlertDefineMonitorBind.java @@ -23,8 +23,6 @@ import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; -import org.hibernate.annotations.NotFound; -import org.hibernate.annotations.NotFoundAction; import org.springframework.data.annotation.CreatedDate; import org.springframework.data.annotation.LastModifiedDate; import org.springframework.data.jpa.domain.support.AuditingEntityListener; @@ -75,6 +73,7 @@ public class AlertDefineMonitorBind { @OneToOne(fetch = FetchType.EAGER) @JoinColumn(name = "monitor_id", referencedColumnName = "id", foreignKey = @ForeignKey(ConstraintMode.NO_CONSTRAINT), insertable = false, updatable = false) - @NotFound(action = NotFoundAction.IGNORE) + // todo instead of @NotFound +// @NotFound(action = NotFoundAction.IGNORE) private Monitor monitor; } diff --git a/common/src/main/java/org/apache/hertzbeat/common/entity/alerter/AlertSilence.java b/common/src/main/java/org/apache/hertzbeat/common/entity/alerter/AlertSilence.java index 2e6e7409b..b51ed37a0 100644 --- a/common/src/main/java/org/apache/hertzbeat/common/entity/alerter/AlertSilence.java +++ b/common/src/main/java/org/apache/hertzbeat/common/entity/alerter/AlertSilence.java @@ -18,6 +18,7 @@ package org.apache.hertzbeat.common.entity.alerter; import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.Size; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -25,7 +26,6 @@ import lombok.NoArgsConstructor; import org.apache.hertzbeat.common.entity.manager.JsonByteListAttributeConverter; import org.apache.hertzbeat.common.entity.manager.JsonTagListAttributeConverter; import org.apache.hertzbeat.common.entity.manager.TagItem; -import org.hibernate.validator.constraints.Length; import org.springframework.data.annotation.CreatedBy; import org.springframework.data.annotation.CreatedDate; import org.springframework.data.annotation.LastModifiedBy; @@ -64,7 +64,7 @@ public class AlertSilence { @Schema(title = "Policy name", description = "Policy name", example = "silence-1", accessMode = READ_WRITE) - @Length(max = 100) + @Size(max = 100) @NotNull private String name; diff --git a/common/src/main/java/org/apache/hertzbeat/common/entity/alerter/JsonMapAttributeConverter.java b/common/src/main/java/org/apache/hertzbeat/common/entity/alerter/JsonMapAttributeConverter.java index 834d15101..68e019c02 100644 --- a/common/src/main/java/org/apache/hertzbeat/common/entity/alerter/JsonMapAttributeConverter.java +++ b/common/src/main/java/org/apache/hertzbeat/common/entity/alerter/JsonMapAttributeConverter.java @@ -17,15 +17,20 @@ package org.apache.hertzbeat.common.entity.alerter; +import jakarta.persistence.Converter; import org.apache.hertzbeat.common.util.JsonUtil; import com.fasterxml.jackson.core.type.TypeReference; import jakarta.persistence.AttributeConverter; +import org.springframework.stereotype.Component; + import java.util.Map; /** * json map converter */ +@Converter +@Component public class JsonMapAttributeConverter implements AttributeConverter<Map<String, String>, String> { @Override diff --git a/common/src/main/java/org/apache/hertzbeat/common/entity/manager/JsonByteListAttributeConverter.java b/common/src/main/java/org/apache/hertzbeat/common/entity/manager/JsonByteListAttributeConverter.java index ab13cbbd9..c1facc673 100644 --- a/common/src/main/java/org/apache/hertzbeat/common/entity/manager/JsonByteListAttributeConverter.java +++ b/common/src/main/java/org/apache/hertzbeat/common/entity/manager/JsonByteListAttributeConverter.java @@ -18,14 +18,19 @@ package org.apache.hertzbeat.common.entity.manager; import com.fasterxml.jackson.core.type.TypeReference; +import jakarta.persistence.Converter; import org.apache.hertzbeat.common.util.JsonUtil; import jakarta.persistence.AttributeConverter; +import org.springframework.stereotype.Component; + import java.util.List; /** * json str to list Byte converter */ +@Converter +@Component public class JsonByteListAttributeConverter implements AttributeConverter<List<Byte>, String> { @Override diff --git a/common/src/main/java/org/apache/hertzbeat/common/entity/manager/JsonLongListAttributeConverter.java b/common/src/main/java/org/apache/hertzbeat/common/entity/manager/JsonLongListAttributeConverter.java index 6921ae1af..25b7f8969 100644 --- a/common/src/main/java/org/apache/hertzbeat/common/entity/manager/JsonLongListAttributeConverter.java +++ b/common/src/main/java/org/apache/hertzbeat/common/entity/manager/JsonLongListAttributeConverter.java @@ -14,20 +14,24 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - + package org.apache.hertzbeat.common.entity.manager; import com.fasterxml.jackson.core.type.TypeReference; import jakarta.persistence.AttributeConverter; +import jakarta.persistence.Converter; import org.apache.commons.lang3.StringUtils; import org.apache.hertzbeat.common.util.JsonUtil; +import org.springframework.stereotype.Component; + import java.util.List; /** * json str to id list */ - +@Converter +@Component public class JsonLongListAttributeConverter implements AttributeConverter<List<Long>, String> { @Override public String convertToDatabaseColumn(List<Long> attribute) { @@ -37,13 +41,16 @@ public class JsonLongListAttributeConverter implements AttributeConverter<List<L @Override public List<Long> convertToEntityAttribute(String dbData) { - TypeReference<List<Long>> typeReference = new TypeReference<>() {}; + if (StringUtils.isBlank(dbData)) { + return List.of(); + } + TypeReference<List<Long>> typeReference = new TypeReference<>() { + }; List<Long> longList = JsonUtil.fromJson(dbData, typeReference); if (longList == null && !dbData.isEmpty()) { - if (StringUtils.isNumeric(dbData)){ + if (StringUtils.isNumeric(dbData)) { return List.of(Long.parseLong(dbData)); - } - else throw new NumberFormatException("String convert to Long error"); - }else return longList; + } else throw new NumberFormatException("String convert to Long error"); + } else return longList; } } diff --git a/common/src/main/java/org/apache/hertzbeat/common/entity/manager/JsonOptionListAttributeConverter.java b/common/src/main/java/org/apache/hertzbeat/common/entity/manager/JsonOptionListAttributeConverter.java index bb1b65626..2016586d3 100644 --- a/common/src/main/java/org/apache/hertzbeat/common/entity/manager/JsonOptionListAttributeConverter.java +++ b/common/src/main/java/org/apache/hertzbeat/common/entity/manager/JsonOptionListAttributeConverter.java @@ -18,14 +18,19 @@ package org.apache.hertzbeat.common.entity.manager; import com.fasterxml.jackson.core.type.TypeReference; +import jakarta.persistence.Converter; import org.apache.hertzbeat.common.util.JsonUtil; import jakarta.persistence.AttributeConverter; +import org.springframework.stereotype.Component; + import java.util.List; /** * json str to list paramDefine.Option */ +@Converter +@Component public class JsonOptionListAttributeConverter implements AttributeConverter<List<ParamDefine.Option>, String> { @Override diff --git a/common/src/main/java/org/apache/hertzbeat/common/entity/manager/JsonStringListAttributeConverter.java b/common/src/main/java/org/apache/hertzbeat/common/entity/manager/JsonStringListAttributeConverter.java index 2f49891f9..7d8859928 100644 --- a/common/src/main/java/org/apache/hertzbeat/common/entity/manager/JsonStringListAttributeConverter.java +++ b/common/src/main/java/org/apache/hertzbeat/common/entity/manager/JsonStringListAttributeConverter.java @@ -14,12 +14,15 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - + package org.apache.hertzbeat.common.entity.manager; import com.fasterxml.jackson.core.type.TypeReference; import jakarta.persistence.AttributeConverter; +import jakarta.persistence.Converter; +import org.apache.commons.lang3.StringUtils; import org.apache.hertzbeat.common.util.JsonUtil; +import org.springframework.stereotype.Component; import java.util.List; @@ -27,6 +30,8 @@ import java.util.List; /** * Convert the list of strings to a JSON string */ +@Converter +@Component public class JsonStringListAttributeConverter implements AttributeConverter<List<String>, String> { @Override public String convertToDatabaseColumn(List<String> attribute) { @@ -36,10 +41,14 @@ public class JsonStringListAttributeConverter implements AttributeConverter<List @Override public List<String> convertToEntityAttribute(String dbData) { - TypeReference<List<String>> typeReference = new TypeReference<>() {}; + if (StringUtils.isBlank(dbData)) { + return List.of(); + } + TypeReference<List<String>> typeReference = new TypeReference<>() { + }; List<String> stringList = JsonUtil.fromJson(dbData, typeReference); if (stringList == null && !dbData.isEmpty()) { return List.of(dbData); - }else return stringList; + } else return stringList; } } diff --git a/common/src/main/java/org/apache/hertzbeat/common/entity/manager/JsonTagAttributeConverter.java b/common/src/main/java/org/apache/hertzbeat/common/entity/manager/JsonTagAttributeConverter.java index a254a95a5..f5942fe48 100644 --- a/common/src/main/java/org/apache/hertzbeat/common/entity/manager/JsonTagAttributeConverter.java +++ b/common/src/main/java/org/apache/hertzbeat/common/entity/manager/JsonTagAttributeConverter.java @@ -18,13 +18,17 @@ package org.apache.hertzbeat.common.entity.manager; import com.fasterxml.jackson.core.type.TypeReference; +import jakarta.persistence.Converter; import org.apache.hertzbeat.common.util.JsonUtil; import jakarta.persistence.AttributeConverter; +import org.springframework.stereotype.Component; /** * json str to tag item */ +@Converter +@Component public class JsonTagAttributeConverter implements AttributeConverter<TagItem, String> { @Override diff --git a/common/src/main/java/org/apache/hertzbeat/common/entity/manager/JsonTagListAttributeConverter.java b/common/src/main/java/org/apache/hertzbeat/common/entity/manager/JsonTagListAttributeConverter.java index 791a701df..cba854483 100644 --- a/common/src/main/java/org/apache/hertzbeat/common/entity/manager/JsonTagListAttributeConverter.java +++ b/common/src/main/java/org/apache/hertzbeat/common/entity/manager/JsonTagListAttributeConverter.java @@ -18,9 +18,12 @@ package org.apache.hertzbeat.common.entity.manager; import com.fasterxml.jackson.core.type.TypeReference; +import jakarta.persistence.Converter; import org.apache.hertzbeat.common.util.JsonUtil; import jakarta.persistence.AttributeConverter; +import org.springframework.stereotype.Component; + import java.util.List; import java.util.Map; import java.util.stream.Collectors; @@ -28,6 +31,8 @@ import java.util.stream.Collectors; /** * json str to tag list */ +@Converter +@Component public class JsonTagListAttributeConverter implements AttributeConverter<List<TagItem>, String> { @Override diff --git a/common/src/main/java/org/apache/hertzbeat/common/entity/manager/Monitor.java b/common/src/main/java/org/apache/hertzbeat/common/entity/manager/Monitor.java index d40d17495..73b79f5dd 100644 --- a/common/src/main/java/org/apache/hertzbeat/common/entity/manager/Monitor.java +++ b/common/src/main/java/org/apache/hertzbeat/common/entity/manager/Monitor.java @@ -17,13 +17,13 @@ package org.apache.hertzbeat.common.entity.manager; +import jakarta.validation.constraints.Size; import org.apache.hertzbeat.common.support.valid.HostValid; import io.swagger.v3.oas.annotations.media.Schema; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; -import org.hibernate.validator.constraints.Length; import org.springframework.data.annotation.CreatedBy; import org.springframework.data.annotation.CreatedDate; import org.springframework.data.annotation.LastModifiedBy; @@ -72,7 +72,7 @@ public class Monitor { * Monitor Name */ @Schema(title = "task name", example = "Api-TanCloud.cn", accessMode = READ_WRITE) - @Length(max = 100) + @Size(max = 100) private String name; /** @@ -80,7 +80,7 @@ public class Monitor { * 监控的类型:linux,mysql,jvm... */ @Schema(title = "Type of monitoring", example = "TanCloud", accessMode = READ_WRITE) - @Length(max = 100) + @Size(max = 100) private String app; /** @@ -88,7 +88,7 @@ public class Monitor { * 监控的对端host:ipv4,ipv6,域名 */ @Schema(title = "The host to monitor", example = "192.167.25.11", accessMode = READ_WRITE) - @Length(max = 100) + @Size(max = 100) @HostValid private String host; @@ -114,7 +114,7 @@ public class Monitor { * 监控备注描述 */ @Schema(title = "Monitor note description", example = "Availability monitoring of the SAAS website TanCloud", accessMode = READ_WRITE) - @Length(max = 255) + @Size(max = 255) private String description; /** diff --git a/common/src/main/java/org/apache/hertzbeat/common/entity/manager/NoticeReceiver.java b/common/src/main/java/org/apache/hertzbeat/common/entity/manager/NoticeReceiver.java index 5cb2513cf..20fd5b6c0 100644 --- a/common/src/main/java/org/apache/hertzbeat/common/entity/manager/NoticeReceiver.java +++ b/common/src/main/java/org/apache/hertzbeat/common/entity/manager/NoticeReceiver.java @@ -18,11 +18,11 @@ package org.apache.hertzbeat.common.entity.manager; import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.Size; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; -import org.hibernate.validator.constraints.Length; import org.springframework.data.annotation.CreatedBy; import org.springframework.data.annotation.CreatedDate; import org.springframework.data.annotation.LastModifiedBy; @@ -59,7 +59,7 @@ public class NoticeReceiver { @Schema(title = "Recipient name", description = "Recipient name", example = "tom", accessMode = READ_WRITE) - @Length(max = 100) + @Size(max = 100) @NotNull private String name; @@ -78,33 +78,33 @@ public class NoticeReceiver { @Schema(title = "Mobile number: Valid when the notification method is SMS", description = "Mobile number: Valid when the notification method is SMS", example = "18923435643", accessMode = READ_WRITE) - @Length(max = 100) + @Size(max = 100) private String phone; @Schema(title = "Email account: Valid when the notification method is email", description = "Email account: Valid when the notification method is email", example = "[email protected]", accessMode = READ_WRITE) - @Length(max = 100) + @Size(max = 100) private String email; @Schema(title = "URL address: The notification method is valid for webhook", description = "URL address: The notification method is valid for webhook", example = "https://www.tancloud.cn", accessMode = READ_WRITE) - @Length(max = 300) + @Size(max = 300) @Column(length = 300) private String hookUrl; @Schema(title = "openId : The notification method is valid for WeChat official account, enterprise WeChat robot or FlyBook robot", description = "openId : The notification method is valid for WeChat official account, enterprise WeChat robot or FlyBook robot", example = "343432", accessMode = READ_WRITE) - @Length(max = 300) + @Size(max = 300) @Column(length = 300) private String wechatId; @Schema(title = "Access token : The notification method is valid for DingTalk robot", description = "Access token : The notification method is valid for DingTalk robot", example = "34823984635647", accessMode = READ_WRITE) - @Length(max = 300) + @Size(max = 300) @Column(length = 300) private String accessToken; @@ -121,7 +121,7 @@ public class NoticeReceiver { @Schema(title = "URL address: The notification method is valid for Slack", description = "URL address: The notification method is valid for Slack", example = "https://hooks.slack.com/services/XXXX/XXXX/XXXX", accessMode = READ_WRITE) - @Length(max = 300) + @Size(max = 300) @Column(length = 300) private String slackWebHookUrl; @@ -143,63 +143,63 @@ public class NoticeReceiver { @Schema(title = "Discord channel id: The notification method is valid for Discord", description = "Discord channel id: The notification method is valid for Discord", example = "1065303416030642266", accessMode = READ_WRITE) - @Length(max = 300) + @Size(max = 300) @Column(length = 300) private String discordChannelId; @Schema(title = "Discord bot token: The notification method is valid for Discord", description = "Discord bot token: The notification method is valid for Discord", example = "MTA2NTMwMzU0ODY4Mzg4MjUzNw.xxxxx.xxxxxxx", accessMode = READ_WRITE) - @Length(max = 300) + @Size(max = 300) @Column(length = 300) private String discordBotToken; @Schema(title = "huawei cloud SMN ak: If the notification method is valid for huawei cloud SMN", description = "huawei cloud SMN ak: If the notification method is valid for huawei cloud SMN", example = "NCVBODJOEYHSW3VNXXXX", accessMode = READ_WRITE) - @Length(max = 22) + @Size(max = 22) @Column(length = 22) private String smnAk; @Schema(title = "huawei cloud SMN sk: If the notification method is valid for huawei cloud SMN", description = "huawei cloud SMN sk: If the notification method is valid for huawei cloud SMN", example = "nmSNhUJN9MlpPl8lfCsgdA0KvHCL9JXXXX", accessMode = READ_WRITE) - @Length(max = 42) + @Size(max = 42) @Column(length = 42) private String smnSk; @Schema(title = "huawei cloud SMN projectId: If the notification method is valid for huawei cloud SMN", description = "huawei cloud SMN projectId: If the notification method is valid for huawei cloud SMN", example = "320c2fb11edb47a481c299c1XXXXXX", accessMode = READ_WRITE) - @Length(max = 32) + @Size(max = 32) @Column(length = 32) private String smnProjectId; @Schema(title = "huawei cloud SMN region: If the notification method is valid for huawei cloud SMN", description = "huawei cloud SMN region: If the notification method is valid for huawei cloud SMN", example = "cn-east-3", accessMode = READ_WRITE) - @Length(max = 32) + @Size(max = 32) @Column(length = 32) private String smnRegion; @Schema(title = "huawei cloud SMN TopicUrn: If the notification method is valid for huawei cloud SMN", description = "huawei cloud SMN TopicUrn: If the notification method is valid for huawei cloud SMN", example = "urn:smn:cn-east-3:xxx:hertzbeat_test", accessMode = READ_WRITE) - @Length(max = 300) + @Size(max = 300) @Column(length = 300) private String smnTopicUrn; @Schema(title = "serverChanToken : The notification method is valid for ServerChan", description = "serverChanToken : The notification method is valid for ServerChan", example = "SCT193569TSNm6xIabdjqeZPtOGOWcvU1e", accessMode = READ_WRITE) - @Length(max = 300) + @Size(max = 300) @Column(length = 300) private String serverChanToken; @Schema(title = "Gotify token : The notification method is valid for Gotify", description = "Gotify token : The notification method is valid for Gotify", example = "A845h__ZMqDxZlO", accessMode = READ_WRITE) - @Length(max = 300) + @Size(max = 300) @Column(length = 300) private String gotifyToken; diff --git a/common/src/main/java/org/apache/hertzbeat/common/entity/manager/NoticeRule.java b/common/src/main/java/org/apache/hertzbeat/common/entity/manager/NoticeRule.java index d5b35d174..69c879c2d 100644 --- a/common/src/main/java/org/apache/hertzbeat/common/entity/manager/NoticeRule.java +++ b/common/src/main/java/org/apache/hertzbeat/common/entity/manager/NoticeRule.java @@ -18,11 +18,11 @@ package org.apache.hertzbeat.common.entity.manager; import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.Size; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; -import org.hibernate.validator.constraints.Length; import org.springframework.data.annotation.CreatedBy; import org.springframework.data.annotation.CreatedDate; import org.springframework.data.annotation.LastModifiedBy; @@ -61,7 +61,7 @@ public class NoticeRule { @Schema(title = "Policy name", description = "Policy name", example = "dispatch-1", accessMode = READ_WRITE) - @Length(max = 100) + @Size(max = 100) @NotNull private String name; @@ -86,7 +86,7 @@ public class NoticeRule { @Schema(title = "Template identification", description = "Template identification", example = "demo", accessMode = READ_WRITE) - @Length(max = 100) + @Size(max = 100) private String templateName; @Schema(title = "Whether to enable this policy", diff --git a/common/src/main/java/org/apache/hertzbeat/common/entity/manager/NoticeTemplate.java b/common/src/main/java/org/apache/hertzbeat/common/entity/manager/NoticeTemplate.java index 1b3fcb2b3..365c2c964 100644 --- a/common/src/main/java/org/apache/hertzbeat/common/entity/manager/NoticeTemplate.java +++ b/common/src/main/java/org/apache/hertzbeat/common/entity/manager/NoticeTemplate.java @@ -18,11 +18,11 @@ package org.apache.hertzbeat.common.entity.manager; import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.Size; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; -import org.hibernate.validator.constraints.Length; import org.springframework.data.annotation.CreatedBy; import org.springframework.data.annotation.CreatedDate; import org.springframework.data.annotation.LastModifiedBy; @@ -62,7 +62,7 @@ public class NoticeTemplate { @Schema(title = "Template name", description = "Template name", example = "dispatch-1", accessMode = READ_WRITE) - @Length(max = 100) + @Size(max = 100) @NotBlank private String name; @@ -93,7 +93,7 @@ public class NoticeTemplate { "${priorityLabel} : ${priority}\n" + "${triggerTimeLabel} : ${triggerTime}\n" + "${contentLabel} : ${content}", accessMode = READ_WRITE) - @Length(max = 60000) + @Size(max = 60000) @Lob @NotBlank private String content; diff --git a/common/src/main/java/org/apache/hertzbeat/common/entity/manager/Param.java b/common/src/main/java/org/apache/hertzbeat/common/entity/manager/Param.java index 1b4e46cc0..fa18f24c7 100644 --- a/common/src/main/java/org/apache/hertzbeat/common/entity/manager/Param.java +++ b/common/src/main/java/org/apache/hertzbeat/common/entity/manager/Param.java @@ -18,11 +18,11 @@ package org.apache.hertzbeat.common.entity.manager; import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.Size; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; -import org.hibernate.validator.constraints.Length; import org.springframework.data.annotation.CreatedDate; import org.springframework.data.annotation.LastModifiedDate; import org.springframework.data.jpa.domain.support.AuditingEntityListener; @@ -68,7 +68,7 @@ public class Param { * Parameter Field Identifier */ @Schema(title = "Parameter identifier field", example = "port", accessMode = READ_WRITE) - @Length(max = 100) + @Size(max = 100) @NotNull private String field; @@ -76,7 +76,7 @@ public class Param { * Param Value */ @Schema(title = "parameter values", example = "8080", accessMode = READ_WRITE) - @Length(max = 8126) + @Size(max = 8126) @Column(name = "`value`", length = 8126) private String value; diff --git a/common/src/main/java/org/apache/hertzbeat/common/entity/warehouse/History.java b/common/src/main/java/org/apache/hertzbeat/common/entity/warehouse/History.java index 5bbb0b5c8..0997262bf 100644 --- a/common/src/main/java/org/apache/hertzbeat/common/entity/warehouse/History.java +++ b/common/src/main/java/org/apache/hertzbeat/common/entity/warehouse/History.java @@ -22,7 +22,6 @@ import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; -import org.hibernate.annotations.GenericGenerator; import jakarta.persistence.*; @@ -47,8 +46,7 @@ import static io.swagger.v3.oas.annotations.media.Schema.AccessMode.READ_WRITE; public class History { @Id - @GeneratedValue(strategy = GenerationType.IDENTITY, generator = "myid") - @GenericGenerator(name = "myid", strategy = "org.apache.hertzbeat.common.util.SnowFlakeIdGenerator") + @GeneratedValue(strategy = GenerationType.IDENTITY) @Schema(description = "Metric data history entity primary key index ID", example = "87584674384", accessMode = READ_ONLY) private Long id; diff --git a/common/src/main/java/org/apache/hertzbeat/common/util/IpDomainUtil.java b/common/src/main/java/org/apache/hertzbeat/common/util/IpDomainUtil.java index b143888a2..09cf40e6a 100644 --- a/common/src/main/java/org/apache/hertzbeat/common/util/IpDomainUtil.java +++ b/common/src/main/java/org/apache/hertzbeat/common/util/IpDomainUtil.java @@ -20,6 +20,7 @@ package org.apache.hertzbeat.common.util; import lombok.extern.slf4j.Slf4j; import org.apache.hertzbeat.common.constants.CollectorConstants; import org.apache.http.conn.util.InetAddressUtils; +import org.springframework.util.StringUtils; import java.net.Inet4Address; import java.net.InetAddress; @@ -110,7 +111,7 @@ public class IpDomainUtil { * @return IP address type */ public static String checkIpAddressType(String ipDomain){ - if (InetAddressUtils.isIPv6Address(ipDomain)) { + if (StringUtils.hasText(ipDomain) && InetAddressUtils.isIPv6Address(ipDomain)) { return CollectorConstants.IPV6; } return CollectorConstants.IPV4; diff --git a/common/src/main/java/org/apache/hertzbeat/common/util/SnowFlakeIdGenerator.java b/common/src/main/java/org/apache/hertzbeat/common/util/SnowFlakeIdGenerator.java index f9b591a00..f6f287e1c 100644 --- a/common/src/main/java/org/apache/hertzbeat/common/util/SnowFlakeIdGenerator.java +++ b/common/src/main/java/org/apache/hertzbeat/common/util/SnowFlakeIdGenerator.java @@ -17,16 +17,10 @@ package org.apache.hertzbeat.common.util; -import org.hibernate.HibernateException; -import org.hibernate.engine.spi.SharedSessionContractImplementor; -import org.hibernate.id.IdentifierGenerator; - -import java.io.Serializable; - /** * Snowflake Algorithm Generator Tool */ -public class SnowFlakeIdGenerator implements IdentifierGenerator { +public class SnowFlakeIdGenerator { private static final SnowFlakeIdWorker ID_WORKER; @@ -34,11 +28,6 @@ public class SnowFlakeIdGenerator implements IdentifierGenerator { ID_WORKER = new SnowFlakeIdWorker(); } - @Override - public Serializable generate(SharedSessionContractImplementor s, Object obj) throws HibernateException { - return SnowFlakeIdGenerator.generateId(); - } - public static long generateId() { return ID_WORKER.nextId(); } diff --git a/manager/pom.xml b/manager/pom.xml index 7b9802206..3e50ba254 100644 --- a/manager/pom.xml +++ b/manager/pom.xml @@ -138,11 +138,6 @@ <groupId>org.yaml</groupId> <artifactId>snakeyaml</artifactId> </dependency> - <!-- validation --> - <dependency> - <groupId>org.springframework.boot</groupId> - <artifactId>spring-boot-starter-validation</artifactId> - </dependency> <!--sureness--> <dependency> <groupId>com.usthe.sureness</groupId> diff --git a/manager/src/main/java/org/apache/hertzbeat/manager/dao/ParamDao.java b/manager/src/main/java/org/apache/hertzbeat/manager/dao/ParamDao.java index 94a1ff59e..aed48ae31 100644 --- a/manager/src/main/java/org/apache/hertzbeat/manager/dao/ParamDao.java +++ b/manager/src/main/java/org/apache/hertzbeat/manager/dao/ParamDao.java @@ -35,7 +35,7 @@ public interface ParamDao extends JpaRepository<Param, Long> { * @param monitorId Monitor ID 监控任务ID * @return list of parameter values 参数值列表 */ - List<Param> findParamsByMonitorId(long monitorId); + List<Param> findParamsByMonitorId(Long monitorId); /** * Remove the parameter list associated with the monitoring ID based on it diff --git a/manager/src/main/java/org/apache/hertzbeat/manager/pojo/dto/LoginDto.java b/manager/src/main/java/org/apache/hertzbeat/manager/pojo/dto/LoginDto.java index a285bff01..11185efbd 100644 --- a/manager/src/main/java/org/apache/hertzbeat/manager/pojo/dto/LoginDto.java +++ b/manager/src/main/java/org/apache/hertzbeat/manager/pojo/dto/LoginDto.java @@ -18,12 +18,12 @@ package org.apache.hertzbeat.manager.pojo.dto; import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.Max; +import jakarta.validation.constraints.Size; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; -import org.hibernate.validator.constraints.Length; -import org.hibernate.validator.constraints.Range; import jakarta.validation.constraints.NotBlank; @@ -45,7 +45,7 @@ public class LoginDto { * 1. Account (email username and mobile phone number) password login 2. github login 3. WeChat login */ @Schema(description = "类型", example = "1", accessMode = READ_ONLY) - @Range(min = 0, max = 4, message = "1.账户(邮箱用户名手机号)密码登录 2.github登录 3.微信登录") + @Max(value = 4, message = "1. Account (email username and mobile phone number) password login 2. github login 3. WeChat login") private Byte type; /** @@ -60,7 +60,7 @@ public class LoginDto { */ @Schema(description = "密钥", example = "1", accessMode = READ_ONLY) @NotBlank(message = "Credential can not null") - @Length(max = 512, message = "credential max length 512") + @Size(max = 512, message = "credential max length 512") private String credential; } --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
