You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by bu...@apache.org on 2019/12/09 20:54:01 UTC

[cxf] branch master updated: cxf-tools-wadlto-jaxrs: cache lineSeparator; force use File.separator

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

buhhunyx pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/cxf.git


The following commit(s) were added to refs/heads/master by this push:
     new 8bbe66a  cxf-tools-wadlto-jaxrs: cache lineSeparator; force use File.separator
8bbe66a is described below

commit 8bbe66a1ae5744ec72d9619e95efa606b080b169
Author: Alexey Markevich <bu...@gmail.com>
AuthorDate: Mon Dec 9 23:53:29 2019 +0300

    cxf-tools-wadlto-jaxrs: cache lineSeparator; force use File.separator
---
 .../cxf/tools/wadlto/jaxrs/SourceGenerator.java    | 262 +++++++++------------
 1 file changed, 114 insertions(+), 148 deletions(-)

diff --git a/tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/jaxrs/SourceGenerator.java b/tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/jaxrs/SourceGenerator.java
index 61b4e34..5c0fa8f 100644
--- a/tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/jaxrs/SourceGenerator.java
+++ b/tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/jaxrs/SourceGenerator.java
@@ -19,15 +19,14 @@
 package org.apache.cxf.tools.wadlto.jaxrs;
 
 import java.io.File;
-import java.io.FileNotFoundException;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.InputStreamReader;
-import java.io.OutputStreamWriter;
 import java.io.Reader;
 import java.io.Writer;
 import java.net.URI;
 import java.net.URL;
+import java.nio.charset.Charset;
 import java.nio.charset.StandardCharsets;
 import java.nio.file.Files;
 import java.util.ArrayList;
@@ -92,7 +91,6 @@ import org.apache.cxf.common.util.ReflectionInvokationHandler;
 import org.apache.cxf.common.util.StringUtils;
 import org.apache.cxf.common.util.SystemPropertyAction;
 import org.apache.cxf.common.xmlschema.SchemaCollection;
-import org.apache.cxf.helpers.CastUtils;
 import org.apache.cxf.helpers.DOMUtils;
 import org.apache.cxf.helpers.JavaUtils;
 import org.apache.cxf.jaxrs.ext.Oneway;
