Skip to content

Commit 3b8ac1a

Browse files
committed
Merge branch 'develop'
2 parents d25ea7d + cdfe609 commit 3b8ac1a

File tree

20 files changed

+761
-130
lines changed

20 files changed

+761
-130
lines changed

docgen/parameters.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
{
22
"title" : "Venus (Fugerit Document Generation Framework)",
33
"name": "Venus",
4-
"version" : "0.7.1",
5-
"date" : "02/01/2023",
4+
"version" : "0.7.2",
5+
"date" : "04/01/2023",
66
"organization" : {
77
"name" : "Fugerit Org",
88
"url" : "https://www.fugerit.org"

docgen/release-notes.txt

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,11 @@
1-
0.7.1 (2023-01-02)
1+
0.7.2 (2023-01-04)
2+
------------------
3+
+ Fixed xml validation in DocXmlParser
4+
+ Added validation in DocJsonParser and DocYamlParser (though conversion to XML)
5+
+ The xml parsing is no namespace aware (experimental)
6+
+ More functionalities in playground
7+
8+
0.7.1 (2023-01-02)
29
------------------
310
+ Added conversion utility from json/yaml to xml
411
+ Added xml to [json/yaml conversion conventions](https://github.com/fugerit-org/fj-doc/tree/main/fj-doc-base-json/xml_conversion.md)

fj-doc-base-json/src/main/java/org/fugerit/java/doc/json/parse/DocJsonParser.java

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,19 +11,25 @@
1111

1212
public class DocJsonParser extends AbstractDocParser {
1313

14+
private DocObjectMapperHelper helper;
15+
1416
public DocJsonParser() {
1517
super( DocFacadeSource.SOURCE_TYPE_JSON );
18+
this.helper = new DocObjectMapperHelper( new ObjectMapper() );
1619
}
1720

21+
private DocObjectMapperHelper getHelper() {
22+
return this.helper;
23+
}
24+
1825
@Override
1926
protected DocValidationResult validateWorker(Reader reader) throws Exception {
20-
return DocValidationResult.newDefaultNotSupportedResult();
27+
return this.getHelper().validateWorkerResult(reader);
2128
}
2229

2330
@Override
2431
protected DocBase parseWorker(Reader reader) throws Exception {
25-
DocObjectMapperHelper helper = new DocObjectMapperHelper( new ObjectMapper() );
26-
return helper.parse(reader);
32+
return this.getHelper().parse(reader);
2733
}
2834

2935
}

fj-doc-base-json/src/main/java/org/fugerit/java/doc/json/parse/DocObjectMapperHelper.java

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,24 @@
11
package org.fugerit.java.doc.json.parse;
22

3+
import java.io.ByteArrayInputStream;
4+
import java.io.ByteArrayOutputStream;
5+
import java.io.InputStreamReader;
36
import java.io.Reader;
47
import java.util.HashSet;
58
import java.util.Iterator;
69
import java.util.Properties;
710
import java.util.Set;
811

912
import org.fugerit.java.core.lang.helpers.StringUtils;
13+
import org.fugerit.java.core.xml.dom.DOMIO;
1014
import org.fugerit.java.doc.base.facade.DocFacade;
1115
import org.fugerit.java.doc.base.model.DocBase;
1216
import org.fugerit.java.doc.base.parser.DocParserContext;
17+
import org.fugerit.java.doc.base.parser.DocValidationResult;
18+
import org.fugerit.java.doc.base.xml.DocXmlParser;
1319
import org.slf4j.Logger;
1420
import org.slf4j.LoggerFactory;
21+
import org.w3c.dom.Element;
1522

1623
import com.fasterxml.jackson.databind.JsonNode;
1724
import com.fasterxml.jackson.databind.ObjectMapper;
@@ -87,6 +94,22 @@ private void handleElement( JsonNode node, DocParserContext context ) {
8794
context.handleEndElement(qName);
8895
}
8996

97+
public DocValidationResult validateWorkerResult(Reader reader) throws Exception {
98+
DocValidationResult result = DocValidationResult.newDefaultNotDefinedResult();
99+
DocJsonToXml convert = new DocJsonToXml( this.mapper );
100+
Element root = convert.convertToElement( reader );
101+
try ( ByteArrayOutputStream buffer = new ByteArrayOutputStream() ) {
102+
DOMIO.writeDOMIndent(root, buffer);
103+
try ( Reader xmlReader = new InputStreamReader( new ByteArrayInputStream( buffer.toByteArray() ) ) ) {
104+
DocXmlParser parser = new DocXmlParser();
105+
result = parser.validateResult(xmlReader);
106+
if ( !result.getErrorList().isEmpty() ) {
107+
result.getInfoList().add( "This validation is made through conversion to xml, so lines/columns number in errors are to be considered an hint" );
108+
}
109+
}
110+
}
111+
return result;
112+
}
90113

91114
public DocBase parse(Reader reader) throws Exception {
92115
DocParserContext context = new DocParserContext();

fj-doc-base-json/src/test/java/test/org/fugerit/java/doc/json/parse/TestJsonParser.java

Lines changed: 50 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,30 +4,63 @@
44

55
import java.io.FileOutputStream;
66
import java.io.InputStream;
7+
import java.io.InputStreamReader;
78

89
import org.fugerit.java.core.lang.helpers.ClassHelper;
910
import org.fugerit.java.doc.base.config.DocInput;
1011
import org.fugerit.java.doc.base.config.DocOutput;
12+
import org.fugerit.java.doc.base.config.DocTypeHandler;
1113
import org.fugerit.java.doc.base.model.DocBase;
14+
import org.fugerit.java.doc.base.parser.DocParser;
15+
import org.fugerit.java.doc.base.parser.DocValidationResult;
1216
import org.fugerit.java.doc.base.typehandler.markdown.SimpleMarkdownExtTypeHandler;
1317
import org.fugerit.java.doc.json.parse.DocJsonParser;
18+
import org.junit.Assert;
1419
import org.junit.Test;
1520
import org.slf4j.Logger;
1621
import org.slf4j.LoggerFactory;
1722

1823
public class TestJsonParser {
1924

25+
public static final boolean VALID = true;
26+
public static final boolean NOT_VALID = false;
27+
28+
public static final boolean NO_EXCEPTION = false;
29+
public static final boolean EXCEPTION = true;
30+
2031
private static final Logger logger = LoggerFactory.getLogger( TestJsonParser.class );
2132

22-
private void worker( String path ) {
33+
private void validateWorker( String path, boolean valid, boolean exception ) {
34+
String fullPath = "sample/"+path+".json";
35+
logger.info( "validate -> {}", fullPath );
36+
DocParser parser = new DocJsonParser();
37+
try ( InputStream is = ClassHelper.loadFromDefaultClassLoader( fullPath ) ) {
38+
DocValidationResult result = parser.validateResult( new InputStreamReader( is ) );
39+
logger.info( "Validation result {}", result.isResultOk() );
40+
for ( String error : result.getErrorList() ) {
41+
logger.info( "Validation error {}", error );
42+
}
43+
for ( String error : result.getInfoList() ) {
44+
logger.info( "Validation info {}", error );
45+
}
46+
Assert.assertEquals( "Validation result" , valid, result.isResultOk() );
47+
} catch (Exception e) {
48+
String message = "Error : "+e.getMessage();
49+
logger.error( message, e );
50+
fail( message );
51+
}
52+
}
53+
54+
private void parseWorker( String path ) {
55+
DocTypeHandler handler = SimpleMarkdownExtTypeHandler.HANDLER;
2356
try ( InputStream is = ClassHelper.loadFromDefaultClassLoader( "sample/"+path+".json" );
24-
FileOutputStream fos = new FileOutputStream( "target/"+path+".md" )) {
57+
FileOutputStream fos = new FileOutputStream( "target/"+path+"."+handler.getType() ) ) {
2558
DocJsonParser parser = new DocJsonParser();
2659
DocBase docBase = parser.parse(is);
2760
logger.info( "docBase -> {}", docBase );
28-
DocInput input = DocInput.newInput( SimpleMarkdownExtTypeHandler.TYPE, docBase, null );
61+
DocInput input = DocInput.newInput( handler.getType(), docBase, null );
2962
DocOutput output = DocOutput.newOutput( fos );
30-
SimpleMarkdownExtTypeHandler.HANDLER.handle( input, output );
63+
handler.handle( input, output );
3164
} catch (Exception e) {
3265
String message = "Error : "+e;
3366
logger.error( message, e );
@@ -36,8 +69,19 @@ private void worker( String path ) {
3669
}
3770

3871
@Test
39-
public void test01() {
40-
this.worker( "doc_test_01" );
72+
public void testParse01() {
73+
this.parseWorker( "doc_test_01" );
4174
}
4275

76+
@Test
77+
public void testValidateOk01() {
78+
this.validateWorker( "doc_test_01", VALID, NO_EXCEPTION );
79+
}
80+
81+
@Test
82+
public void testValidateKo02() {
83+
this.validateWorker( "doc_test_02_ko", NOT_VALID, NO_EXCEPTION );
84+
}
85+
86+
4387
}
Lines changed: 133 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,133 @@
1+
{
2+
"xmlns:xsi" : "http://www.w3.org/2001/XMLSchema-instance",
3+
"xsi:schemaLocation" : "http://javacoredoc.fugerit.org https://www.fugerit.org/data/java/doc/xsd/doc-1-10.xsd",
4+
"xmlns" : "http://javacoredoc.fugerit.org",
5+
"_t" : "doc",
6+
"_e" : [ {
7+
"_t" : "metadata",
8+
"_e" : [ {
9+
"name" : "margins",
10+
"_t" : "info",
11+
"_v" : "10;10;10;30"
12+
}, {
13+
"name" : "excel-table-id",
14+
"_t" : "info",
15+
"_v" : "excel-table=print"
16+
}, {
17+
"name" : "excel-width-multiplier",
18+
"_t" : "info",
19+
"_v" : "450"
20+
}, {
21+
"_t" : "footer-ext",
22+
"_e" : [ {
23+
"align" : "center",
24+
"_t" : "para",
25+
"_v" : "Page ${currentPage}"
26+
} ]
27+
} ]
28+
}, {
29+
"_t" : "body",
30+
"_e" : [ {
31+
"_t" : "phrase",
32+
"_v" : "Test phrase 01",
33+
"_e" : [{"_t" : "para","_v" : "Test para"}]
34+
}, {
35+
"_t" : "phrase",
36+
"_v" : "Test phrase 02"
37+
}, {
38+
"_t" : "phrase",
39+
"_v" : "Test phrase 03"
40+
}, {
41+
"_t" : "phrase",
42+
"_v" : "Test phrase 04"
43+
}, {
44+
"url" : "cl://test/img_test_red.png",
45+
"scaling" : "100",
46+
"_t" : "image"
47+
}, {
48+
"url" : "cl://test/img_test_green.png",
49+
"scaling" : "50",
50+
"_t" : "image"
51+
}, {
52+
"url" : "cl://test/img_test_blue.png",
53+
"scaling" : "25",
54+
"_t" : "image"
55+
}, {
56+
"columns" : "3",
57+
"width" : "100",
58+
"colwidths" : "30;30;40",
59+
"padding" : "2",
60+
"id" : "excel-table",
61+
"_t" : "table",
62+
"_e" : [ {
63+
"_t" : "row",
64+
"_e" : [ {
65+
"border-color" : "#000000",
66+
"border-width" : "1",
67+
"align" : "center",
68+
"_t" : "cell",
69+
"_e" : [ {
70+
"_t" : "para",
71+
"_v" : "Name"
72+
} ]
73+
}, {
74+
"align" : "center",
75+
"_t" : "cell",
76+
"_e" : [ {
77+
"_t" : "para",
78+
"_v" : "Surname"
79+
} ]
80+
}, {
81+
"align" : "center",
82+
"_t" : "cell",
83+
"_e" : [ {
84+
"_t" : "para",
85+
"_v" : "Title"
86+
} ]
87+
} ]
88+
}, {
89+
"_t" : "row",
90+
"_e" : [ {
91+
"_t" : "cell",
92+
"_e" : [ {
93+
"_t" : "para",
94+
"_v" : "Luthien"
95+
} ]
96+
}, {
97+
"_t" : "cell",
98+
"_e" : [ {
99+
"_t" : "para",
100+
"_v" : "Tinuviel"
101+
} ]
102+
}, {
103+
"_t" : "cell",
104+
"_e" : [ {
105+
"_t" : "para",
106+
"_v" : "Queen"
107+
} ]
108+
} ]
109+
}, {
110+
"_t" : "row",
111+
"_e" : [ {
112+
"_t" : "cell",
113+
"_e" : [ {
114+
"_t" : "para",
115+
"_v" : "Thorin"
116+
} ]
117+
}, {
118+
"_t" : "cell",
119+
"_e" : [ {
120+
"_t" : "para",
121+
"_v" : "Oakshield"
122+
} ]
123+
}, {
124+
"_t" : "cell",
125+
"_e" : [ {
126+
"_t" : "para",
127+
"_v" : "King"
128+
} ]
129+
} ]
130+
} ]
131+
} ]
132+
} ]
133+
}

fj-doc-base-yaml/src/main/java/org/fugerit/java/doc/yaml/parse/DocYamlParser.java

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,19 +13,25 @@
1313

1414
public class DocYamlParser extends AbstractDocParser {
1515

16+
private DocObjectMapperHelper helper;
17+
1618
public DocYamlParser() {
1719
super( DocFacadeSource.SOURCE_TYPE_YAML );
20+
this.helper = new DocObjectMapperHelper( new ObjectMapper( new YAMLFactory() ) );
21+
}
22+
23+
private DocObjectMapperHelper getHelper() {
24+
return this.helper;
1825
}
1926

2027
@Override
2128
protected DocValidationResult validateWorker(Reader reader) throws Exception {
22-
return DocValidationResult.newDefaultNotSupportedResult();
29+
return this.getHelper().validateWorkerResult(reader);
2330
}
2431

2532
@Override
2633
protected DocBase parseWorker(Reader reader) throws Exception {
27-
DocObjectMapperHelper helper = new DocObjectMapperHelper( new ObjectMapper( new YAMLFactory() ) );
28-
return helper.parse(reader);
34+
return this.getHelper().parse(reader);
2935
}
3036

3137
}

0 commit comments

Comments
 (0)