diff --git a/.automation/test/java/README.md b/.automation/test/java/README.md
new file mode 100644
index 00000000..c51155cc
--- /dev/null
+++ b/.automation/test/java/README.md
@@ -0,0 +1,19 @@
+# Java Test Cases
+
+This folder holds the test cases for **Java**.
+
+## Additional Docs
+
+No Additional information is needed for this test case.
+
+## Good Test Cases
+
+The test cases denoted: `LANGUAGE_good_FILE.EXTENSION` are all valid, and should pass successfully when linted.
+
+- **Note:** They are linted utilizing the default linter rules.
+
+## Bad Test Cases
+
+The test cases denoted: `LANGUAGE_bad_FILE.EXTENSION` are **NOT** valid, and should trigger errors when linted.
+
+- **Note:** They are linted utilizing the default linter rules.
diff --git a/.automation/test/java/java_bad_1.java b/.automation/test/java/java_bad_1.java
new file mode 100644
index 00000000..6d3c5be1
--- /dev/null
+++ b/.automation/test/java/java_bad_1.java
@@ -0,0 +1,11 @@
+/* This is a simple Java program.
+ FileName : "HelloWorld.java". */
+class HelloWorld
+{
+ // Your program begins with a call to main().
+ // Prints "Hello, World" to the terminal window.
+ public static void main(String args[])
+ {
+ System.out.println("Hello, World)
+ }
+}
diff --git a/.automation/test/java/java_good_1.java b/.automation/test/java/java_good_1.java
new file mode 100644
index 00000000..2d789a3e
--- /dev/null
+++ b/.automation/test/java/java_good_1.java
@@ -0,0 +1,11 @@
+/* This is a simple Java program.
+ FileName : "HelloWorld.java". */
+class java_good
+{
+ // Your program begins with a call to main().
+ // Prints "Hello, World" to the terminal window.
+ public static void main(String args[])
+ {
+ System.out.println("Hello, World");
+ }
+}
diff --git a/.github/linters/sun_checks.xml b/.github/linters/sun_checks.xml
new file mode 100644
index 00000000..adfd1b1c
--- /dev/null
+++ b/.github/linters/sun_checks.xml
@@ -0,0 +1,198 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/TEMPLATES/sun_checks.xml b/TEMPLATES/sun_checks.xml
new file mode 100644
index 00000000..adfd1b1c
--- /dev/null
+++ b/TEMPLATES/sun_checks.xml
@@ -0,0 +1,198 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/disabling-linters.md b/docs/disabling-linters.md
index 00b246a2..455f37f2 100644
--- a/docs/disabling-linters.md
+++ b/docs/disabling-linters.md
@@ -29,6 +29,7 @@ For some linters it is also possible to override rules on a case by case level w
- [Golang](#golang)
- [Groovy](#groovy)
- [HTML](#html)
+ - [Java](#java)
- [Javascript eslint](#javascript-eslint)
- [Javascript standard](#javascript-standard)
- [JSON](#json)
@@ -461,6 +462,27 @@ def variable = 1;
---
+## Java
+
+- [checkstyle](https://github.com/checkstyle/checkstyle)
+
+### Java Config file
+
+- `.github/linters/sun_checks.xml`
+- You can pass multiple rules and overwrite default rules
+- File should be located at: `.github/linters/sun_checks.xml`
+
+### Java disable single line
+- There is currently **No** way to disable rules inline of the file(s)
+
+### Java disable code block
+- There is currently **No** way to disable rules inline of the file(s)
+
+### Java disable entire file
+- There is currently **No** way to disable rules inline of the file(s)
+
+---
+
## Javascript eslint
- [eslint](https://eslint.org/)
diff --git a/lib/buildFileList.sh b/lib/buildFileList.sh
index d98e7e6f..c878a3be 100755
--- a/lib/buildFileList.sh
+++ b/lib/buildFileList.sh
@@ -275,6 +275,18 @@ function BuildFileList() {
# Set the READ_ONLY_CHANGE_FLAG since this could be exec #
##########################################################
READ_ONLY_CHANGE_FLAG=1
+ ######################
+ # Get the Java files #
+ ######################
+ elif [ "${FILE_TYPE}" == "java" ]; then
+ ################################
+ # Append the file to the array #
+ ################################
+ FILE_ARRAY_JAVA+=("${FILE}")
+ ##########################################################
+ # Set the READ_ONLY_CHANGE_FLAG since this could be exec #
+ ##########################################################
+ READ_ONLY_CHANGE_FLAG=1
############################
# Get the JavaScript files #
############################
diff --git a/lib/linter.sh b/lib/linter.sh
index 137ab107..7671b0fd 100755
--- a/lib/linter.sh
+++ b/lib/linter.sh
@@ -60,6 +60,9 @@ GROOVY_LINTER_RULES="${DEFAULT_RULES_LOCATION}/${GROOVY_FILE_NAME}" # Path to th
# HTML Vars
HTML_FILE_NAME='.htmlhintrc' # Name of the file
HTML_LINTER_RULES="${DEFAULT_RULES_LOCATION}/${HTML_FILE_NAME}" # Path to the CSS lint rules
+# Java Vars
+JAVA_FILE_NAME="sun_checks.xml" # Name of the Java config file
+JAVA_LINTER_RULES="${DEFAULT_RULES_LOCATION}/${JAVA_FILE_NAME}" # Path to the Java lint rules
# Javascript Vars
JAVASCRIPT_FILE_NAME="${JAVASCRIPT_ES_CONFIG_FILE:-.eslintrc.yml}" # Name of the file
JAVASCRIPT_LINTER_RULES="${DEFAULT_RULES_LOCATION}/${JAVASCRIPT_FILE_NAME}" # Path to the Javascript lint rules
@@ -1132,6 +1135,8 @@ GetLinterRules "GO"
GetLinterRules "GROOVY"
# Get HTML rules
GetLinterRules "HTML"
+# get Java rules
+etLinterRules "JAVA"
# Get JavaScript rules
GetLinterRules "JAVASCRIPT"
# Get LUA rules
@@ -1402,6 +1407,17 @@ if [ "${VALIDATE_HTML}" == "true" ]; then
LintCodebase "HTML" "htmlhint" "htmlhint --config ${HTML_LINTER_RULES}" ".*\.\(html\)\$" "${FILE_ARRAY_HTML[@]}"
fi
+################
+# JAVA LINTING #
+################
+if [ "$VALIDATE_JAVA" == "true" ]; then
+ #######################
+ # Lint the JAVA files #
+ #######################
+ # LintCodebase "FILE_TYPE" "LINTER_NAME" "LINTER_CMD" "FILE_TYPES_REGEX" "FILE_ARRAY"
+ LintCodebase "JAVA" "checkstyle" "java -jar /usr/bin/checksytle.jar -c ${JAVA_LINTER_RULES}" ".*\.\(java\)\$" "${FILE_ARRAY_JAVA[@]}"
+fi
+
######################
# JAVASCRIPT LINTING #
######################
@@ -1450,17 +1466,6 @@ if [ "${VALIDATE_JSX}" == "true" ]; then
LintCodebase "JSX" "eslint" "eslint --no-eslintrc -c ${JAVASCRIPT_LINTER_RULES}" ".*\.\(jsx\)\$" "${FILE_ARRAY_JSX[@]}"
fi
-################
-# JAVA LINTING #
-################
-if [ "$VALIDATE_JAVA" == "true" ]; then
- #######################
- # Lint the JAVA files #
- #######################
- # LintCodebase "FILE_TYPE" "LINTER_NAME" "LINTER_CMD" "FILE_TYPES_REGEX" "FILE_ARRAY"
- LintCodebase "JAVA" "checkstyle" "java -jar /usr/bin/checksytle.jar -c sun_checks.xml" ".*\.\(java\)\$" "${FILE_ARRAY_JAVA[@]}"
-fi
-
##################
# KOTLIN LINTING #
##################
diff --git a/lib/worker.sh b/lib/worker.sh
index 8caefd05..ba7d9f15 100755
--- a/lib/worker.sh
+++ b/lib/worker.sh
@@ -583,6 +583,7 @@ function RunTestCases() {
TestCodebase "GO" "golangci-lint" "golangci-lint run -c ${GO_LINTER_RULES}" ".*\.\(go\)\$" "golang"
TestCodebase "GROOVY" "npm-groovy-lint" "npm-groovy-lint -c $GROOVY_LINTER_RULES --failon error" ".*\.\(groovy\|jenkinsfile\|gradle\)\$" "groovy"
TestCodebase "HTML" "htmlhint" "htmlhint --config ${HTML_LINTER_RULES}" ".*\.\(html\)\$" "html"
+ TestCodebase "JAVA" "checkstyle" "java -jar /usr/bin/checksytle.jar -c ${JAVA_LINTER_RULES}" ".*\.\(java\)\$" "java"
TestCodebase "JAVASCRIPT_ES" "eslint" "eslint --no-eslintrc -c ${JAVASCRIPT_LINTER_RULES}" ".*\.\(js\)\$" "javascript"
TestCodebase "JAVASCRIPT_STANDARD" "standard" "standard ${JAVASCRIPT_STANDARD_LINTER_RULES}" ".*\.\(js\)\$" "javascript"
TestCodebase "JSON" "jsonlint" "jsonlint" ".*\.\(json\)\$" "json"