Subject: [PATCH] 3_jaxb_generate --- Index: pom.xml IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== diff --git a/pom.xml b/pom.xml --- a/pom.xml (revision 3a15f50bab09deac93a97f5dcb5fc8c1a4f8e2f4) +++ b/pom.xml (date 1695981285196) @@ -20,6 +20,7 @@ 3.1.3 UTF-8 UTF-8 + 4.0.3 @@ -27,6 +28,18 @@ org.springframework.shell spring-shell-starter + + org.projectlombok + lombok + true + + + + + com.sun.xml.bind + jaxb-impl + ${jaxb.version} + @@ -44,6 +57,20 @@ docjava + + + org.springframework.boot + spring-boot-maven-plugin + + + + org.projectlombok + lombok + + + + + Index: src/main/java/ru/javaops/docjava/schema/Meals.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== diff --git a/src/main/java/ru/javaops/docjava/schema/Meals.java b/src/main/java/ru/javaops/docjava/schema/Meals.java new file mode 100644 --- /dev/null (date 1695981223642) +++ b/src/main/java/ru/javaops/docjava/schema/Meals.java (date 1695981223642) @@ -0,0 +1,21 @@ + +package ru.javaops.docjava.schema; + +import jakarta.xml.bind.annotation.XmlAccessType; +import jakarta.xml.bind.annotation.XmlAccessorType; +import jakarta.xml.bind.annotation.XmlElement; +import jakarta.xml.bind.annotation.XmlRootElement; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.ArrayList; +import java.util.List; + +@XmlAccessorType(XmlAccessType.FIELD) +@XmlRootElement(name = "Meals", namespace = "http://javaops.ru") +@Data +@NoArgsConstructor +public class Meals { + @XmlElement(name = "Meal", namespace = "http://javaops.ru") + protected List meal = new ArrayList<>(); +} Index: src/main/java/ru/javaops/docjava/schema/Meal.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== diff --git a/src/main/java/ru/javaops/docjava/schema/Meal.java b/src/main/java/ru/javaops/docjava/schema/Meal.java new file mode 100644 --- /dev/null (date 1695981223638) +++ b/src/main/java/ru/javaops/docjava/schema/Meal.java (date 1695981223638) @@ -0,0 +1,24 @@ +package ru.javaops.docjava.schema; + +import jakarta.xml.bind.annotation.*; +import jakarta.xml.bind.annotation.adapters.XmlJavaTypeAdapter; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.time.LocalDateTime; + +@XmlAccessorType(XmlAccessType.FIELD) +@XmlRootElement(name = "Meal", namespace = "http://javaops.ru") +@Data +@NoArgsConstructor +public class Meal { + @XmlValue + protected String value; + @XmlAttribute(name = "calories", required = true) + protected int calories; + @XmlAttribute(name = "dateTime", required = true) + @XmlJavaTypeAdapter(type = LocalDateTime.class, value = LocalDateTimeXmlAdapter.class) + protected LocalDateTime dateTime; + @XmlAttribute(name = "excess") + protected Boolean excess; +} Index: src/main/java/ru/javaops/docjava/schema/LocalDateTimeXmlAdapter.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== diff --git a/src/main/java/ru/javaops/docjava/schema/LocalDateTimeXmlAdapter.java b/src/main/java/ru/javaops/docjava/schema/LocalDateTimeXmlAdapter.java new file mode 100644 --- /dev/null (date 1695981223634) +++ b/src/main/java/ru/javaops/docjava/schema/LocalDateTimeXmlAdapter.java (date 1695981223634) @@ -0,0 +1,20 @@ +package ru.javaops.docjava.schema; + +import jakarta.xml.bind.annotation.adapters.XmlAdapter; + +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; + +// https://stackoverflow.com/a/36157446/548473 +public class LocalDateTimeXmlAdapter extends XmlAdapter { + + @Override + public String marshal(LocalDateTime ldt) { + return ldt.format(DateTimeFormatter.ISO_DATE_TIME); + } + + @Override + public LocalDateTime unmarshal(String str) { + return LocalDateTime.parse(str); + } +} Index: src/main/java/ru/javaops/docjava/schema/UsersWithMeals.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== diff --git a/src/main/java/ru/javaops/docjava/schema/UsersWithMeals.java b/src/main/java/ru/javaops/docjava/schema/UsersWithMeals.java new file mode 100644 --- /dev/null (date 1695981223655) +++ b/src/main/java/ru/javaops/docjava/schema/UsersWithMeals.java (date 1695981223655) @@ -0,0 +1,28 @@ +package ru.javaops.docjava.schema; + +import jakarta.xml.bind.annotation.XmlAccessType; +import jakarta.xml.bind.annotation.XmlAccessorType; +import jakarta.xml.bind.annotation.XmlElement; +import jakarta.xml.bind.annotation.XmlRootElement; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.ArrayList; +import java.util.List; + +@XmlAccessorType(XmlAccessType.FIELD) +@XmlRootElement(name = "UsersWithMeals", namespace = "http://javaops.ru") +@Data +public class UsersWithMeals { + + @XmlElement(name = "Users", namespace = "http://javaops.ru", required = true) + protected UsersWithMeals.Users users; + + @XmlAccessorType(XmlAccessType.FIELD) + @Data + @NoArgsConstructor + public static class Users { + @XmlElement(name = "User", namespace = "http://javaops.ru") + protected List user = new ArrayList<>(); + } +} Index: src/main/java/ru/javaops/docjava/schema/User.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== diff --git a/src/main/java/ru/javaops/docjava/schema/User.java b/src/main/java/ru/javaops/docjava/schema/User.java new file mode 100644 --- /dev/null (date 1695981223652) +++ b/src/main/java/ru/javaops/docjava/schema/User.java (date 1695981223652) @@ -0,0 +1,33 @@ +package ru.javaops.docjava.schema; + +import jakarta.xml.bind.annotation.*; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +@XmlAccessorType(XmlAccessType.FIELD) +@XmlRootElement(name = "User", namespace = "http://javaops.ru") +@Data +@NoArgsConstructor +public class User { + @XmlAttribute(name = "name", required = true) + protected String name; + @XmlAttribute(name = "email", required = true) + protected String email; + @XmlAttribute(name = "password", required = true) + protected String password; + @XmlAttribute(name = "caloriesPerDay", required = true) + protected int caloriesPerDay; + @XmlAttribute(name = "registered", required = true) + @XmlSchemaType(name = "dateTime") + protected Date registered; + @XmlAttribute(name = "enabled", required = true) + protected boolean enabled; + @XmlAttribute(name = "roles") + protected List roles = new ArrayList<>(); + @XmlElement(name = "Meals", namespace = "http://javaops.ru") + protected Meals meals; +} Index: src/main/java/ru/javaops/docjava/schema/RoleTypes.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== diff --git a/src/main/java/ru/javaops/docjava/schema/RoleTypes.java b/src/main/java/ru/javaops/docjava/schema/RoleTypes.java new file mode 100644 --- /dev/null (date 1695981223649) +++ b/src/main/java/ru/javaops/docjava/schema/RoleTypes.java (date 1695981223649) @@ -0,0 +1,29 @@ +package ru.javaops.docjava.schema; + +import jakarta.xml.bind.annotation.XmlEnum; +import jakarta.xml.bind.annotation.XmlEnumValue; +import jakarta.xml.bind.annotation.XmlType; +import lombok.Getter; +import lombok.RequiredArgsConstructor; + +@XmlType(name = "roleTypes", namespace = "http://javaops.ru") +@XmlEnum +@Getter +@RequiredArgsConstructor +public enum RoleTypes { + + @XmlEnumValue("admin") + ADMIN("admin"), + @XmlEnumValue("user") + USER("user"); + private final String value; + + public static RoleTypes fromValue(String v) { + for (RoleTypes c : RoleTypes.values()) { + if (c.value.equals(v)) { + return c; + } + } + throw new IllegalArgumentException(v); + } +} Index: src/main/java/ru/javaops/docjava/schema/ObjectFactory.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== diff --git a/src/main/java/ru/javaops/docjava/schema/ObjectFactory.java b/src/main/java/ru/javaops/docjava/schema/ObjectFactory.java new file mode 100644 --- /dev/null (date 1695981223645) +++ b/src/main/java/ru/javaops/docjava/schema/ObjectFactory.java (date 1695981223645) @@ -0,0 +1,49 @@ +package ru.javaops.docjava.schema; + +import jakarta.xml.bind.annotation.XmlRegistry; + +@XmlRegistry +public class ObjectFactory { + + /** + * Create a new ObjectFactory that can be used to create new instances of schema derived classes for package: ru.javaops.docjava.schema + */ + public ObjectFactory() { + } + + /** + * Create an instance of {@link UsersWithMeals } + */ + public UsersWithMeals createUsersWithMeals() { + return new UsersWithMeals(); + } + + /** + * Create an instance of {@link UsersWithMeals.Users } + */ + public UsersWithMeals.Users createUsersWithMealsUsers() { + return new UsersWithMeals.Users(); + } + + /** + * Create an instance of {@link User } + */ + public User createUser() { + return new User(); + } + + /** + * Create an instance of {@link Meals } + */ + public Meals createMeals() { + return new Meals(); + } + + /** + * Create an instance of {@link Meal } + */ + public Meal createMeal() { + return new Meal(); + } + +}