[FIX] annotation in the common model

This commit is contained in:
Edouard DUPIN 2025-04-02 21:42:17 +02:00
parent 44df939873
commit c627484b49
8 changed files with 20 additions and 5 deletions

View File

@ -13,7 +13,7 @@ import java.lang.annotation.Target;
* to ensure precise validation and documentation of method parameters. * to ensure precise validation and documentation of method parameters.
* *
* <p>Usage: * <p>Usage:
* - Target: This annotation can be applied to parameters. * - Target: This annotation can be applied to field.
* - Retention: The annotation is retained at runtime, allowing it to be * - Retention: The annotation is retained at runtime, allowing it to be
* processed by frameworks or libraries that handle code generation logic. * processed by frameworks or libraries that handle code generation logic.
* *
@ -33,7 +33,7 @@ import java.lang.annotation.Target;
* *
* In this example, the `username` field in the `User` class is explicitly marked as non-null in the generated API. * In this example, the `username` field in the `User` class is explicitly marked as non-null in the generated API.
*/ */
@Target({ ElementType.PARAMETER }) @Target({ ElementType.FIELD })
@Retention(RetentionPolicy.RUNTIME) @Retention(RetentionPolicy.RUNTIME)
public @interface ApiNotNull { public @interface ApiNotNull {
/** /**

View File

@ -2,6 +2,8 @@ package org.kar.archidata.model;
import org.kar.archidata.annotation.apiGenerator.ApiAccessLimitation; import org.kar.archidata.annotation.apiGenerator.ApiAccessLimitation;
import org.kar.archidata.annotation.apiGenerator.ApiGenerationMode; import org.kar.archidata.annotation.apiGenerator.ApiGenerationMode;
import org.kar.archidata.annotation.apiGenerator.ApiNotNull;
import org.kar.archidata.annotation.checker.ReadOnlyField;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.persistence.Column; import jakarta.persistence.Column;
@ -15,6 +17,8 @@ public class GenericData extends GenericTiming {
@GeneratedValue(strategy = GenerationType.IDENTITY) @GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(nullable = false, unique = true) @Column(nullable = false, unique = true)
@Schema(description = "Unique Id of the object", example = "123456") @Schema(description = "Unique Id of the object", example = "123456")
@ReadOnlyField
@ApiNotNull
@ApiAccessLimitation(creatable = false, updatable = false) @ApiAccessLimitation(creatable = false, updatable = false)
public Long id = null; public Long id = null;
} }

View File

@ -4,6 +4,7 @@ import org.kar.archidata.annotation.DataDeleted;
import org.kar.archidata.annotation.DataNotRead; import org.kar.archidata.annotation.DataNotRead;
import org.kar.archidata.annotation.apiGenerator.ApiAccessLimitation; import org.kar.archidata.annotation.apiGenerator.ApiAccessLimitation;
import org.kar.archidata.annotation.apiGenerator.ApiGenerationMode; import org.kar.archidata.annotation.apiGenerator.ApiGenerationMode;
import org.kar.archidata.annotation.checker.ReadOnlyField;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.annotation.Nullable; import jakarta.annotation.Nullable;
@ -18,6 +19,7 @@ public class GenericDataSoftDelete extends GenericData {
@DataDeleted @DataDeleted
@Schema(description = "Deleted state", hidden = true) @Schema(description = "Deleted state", hidden = true)
@Nullable @Nullable
@ReadOnlyField
@ApiAccessLimitation(creatable = false, updatable = false) @ApiAccessLimitation(creatable = false, updatable = false)
public Boolean deleted = null; public Boolean deleted = null;
} }

View File

@ -3,11 +3,12 @@ package org.kar.archidata.model;
import org.bson.types.ObjectId; import org.bson.types.ObjectId;
import org.kar.archidata.annotation.apiGenerator.ApiAccessLimitation; import org.kar.archidata.annotation.apiGenerator.ApiAccessLimitation;
import org.kar.archidata.annotation.apiGenerator.ApiGenerationMode; import org.kar.archidata.annotation.apiGenerator.ApiGenerationMode;
import org.kar.archidata.annotation.apiGenerator.ApiNotNull;
import org.kar.archidata.annotation.checker.ReadOnlyField;
import dev.morphia.annotations.Id; import dev.morphia.annotations.Id;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.persistence.Column; import jakarta.persistence.Column;
import jakarta.validation.constraints.NotNull;
@ApiGenerationMode(create = true, update = true) @ApiGenerationMode(create = true, update = true)
public class OIDGenericData extends GenericTiming { public class OIDGenericData extends GenericTiming {
@ -15,7 +16,8 @@ public class OIDGenericData extends GenericTiming {
@jakarta.persistence.Id @jakarta.persistence.Id
@Column(nullable = false, unique = true, name = "_id") @Column(nullable = false, unique = true, name = "_id")
@Schema(description = "Unique ObjectID of the object", example = "65161616841351") @Schema(description = "Unique ObjectID of the object", example = "65161616841351")
@NotNull @ReadOnlyField
@ApiNotNull
@ApiAccessLimitation(creatable = false, updatable = false) @ApiAccessLimitation(creatable = false, updatable = false)
public ObjectId oid = null; public ObjectId oid = null;
} }

View File

@ -4,6 +4,7 @@ import org.kar.archidata.annotation.DataDeleted;
import org.kar.archidata.annotation.DataNotRead; import org.kar.archidata.annotation.DataNotRead;
import org.kar.archidata.annotation.apiGenerator.ApiAccessLimitation; import org.kar.archidata.annotation.apiGenerator.ApiAccessLimitation;
import org.kar.archidata.annotation.apiGenerator.ApiGenerationMode; import org.kar.archidata.annotation.apiGenerator.ApiGenerationMode;
import org.kar.archidata.annotation.checker.ReadOnlyField;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.annotation.Nullable; import jakarta.annotation.Nullable;
@ -18,6 +19,7 @@ public class OIDGenericDataSoftDelete extends OIDGenericData {
@DataDeleted @DataDeleted
@Schema(description = "Deleted state", hidden = true) @Schema(description = "Deleted state", hidden = true)
@Nullable @Nullable
@ReadOnlyField
@ApiAccessLimitation(creatable = false, updatable = false) @ApiAccessLimitation(creatable = false, updatable = false)
public Boolean deleted = null; public Boolean deleted = null;
} }

View File

@ -4,6 +4,7 @@ import java.util.UUID;
import org.kar.archidata.annotation.apiGenerator.ApiAccessLimitation; import org.kar.archidata.annotation.apiGenerator.ApiAccessLimitation;
import org.kar.archidata.annotation.apiGenerator.ApiGenerationMode; import org.kar.archidata.annotation.apiGenerator.ApiGenerationMode;
import org.kar.archidata.annotation.apiGenerator.ApiNotNull;
import org.kar.archidata.annotation.checker.ReadOnlyField; import org.kar.archidata.annotation.checker.ReadOnlyField;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
@ -18,6 +19,7 @@ public class UUIDGenericData extends GenericTiming {
@Column(nullable = false, unique = true) @Column(nullable = false, unique = true)
@Schema(description = "Unique UUID of the object", example = "e6b33c1c-d24d-11ee-b616-02420a030102") @Schema(description = "Unique UUID of the object", example = "e6b33c1c-d24d-11ee-b616-02420a030102")
@ReadOnlyField @ReadOnlyField
@ApiNotNull
@ApiAccessLimitation(creatable = false, updatable = false) @ApiAccessLimitation(creatable = false, updatable = false)
public UUID uuid = null; public UUID uuid = null;
} }

View File

@ -16,7 +16,7 @@ public class JwtPayload {
public String iss; public String iss;
// Access Right Map<application, Map< section, right>> // Access Right Map<application, Map< section, right>>
@NotNull @NotNull
public Map<String, Map<String, Long>> right; public Map<@NotNull String, Map<@NotNull String, @NotNull Long>> right;
// user name // user name
@NotNull @NotNull
public String login; public String login;

View File

@ -1,11 +1,14 @@
package org.kar.archidata.model.token; package org.kar.archidata.model.token;
import jakarta.validation.Valid;
import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.NotNull;
public class JwtToken { public class JwtToken {
@NotNull @NotNull
@Valid
public JwtHeader header; public JwtHeader header;
@NotNull @NotNull
@Valid
public JwtPayload payload; public JwtPayload payload;
@NotNull @NotNull
public String signature; public String signature;