@@ -112,7 +110,6 @@ public class SourceGenerator {
     public static final String CODE_TYPE_PROXY = "proxy";
     public static final String CODE_TYPE_WEB = "web";
     public static final String LINE_SEP_PROPERTY = "line.separator";
-    public static final String FILE_SEP_PROPERTY = "file.separator";
 
     private static final Logger LOG = LogUtils.getL7dLogger(SourceGenerator.class);
 
@@ -120,25 +117,21 @@ public class SourceGenerator {
     private static final String DEFAULT_RESOURCE_NAME = "Resource";
     private static final String TAB = "    ";
 
-    private static final List<String> HTTP_OK_STATUSES =
-            Arrays.asList(new String[] {"200", "201", "202", "203", "204"});
+    private static final Set<String> HTTP_OK_STATUSES =
+        new HashSet<>(Arrays.asList("200", "201", "202", "203", "204"));
 
     private static final Set<Class<?>> OPTIONAL_PARAMS =
-        new HashSet<Class<?>>(Arrays.<Class<?>>asList(QueryParam.class,
-                                                      HeaderParam.class,
-                                                      MatrixParam.class,
-                                                      FormParam.class));
-    private static final Map<String, Class<?>> HTTP_METHOD_ANNOTATIONS;
-    private static final Map<String, Class<?>> PARAM_ANNOTATIONS;
+        new HashSet<>(Arrays.asList(QueryParam.class, HeaderParam.class, MatrixParam.class, FormParam.class));
+    private static final Map<String, Class<?>> HTTP_METHOD_ANNOTATIONS = new HashMap<>();
+    private static final Map<String, Class<?>> PARAM_ANNOTATIONS = new HashMap<>();
     private static final String PLAIN_PARAM_STYLE = "plain";
     private static final String BEAN_VALID_SIMPLE_NAME = "Valid";
     private static final String BEAN_VALID_FULL_NAME = "javax.validation." + BEAN_VALID_SIMPLE_NAME;
-    private static final Set<String> RESOURCE_LEVEL_PARAMS;
-    private static final Map<String, String> AUTOBOXED_PRIMITIVES_MAP;
-    private static final Map<String, String> XSD_SPECIFIC_TYPE_MAP;
+    private static final Set<String> RESOURCE_LEVEL_PARAMS = new HashSet<>(Arrays.asList("template", "matrix"));
+    private static final Map<String, String> AUTOBOXED_PRIMITIVES_MAP = new HashMap<>();
+    private static final Map<String, String> XSD_SPECIFIC_TYPE_MAP = new HashMap<>();
 
     static {
-        HTTP_METHOD_ANNOTATIONS = new HashMap<>();
         HTTP_METHOD_ANNOTATIONS.put("get", GET.class);
         HTTP_METHOD_ANNOTATIONS.put("put", PUT.class);
         HTTP_METHOD_ANNOTATIONS.put("post", POST.class);
@@ -146,17 +139,11 @@ public class SourceGenerator {
         HTTP_METHOD_ANNOTATIONS.put("head", HEAD.class);
         HTTP_METHOD_ANNOTATIONS.put("options", OPTIONS.class);
 
-        PARAM_ANNOTATIONS = new HashMap<>();
         PARAM_ANNOTATIONS.put("template", PathParam.class);
         PARAM_ANNOTATIONS.put("header", HeaderParam.class);
         PARAM_ANNOTATIONS.put("query", QueryParam.class);
         PARAM_ANNOTATIONS.put("matrix", MatrixParam.class);
 
-        RESOURCE_LEVEL_PARAMS = new HashSet<>();
-        RESOURCE_LEVEL_PARAMS.add("template");
-        RESOURCE_LEVEL_PARAMS.add("matrix");
-
-        AUTOBOXED_PRIMITIVES_MAP = new HashMap<>();
         AUTOBOXED_PRIMITIVES_MAP.put(byte.class.getSimpleName(), Byte.class.getSimpleName());
         AUTOBOXED_PRIMITIVES_MAP.put(short.class.getSimpleName(), Short.class.getSimpleName());
         AUTOBOXED_PRIMITIVES_MAP.put(int.class.getSimpleName(), Integer.class.getSimpleName());
@@ -165,7 +152,6 @@ public class SourceGenerator {
         AUTOBOXED_PRIMITIVES_MAP.put(double.class.getSimpleName(), Double.class.getSimpleName());
         AUTOBOXED_PRIMITIVES_MAP.put(boolean.class.getSimpleName(), Boolean.class.getSimpleName());
 
-        XSD_SPECIFIC_TYPE_MAP = new HashMap<>();
         XSD_SPECIFIC_TYPE_MAP.put("string", "String");
         XSD_SPECIFIC_TYPE_MAP.put("integer", "long");
         XSD_SPECIFIC_TYPE_MAP.put("float", "float");
@@ -203,7 +189,7 @@ public class SourceGenerator {
     private boolean useVoidForEmptyResponses = true;
     private boolean generateResponseIfHeadersSet;
 
-    private Map<String, String> properties;
+    private final String lineSeparator;
 
     private List<String> generatedServiceClasses = new ArrayList<>();
     private List<String> generatedTypeClasses = new ArrayList<>();
@@ -228,11 +214,12 @@ public class SourceGenerator {
     private String jaxbClassNameSuffix;
 
     public SourceGenerator() {
-        this(Collections.<String, String>emptyMap());
+        this(Collections.emptyMap());
     }
 
     public SourceGenerator(Map<String, String> properties) {
-        this.properties = properties;
+        String value = properties.get(LINE_SEP_PROPERTY);
+        lineSeparator = value == null ? SystemPropertyAction.getProperty(LINE_SEP_PROPERTY) : value;
     }
 
     public void setSupportMultipleXmlReps(boolean support) {
@@ -278,23 +265,13 @@ public class SourceGenerator {
     private String getClassPackageName(String wadlPackageName) {
         if (resourcePackageName != null) {
             return resourcePackageName;
-        } else if (wadlPackageName != null && wadlPackageName.length() > 0) {
+        } else if (wadlPackageName != null && !wadlPackageName.isEmpty()) {
             return wadlPackageName;
         } else {
             return DEFAULT_PACKAGE_NAME;
         }
     }
 
-    private String getLineSep() {
-        String value = properties.get(LINE_SEP_PROPERTY);
-        return value == null ? SystemPropertyAction.getProperty(LINE_SEP_PROPERTY) : value;
-    }
-
-    private String getFileSep() {
-        String value = properties.get(FILE_SEP_PROPERTY);
-        return value == null ? SystemPropertyAction.getProperty(FILE_SEP_PROPERTY) : value;
-    }
-
     public void generateSource(File srcDir, String codeType) {
         Application app = readWadl();
         Set<String> typeClassNames = new HashSet<>();
@@ -354,7 +331,7 @@ public class SourceGenerator {
     private Element getResourceElement(Application app, Element resElement,
                                        GrammarInfo gInfo, Set<String> typeClassNames,
                                        String type, File srcDir) {
-        if (type.length() > 0) {
+        if (!type.isEmpty()) {
             if (type.startsWith("#")) {
                 Element resourceType = resolveLocalReference(app.getAppElement(), "resource_type", type);
                 if (resourceType != null) {
@@ -383,7 +360,7 @@ public class SourceGenerator {
 
     private Element getWadlElement(Element wadlEl) {
         String href = wadlEl.getAttribute("href");
-        if (href.length() > 0 && href.startsWith("#")) {
+        if (href.startsWith("#")) {
             return resolveLocalReference(wadlEl.getOwnerDocument().getDocumentElement(),
                                          wadlEl.getLocalName(), href);
         }
@@ -432,7 +409,7 @@ public class SourceGenerator {
                                                                 Constants.URI_2001_SCHEMA_XSD, "element");
         for (Element el : elementEls) {
             String type = el.getAttribute("type");
-            if (type.length() > 0) {
+            if (!type.isEmpty()) {
                 elementTypeMap.put(el.getAttribute("name"), type);
             }
         }
@@ -456,14 +433,14 @@ public class SourceGenerator {
                                     boolean isRoot) {
         String resourceId = resourceName != null
             ? resourceName : rElement.getAttribute("id");
-        if (resourceId.length() == 0) {
+        if (resourceId.isEmpty()) {
             String path = rElement.getAttribute("path");
-            if (path.length() > 0) {
+            if (!path.isEmpty()) {
                 path = path.replaceAll("[\\{\\}_]*", "");
                 String[] split = path.split("/");
                 StringBuilder builder = new StringBuilder(resourceId);
                 for (int i = 0; i < split.length; i++) {
-                    if (split[i].length() > 0) {
+                    if (!split[i].isEmpty()) {
                         builder.append(split[i].toUpperCase().charAt(0)).append(split[i].substring(1));
                     }
                 }
@@ -495,21 +472,22 @@ public class SourceGenerator {
         Set<String> imports = createImports();
 
 
-        sbImports.append(getClassComment()).append(getLineSep());
+        sbImports.append(getClassComment()).append(lineSeparator);
         sbImports.append("package ").append(classPackage)
-            .append(';').append(getLineSep()).append(getLineSep());
+            .append(';').append(lineSeparator).append(lineSeparator);
         boolean doCreateJavaDocs = isJavaDocNeeded(info);
         if (doCreateJavaDocs) {
             writeClassDocs(rElement, sbCode);
         }
         if (isRoot && writeAnnotations(info.isInterfaceGenerated())) {
             String path = rElement.getAttribute("path");
-            writeAnnotation(sbCode, imports, Path.class, path, true, false);
+            writeAnnotation(sbCode, imports, Path.class, path);
+            sbCode.append(lineSeparator);
         }
 
         sbCode.append("public ").append(getClassType(info.interfaceIsGenerated)).append(' ').append(className);
         writeImplementsInterface(sbCode, qname.getLocalPart(), info.isInterfaceGenerated());
-        sbCode.append(" {").append(getLineSep()).append(getLineSep());
+        sbCode.append(" {").append(lineSeparator).append(lineSeparator);
 
         Map<String, Integer> methodNameMap = new HashMap<>();
         writeMethods(rElement, classPackage, imports, sbCode,
@@ -530,7 +508,7 @@ public class SourceGenerator {
         List<Element> childEls = getWadlElements(rElement, "resource");
         for (Element subEl : childEls) {
             String id = subEl.getAttribute("id");
-            if (id.length() > 0 && !resourceId.equals(id) && !id.startsWith("{java")
+            if (!id.isEmpty() && !resourceId.equals(id) && !id.startsWith("{java")
                 && !id.startsWith("java")) {
                 Element subElement = getResourceElement(info.getApp(), subEl, info.getGrammarInfo(),
                     info.getTypeClassNames(), subEl.getAttribute("type"), info.getSrcDir());
@@ -576,14 +554,14 @@ public class SourceGenerator {
     }
 
     private String firstCharToUpperCase(String name) {
-        if (name.length() > 0 && Character.isLowerCase(name.charAt(0))) {
+        if (!name.isEmpty() && Character.isLowerCase(name.charAt(0))) {
             return StringUtils.capitalize(name);
         }
         return name;
     }
 
     private String firstCharToLowerCase(String name) {
-        if (name.length() > 0 && Character.isUpperCase(name.charAt(0))) {
+        if (!name.isEmpty() && Character.isUpperCase(name.charAt(0))) {
             return StringUtils.uncapitalize(name);
         }
         return name;
@@ -605,10 +583,10 @@ public class SourceGenerator {
 
     private String getClassComment() {
         return "/**"
-            + getLineSep() + " * Created by Apache CXF WadlToJava code generator"
-            + getLineSep() + "**/";
+            + lineSeparator + " * Created by Apache CXF WadlToJava code generator"
+            + lineSeparator + "**/";
     }
-    //CHECKSTYLE:OFF
+    //CHECKSTYLE:OFF: ParameterNumber
     private void writeMethods(Element rElement,
                               String classPackage,
                               Set<String> imports,
@@ -618,7 +596,7 @@ public class SourceGenerator {
                               boolean isRoot,
                               String currentPath,
                               Map<String, Integer> methodNameMap) {
-    //CHECKSTYLE:ON
+    //CHECKSTYLE:ON: ParameterNumber
         List<Element> methodEls = getWadlElements(rElement, "method");
 
         List<Element> currentInheritedParams = inheritResourceParams
@@ -638,7 +616,7 @@ public class SourceGenerator {
             }
             String newPath = currentPath + path.replace("//", "/");
             String id = childEl.getAttribute("id");
-            if (id.length() == 0) {
+            if (id.isEmpty()) {
                 writeMethods(childEl, classPackage, imports, sbCode, info, id, false, newPath, methodNameMap);
             } else {
                 writeResourceMethod(childEl, classPackage, imports, sbCode, info, false, newPath, methodNameMap);
@@ -648,9 +626,8 @@ public class SourceGenerator {
         info.getInheritedParams().addAll(currentInheritedParams);
     }
 
-    private void writeAnnotation(StringBuilder sbCode, Set<String> imports,
-                                 Class<?> cls, String value, boolean nextLine, boolean addTab) {
-        if (value != null && value.length() == 0) {
+    private void writeAnnotation(StringBuilder sbCode, Set<String> imports, Class<?> cls, String value) {
+        if (value != null && value.isEmpty()) {
             return;
         }
         addImport(imports, cls.getName());
@@ -658,12 +635,6 @@ public class SourceGenerator {
         if (value != null) {
             sbCode.append("(\"").append(value).append("\")");
         }
-        if (nextLine) {
-            sbCode.append(getLineSep());
-            if (addTab) {
-                sbCode.append(TAB);
-            }
-        }
     }
 
     private void addImport(Set<String> imports, String clsName) {
@@ -681,11 +652,11 @@ public class SourceGenerator {
             if (index != -1 && clsName.substring(0, index).equals(classPackage)) {
                 continue;
             }
-            sbImports.append("import ").append(clsName).append(';').append(getLineSep());
+            sbImports.append("import ").append(clsName).append(';').append(lineSeparator);
         }
     }
 
-    //CHECKSTYLE:OFF
+    //CHECKSTYLE:OFF: ParameterNumber
     private void writeResourceMethod(Element methodEl,
                                      String classPackage,
                                      Set<String> imports,
@@ -694,7 +665,7 @@ public class SourceGenerator {
                                      boolean isRoot,
                                      String currentPath,
                                      Map<String, Integer> methodNameMap) {
-    //CHECKSTYLE:ON
+    //CHECKSTYLE:ON: ParameterNumber
         StringBuilder sbMethodCode = sbCode;
         StringBuilder sbMethodDocs = null;
         StringBuilder sbMethodRespDocs = null;
@@ -758,10 +729,11 @@ public class SourceGenerator {
             if (writeAnnotations(info.isInterfaceGenerated())) {
                 sbMethodCode.append(TAB);
 
-                if (methodNameLowerCase.length() > 0) {
+                if (!methodNameLowerCase.isEmpty()) {
                     if (HTTP_METHOD_ANNOTATIONS.containsKey(methodNameLowerCase)) {
                         writeAnnotation(sbMethodCode, imports,
-                                        HTTP_METHOD_ANNOTATIONS.get(methodNameLowerCase), null, true, true);
+                                        HTTP_METHOD_ANNOTATIONS.get(methodNameLowerCase), null);
+                        sbMethodCode.append(lineSeparator).append(TAB);
                     } else {
                         writeCustomHttpMethod(info, classPackage, methodName, sbMethodCode, imports);
                     }
@@ -772,18 +744,19 @@ public class SourceGenerator {
                     if (supportBeanValidation && !responseRequired
                         && isRepWithElementAvailable(responseReps, info.getGrammarInfo())) {
                         addImport(imports, BEAN_VALID_FULL_NAME);
-                        sbMethodCode.append('@').append(BEAN_VALID_SIMPLE_NAME).append(getLineSep()).append(TAB);
+                        sbMethodCode.append('@').append(BEAN_VALID_SIMPLE_NAME).append(lineSeparator).append(TAB);
                     }
                     if (oneway) {
                         addImport(imports, Oneway.class.getName());
-                        sbMethodCode.append('@').append(Oneway.class.getSimpleName()).append(getLineSep()).append(TAB);
+                        sbMethodCode.append('@').append(Oneway.class.getSimpleName()).append(lineSeparator).append(TAB);
                     }
                 }
                 if (!isRoot && !"/".equals(currentPath)) {
-                    writeAnnotation(sbMethodCode, imports, Path.class, currentPath, true, true);
+                    writeAnnotation(sbMethodCode, imports, Path.class, currentPath);
+                    sbMethodCode.append(lineSeparator).append(TAB);
                 }
             } else {
-                sbMethodCode.append(getLineSep()).append(TAB);
+                sbMethodCode.append(lineSeparator).append(TAB);
             }
 
             if (!info.isInterfaceGenerated()) {
@@ -791,7 +764,7 @@ public class SourceGenerator {
             }
             boolean responseTypeAvailable = true;
 
-            if (methodNameLowerCase.length() > 0) {
+            if (!methodNameLowerCase.isEmpty()) {
                 responseTypeAvailable = writeResponseType(responseEls,
                                                           requestRepWithElement,
                                                           sbMethodCode,
@@ -834,7 +807,7 @@ public class SourceGenerator {
             sbMethodCode.append('(');
 
             List<Element> inParamElements = getParameters(resourceEl, info.getInheritedParams(),
-                        !isRoot && !isResourceElement && resourceEl.getAttribute("id").length() > 0);
+                        !isRoot && !isResourceElement && !resourceEl.getAttribute("id").isEmpty());
 
             Element repElement = getActualRepElement(allRequestReps, requestRepWithElement);
             writeRequestTypes(firstRequestEl, classPackage, repElement, inParamElements,
@@ -848,7 +821,7 @@ public class SourceGenerator {
             } else {
                 generateEmptyMethodBody(sbMethodCode, responseTypeAvailable);
             }
-            sbMethodCode.append(getLineSep()).append(getLineSep());
+            sbMethodCode.append(lineSeparator).append(lineSeparator);
         }
         finalizeMethodDocs(doCreateJavaDocs, sbCode, sbMethodDocs, sbMethodRespDocs, sbMethodCode);
 
@@ -877,20 +850,20 @@ public class SourceGenerator {
         if (tab) {
             sbDoc.append(TAB);
         }
-        sbDoc.append("/**").append(getLineSep());
+        sbDoc.append("/**").append(lineSeparator);
         if (tab) {
             sbDoc.append(TAB);
         }
     }
 
     private void closeJavaDocs(StringBuilder sbDoc) {
-        sbDoc.append(" */").append(getLineSep());
+        sbDoc.append(" */").append(lineSeparator);
     }
     private void writeClassDocs(Element resourceEl, StringBuilder sbDoc) {
         String text = getDocText(resourceEl);
         if (text != null) {
             openJavaDocs(sbDoc, false);
-            sbDoc.append(" * ").append(text).append(getLineSep());
+            sbDoc.append(" * ").append(text).append(lineSeparator);
             closeJavaDocs(sbDoc);
         }
     }
@@ -898,7 +871,7 @@ public class SourceGenerator {
         StringBuilder sbDoc = new StringBuilder();
         String text = getDocText(methodEl);
         if (text != null) {
-            sbDoc.append(" * ").append(text).append(getLineSep()).append(TAB);
+            sbDoc.append(" * ").append(text).append(lineSeparator).append(TAB);
         }
         return sbDoc;
     }
@@ -907,21 +880,21 @@ public class SourceGenerator {
         String text = getDocText(paramEl);
         if (text != null) {
             sbDoc.append(" * @param ").append(name).append(' ').append(text)
-                .append(getLineSep()).append(TAB);
+                .append(lineSeparator).append(TAB);
         }
     }
 
     private void writeMethodThrowsDocs(Element paramEl, String name, StringBuilder sbDoc) {
         String text = getDocText(paramEl);
         if (text != null) {
-            sbDoc.append(" * @throws ").append(name).append(' ').append(text).append(getLineSep()).append(TAB);
+            sbDoc.append(" * @throws ").append(name).append(' ').append(text).append(lineSeparator).append(TAB);
         }
     }
 
     private void writeMethodResponseDocs(Element responseEl, StringBuilder sbDoc) {
         String text = getDocText(responseEl);
         if (text != null) {
-            sbDoc.append(" * @return ").append(text).append(getLineSep()).append(TAB);
+            sbDoc.append(" * @return ").append(text).append(lineSeparator).append(TAB);
         }
     }
 
@@ -940,7 +913,7 @@ public class SourceGenerator {
                                        Set<String> mainImports) {
 
         mainCode.append('@').append(methodName);
-        mainCode.append(getLineSep());
+        mainCode.append(lineSeparator);
         mainCode.append(TAB);
 
         final String className = methodName;
@@ -951,22 +924,22 @@ public class SourceGenerator {
 
 
         StringBuilder sbMethodClassImports = new StringBuilder(256);
-        sbMethodClassImports.append(getClassComment()).append(getLineSep());
+        sbMethodClassImports.append(getClassComment()).append(lineSeparator);
         sbMethodClassImports.append("package ").append(classPackage)
-            .append(';').append(getLineSep()).append(getLineSep());
+            .append(';').append(lineSeparator).append(lineSeparator);
 
-        sbMethodClassImports.append("import java.lang.annotation.ElementType;").append(getLineSep());
-        sbMethodClassImports.append("import java.lang.annotation.Retention;").append(getLineSep());
-        sbMethodClassImports.append("import java.lang.annotation.RetentionPolicy;").append(getLineSep());
-        sbMethodClassImports.append("import java.lang.annotation.Target;").append(getLineSep());
-        sbMethodClassImports.append("import javax.ws.rs.HttpMethod;").append(getLineSep());
+        sbMethodClassImports.append("import java.lang.annotation.ElementType;").append(lineSeparator);
+        sbMethodClassImports.append("import java.lang.annotation.Retention;").append(lineSeparator);
+        sbMethodClassImports.append("import java.lang.annotation.RetentionPolicy;").append(lineSeparator);
+        sbMethodClassImports.append("import java.lang.annotation.Target;").append(lineSeparator);
+        sbMethodClassImports.append("import javax.ws.rs.HttpMethod;").append(lineSeparator);
 
         StringBuilder sbMethodClassCode = new StringBuilder(256);
-        sbMethodClassCode.append("@Target({ElementType.METHOD })").append(getLineSep());
-        sbMethodClassCode.append("@Retention(RetentionPolicy.RUNTIME)").append(getLineSep());
-        sbMethodClassCode.append("@HttpMethod(\"").append(methodName).append("\")").append(getLineSep());
+        sbMethodClassCode.append("@Target({ElementType.METHOD })").append(lineSeparator);
+        sbMethodClassCode.append("@Retention(RetentionPolicy.RUNTIME)").append(lineSeparator);
+        sbMethodClassCode.append("@HttpMethod(\"").append(methodName).append("\")").append(lineSeparator);
         sbMethodClassCode.append("public @interface ").append(methodName);
-        sbMethodClassCode.append(" {").append(getLineSep()).append(getLineSep());
+        sbMethodClassCode.append(" {").append(lineSeparator).append(lineSeparator);
         sbMethodClassCode.append('}');
         createJavaSourceFile(info.getSrcDir(), new QName(classPackage, className),
                              sbMethodClassCode, sbMethodClassImports, true);
@@ -1016,7 +989,7 @@ public class SourceGenerator {
         Set<String> elementRefs = new HashSet<>();
         for (Element el : repElements) {
             String value = el.getAttribute("element");
-            if (value.length() > 0
+            if (!value.isEmpty()
                 && (value.contains(":") || gInfo.isSchemaWithoutTargetNamespace())) {
                 requestRepsWithElements.add(el);
                 if (!elementRefs.add(value)) {
@@ -1034,7 +1007,7 @@ public class SourceGenerator {
                                               GrammarInfo gInfo) {
         for (Element el : repElements) {
             String value = el.getAttribute("element");
-            if (value.length() > 0
+            if (!value.isEmpty()
                 && (value.contains(":") || gInfo.isSchemaWithoutTargetNamespace())) {
                 return true;
             }
@@ -1095,10 +1068,10 @@ public class SourceGenerator {
 
     private void generateEmptyMethodBody(StringBuilder sbCode, boolean responseTypeAvailable) {
         sbCode.append(" {");
-        sbCode.append(getLineSep()).append(TAB).append(TAB);
-        sbCode.append("//TODO: implement").append(getLineSep()).append(TAB);
+        sbCode.append(lineSeparator).append(TAB).append(TAB);
+        sbCode.append("//TODO: implement").append(lineSeparator).append(TAB);
         if (responseTypeAvailable) {
-            sbCode.append(TAB).append("return null;").append(getLineSep()).append(TAB);
+            sbCode.append(TAB).append("return null;").append(lineSeparator).append(TAB);
         }
         sbCode.append('}');
     }
@@ -1130,7 +1103,7 @@ public class SourceGenerator {
         }
         return repElements.isEmpty() ? null : repElements.get(0);
     }
-    //CHECKSTYLE:OFF
+    //CHECKSTYLE:OFF: ParameterNumber
     private boolean writeResponseType(List<Element> responseEls,
                                       Element requestRepWithElement,
                                       StringBuilder sbCode,
@@ -1139,17 +1112,17 @@ public class SourceGenerator {
                                       ContextInfo info,
                                       boolean responseRequired,
                                       boolean suspendedAsync) {
-    //CHECKSTYLE:ON
+    //CHECKSTYLE:ON: ParameterNumber
         Element okResponse = !suspendedAsync ? getOKResponse(responseEls) : null;
 
-        List<Element> repElements = null;
+        final List<Element> repElements;
         if (okResponse != null) {
             if (sbRespDocs != null) {
                 writeMethodResponseDocs(okResponse, sbRespDocs);
             }
             repElements = getWadlElements(okResponse, "representation");
         } else {
-            repElements = CastUtils.cast(Collections.emptyList(), Element.class);
+            repElements = Collections.emptyList();
         }
         if (!suspendedAsync && !responseRequired && responseEls.size() == 1 && generateResponseIfHeadersSet) {
             List<Element> outResponseParamElements =
@@ -1239,12 +1212,12 @@ public class SourceGenerator {
 
     private void writeSubResponseType(boolean recursive, String ns, String localName,
                                       StringBuilder sbCode, Set<String> imports) {
-        if (!recursive && ns.length() > 0) {
-            addImport(imports, ns + "." + localName);
+        if (!recursive && !ns.isEmpty()) {
+            addImport(imports, ns + '.' + localName);
         }
         sbCode.append(localName).append(' ');
     }
-    //CHECKSTYLE:OFF
+    //CHECKSTYLE:OFF: ParameterNumber
     private void writeRequestTypes(Element requestEl, //NOPMD
                                    String classPackage,
                                    Element repElement,
@@ -1255,7 +1228,7 @@ public class SourceGenerator {
                                    Set<String> imports,
                                    ContextInfo info,
                                    boolean suspendedAsync) {
-    //CHECKSTYLE:ON
+    //CHECKSTYLE:ON: ParameterNumber
         boolean form = false;
         boolean multipart = false;
         boolean formOrMultipartParamsAvailable = false;
@@ -1295,15 +1268,15 @@ public class SourceGenerator {
             if (writeAnnotations) {
                 String required = paramEl.getAttribute("required");
                 if (Multipart.class.equals(paramAnn) && "false".equals(required)) {
-                    writeAnnotation(sbCode, imports, paramAnn, null, false, false);
+                    writeAnnotation(sbCode, imports, paramAnn, null);
                     sbCode.append("(value = \"").append(name).append("\", required = false").append(')');
                 } else {
-                    writeAnnotation(sbCode, imports, paramAnn, name, false, false);
+                    writeAnnotation(sbCode, imports, paramAnn, name);
                 }
                 sbCode.append(' ');
                 String defaultVal = paramEl.getAttribute("default");
-                if (defaultVal.length() > 0) {
-                    writeAnnotation(sbCode, imports, DefaultValue.class, defaultVal, false, false);
+                if (!defaultVal.isEmpty()) {
+                    writeAnnotation(sbCode, imports, DefaultValue.class, defaultVal);
                     sbCode.append(' ');
                 }
             }
@@ -1327,7 +1300,7 @@ public class SourceGenerator {
             if (i + 1 < inParamEls.size()) {
                 sbCode.append(", ");
                 if (i + 1 >= 4 && ((i + 1) % 4) == 0) {
-                    sbCode.append(getLineSep()).append(TAB).append(TAB).append(TAB).append(TAB);
+                    sbCode.append(lineSeparator).append(TAB).append(TAB).append(TAB).append(TAB);
                 }
             }
             if (sbMethodDocs != null) {
@@ -1425,9 +1398,9 @@ public class SourceGenerator {
     private void generateEnumClass(String clsName, List<Element> options, File src, String classPackage) {
         StringBuilder sbImports = new StringBuilder(64);
         StringBuilder sbCode = new StringBuilder(512);
-        sbImports.append(getClassComment()).append(getLineSep());
+        sbImports.append(getClassComment()).append(lineSeparator);
         sbImports.append("package ").append(classPackage)
-            .append(';').append(getLineSep()).append(getLineSep());
+            .append(';').append(lineSeparator).append(lineSeparator);
 
         sbCode.append("public enum ").append(clsName);
         openBlock(sbCode);
@@ -1441,13 +1414,13 @@ public class SourceGenerator {
             } else {
                 sbCode.append(';');
             }
-            sbCode.append(getLineSep());
+            sbCode.append(lineSeparator);
         }
 
-        sbCode.append(TAB).append("private String value;").append(getLineSep());
+        sbCode.append(TAB).append("private String value;").append(lineSeparator);
         sbCode.append(TAB).append("private ").append(clsName).append("(String v)");
         openBlock(sbCode);
-        tab(sbCode, 2).append("this.value = v;").append(getLineSep());
+        tab(sbCode, 2).append("this.value = v;").append(lineSeparator);
         tabCloseBlock(sbCode, 1);
 
         sbCode.append(TAB).append("public static ")
@@ -1464,12 +1437,12 @@ public class SourceGenerator {
         sbCode.append("if (value.equalsIgnoreCase(v.value))");
         openBlock(sbCode);
         tab(sbCode, 5);
-        sbCode.append("return v;").append(getLineSep());
+        sbCode.append("return v;").append(lineSeparator);
         tabCloseBlock(sbCode, 4);
         tabCloseBlock(sbCode, 3);
         tabCloseBlock(sbCode, 2);
         tab(sbCode, 2);
-        sbCode.append("throw new IllegalArgumentException();").append(getLineSep());
+        sbCode.append("throw new IllegalArgumentException();").append(lineSeparator);
         tabCloseBlock(sbCode, 1);
         sbCode.append('}');
         createJavaSourceFile(src, new QName(classPackage, clsName), sbCode, sbImports, false);
@@ -1483,12 +1456,12 @@ public class SourceGenerator {
     }
 
     private StringBuilder tabCloseBlock(StringBuilder sb, int count) {
-        tab(sb, count).append('}').append(getLineSep());
+        tab(sb, count).append('}').append(lineSeparator);
         return sb;
     }
 
     private StringBuilder openBlock(StringBuilder sb) {
-        sb.append(" {").append(getLineSep());
+        sb.append(" {").append(lineSeparator);
         return sb;
     }
 
@@ -1520,7 +1493,7 @@ public class SourceGenerator {
     private String getPrimitiveType(Element paramEl, ContextInfo info, Set<String> imports) {
         final String defaultValue = "String";
         String type = paramEl.getAttribute("type");
-        if (type.length() == 0) {
+        if (type.isEmpty()) {
             return defaultValue;
         }
 
@@ -1609,7 +1582,7 @@ public class SourceGenerator {
         }
         String elementRef = repElement.getAttribute("element");
 
-        if (elementRef.length() > 0) {
+        if (!elementRef.isEmpty()) {
             String[] pair = elementRef.split(":");
             if (pair.length == 2
                 || pair.length == 1 && info.getGrammarInfo().isSchemaWithoutTargetNamespace()) {
@@ -1660,12 +1633,12 @@ public class SourceGenerator {
                     if (namespace != null) {
                         packageName = getPackageFromNamespace(namespace);
                         clsName = matchClassName(typeClassNames, packageName, elementTypeName);
-                        //CHECKSTYLE:OFF
+                        //CHECKSTYLE:OFF: NestedIfDepth
                         if (clsName == null && jaxbClassNameSuffix != null) {
                             clsName = matchClassName(typeClassNames, packageName,
                                                      elementTypeName + jaxbClassNameSuffix);
                         }
-                        //CHECKSTYLE:ON
+                        //CHECKSTYLE:ON: NestedIfDepth
                     }
                 }
 
@@ -1730,7 +1703,7 @@ public class SourceGenerator {
             sbCode.append(" }");
         }
         sbCode.append(')');
-        sbCode.append(getLineSep()).append(TAB);
+        sbCode.append(lineSeparator).append(TAB);
     }
 
     private void writeThrows(List<Element> responseEls, StringBuilder sbCode, StringBuilder sbMethodDocs,
@@ -1761,30 +1734,23 @@ public class SourceGenerator {
 
     private void createJavaSourceFile(File src, QName qname, StringBuilder sbCode, StringBuilder sbImports,
                                       boolean serviceClass) {
-        String content = sbImports.toString() + getLineSep() + sbCode.toString();
-
         String namespace = qname.getNamespaceURI();
         if (serviceClass) {
-            generatedServiceClasses.add(namespace + "." + qname.getLocalPart());
-        }
-
-        namespace = namespace.replace(".", getFileSep());
-
-        File currentDir = new File(src.getAbsolutePath(), namespace);
-        currentDir.mkdirs();
-        File file = new File(currentDir.getAbsolutePath(), qname.getLocalPart() + ".java");
-
-        try {
-            file.createNewFile();
-            try (Writer writer = new OutputStreamWriter(Files.newOutputStream(file.toPath()),
-                                                encoding == null ? StandardCharsets.UTF_8.name() : encoding)) {
-                writer.write(content);
-                writer.flush();
-            }
-        } catch (FileNotFoundException ex) {
-            LOG.warning(file.getAbsolutePath() + " is not found");
+            generatedServiceClasses.add(namespace + '.' + qname.getLocalPart());
+        }
+
+        java.nio.file.Path currentDir = src.toPath().resolve(namespace.replace('.', File.separatorChar));
+        try (Writer writer = Files.newBufferedWriter(
+            Files.createDirectories(currentDir).resolve(qname.getLocalPart() + ".java"),
+            encoding == null ? StandardCharsets.UTF_8 : Charset.forName(encoding))) {
+            writer.write(sbImports.toString());
+            writer.write(lineSeparator);
+            writer.write(sbCode.toString());
+            writer.flush();
+        } catch (java.nio.file.NoSuchFileException ex) {
+            LOG.warning(ex.getMessage() + " is not found");
         } catch (IOException ex) {
-            LOG.warning("Problem writing into " + file.getAbsolutePath());
+            LOG.warning("Problem writing into " + ex.getMessage());
         }
     }