This is an automated email from the ASF dual-hosted git repository.

simonetripodi pushed a commit to branch apisjar_sources
in repository 
https://gitbox.apache.org/repos/asf/sling-slingfeature-maven-plugin.git


The following commit(s) were added to refs/heads/apisjar_sources by this push:
     new 4696e59  SLING-8273 - APIs jar MOJO doesn't produce Javadoc if sources 
contain non-ascii chars
4696e59 is described below

commit 4696e595f3fb96119347182140de73ea54f573af
Author: Simo Tripodi <[email protected]>
AuthorDate: Mon Feb 11 17:50:01 2019 +0100

    SLING-8273 - APIs jar MOJO doesn't produce Javadoc if sources contain
    non-ascii chars
---
 .../apache/sling/feature/maven/mojos/ApisJarMojo.java   | 17 +++++++++++++----
 1 file changed, 13 insertions(+), 4 deletions(-)

diff --git 
a/src/main/java/org/apache/sling/feature/maven/mojos/ApisJarMojo.java 
b/src/main/java/org/apache/sling/feature/maven/mojos/ApisJarMojo.java
index 0d99902..9f0ce8e 100644
--- a/src/main/java/org/apache/sling/feature/maven/mojos/ApisJarMojo.java
+++ b/src/main/java/org/apache/sling/feature/maven/mojos/ApisJarMojo.java
@@ -106,7 +106,11 @@ public class ApisJarMojo extends 
AbstractIncludingFeatureMojo {
 
     private static final String JAVADOC = "javadoc";
 
-    private static final String CLASS_EXTENSION = ".class";
+    private static final String JAVA_EXTENSION = ".java";
+
+    private static final String NON_ASCII_PATTERN = "[^\\p{ASCII}]";
+
+    private static final String EMPTY_STRING = "";
 
     @Parameter
     private FeatureSelectionConfig selection;
@@ -495,10 +499,15 @@ public class ApisJarMojo extends 
AbstractIncludingFeatureMojo {
             target.getParentFile().mkdirs();
 
             try {
-                if (includedFile.endsWith(CLASS_EXTENSION)) {
-                    FileUtils.copyFile(new File(deflatedDir, includedFile), 
target);
+                File source = new File(deflatedDir, includedFile);
+
+                // this to prevent 'unmappable character for encoding UTF8' 
error
+                if (includedFile.endsWith(JAVA_EXTENSION)) {
+                    String javaSource = FileUtils.fileRead(source, 
StandardCharsets.UTF_8.name())
+                                                 
.replaceAll(NON_ASCII_PATTERN, EMPTY_STRING);
+                    FileUtils.fileWrite(target, StandardCharsets.UTF_8.name(), 
javaSource);
                 } else {
-                    FileUtils.copyFile(new File(deflatedDir, includedFile), 
target, StandardCharsets.UTF_8.name());
+                    FileUtils.copyFile(source, target);
                 }
             } catch (IOException e) {
                 throw new MojoExecutionException("An error occurred while 
copying file "

Reply via email to