From 1e4e45f7bbefe85a9eed494522f537697984d9af Mon Sep 17 00:00:00 2001 From: Avgustin Marinov Date: Tue, 11 Feb 2025 12:50:51 +0200 Subject: [PATCH] Ethlo back (#2267) * Return Ethlo plugin * Return back statick weaving for EclipseLink in order to use lazy fetch --- .../hawkbit-repository-jpa-api/pom.xml | 12 +- .../jpa/model/AbstractBaseEntity.java | 114 ------------------ .../README.md | 4 +- .../pom.xml | 29 +++++ .../jpa/model/AbstractJpaBaseEntity.java | 94 ++++++++++++++- .../model/EntityPropertyChangeListener.java | 2 +- .../FakeJpaEntityForStaticCompilation.java | 30 +++++ .../hawkbit-repository-jpa-hibernate/pom.xml | 1 + .../jpa/model/AbstractJpaBaseEntity.java | 94 ++++++++++++++- .../model/EntityPropertyChangeListener.java | 2 +- .../hawkbit-repository-jpa/pom.xml | 29 +++++ .../jpa/management/JpaActionManagement.java | 1 - hawkbit-simple-ui/.gitignore | 10 +- pom.xml | 3 +- 14 files changed, 294 insertions(+), 131 deletions(-) delete mode 100644 hawkbit-repository/hawkbit-repository-jpa-api/src/main/java/org/eclipse/hawkbit/repository/jpa/model/AbstractBaseEntity.java create mode 100644 hawkbit-repository/hawkbit-repository-jpa-eclipselink/src/main/java/org/eclipse/hawkbit/repository/jpa/model/FakeJpaEntityForStaticCompilation.java diff --git a/hawkbit-repository/hawkbit-repository-jpa-api/pom.xml b/hawkbit-repository/hawkbit-repository-jpa-api/pom.xml index 78c884cd9c..0c0bf37ecc 100644 --- a/hawkbit-repository/hawkbit-repository-jpa-api/pom.xml +++ b/hawkbit-repository/hawkbit-repository-jpa-api/pom.xml @@ -33,6 +33,11 @@ ${project.version} + + jakarta.persistence + jakarta.persistence-api + + org.springframework.boot spring-boot-starter-data-jpa @@ -43,12 +48,5 @@ - - - - org.hibernate.orm - hibernate-jpamodelgen - true - diff --git a/hawkbit-repository/hawkbit-repository-jpa-api/src/main/java/org/eclipse/hawkbit/repository/jpa/model/AbstractBaseEntity.java b/hawkbit-repository/hawkbit-repository-jpa-api/src/main/java/org/eclipse/hawkbit/repository/jpa/model/AbstractBaseEntity.java deleted file mode 100644 index 820c24f042..0000000000 --- a/hawkbit-repository/hawkbit-repository-jpa-api/src/main/java/org/eclipse/hawkbit/repository/jpa/model/AbstractBaseEntity.java +++ /dev/null @@ -1,114 +0,0 @@ -/** - * Copyright (c) 2015 Bosch Software Innovations GmbH and others - * - * This program and the accompanying materials are made - * available under the terms of the Eclipse Public License 2.0 - * which is available at https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - */ -package org.eclipse.hawkbit.repository.jpa.model; - -import java.io.Serializable; - -import jakarta.persistence.EntityListeners; -import jakarta.persistence.MappedSuperclass; -import jakarta.persistence.PostPersist; -import jakarta.persistence.PostRemove; -import jakarta.persistence.PostUpdate; - -import org.eclipse.hawkbit.repository.jpa.model.helper.AfterTransactionCommitExecutorHolder; -import org.eclipse.hawkbit.repository.model.BaseEntity; -import org.eclipse.hawkbit.tenancy.TenantAwareAuthenticationDetails; -import org.springframework.data.jpa.domain.support.AuditingEntityListener; -import org.springframework.security.core.context.SecurityContextHolder; - -/** - * Core information of all entities. - */ -@MappedSuperclass -@EntityListeners({ AuditingEntityListener.class, EntityInterceptorListener.class }) -public abstract class AbstractBaseEntity implements BaseEntity, Serializable { - - /** - * Defined equals/hashcode strategy for the repository in general is that an entity is equal if it has the same {@link #getId()} and - * {@link #getOptLockRevision()} and class. - */ - @Override - // Exception squid:S864 - generated code - @SuppressWarnings({ "squid:S864" }) - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + (getId() == null ? 0 : getId().hashCode()); - result = prime * result + getOptLockRevision(); - result = prime * result + getClass().getName().hashCode(); - return result; - } - - /** - * Defined equals/hashcode strategy for the repository in general is that an entity is equal if it has the same {@link #getId()} and - * {@link #getOptLockRevision()} and class. - */ - @Override - public boolean equals(final Object obj) { - if (this == obj) { - return true; - } - if (obj == null) { - return false; - } - if (!getClass().isInstance(obj)) { - return false; - } - final BaseEntity other = (BaseEntity) obj; - final Long id = getId(); - final Long otherId = other.getId(); - if (id == null) { - if (otherId != null) { - return false; - } - } else if (!id.equals(otherId)) { - return false; - } - return getOptLockRevision() == other.getOptLockRevision(); - } - - @Override - public String toString() { - return getClass().getSimpleName() + " [id=" + getId() + "]"; - } - - @PostPersist - public void postInsert() { - if (this instanceof EventAwareEntity eventAwareEntity) { - doNotify(eventAwareEntity::fireCreateEvent); - } - } - - @PostUpdate - public void postUpdate() { - if (this instanceof EventAwareEntity eventAwareEntity) { - doNotify(eventAwareEntity::fireUpdateEvent); - } - } - - @PostRemove - public void postDelete() { - if (this instanceof EventAwareEntity eventAwareEntity) { - doNotify(eventAwareEntity::fireDeleteEvent); - } - } - - protected static void doNotify(final Runnable runnable) { - // fire events onl AFTER transaction commit - AfterTransactionCommitExecutorHolder.getInstance().getAfterCommit().afterCommit(runnable); - } - - protected boolean isController() { - return SecurityContextHolder.getContext().getAuthentication() != null - && SecurityContextHolder.getContext().getAuthentication() - .getDetails() instanceof TenantAwareAuthenticationDetails tenantAwareDetails - && tenantAwareDetails.isController(); - } -} \ No newline at end of file diff --git a/hawkbit-repository/hawkbit-repository-jpa-eclipselink/README.md b/hawkbit-repository/hawkbit-repository-jpa-eclipselink/README.md index dd3c4c1798..9906258052 100644 --- a/hawkbit-repository/hawkbit-repository-jpa-eclipselink/README.md +++ b/hawkbit-repository/hawkbit-repository-jpa-eclipselink/README.md @@ -1,3 +1,5 @@ # hawkBit JPA EclipseLink Vendor integration -Implementation of [EclipseLink](http://www.eclipse.org/eclipselink/) JPA vendor. \ No newline at end of file +Implementation of [EclipseLink](http://www.eclipse.org/eclipselink/) JPA vendor. + +Since there seem to be bug in eclipselink static weaver or eclipselink-maven-plugin - don't weave properly the abstract classes when no non-abstract entity into the maven module - we use to have fake entity in the module to make it work. \ No newline at end of file diff --git a/hawkbit-repository/hawkbit-repository-jpa-eclipselink/pom.xml b/hawkbit-repository/hawkbit-repository-jpa-eclipselink/pom.xml index ba228354ad..d9a4cec713 100644 --- a/hawkbit-repository/hawkbit-repository-jpa-eclipselink/pom.xml +++ b/hawkbit-repository/hawkbit-repository-jpa-eclipselink/pom.xml @@ -52,4 +52,33 @@ ${eclipselink.version} + + + + + + com.ethlo.persistence.tools + eclipselink-maven-plugin + ${eclipselink.maven.plugin.version} + + + process-classes + + weave + + + + + org.eclipse.hawkbit.repository.jpa.model + + + + org.eclipse.persistence + org.eclipse.persistence.jpa + ${eclipselink.version} + + + + + diff --git a/hawkbit-repository/hawkbit-repository-jpa-eclipselink/src/main/java/org/eclipse/hawkbit/repository/jpa/model/AbstractJpaBaseEntity.java b/hawkbit-repository/hawkbit-repository-jpa-eclipselink/src/main/java/org/eclipse/hawkbit/repository/jpa/model/AbstractJpaBaseEntity.java index 0771489b04..f4f55db5da 100644 --- a/hawkbit-repository/hawkbit-repository-jpa-eclipselink/src/main/java/org/eclipse/hawkbit/repository/jpa/model/AbstractJpaBaseEntity.java +++ b/hawkbit-repository/hawkbit-repository-jpa-eclipselink/src/main/java/org/eclipse/hawkbit/repository/jpa/model/AbstractJpaBaseEntity.java @@ -14,29 +14,39 @@ import jakarta.persistence.Access; import jakarta.persistence.AccessType; import jakarta.persistence.Column; +import jakarta.persistence.EntityListeners; import jakarta.persistence.GeneratedValue; import jakarta.persistence.GenerationType; import jakarta.persistence.Id; import jakarta.persistence.MappedSuperclass; +import jakarta.persistence.PostPersist; +import jakarta.persistence.PostRemove; +import jakarta.persistence.PostUpdate; import jakarta.persistence.Version; import lombok.AccessLevel; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; +import org.eclipse.hawkbit.repository.jpa.model.helper.AfterTransactionCommitExecutorHolder; +import org.eclipse.hawkbit.repository.model.BaseEntity; +import org.eclipse.hawkbit.tenancy.TenantAwareAuthenticationDetails; import org.springframework.data.annotation.CreatedBy; import org.springframework.data.annotation.CreatedDate; import org.springframework.data.annotation.LastModifiedBy; import org.springframework.data.annotation.LastModifiedDate; +import org.springframework.data.jpa.domain.support.AuditingEntityListener; +import org.springframework.security.core.context.SecurityContextHolder; /** * Base hawkBit entity class containing the common attributes for EclipseLink. */ @NoArgsConstructor(access = AccessLevel.PROTECTED) // Default constructor needed for JPA entities. @MappedSuperclass +@EntityListeners({ AuditingEntityListener.class, EntityInterceptorListener.class }) // exception squid:S2160 - BaseEntity equals/hashcode is handling correctly for sub entities @SuppressWarnings("squid:S2160") -public abstract class AbstractJpaBaseEntity extends AbstractBaseEntity { +public abstract class AbstractJpaBaseEntity implements BaseEntity { protected static final int USERNAME_FIELD_LENGTH = 64; @@ -116,4 +126,86 @@ public void setLastModifiedAt(final long lastModifiedAt) { public long getLastModifiedAt() { return lastModifiedAt == 0 ? createdAt : lastModifiedAt; } + + /** + * Defined equals/hashcode strategy for the repository in general is that an entity is equal if it has the same {@link #getId()} and + * {@link #getOptLockRevision()} and class. + */ + @Override + // Exception squid:S864 - generated code + @SuppressWarnings({ "squid:S864" }) + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + (getId() == null ? 0 : getId().hashCode()); + result = prime * result + getOptLockRevision(); + result = prime * result + getClass().getName().hashCode(); + return result; + } + + /** + * Defined equals/hashcode strategy for the repository in general is that an entity is equal if it has the same {@link #getId()} and + * {@link #getOptLockRevision()} and class. + */ + @Override + public boolean equals(final Object obj) { + if (this == obj) { + return true; + } + if (obj == null) { + return false; + } + if (!getClass().isInstance(obj)) { + return false; + } + final BaseEntity other = (BaseEntity) obj; + final Long id = getId(); + final Long otherId = other.getId(); + if (id == null) { + if (otherId != null) { + return false; + } + } else if (!id.equals(otherId)) { + return false; + } + return getOptLockRevision() == other.getOptLockRevision(); + } + + @Override + public String toString() { + return getClass().getSimpleName() + " [id=" + getId() + "]"; + } + + @PostPersist + public void postInsert() { + if (this instanceof EventAwareEntity eventAwareEntity) { + doNotify(eventAwareEntity::fireCreateEvent); + } + } + + @PostUpdate + public void postUpdate() { + if (this instanceof EventAwareEntity eventAwareEntity) { + doNotify(eventAwareEntity::fireUpdateEvent); + } + } + + @PostRemove + public void postDelete() { + if (this instanceof EventAwareEntity eventAwareEntity) { + doNotify(eventAwareEntity::fireDeleteEvent); + } + } + + protected static void doNotify(final Runnable runnable) { + // fire events onl AFTER transaction commit + AfterTransactionCommitExecutorHolder.getInstance().getAfterCommit().afterCommit(runnable); + } + + protected boolean isController() { + return SecurityContextHolder.getContext().getAuthentication() != null + && SecurityContextHolder.getContext().getAuthentication() + .getDetails() instanceof TenantAwareAuthenticationDetails tenantAwareDetails + && tenantAwareDetails.isController(); + } } \ No newline at end of file diff --git a/hawkbit-repository/hawkbit-repository-jpa-eclipselink/src/main/java/org/eclipse/hawkbit/repository/jpa/model/EntityPropertyChangeListener.java b/hawkbit-repository/hawkbit-repository-jpa-eclipselink/src/main/java/org/eclipse/hawkbit/repository/jpa/model/EntityPropertyChangeListener.java index 28d7ea03b0..8dc8117615 100644 --- a/hawkbit-repository/hawkbit-repository-jpa-eclipselink/src/main/java/org/eclipse/hawkbit/repository/jpa/model/EntityPropertyChangeListener.java +++ b/hawkbit-repository/hawkbit-repository-jpa-eclipselink/src/main/java/org/eclipse/hawkbit/repository/jpa/model/EntityPropertyChangeListener.java @@ -31,7 +31,7 @@ public void postUpdate(final DescriptorEvent event) { final Object object = event.getObject(); if (((UpdateObjectQuery) event.getQuery()).getObjectChangeSet().getChangedAttributeNames().stream() .anyMatch(field -> !TARGET_UPDATE_EVENT_IGNORE_FIELDS.contains(field))) { - AbstractBaseEntity.doNotify(((EventAwareEntity) object)::fireUpdateEvent); + AbstractJpaBaseEntity.doNotify(((EventAwareEntity) object)::fireUpdateEvent); } } } \ No newline at end of file diff --git a/hawkbit-repository/hawkbit-repository-jpa-eclipselink/src/main/java/org/eclipse/hawkbit/repository/jpa/model/FakeJpaEntityForStaticCompilation.java b/hawkbit-repository/hawkbit-repository-jpa-eclipselink/src/main/java/org/eclipse/hawkbit/repository/jpa/model/FakeJpaEntityForStaticCompilation.java new file mode 100644 index 0000000000..80248e971a --- /dev/null +++ b/hawkbit-repository/hawkbit-repository-jpa-eclipselink/src/main/java/org/eclipse/hawkbit/repository/jpa/model/FakeJpaEntityForStaticCompilation.java @@ -0,0 +1,30 @@ +/** + * Copyright (c) 2015 Bosch Software Innovations GmbH and others + * + * This program and the accompanying materials are made + * available under the terms of the Eclipse Public License 2.0 + * which is available at https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + */ +package org.eclipse.hawkbit.repository.jpa.model; + +import java.io.Serial; + +import jakarta.persistence.Entity; +import jakarta.persistence.Table; + +import lombok.NoArgsConstructor; + +/** + * Fake JPA entity to allow proper static compilation. It seems that if there is no actual (class) entity using AbstractJpaBaseEntity, + * the static compilation is not proper. + */ +@NoArgsConstructor(access = lombok.AccessLevel.PACKAGE) +@Table(name = "fake_for_static_compilation") +@Entity +public class FakeJpaEntityForStaticCompilation extends AbstractJpaTenantAwareBaseEntity { + + @Serial + private static final long serialVersionUID = 1L; +} \ No newline at end of file diff --git a/hawkbit-repository/hawkbit-repository-jpa-hibernate/pom.xml b/hawkbit-repository/hawkbit-repository-jpa-hibernate/pom.xml index 36c1d0f9e4..5aa6942b1d 100644 --- a/hawkbit-repository/hawkbit-repository-jpa-hibernate/pom.xml +++ b/hawkbit-repository/hawkbit-repository-jpa-hibernate/pom.xml @@ -31,6 +31,7 @@ hawkbit-repository-jpa-api ${project.version} + org.hibernate.orm hibernate-core diff --git a/hawkbit-repository/hawkbit-repository-jpa-hibernate/src/main/java/org/eclipse/hawkbit/repository/jpa/model/AbstractJpaBaseEntity.java b/hawkbit-repository/hawkbit-repository-jpa-hibernate/src/main/java/org/eclipse/hawkbit/repository/jpa/model/AbstractJpaBaseEntity.java index 7d0d673457..434c217383 100644 --- a/hawkbit-repository/hawkbit-repository-jpa-hibernate/src/main/java/org/eclipse/hawkbit/repository/jpa/model/AbstractJpaBaseEntity.java +++ b/hawkbit-repository/hawkbit-repository-jpa-hibernate/src/main/java/org/eclipse/hawkbit/repository/jpa/model/AbstractJpaBaseEntity.java @@ -14,29 +14,39 @@ import jakarta.persistence.Access; import jakarta.persistence.AccessType; import jakarta.persistence.Column; +import jakarta.persistence.EntityListeners; import jakarta.persistence.GeneratedValue; import jakarta.persistence.GenerationType; import jakarta.persistence.Id; import jakarta.persistence.MappedSuperclass; +import jakarta.persistence.PostPersist; +import jakarta.persistence.PostRemove; +import jakarta.persistence.PostUpdate; import jakarta.persistence.Version; import lombok.AccessLevel; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; +import org.eclipse.hawkbit.repository.jpa.model.helper.AfterTransactionCommitExecutorHolder; +import org.eclipse.hawkbit.repository.model.BaseEntity; +import org.eclipse.hawkbit.tenancy.TenantAwareAuthenticationDetails; import org.springframework.data.annotation.CreatedBy; import org.springframework.data.annotation.CreatedDate; import org.springframework.data.annotation.LastModifiedBy; import org.springframework.data.annotation.LastModifiedDate; +import org.springframework.data.jpa.domain.support.AuditingEntityListener; +import org.springframework.security.core.context.SecurityContextHolder; /** * Base hawkBit entity class containing the common attributes for Hibernate. */ @NoArgsConstructor(access = AccessLevel.PROTECTED) // Default constructor needed for JPA entities. @MappedSuperclass +@EntityListeners({ AuditingEntityListener.class, EntityInterceptorListener.class }) // exception squid:S2160 - BaseEntity equals/hashcode is handling correctly for sub entities @SuppressWarnings("squid:S2160") -public abstract class AbstractJpaBaseEntity extends AbstractBaseEntity { +public abstract class AbstractJpaBaseEntity implements BaseEntity { protected static final int USERNAME_FIELD_LENGTH = 64; @@ -116,4 +126,86 @@ public void setLastModifiedAt(final long lastModifiedAt) { public long getLastModifiedAt() { return lastModifiedAt == 0 ? createdAt : lastModifiedAt; } + + /** + * Defined equals/hashcode strategy for the repository in general is that an entity is equal if it has the same {@link #getId()} and + * {@link #getOptLockRevision()} and class. + */ + @Override + // Exception squid:S864 - generated code + @SuppressWarnings({ "squid:S864" }) + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + (getId() == null ? 0 : getId().hashCode()); + result = prime * result + getOptLockRevision(); + result = prime * result + getClass().getName().hashCode(); + return result; + } + + /** + * Defined equals/hashcode strategy for the repository in general is that an entity is equal if it has the same {@link #getId()} and + * {@link #getOptLockRevision()} and class. + */ + @Override + public boolean equals(final Object obj) { + if (this == obj) { + return true; + } + if (obj == null) { + return false; + } + if (!getClass().isInstance(obj)) { + return false; + } + final BaseEntity other = (BaseEntity) obj; + final Long id = getId(); + final Long otherId = other.getId(); + if (id == null) { + if (otherId != null) { + return false; + } + } else if (!id.equals(otherId)) { + return false; + } + return getOptLockRevision() == other.getOptLockRevision(); + } + + @Override + public String toString() { + return getClass().getSimpleName() + " [id=" + getId() + "]"; + } + + @PostPersist + public void postInsert() { + if (this instanceof EventAwareEntity eventAwareEntity) { + doNotify(eventAwareEntity::fireCreateEvent); + } + } + + @PostUpdate + public void postUpdate() { + if (this instanceof EventAwareEntity eventAwareEntity) { + doNotify(eventAwareEntity::fireUpdateEvent); + } + } + + @PostRemove + public void postDelete() { + if (this instanceof EventAwareEntity eventAwareEntity) { + doNotify(eventAwareEntity::fireDeleteEvent); + } + } + + protected static void doNotify(final Runnable runnable) { + // fire events onl AFTER transaction commit + AfterTransactionCommitExecutorHolder.getInstance().getAfterCommit().afterCommit(runnable); + } + + protected boolean isController() { + return SecurityContextHolder.getContext().getAuthentication() != null + && SecurityContextHolder.getContext().getAuthentication() + .getDetails() instanceof TenantAwareAuthenticationDetails tenantAwareDetails + && tenantAwareDetails.isController(); + } } \ No newline at end of file diff --git a/hawkbit-repository/hawkbit-repository-jpa-hibernate/src/main/java/org/eclipse/hawkbit/repository/jpa/model/EntityPropertyChangeListener.java b/hawkbit-repository/hawkbit-repository-jpa-hibernate/src/main/java/org/eclipse/hawkbit/repository/jpa/model/EntityPropertyChangeListener.java index b7e4b7a46d..94bf857226 100644 --- a/hawkbit-repository/hawkbit-repository-jpa-hibernate/src/main/java/org/eclipse/hawkbit/repository/jpa/model/EntityPropertyChangeListener.java +++ b/hawkbit-repository/hawkbit-repository-jpa-hibernate/src/main/java/org/eclipse/hawkbit/repository/jpa/model/EntityPropertyChangeListener.java @@ -57,7 +57,7 @@ public void onPostUpdate(final PostUpdateEvent event) { } if (hasNonIgnoredChanges || !lastTargetQueryChanged) { - AbstractBaseEntity.doNotify(((EventAwareEntity) event.getEntity())::fireUpdateEvent); + AbstractJpaBaseEntity.doNotify(((EventAwareEntity) event.getEntity())::fireUpdateEvent); } } diff --git a/hawkbit-repository/hawkbit-repository-jpa/pom.xml b/hawkbit-repository/hawkbit-repository-jpa/pom.xml index cfb435be22..046934c84b 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/pom.xml +++ b/hawkbit-repository/hawkbit-repository-jpa/pom.xml @@ -44,6 +44,35 @@ ${project.version} + + + + + + com.ethlo.persistence.tools + eclipselink-maven-plugin + ${eclipselink.maven.plugin.version} + + + process-classes + + weave + + + + + org.eclipse.hawkbit.repository.jpa.model + + + + org.eclipse.persistence + org.eclipse.persistence.jpa + ${eclipselink.version} + + + + + hibernate diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/management/JpaActionManagement.java b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/management/JpaActionManagement.java index dc23125ce8..c697841ab7 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/management/JpaActionManagement.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/management/JpaActionManagement.java @@ -22,7 +22,6 @@ import org.eclipse.hawkbit.repository.RepositoryProperties; import org.eclipse.hawkbit.repository.exception.EntityNotFoundException; import org.eclipse.hawkbit.repository.jpa.builder.JpaActionStatusCreate; -import org.eclipse.hawkbit.repository.jpa.model.AbstractBaseEntity; import org.eclipse.hawkbit.repository.jpa.model.AbstractJpaBaseEntity_; import org.eclipse.hawkbit.repository.jpa.model.JpaAction; import org.eclipse.hawkbit.repository.jpa.model.JpaActionStatus; diff --git a/hawkbit-simple-ui/.gitignore b/hawkbit-simple-ui/.gitignore index b8b790e37f..59e48e1c2a 100644 --- a/hawkbit-simple-ui/.gitignore +++ b/hawkbit-simple-ui/.gitignore @@ -1,3 +1,9 @@ -frontend bundles -package-lock.json \ No newline at end of file +frontend +node_modules +package.json +package-lock.json +tsconfig.json +types.d.ts +vite.config.ts +vite.generated.ts \ No newline at end of file diff --git a/pom.xml b/pom.xml index 4294f4e02b..3b6fcbff56 100644 --- a/pom.xml +++ b/pom.xml @@ -51,8 +51,7 @@ 4.0.5 - - 3.0.1 + 3.0.2