diff --git a/docgen/parameters.json b/docgen/parameters.json
index 3a28e6bd8..6c8c66f32 100644
--- a/docgen/parameters.json
+++ b/docgen/parameters.json
@@ -1,8 +1,8 @@
{
"title" : "Venus (Fugerit Document Generation Framework)",
"name": "Venus",
- "version" : "0.8.3",
- "date" : "24/01/2023",
+ "version" : "0.8.4",
+ "date" : "27/01/2023",
"organization" : {
"name" : "Fugerit Org",
"url" : "https://www.fugerit.org"
diff --git a/docgen/release-notes.txt b/docgen/release-notes.txt
index aa56961f2..f032a5f58 100644
--- a/docgen/release-notes.txt
+++ b/docgen/release-notes.txt
@@ -1,6 +1,10 @@
-0.8.3 (2023-01-24)
+0.8.4 (2023-01-27)
------------------
-+ [fj-doc-mod-fop - need to create FopConfigClassLoaderWrapper with default ResourceResolver]([0.5.2](https://github.com/fugerit-org/fj-doc/issues/15))
++ [fj-doc-base - Enable charset selection for DocTypeHandlerXML](https://github.com/fugerit-org/fj-doc/issues/17)
+
+0.8.3 (2023-01-24)
+------------------
++ [fj-doc-mod-fop - need to create FopConfigClassLoaderWrapper with default ResourceResolver](https://github.com/fugerit-org/fj-doc/issues/15)
0.8.2 (2023-01-22)
------------------
diff --git a/fj-doc-base-json/pom.xml b/fj-doc-base-json/pom.xml
index 91a62cf50..5f7f7da4d 100644
--- a/fj-doc-base-json/pom.xml
+++ b/fj-doc-base-json/pom.xml
@@ -7,7 +7,7 @@
org.fugerit.java
fj-doc
- 0.8.3
+ 0.8.4
fj-doc-base-json
diff --git a/fj-doc-base-yaml/pom.xml b/fj-doc-base-yaml/pom.xml
index 1b9a3f6ac..776e9fc16 100644
--- a/fj-doc-base-yaml/pom.xml
+++ b/fj-doc-base-yaml/pom.xml
@@ -7,7 +7,7 @@
org.fugerit.java
fj-doc
- 0.8.3
+ 0.8.4
fj-doc-base-yaml
diff --git a/fj-doc-base/pom.xml b/fj-doc-base/pom.xml
index 5963d45a1..34834af57 100644
--- a/fj-doc-base/pom.xml
+++ b/fj-doc-base/pom.xml
@@ -7,7 +7,7 @@
org.fugerit.java
fj-doc
- 0.8.3
+ 0.8.4
fj-doc-base
diff --git a/fj-doc-base/src/main/java/org/fugerit/java/doc/base/config/DocCharsetProvider.java b/fj-doc-base/src/main/java/org/fugerit/java/doc/base/config/DocCharsetProvider.java
new file mode 100644
index 000000000..bc97a2089
--- /dev/null
+++ b/fj-doc-base/src/main/java/org/fugerit/java/doc/base/config/DocCharsetProvider.java
@@ -0,0 +1,28 @@
+package org.fugerit.java.doc.base.config;
+
+import java.nio.charset.Charset;
+
+import org.fugerit.java.core.util.ObjectUtils;
+
+public abstract class DocCharsetProvider {
+
+ public abstract Charset resolveCharset( Charset charset );
+
+ public static final DocCharsetProvider DEFAULT = new DocCharsetProvider() {
+ @Override
+ public Charset resolveCharset(Charset charset) {
+ return ObjectUtils.objectWithDefault( charset , Charset.defaultCharset() );
+ }
+ };
+
+ private static DocCharsetProvider defaultProvider = DEFAULT;
+
+ public static DocCharsetProvider getDefaultProvider() {
+ return defaultProvider;
+ }
+
+ public static void setDefaultProvider(DocCharsetProvider defaultProvider) {
+ DocCharsetProvider.defaultProvider = defaultProvider;
+ }
+
+}
diff --git a/fj-doc-base/src/main/java/org/fugerit/java/doc/base/config/DocTypeHandler.java b/fj-doc-base/src/main/java/org/fugerit/java/doc/base/config/DocTypeHandler.java
index 6b1e0d5ff..62447e930 100644
--- a/fj-doc-base/src/main/java/org/fugerit/java/doc/base/config/DocTypeHandler.java
+++ b/fj-doc-base/src/main/java/org/fugerit/java/doc/base/config/DocTypeHandler.java
@@ -1,5 +1,7 @@
package org.fugerit.java.doc.base.config;
+import java.nio.charset.Charset;
+
import org.fugerit.java.core.util.collection.KeyString;
public interface DocTypeHandler extends KeyString {
@@ -10,6 +12,8 @@ public interface DocTypeHandler extends KeyString {
String getMime();
+ Charset getCharset();
+
void handle( DocInput docInput, DocOutput docOutput ) throws Exception;
}
diff --git a/fj-doc-base/src/main/java/org/fugerit/java/doc/base/config/DocTypeHandlerDecorator.java b/fj-doc-base/src/main/java/org/fugerit/java/doc/base/config/DocTypeHandlerDecorator.java
new file mode 100644
index 000000000..e5d47a9d7
--- /dev/null
+++ b/fj-doc-base/src/main/java/org/fugerit/java/doc/base/config/DocTypeHandlerDecorator.java
@@ -0,0 +1,33 @@
+package org.fugerit.java.doc.base.config;
+
+import org.fugerit.java.core.cfg.ConfigException;
+import org.w3c.dom.Element;
+
+public class DocTypeHandlerDecorator extends DocTypeHandlerDefault {
+
+ private static final long serialVersionUID = 5531355008187717238L;
+
+ private DocTypeHandler handler;
+
+ public DocTypeHandlerDecorator( DocTypeHandler handler ) {
+ super( handler.getType(), handler.getModule(), handler.getMime(), handler.getCharset() );
+ this.handler = handler;
+ }
+
+ public DocTypeHandler unwrap() {
+ return handler;
+ }
+
+ @Override
+ public void handle(DocInput docInput, DocOutput docOutput) throws Exception {
+ this.handler.handle(docInput, docOutput);
+ }
+
+ @Override
+ public void configure(Element tag) throws ConfigException {
+ if ( this.handler instanceof DocTypeHandlerDefault ) {
+ ((DocTypeHandlerDefault)this.handler).configure(tag);
+ }
+ }
+
+}
diff --git a/fj-doc-base/src/main/java/org/fugerit/java/doc/base/config/DocTypeHandlerDefault.java b/fj-doc-base/src/main/java/org/fugerit/java/doc/base/config/DocTypeHandlerDefault.java
index 136647676..9ea1e41fa 100644
--- a/fj-doc-base/src/main/java/org/fugerit/java/doc/base/config/DocTypeHandlerDefault.java
+++ b/fj-doc-base/src/main/java/org/fugerit/java/doc/base/config/DocTypeHandlerDefault.java
@@ -1,11 +1,14 @@
package org.fugerit.java.doc.base.config;
import java.io.Serializable;
+import java.nio.charset.Charset;
import org.fugerit.java.core.cfg.ConfigException;
import org.fugerit.java.core.cfg.helpers.XMLConfigurableObject;
+import org.fugerit.java.core.lang.helpers.StringUtils;
import org.fugerit.java.doc.base.helper.DefaultMimeHelper;
import org.w3c.dom.Element;
+import org.w3c.dom.NodeList;
public class DocTypeHandlerDefault extends XMLConfigurableObject implements DocTypeHandler, Serializable {
@@ -14,12 +17,18 @@ public class DocTypeHandlerDefault extends XMLConfigurableObject implements DocT
*/
private static final long serialVersionUID = -5024985828785381015L;
+ public static final String TAG_NAME_CONFIG = "config";
+
+ public static final String ATT_NAME_CHARSET = "charset";
+
private String type;
private String module;
private String mime;
+ private Charset charset;
+
@Override
public String getMime() {
String res = this.mime;
@@ -44,16 +53,26 @@ public String getModule() {
return module;
}
+ @Override
+ public Charset getCharset() {
+ return charset;
+ }
+
@Override
public void handle(DocInput docInput, DocOutput docOutput) throws Exception {
}
-
- public DocTypeHandlerDefault(String type, String module, String mime) {
+
+ public DocTypeHandlerDefault(String type, String module, String mime, Charset charset) {
super();
this.type = type;
this.module = module;
this.mime = mime;
+ this.charset = DocCharsetProvider.getDefaultProvider().resolveCharset(charset);
+ }
+
+ public DocTypeHandlerDefault(String type, String module, String mime) {
+ this( type, module, mime, null );
}
public DocTypeHandlerDefault(String type, String module ) {
@@ -64,8 +83,21 @@ public static final String createKey( String type, String mod ) {
return type+"-"+mod;
}
+ protected void handleConfigTag( Element config ) throws ConfigException {
+
+ }
+
@Override
public void configure(Element tag) throws ConfigException {
+ NodeList nl = tag.getElementsByTagName( TAG_NAME_CONFIG );
+ if ( nl.getLength() > 0 ) {
+ Element config = (Element)nl.item( 0 );
+ String charsetAtt = config.getAttribute( ATT_NAME_CHARSET );
+ if ( StringUtils.isNotEmpty( charsetAtt ) ) {
+ this.charset = Charset.forName( charsetAtt );
+ }
+ this.handleConfigTag(config);
+ }
}
}
diff --git a/fj-doc-base/src/main/java/org/fugerit/java/doc/base/config/DocTypeHandlerXML.java b/fj-doc-base/src/main/java/org/fugerit/java/doc/base/config/DocTypeHandlerXML.java
index a21cc13e1..a61b39918 100644
--- a/fj-doc-base/src/main/java/org/fugerit/java/doc/base/config/DocTypeHandlerXML.java
+++ b/fj-doc-base/src/main/java/org/fugerit/java/doc/base/config/DocTypeHandlerXML.java
@@ -1,6 +1,8 @@
package org.fugerit.java.doc.base.config;
import java.io.OutputStreamWriter;
+import java.nio.charset.Charset;
+import java.nio.charset.StandardCharsets;
import org.fugerit.java.core.io.StreamIO;
@@ -13,17 +15,23 @@ public class DocTypeHandlerXML extends DocTypeHandlerDefault {
public static final DocTypeHandler HANDLER = new DocTypeHandlerXML();
+ public static final DocTypeHandler HANDLER_UTF8 = new DocTypeHandlerXML( StandardCharsets.UTF_8 );
+
public static final String TYPE = DocConfig.TYPE_XML;
public static final String MODULE = "doc";
+ public DocTypeHandlerXML( Charset charset ) {
+ super( TYPE, MODULE, null, charset );
+ }
+
public DocTypeHandlerXML() {
super( TYPE, MODULE );
}
@Override
public void handle(DocInput docInput, DocOutput docOutput) throws Exception {
- StreamIO.pipeCharCloseBoth( docInput.getReader() , new OutputStreamWriter( docOutput.getOs() ) );
+ StreamIO.pipeCharCloseBoth( docInput.getReader() , new OutputStreamWriter( docOutput.getOs(), this.getCharset() ) );
}
}
diff --git a/fj-doc-base/src/main/java/org/fugerit/java/doc/base/config/DocTypeHandlerXMLUTF8.java b/fj-doc-base/src/main/java/org/fugerit/java/doc/base/config/DocTypeHandlerXMLUTF8.java
new file mode 100644
index 000000000..2cfca4df9
--- /dev/null
+++ b/fj-doc-base/src/main/java/org/fugerit/java/doc/base/config/DocTypeHandlerXMLUTF8.java
@@ -0,0 +1,13 @@
+package org.fugerit.java.doc.base.config;
+
+public class DocTypeHandlerXMLUTF8 extends DocTypeHandlerDecorator {
+
+ private static final long serialVersionUID = -8512962187951518109L;
+
+ public static final DocTypeHandler HANDLER = new DocTypeHandlerXMLUTF8();
+
+ public DocTypeHandlerXMLUTF8() {
+ super( DocTypeHandlerXML.HANDLER_UTF8 );
+ }
+
+}
diff --git a/fj-doc-base/src/main/java/org/fugerit/java/doc/base/typehandler/markdown/AbstractCustomMarkdownTypeHandler.java b/fj-doc-base/src/main/java/org/fugerit/java/doc/base/typehandler/markdown/AbstractCustomMarkdownTypeHandler.java
index 634c4f82c..38716e693 100644
--- a/fj-doc-base/src/main/java/org/fugerit/java/doc/base/typehandler/markdown/AbstractCustomMarkdownTypeHandler.java
+++ b/fj-doc-base/src/main/java/org/fugerit/java/doc/base/typehandler/markdown/AbstractCustomMarkdownTypeHandler.java
@@ -1,5 +1,7 @@
package org.fugerit.java.doc.base.typehandler.markdown;
+import java.nio.charset.Charset;
+
import org.fugerit.java.doc.base.config.DocConfig;
import org.fugerit.java.doc.base.config.DocTypeHandlerDefault;
@@ -11,11 +13,19 @@ public abstract class AbstractCustomMarkdownTypeHandler extends DocTypeHandlerDe
public static final String MIME = "text/x-markdown";
- public AbstractCustomMarkdownTypeHandler( boolean printComments ) {
- super(TYPE, MODULE, MIME);
+ public AbstractCustomMarkdownTypeHandler( Charset charset, boolean printComments ) {
+ super(TYPE, MODULE, MIME, charset);
this.printComments = printComments;
}
+ public AbstractCustomMarkdownTypeHandler( Charset charset ) {
+ this( charset, MarkdownBasicDocFacade.DEFAULT_PRINT_COMMENTS );
+ }
+
+ public AbstractCustomMarkdownTypeHandler( boolean printComments ) {
+ this( null, printComments );
+ }
+
public AbstractCustomMarkdownTypeHandler() {
this( MarkdownBasicDocFacade.DEFAULT_PRINT_COMMENTS );
}
diff --git a/fj-doc-base/src/main/java/org/fugerit/java/doc/base/typehandler/markdown/SimpleMarkdownBasicTypeHandler.java b/fj-doc-base/src/main/java/org/fugerit/java/doc/base/typehandler/markdown/SimpleMarkdownBasicTypeHandler.java
index 182090a4b..14a8a199d 100644
--- a/fj-doc-base/src/main/java/org/fugerit/java/doc/base/typehandler/markdown/SimpleMarkdownBasicTypeHandler.java
+++ b/fj-doc-base/src/main/java/org/fugerit/java/doc/base/typehandler/markdown/SimpleMarkdownBasicTypeHandler.java
@@ -2,6 +2,8 @@
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
+import java.nio.charset.Charset;
+import java.nio.charset.StandardCharsets;
import org.fugerit.java.doc.base.config.DocInput;
import org.fugerit.java.doc.base.config.DocOutput;
@@ -24,6 +26,10 @@ public class SimpleMarkdownBasicTypeHandler extends AbstractCustomMarkdownTypeHa
public static final DocTypeHandler HANDLER_NOCOMMENTS = new SimpleMarkdownBasicTypeHandler( false );
+ public static final DocTypeHandler HANDLER_UTF8 = new SimpleMarkdownBasicTypeHandler( StandardCharsets.UTF_8 );
+
+ public static final DocTypeHandler HANDLER_NOCOMMENTS_UTF8 = new SimpleMarkdownBasicTypeHandler( StandardCharsets.UTF_8, false );
+
/**
*
*/
@@ -35,15 +41,21 @@ public SimpleMarkdownBasicTypeHandler() {
super();
}
-
-
public SimpleMarkdownBasicTypeHandler(boolean printComments) {
super(printComments);
}
+ public SimpleMarkdownBasicTypeHandler(Charset charset, boolean printComments) {
+ super(charset, printComments);
+ }
+
+ public SimpleMarkdownBasicTypeHandler(Charset charset) {
+ super(charset);
+ }
+
@Override
public void handle(DocInput docInput, DocOutput docOutput) throws Exception {
- PrintWriter writer = new PrintWriter( new OutputStreamWriter( docOutput.getOs() ) );
+ PrintWriter writer = new PrintWriter( new OutputStreamWriter( docOutput.getOs(), this.getCharset() ) );
DocBase docBase = docInput.getDoc();
/*
* The key for building a DocTypeHandler is to correctly renders
diff --git a/fj-doc-base/src/main/java/org/fugerit/java/doc/base/typehandler/markdown/SimpleMarkdownBasicTypeHandlerUTF8.java b/fj-doc-base/src/main/java/org/fugerit/java/doc/base/typehandler/markdown/SimpleMarkdownBasicTypeHandlerUTF8.java
new file mode 100644
index 000000000..74bd46219
--- /dev/null
+++ b/fj-doc-base/src/main/java/org/fugerit/java/doc/base/typehandler/markdown/SimpleMarkdownBasicTypeHandlerUTF8.java
@@ -0,0 +1,16 @@
+package org.fugerit.java.doc.base.typehandler.markdown;
+
+import org.fugerit.java.doc.base.config.DocTypeHandler;
+import org.fugerit.java.doc.base.config.DocTypeHandlerDecorator;
+
+public class SimpleMarkdownBasicTypeHandlerUTF8 extends DocTypeHandlerDecorator {
+
+ private static final long serialVersionUID = 2821034278291920037L;
+
+ public static final DocTypeHandler HANDLER = new SimpleMarkdownBasicTypeHandlerUTF8();
+
+ public SimpleMarkdownBasicTypeHandlerUTF8() {
+ super( SimpleMarkdownBasicTypeHandler.HANDLER_UTF8 );
+ }
+
+}
diff --git a/fj-doc-base/src/main/java/org/fugerit/java/doc/base/typehandler/markdown/SimpleMarkdownExtTypeHandler.java b/fj-doc-base/src/main/java/org/fugerit/java/doc/base/typehandler/markdown/SimpleMarkdownExtTypeHandler.java
index 21b4299bd..03cc11b73 100644
--- a/fj-doc-base/src/main/java/org/fugerit/java/doc/base/typehandler/markdown/SimpleMarkdownExtTypeHandler.java
+++ b/fj-doc-base/src/main/java/org/fugerit/java/doc/base/typehandler/markdown/SimpleMarkdownExtTypeHandler.java
@@ -2,6 +2,8 @@
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
+import java.nio.charset.Charset;
+import java.nio.charset.StandardCharsets;
import org.fugerit.java.doc.base.config.DocInput;
import org.fugerit.java.doc.base.config.DocOutput;
@@ -24,6 +26,10 @@ public class SimpleMarkdownExtTypeHandler extends AbstractCustomMarkdownTypeHand
public static final DocTypeHandler HANDLER_NOCOMMENTS = new SimpleMarkdownExtTypeHandler( false );
+ public static final DocTypeHandler HANDLER_UTF8 = new SimpleMarkdownExtTypeHandler( StandardCharsets.UTF_8 );
+
+ public static final DocTypeHandler HANDLER_NOCOMMENTS_UTF8 = new SimpleMarkdownExtTypeHandler( StandardCharsets.UTF_8, false );
+
/**
*
*/
@@ -35,12 +41,19 @@ public SimpleMarkdownExtTypeHandler() {
public SimpleMarkdownExtTypeHandler(boolean printComments) {
super(printComments);
- // TODO Auto-generated constructor stub
+ }
+
+ public SimpleMarkdownExtTypeHandler(Charset charset, boolean printComments) {
+ super(charset, printComments);
+ }
+
+ public SimpleMarkdownExtTypeHandler(Charset charset) {
+ super(charset);
}
@Override
public void handle(DocInput docInput, DocOutput docOutput) throws Exception {
- PrintWriter writer = new PrintWriter( new OutputStreamWriter( docOutput.getOs() ) );
+ PrintWriter writer = new PrintWriter( new OutputStreamWriter( docOutput.getOs(), this.getCharset() ) );
DocBase docBase = docInput.getDoc();
/*
* The key for building a DocTypeHandler is to correctly renders
diff --git a/fj-doc-base/src/main/java/org/fugerit/java/doc/base/typehandler/markdown/SimpleMarkdownExtTypeHandlerUTF8.java b/fj-doc-base/src/main/java/org/fugerit/java/doc/base/typehandler/markdown/SimpleMarkdownExtTypeHandlerUTF8.java
new file mode 100644
index 000000000..61fb866f6
--- /dev/null
+++ b/fj-doc-base/src/main/java/org/fugerit/java/doc/base/typehandler/markdown/SimpleMarkdownExtTypeHandlerUTF8.java
@@ -0,0 +1,16 @@
+package org.fugerit.java.doc.base.typehandler.markdown;
+
+import org.fugerit.java.doc.base.config.DocTypeHandler;
+import org.fugerit.java.doc.base.config.DocTypeHandlerDecorator;
+
+public class SimpleMarkdownExtTypeHandlerUTF8 extends DocTypeHandlerDecorator {
+
+ private static final long serialVersionUID = 2821034278291920037L;
+
+ public static final DocTypeHandler HANDLER = new SimpleMarkdownExtTypeHandlerUTF8();
+
+ public SimpleMarkdownExtTypeHandlerUTF8() {
+ super( SimpleMarkdownExtTypeHandler.HANDLER_UTF8 );
+ }
+
+}
diff --git a/fj-doc-freemarker/pom.xml b/fj-doc-freemarker/pom.xml
index c1bce5243..813811590 100644
--- a/fj-doc-freemarker/pom.xml
+++ b/fj-doc-freemarker/pom.xml
@@ -7,7 +7,7 @@
org.fugerit.java
fj-doc
- 0.8.3
+ 0.8.4
fj-doc-freemarker
diff --git a/fj-doc-freemarker/src/main/java/org/fugerit/java/doc/freemarker/helper/FreeMarkerDocHelperTypeHandler.java b/fj-doc-freemarker/src/main/java/org/fugerit/java/doc/freemarker/helper/FreeMarkerDocHelperTypeHandler.java
index 53b214346..3ff639873 100644
--- a/fj-doc-freemarker/src/main/java/org/fugerit/java/doc/freemarker/helper/FreeMarkerDocHelperTypeHandler.java
+++ b/fj-doc-freemarker/src/main/java/org/fugerit/java/doc/freemarker/helper/FreeMarkerDocHelperTypeHandler.java
@@ -1,9 +1,11 @@
package org.fugerit.java.doc.freemarker.helper;
import java.io.OutputStreamWriter;
+import java.nio.charset.Charset;
import org.fugerit.java.core.io.StreamIO;
import org.fugerit.java.core.util.filterchain.MiniFilterChain;
+import org.fugerit.java.doc.base.config.DocCharsetProvider;
import org.fugerit.java.doc.base.config.DocInput;
import org.fugerit.java.doc.base.config.DocOutput;
import org.fugerit.java.doc.base.config.DocTypeHandlerDefault;
@@ -18,6 +20,8 @@ public class FreeMarkerDocHelperTypeHandler extends DocTypeHandlerDefault {
public static final String CHAIN_FREEMARKER = "html-freemarker";
+ public static final String MIME = "text/html";
+
/**
*
*/
@@ -28,7 +32,15 @@ public FreeMarkerDocHelperTypeHandler(String type) {
}
public FreeMarkerDocHelperTypeHandler(String type, String fmDocChainId) {
- super(type, MODULE);
+ this(type, DocCharsetProvider.getDefaultProvider().resolveCharset( null ), fmDocChainId);
+ }
+
+ public FreeMarkerDocHelperTypeHandler(String type, Charset charset) {
+ this(type, charset, CHAIN_FREEMARKER);
+ }
+
+ public FreeMarkerDocHelperTypeHandler(String type, Charset charset, String fmDocChainId) {
+ super(type, MODULE, MIME, charset);
this.fmDocChainId = fmDocChainId;
}
@@ -44,7 +56,7 @@ public void handle(DocInput docInput, DocOutput docOutput) throws Exception {
DocProcessContext context = DocProcessContext.newContext().withDocInput( docInput );
DocProcessData data = new DocProcessData();
chain.apply( context, data );
- StreamIO.pipeCharCloseBoth( data.getCurrentXmlReader() , new OutputStreamWriter( docOutput.getOs() ) );
+ StreamIO.pipeCharCloseBoth( data.getCurrentXmlReader() , new OutputStreamWriter( docOutput.getOs(), this.getCharset() ) );
}
}
\ No newline at end of file
diff --git a/fj-doc-freemarker/src/main/java/org/fugerit/java/doc/freemarker/html/FreeMarkerHtmlFragmentTypeHandler.java b/fj-doc-freemarker/src/main/java/org/fugerit/java/doc/freemarker/html/FreeMarkerHtmlFragmentTypeHandler.java
index 36e1aa649..4e74a0bac 100644
--- a/fj-doc-freemarker/src/main/java/org/fugerit/java/doc/freemarker/html/FreeMarkerHtmlFragmentTypeHandler.java
+++ b/fj-doc-freemarker/src/main/java/org/fugerit/java/doc/freemarker/html/FreeMarkerHtmlFragmentTypeHandler.java
@@ -1,5 +1,8 @@
package org.fugerit.java.doc.freemarker.html;
+import java.nio.charset.Charset;
+import java.nio.charset.StandardCharsets;
+
import org.fugerit.java.doc.base.config.DocConfig;
import org.fugerit.java.doc.base.config.DocTypeHandler;
import org.fugerit.java.doc.freemarker.helper.FreeMarkerDocHelperTypeHandler;
@@ -8,6 +11,8 @@ public class FreeMarkerHtmlFragmentTypeHandler extends FreeMarkerDocHelperTypeHa
public static DocTypeHandler HANDLER = new FreeMarkerHtmlFragmentTypeHandler();
+ public static DocTypeHandler HANDLER_UTF8 = new FreeMarkerHtmlFragmentTypeHandler( StandardCharsets.UTF_8 );
+
/**
*
*/
@@ -17,4 +22,8 @@ public FreeMarkerHtmlFragmentTypeHandler() {
super( DocConfig.TYPE_HTML_FRAGMENT );
}
+ public FreeMarkerHtmlFragmentTypeHandler( Charset charset) {
+ super( DocConfig.TYPE_HTML_FRAGMENT, charset );
+ }
+
}
\ No newline at end of file
diff --git a/fj-doc-freemarker/src/main/java/org/fugerit/java/doc/freemarker/html/FreeMarkerHtmlFragmentTypeHandlerUTF8.java b/fj-doc-freemarker/src/main/java/org/fugerit/java/doc/freemarker/html/FreeMarkerHtmlFragmentTypeHandlerUTF8.java
new file mode 100644
index 000000000..ec2ca0160
--- /dev/null
+++ b/fj-doc-freemarker/src/main/java/org/fugerit/java/doc/freemarker/html/FreeMarkerHtmlFragmentTypeHandlerUTF8.java
@@ -0,0 +1,19 @@
+package org.fugerit.java.doc.freemarker.html;
+
+import org.fugerit.java.doc.base.config.DocTypeHandler;
+import org.fugerit.java.doc.base.config.DocTypeHandlerDecorator;
+
+public class FreeMarkerHtmlFragmentTypeHandlerUTF8 extends DocTypeHandlerDecorator {
+
+ public static DocTypeHandler HANDLER = new FreeMarkerHtmlFragmentTypeHandlerUTF8();
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = -7394516771708L;
+
+ public FreeMarkerHtmlFragmentTypeHandlerUTF8() {
+ super( FreeMarkerHtmlFragmentTypeHandler.HANDLER_UTF8 );
+ }
+
+}
\ No newline at end of file
diff --git a/fj-doc-freemarker/src/main/java/org/fugerit/java/doc/freemarker/html/FreeMarkerHtmlTypeHandler.java b/fj-doc-freemarker/src/main/java/org/fugerit/java/doc/freemarker/html/FreeMarkerHtmlTypeHandler.java
index 8407eccaf..5492cf3af 100644
--- a/fj-doc-freemarker/src/main/java/org/fugerit/java/doc/freemarker/html/FreeMarkerHtmlTypeHandler.java
+++ b/fj-doc-freemarker/src/main/java/org/fugerit/java/doc/freemarker/html/FreeMarkerHtmlTypeHandler.java
@@ -1,5 +1,8 @@
package org.fugerit.java.doc.freemarker.html;
+import java.nio.charset.Charset;
+import java.nio.charset.StandardCharsets;
+
import org.fugerit.java.doc.base.config.DocConfig;
import org.fugerit.java.doc.base.config.DocTypeHandler;
import org.fugerit.java.doc.freemarker.helper.FreeMarkerDocHelperTypeHandler;
@@ -8,6 +11,8 @@ public class FreeMarkerHtmlTypeHandler extends FreeMarkerDocHelperTypeHandler {
public static DocTypeHandler HANDLER = new FreeMarkerHtmlTypeHandler();
+ public static DocTypeHandler HANDLER_UTF8 = new FreeMarkerHtmlTypeHandler( StandardCharsets.UTF_8 );
+
/**
*
*/
@@ -16,5 +21,9 @@ public class FreeMarkerHtmlTypeHandler extends FreeMarkerDocHelperTypeHandler {
public FreeMarkerHtmlTypeHandler() {
super( DocConfig.TYPE_HTML );
}
+
+ public FreeMarkerHtmlTypeHandler( Charset charset) {
+ super( DocConfig.TYPE_HTML, charset );
+ }
}
\ No newline at end of file
diff --git a/fj-doc-freemarker/src/main/java/org/fugerit/java/doc/freemarker/html/FreeMarkerHtmlTypeHandlerUTF8.java b/fj-doc-freemarker/src/main/java/org/fugerit/java/doc/freemarker/html/FreeMarkerHtmlTypeHandlerUTF8.java
new file mode 100644
index 000000000..85d0b58b3
--- /dev/null
+++ b/fj-doc-freemarker/src/main/java/org/fugerit/java/doc/freemarker/html/FreeMarkerHtmlTypeHandlerUTF8.java
@@ -0,0 +1,19 @@
+package org.fugerit.java.doc.freemarker.html;
+
+import org.fugerit.java.doc.base.config.DocTypeHandler;
+import org.fugerit.java.doc.base.config.DocTypeHandlerDecorator;
+
+public class FreeMarkerHtmlTypeHandlerUTF8 extends DocTypeHandlerDecorator {
+
+ public static DocTypeHandler HANDLER = new FreeMarkerHtmlTypeHandlerUTF8();
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = -7394516771708L;
+
+ public FreeMarkerHtmlTypeHandlerUTF8() {
+ super( FreeMarkerHtmlTypeHandler.HANDLER_UTF8 );
+ }
+
+}
\ No newline at end of file
diff --git a/fj-doc-lib-autodoc/pom.xml b/fj-doc-lib-autodoc/pom.xml
index 6829e6f51..e688af5b4 100644
--- a/fj-doc-lib-autodoc/pom.xml
+++ b/fj-doc-lib-autodoc/pom.xml
@@ -7,7 +7,7 @@
org.fugerit.java
fj-doc
- 0.8.3
+ 0.8.4
fj-doc-lib-autodoc
diff --git a/fj-doc-lib-simpletable/pom.xml b/fj-doc-lib-simpletable/pom.xml
index af9d0782a..fae2c2c86 100644
--- a/fj-doc-lib-simpletable/pom.xml
+++ b/fj-doc-lib-simpletable/pom.xml
@@ -7,7 +7,7 @@
org.fugerit.java
fj-doc
- 0.8.3
+ 0.8.4
fj-doc-lib-simpletable
diff --git a/fj-doc-mod-fop/pom.xml b/fj-doc-mod-fop/pom.xml
index dbd1e9257..c12b94d17 100644
--- a/fj-doc-mod-fop/pom.xml
+++ b/fj-doc-mod-fop/pom.xml
@@ -7,7 +7,7 @@
org.fugerit.java
fj-doc
- 0.8.3
+ 0.8.4
fj-doc-mod-fop
diff --git a/fj-doc-mod-fop/src/main/java/org/fugerit/java/doc/mod/fop/FreeMarkerFopTypeHandler.java b/fj-doc-mod-fop/src/main/java/org/fugerit/java/doc/mod/fop/FreeMarkerFopTypeHandler.java
index 884dc9b98..c50b2c2bd 100644
--- a/fj-doc-mod-fop/src/main/java/org/fugerit/java/doc/mod/fop/FreeMarkerFopTypeHandler.java
+++ b/fj-doc-mod-fop/src/main/java/org/fugerit/java/doc/mod/fop/FreeMarkerFopTypeHandler.java
@@ -1,9 +1,12 @@
package org.fugerit.java.doc.mod.fop;
import java.io.OutputStreamWriter;
+import java.nio.charset.Charset;
+import java.nio.charset.StandardCharsets;
import org.fugerit.java.core.io.StreamIO;
import org.fugerit.java.core.util.filterchain.MiniFilterChain;
+import org.fugerit.java.doc.base.config.DocCharsetProvider;
import org.fugerit.java.doc.base.config.DocConfig;
import org.fugerit.java.doc.base.config.DocInput;
import org.fugerit.java.doc.base.config.DocOutput;
@@ -20,6 +23,8 @@ public class FreeMarkerFopTypeHandler extends DocTypeHandlerDefault {
public static final DocTypeHandler HANDLER = new FreeMarkerFopTypeHandler();
+ public static final DocTypeHandler HANDLER_UTF8 = new FreeMarkerFopTypeHandler( StandardCharsets.UTF_8 );
+
public static final String MODULE = "fop";
/**
@@ -27,12 +32,20 @@ public class FreeMarkerFopTypeHandler extends DocTypeHandlerDefault {
*/
private static final long serialVersionUID = -7394516771708L;
+ public FreeMarkerFopTypeHandler( Charset charset ) {
+ this( DocConfig.TYPE_FO, charset );
+ }
+
public FreeMarkerFopTypeHandler() {
this( DocConfig.TYPE_FO );
}
+ public FreeMarkerFopTypeHandler(String type, Charset charset) {
+ super(type, MODULE, null, charset);
+ }
+
public FreeMarkerFopTypeHandler(String type) {
- super(type, MODULE);
+ this(type, DocCharsetProvider.getDefaultProvider().resolveCharset( null ) );
}
@Override
@@ -41,7 +54,7 @@ public void handle(DocInput docInput, DocOutput docOutput) throws Exception {
DocProcessContext context = DocProcessContext.newContext().withDocInput( docInput );
DocProcessData data = new DocProcessData();
chain.apply( context, data );
- StreamIO.pipeCharCloseBoth( data.getCurrentXmlReader() , new OutputStreamWriter( docOutput.getOs() ) );
+ StreamIO.pipeCharCloseBoth( data.getCurrentXmlReader() , new OutputStreamWriter( docOutput.getOs(), this.getCharset() ) );
}
}
\ No newline at end of file
diff --git a/fj-doc-mod-fop/src/main/java/org/fugerit/java/doc/mod/fop/FreeMarkerFopTypeHandlerUTF8.java b/fj-doc-mod-fop/src/main/java/org/fugerit/java/doc/mod/fop/FreeMarkerFopTypeHandlerUTF8.java
new file mode 100644
index 000000000..fb7e1d477
--- /dev/null
+++ b/fj-doc-mod-fop/src/main/java/org/fugerit/java/doc/mod/fop/FreeMarkerFopTypeHandlerUTF8.java
@@ -0,0 +1,13 @@
+package org.fugerit.java.doc.mod.fop;
+
+import org.fugerit.java.doc.base.config.DocTypeHandlerDecorator;
+
+public class FreeMarkerFopTypeHandlerUTF8 extends DocTypeHandlerDecorator {
+
+ private static final long serialVersionUID = -7335866750463830177L;
+
+ public FreeMarkerFopTypeHandlerUTF8() {
+ super( FreeMarkerFopTypeHandler.HANDLER_UTF8 );
+ }
+
+}
diff --git a/fj-doc-mod-fop/src/main/java/org/fugerit/java/doc/mod/fop/PdfFopTypeHandler.java b/fj-doc-mod-fop/src/main/java/org/fugerit/java/doc/mod/fop/PdfFopTypeHandler.java
index be97c65ba..64984f3f7 100644
--- a/fj-doc-mod-fop/src/main/java/org/fugerit/java/doc/mod/fop/PdfFopTypeHandler.java
+++ b/fj-doc-mod-fop/src/main/java/org/fugerit/java/doc/mod/fop/PdfFopTypeHandler.java
@@ -3,6 +3,7 @@
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.InputStreamReader;
+import java.nio.charset.Charset;
import java.util.Properties;
import javax.xml.transform.Result;
@@ -20,11 +21,11 @@
import org.fugerit.java.core.lang.helpers.ClassHelper;
import org.fugerit.java.core.lang.helpers.StringUtils;
import org.fugerit.java.core.xml.dom.DOMUtils;
+import org.fugerit.java.doc.base.config.DocCharsetProvider;
import org.fugerit.java.doc.base.config.DocConfig;
import org.fugerit.java.doc.base.config.DocInput;
import org.fugerit.java.doc.base.config.DocOutput;
import org.fugerit.java.doc.base.config.DocTypeHandler;
-import org.fugerit.java.doc.mod.fop.config.ClassLoaderResourceResolverWrapper;
import org.fugerit.java.doc.mod.fop.config.FopConfigClassLoader;
import org.fugerit.java.doc.mod.fop.config.FopConfigClassLoaderWrapper;
import org.w3c.dom.Element;
@@ -63,12 +64,17 @@ public class PdfFopTypeHandler extends FreeMarkerFopTypeHandler {
private boolean keepEmptyTags;
private FopConfig fopConfig;
-
- public PdfFopTypeHandler( FopConfig fopConfig, boolean accessibility, boolean keepEmptyTags ) {
- super( DocConfig.TYPE_PDF );
+
+ public PdfFopTypeHandler( Charset charset, FopConfig fopConfig, boolean accessibility, boolean keepEmptyTags ) {
+ super( DocConfig.TYPE_PDF, charset );
this.fopConfig = fopConfig;
this.accessibility = accessibility;
this.keepEmptyTags = keepEmptyTags;
+
+ }
+
+ public PdfFopTypeHandler( FopConfig fopConfig, boolean accessibility, boolean keepEmptyTags ) {
+ this( DocCharsetProvider.getDefaultProvider().resolveCharset( null ), fopConfig, accessibility, keepEmptyTags );
}
public PdfFopTypeHandler( boolean accessibility, boolean keepEmptyTags ) {
@@ -85,7 +91,7 @@ public void handle(DocInput docInput, DocOutput docOutput) throws Exception {
DocOutput bufferOutput = DocOutput.newOutput( buffer );
super.handle(docInput, bufferOutput);
// the XML file which provides the input
- StreamSource xmlSource = new StreamSource( new InputStreamReader( new ByteArrayInputStream( buffer.toByteArray() ) ) );
+ StreamSource xmlSource = new StreamSource( new InputStreamReader( new ByteArrayInputStream( buffer.toByteArray() ), this.getCharset() ) );
// create an instance of fop factory
FopFactory fopFactory = this.fopConfig.newFactory();
FOUserAgent foUserAgent = fopFactory.newFOUserAgent();
@@ -115,33 +121,31 @@ public void setFopConfig(FopConfig fopConfig) {
}
@Override
- public void configure(Element tag) throws ConfigException {
- NodeList nl = tag.getElementsByTagName( "config" );
- if ( nl.getLength() > 0 ) {
- Element config = (Element)nl.item( 0 );
- Properties props = DOMUtils.attributesToProperties( config );
- String fopConfigMode = props.getProperty( ATT_FOP_CONFIG_MODE );
- String fopConfigClassloaderPath = props.getProperty( ATT_FOP_CONFIG_CLASSLOADER_PATH );
- String fopConfigResoverType = props.getProperty( ATT_FOP_CONFIG_RESOLVER_TYPE, ATT_FOP_CONFIG_RESOLVER_TYPE_DEFAULT );
- String fontBaseClassloaderPath = props.getProperty( ATT_FONT_BASE_CLASSLOADER_PATH );
- // legacy class loader mode
- if ( StringUtils.isEmpty( fopConfigMode ) && StringUtils.isNotEmpty( fopConfigClassloaderPath ) && StringUtils.isNotEmpty( fontBaseClassloaderPath ) ) {
- fopConfigMode = ATT_FOP_CONFIG_MODE_CLASS_LOADER_LEGACY;
- logger.warn( "Activated legacy ClassLoader mode. It is strongly recomended to update te configuration {} -> {}", ATT_FOP_CONFIG_MODE_CLASS_LOADER_LEGACY, FopConfigClassLoader.MIN_VERSION_NEW_CLASSLOADER_MODE );
- }
- if ( ATT_FOP_CONFIG_MODE_CLASS_LOADER.equalsIgnoreCase( fopConfigMode ) ) {
- try {
- ResourceResolver customResourceResolver = (ResourceResolver) ClassHelper.newInstance( fopConfigResoverType );
- FopConfigClassLoaderWrapper fopConfigClassLoaderWrapper = new FopConfigClassLoaderWrapper(fopConfigClassloaderPath, customResourceResolver);
- this.fopConfig = fopConfigClassLoaderWrapper;
- } catch (Exception e) {
- throw new ConfigException( PdfFopTypeHandler.class.getSimpleName()+" configuration error : "+e, e );
- }
- } else if ( ATT_FOP_CONFIG_MODE_CLASS_LOADER_LEGACY.equalsIgnoreCase( fopConfigMode ) ) {
- FopConfigClassLoader fopConfigClassLoader = new FopConfigClassLoader(fopConfigClassloaderPath, fontBaseClassloaderPath);
- this.fopConfig = fopConfigClassLoader;
+ protected void handleConfigTag(Element config) throws ConfigException {
+ super.handleConfigTag(config);
+ Properties props = DOMUtils.attributesToProperties( config );
+ String fopConfigMode = props.getProperty( ATT_FOP_CONFIG_MODE );
+ String fopConfigClassloaderPath = props.getProperty( ATT_FOP_CONFIG_CLASSLOADER_PATH );
+ String fopConfigResoverType = props.getProperty( ATT_FOP_CONFIG_RESOLVER_TYPE, ATT_FOP_CONFIG_RESOLVER_TYPE_DEFAULT );
+ String fontBaseClassloaderPath = props.getProperty( ATT_FONT_BASE_CLASSLOADER_PATH );
+ // legacy class loader mode
+ if ( StringUtils.isEmpty( fopConfigMode ) && StringUtils.isNotEmpty( fopConfigClassloaderPath ) && StringUtils.isNotEmpty( fontBaseClassloaderPath ) ) {
+ fopConfigMode = ATT_FOP_CONFIG_MODE_CLASS_LOADER_LEGACY;
+ logger.warn( "Activated legacy ClassLoader mode. It is strongly recomended to update te configuration {} -> {}", ATT_FOP_CONFIG_MODE_CLASS_LOADER_LEGACY, FopConfigClassLoader.MIN_VERSION_NEW_CLASSLOADER_MODE );
+ }
+ if ( ATT_FOP_CONFIG_MODE_CLASS_LOADER.equalsIgnoreCase( fopConfigMode ) ) {
+ try {
+ ResourceResolver customResourceResolver = (ResourceResolver) ClassHelper.newInstance( fopConfigResoverType );
+ FopConfigClassLoaderWrapper fopConfigClassLoaderWrapper = new FopConfigClassLoaderWrapper(fopConfigClassloaderPath, customResourceResolver);
+ this.fopConfig = fopConfigClassLoaderWrapper;
+ } catch (Exception e) {
+ throw new ConfigException( PdfFopTypeHandler.class.getSimpleName()+" configuration error : "+e, e );
}
+ } else if ( ATT_FOP_CONFIG_MODE_CLASS_LOADER_LEGACY.equalsIgnoreCase( fopConfigMode ) ) {
+ FopConfigClassLoader fopConfigClassLoader = new FopConfigClassLoader(fopConfigClassloaderPath, fontBaseClassloaderPath);
+ this.fopConfig = fopConfigClassLoader;
}
+
}
}
\ No newline at end of file
diff --git a/fj-doc-mod-opencsv/pom.xml b/fj-doc-mod-opencsv/pom.xml
index f384c4909..b14d893c4 100644
--- a/fj-doc-mod-opencsv/pom.xml
+++ b/fj-doc-mod-opencsv/pom.xml
@@ -7,7 +7,7 @@
org.fugerit.java
fj-doc
- 0.8.3
+ 0.8.4
fj-doc-mod-opencsv
diff --git a/fj-doc-mod-poi/pom.xml b/fj-doc-mod-poi/pom.xml
index 71435b4cb..02dbfe857 100644
--- a/fj-doc-mod-poi/pom.xml
+++ b/fj-doc-mod-poi/pom.xml
@@ -7,7 +7,7 @@
org.fugerit.java
fj-doc
- 0.8.3
+ 0.8.4
fj-doc-mod-poi
diff --git a/fj-doc-playground-quarkus/pom.xml b/fj-doc-playground-quarkus/pom.xml
index c82c4a756..cb10061e2 100644
--- a/fj-doc-playground-quarkus/pom.xml
+++ b/fj-doc-playground-quarkus/pom.xml
@@ -4,7 +4,7 @@
org.fugerit.java
fj-doc
- 0.8.3
+ 0.8.4
fj-doc-playground-quarkus
diff --git a/fj-doc-sample/pom.xml b/fj-doc-sample/pom.xml
index 2ab0a70cf..ab957f8ab 100644
--- a/fj-doc-sample/pom.xml
+++ b/fj-doc-sample/pom.xml
@@ -7,7 +7,7 @@
org.fugerit.java
fj-doc
- 0.8.3
+ 0.8.4
fj-doc-sample
diff --git a/fj-doc-sample/src/main/resources/config/doc-handler-sample.xml b/fj-doc-sample/src/main/resources/config/doc-handler-sample.xml
index 18e27b217..6f99243ea 100644
--- a/fj-doc-sample/src/main/resources/config/doc-handler-sample.xml
+++ b/fj-doc-sample/src/main/resources/config/doc-handler-sample.xml
@@ -2,10 +2,10 @@
-
+
-
+
-
+
-
-
+
+
diff --git a/fj-doc-val-core/pom.xml b/fj-doc-val-core/pom.xml
index 39e52376e..8393bf390 100644
--- a/fj-doc-val-core/pom.xml
+++ b/fj-doc-val-core/pom.xml
@@ -7,7 +7,7 @@
org.fugerit.java
fj-doc
- 0.8.3
+ 0.8.4
fj-doc-val-core
diff --git a/fj-doc-val-pdfbox/pom.xml b/fj-doc-val-pdfbox/pom.xml
index 5fbff87f7..70450652a 100644
--- a/fj-doc-val-pdfbox/pom.xml
+++ b/fj-doc-val-pdfbox/pom.xml
@@ -7,7 +7,7 @@
org.fugerit.java
fj-doc
- 0.8.3
+ 0.8.4
fj-doc-val-pdfbox
diff --git a/fj-doc-val-poi/pom.xml b/fj-doc-val-poi/pom.xml
index d42344476..1de0197b0 100644
--- a/fj-doc-val-poi/pom.xml
+++ b/fj-doc-val-poi/pom.xml
@@ -7,7 +7,7 @@
org.fugerit.java
fj-doc
- 0.8.3
+ 0.8.4
fj-doc-val-poi
diff --git a/fj-doc-val/pom.xml b/fj-doc-val/pom.xml
index fa0653172..780d32569 100644
--- a/fj-doc-val/pom.xml
+++ b/fj-doc-val/pom.xml
@@ -7,7 +7,7 @@
org.fugerit.java
fj-doc
- 0.8.3
+ 0.8.4
fj-doc-val
diff --git a/pom.xml b/pom.xml
index f6dbb6ddc..85be4fc96 100644
--- a/pom.xml
+++ b/pom.xml
@@ -11,7 +11,7 @@
fj-doc
- 0.8.3
+ 0.8.4
pom
fj-doc