From 0ece53b6341a98b7b4999040470436da63db2b30 Mon Sep 17 00:00:00 2001 From: Divaev-AM Date: Fri, 10 Jan 2025 13:41:13 +0300 Subject: [PATCH 1/2] [MyTeam] [BIQ-12345] added xsd validation --- pom.xml | 14 ++++++++++++++ src/main/java/ru/javaops/docjava/Commands.java | 10 ++++++++-- .../ru/javaops/docjava/xml/xsd/SchemaUtil.java | 6 +++++- .../java/ru/javaops/docjava/xml/xsd/Schemas.java | 5 +++-- .../ru/javaops/docjava/xml/xsd/SchemaUtilTest.java | 12 ++++++------ 5 files changed, 36 insertions(+), 11 deletions(-) diff --git a/pom.xml b/pom.xml index da38b15..19ec39b 100644 --- a/pom.xml +++ b/pom.xml @@ -44,6 +44,20 @@ docjava + + + org.springframework.boot + spring-boot-maven-plugin + 3.1.2 + + + + repackage + + + + + diff --git a/src/main/java/ru/javaops/docjava/Commands.java b/src/main/java/ru/javaops/docjava/Commands.java index d7d639c..6c4d31f 100644 --- a/src/main/java/ru/javaops/docjava/Commands.java +++ b/src/main/java/ru/javaops/docjava/Commands.java @@ -4,7 +4,6 @@ import org.springframework.shell.standard.ShellMethod; import org.springframework.shell.standard.ShellOption; import org.xml.sax.SAXException; -import ru.javaops.docjava.xml.xsd.SchemaUtil; import java.io.File; import java.io.IOException; @@ -12,12 +11,19 @@ @ShellComponent public class Commands { + @ShellMethod(key = "xsd", value = "Validate XML file against XSD (XML Schema)") public void xsdValidate(@ShellOption(value = {"input", "-i"}, help = "Input file") File inputFile, @ShellOption(value = {"schema", "-s"}, help = "XSD schema file") File xsdSchema) throws IOException, SAXException { - SchemaUtil.validate(inputFile, xsdSchema); } + @ShellMethod(key = "say", value = "Say hello to user", group = "Math") + public String sayHello(@ShellOption(value = {"-n", "--name"}, defaultValue = "User") String name) { + System.out.println("Hello " + name); + return name; + } + + @ShellMethod(key = "jaxb", value = "Process XML file via JAXB") public void jaxbProcess( @ShellOption(value = {"input", "-i"}, help = "Input file") File inputFile, diff --git a/src/main/java/ru/javaops/docjava/xml/xsd/SchemaUtil.java b/src/main/java/ru/javaops/docjava/xml/xsd/SchemaUtil.java index 249dc60..92a1e27 100644 --- a/src/main/java/ru/javaops/docjava/xml/xsd/SchemaUtil.java +++ b/src/main/java/ru/javaops/docjava/xml/xsd/SchemaUtil.java @@ -9,10 +9,14 @@ public class SchemaUtil { + private SchemaUtil() { + } + public static void validate(File inputFile, File xsdSchema) throws IOException, SAXException { try (Reader reader = Files.newBufferedReader(inputFile.toPath())) { Schemas.validate(reader, Schemas.of(xsdSchema)); } - System.out.println(inputFile.getAbsolutePath() + " is valid"); + System.out.println(inputFile.getAbsolutePath() + "is valid"); } + } diff --git a/src/main/java/ru/javaops/docjava/xml/xsd/Schemas.java b/src/main/java/ru/javaops/docjava/xml/xsd/Schemas.java index 8d7f403..cab7d97 100644 --- a/src/main/java/ru/javaops/docjava/xml/xsd/Schemas.java +++ b/src/main/java/ru/javaops/docjava/xml/xsd/Schemas.java @@ -14,7 +14,6 @@ public class Schemas { private static final SchemaFactory SCHEMA_FACTORY = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI); - // SchemaFactory is not thread-safe public static synchronized Schema of(File file) { try { return SCHEMA_FACTORY.newSchema(file); @@ -27,7 +26,9 @@ public static void validate(String str, Schema schema) throws IOException, SAXEx validate(new StringReader(str), schema); } + public static void validate(Reader reader, Schema schema) throws IOException, SAXException { schema.newValidator().validate(new StreamSource(reader)); } -} \ No newline at end of file + +} diff --git a/src/test/java/ru/javaops/docjava/xml/xsd/SchemaUtilTest.java b/src/test/java/ru/javaops/docjava/xml/xsd/SchemaUtilTest.java index fd59015..fe81038 100644 --- a/src/test/java/ru/javaops/docjava/xml/xsd/SchemaUtilTest.java +++ b/src/test/java/ru/javaops/docjava/xml/xsd/SchemaUtilTest.java @@ -2,24 +2,24 @@ import org.junit.jupiter.api.Test; import org.xml.sax.SAXException; -import org.xml.sax.SAXParseException; import java.io.File; import java.io.IOException; -import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.*; class SchemaUtilTest { - private static final File xmlSchema = new File("in/usersWithMeals.xsd"); + + private static final File xmlSchema = new File("in/userWithMeals.xsd"); @Test - void validateOK() throws IOException, SAXException { + void validateOk() throws IOException, SAXException { SchemaUtil.validate(new File("in/usersWithMeals.xml"), xmlSchema); } @Test - void testValidateNOK() throws IOException { - assertThrows(SAXParseException.class, + void testValidateNOK() { + assertThrows(SAXException.class, () -> SchemaUtil.validate(new File("in/badXmlFile.xml"), xmlSchema), "Except bad format exception"); } } \ No newline at end of file From d059c286940cd5dfb4e9dfcb502d78dd46e3daf2 Mon Sep 17 00:00:00 2001 From: Divaev-AM Date: Fri, 10 Jan 2025 14:12:19 +0300 Subject: [PATCH 2/2] [MyTeam] [BIQ-12345] fixes --- src/main/java/ru/javaops/docjava/Commands.java | 2 ++ src/main/java/ru/javaops/docjava/xml/xsd/SchemaUtil.java | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/ru/javaops/docjava/Commands.java b/src/main/java/ru/javaops/docjava/Commands.java index 6c4d31f..05d819b 100644 --- a/src/main/java/ru/javaops/docjava/Commands.java +++ b/src/main/java/ru/javaops/docjava/Commands.java @@ -4,6 +4,7 @@ import org.springframework.shell.standard.ShellMethod; import org.springframework.shell.standard.ShellOption; import org.xml.sax.SAXException; +import ru.javaops.docjava.xml.xsd.SchemaUtil; import java.io.File; import java.io.IOException; @@ -15,6 +16,7 @@ public class Commands { @ShellMethod(key = "xsd", value = "Validate XML file against XSD (XML Schema)") public void xsdValidate(@ShellOption(value = {"input", "-i"}, help = "Input file") File inputFile, @ShellOption(value = {"schema", "-s"}, help = "XSD schema file") File xsdSchema) throws IOException, SAXException { + SchemaUtil.validate(inputFile, xsdSchema); } @ShellMethod(key = "say", value = "Say hello to user", group = "Math") diff --git a/src/main/java/ru/javaops/docjava/xml/xsd/SchemaUtil.java b/src/main/java/ru/javaops/docjava/xml/xsd/SchemaUtil.java index 92a1e27..a1b1408 100644 --- a/src/main/java/ru/javaops/docjava/xml/xsd/SchemaUtil.java +++ b/src/main/java/ru/javaops/docjava/xml/xsd/SchemaUtil.java @@ -16,7 +16,7 @@ public static void validate(File inputFile, File xsdSchema) throws IOException, try (Reader reader = Files.newBufferedReader(inputFile.toPath())) { Schemas.validate(reader, Schemas.of(xsdSchema)); } - System.out.println(inputFile.getAbsolutePath() + "is valid"); + System.out.println(inputFile.getAbsolutePath() + " is valid"); } }