[MEJB-130] Accept ejbVersion 4.x (#11)

* IT for EJB 4

* Synchronize comment with code

* Accept ejb version 4

* Fix CS:LineLength

* Extract ejb version validation method

* UTs for ejbVersion validation

* Remove IT

Co-authored-by: Piotrek Żygieło <pzygielo@users.noreply.github.com>
diff --git a/src/main/java/org/apache/maven/plugins/ejb/EjbMojo.java b/src/main/java/org/apache/maven/plugins/ejb/EjbMojo.java
index 205f937..6ac6cf4 100644
--- a/src/main/java/org/apache/maven/plugins/ejb/EjbMojo.java
+++ b/src/main/java/org/apache/maven/plugins/ejb/EjbMojo.java
@@ -194,8 +194,8 @@
     private JarArchiver jarArchiver;
 
     /**
-     * What EJB version should the EJB Plugin generate? Valid values are "2.x" or "3.x" (where x is a digit). When
-     * ejbVersion is "3.x", the <code>ejb-jar.xml</code> file is optional.
+     * What EJB version should the EJB Plugin generate? Valid values are "2.x", "3.x" or "4.x" (where x is a digit).
+     * When ejbVersion is "2.x", the <code>ejb-jar.xml</code> file is mandatory.
      * <p/>
      * Usage:
      * 
@@ -462,14 +462,20 @@
         return clientJarFile;
     }
 
+    static void validateEjbVersion( String ejbVersion )
+        throws MojoExecutionException
+    {
+        if ( !ejbVersion.matches( "\\A[2-4]\\.[0-9]\\z" ) )
+        {
+            throw new MojoExecutionException( "ejbVersion is not valid: " + ejbVersion
+                + ". Must be 2.x, 3.x or 4.x (where x is a digit)" );
+        }
+    }
+
     private void checkEJBVersionCompliance( File deploymentDescriptor )
         throws MojoExecutionException
     {
-        if ( !ejbVersion.matches( "\\A[2-3]\\.[0-9]\\z" ) )
-        {
-            throw new MojoExecutionException( "ejbVersion is not valid: " + ejbVersion
-                + ". Must be 2.x or 3.x (where x is a digit)" );
-        }
+        validateEjbVersion( ejbVersion );
 
         if ( ejbVersion.matches( "\\A2\\.[0-9]\\z" ) && !deploymentDescriptor.exists() )
         {
diff --git a/src/test/java/org/apache/maven/plugins/ejb/EjbMojoTest.java b/src/test/java/org/apache/maven/plugins/ejb/EjbMojoTest.java
index 89e6c70..c6225be 100644
--- a/src/test/java/org/apache/maven/plugins/ejb/EjbMojoTest.java
+++ b/src/test/java/org/apache/maven/plugins/ejb/EjbMojoTest.java
@@ -513,6 +513,36 @@
         assertJarCreation( project, true, false );
     }
 
+    public void testEjb1VersionValidation()
+    {
+        try
+        {
+            EjbMojo.validateEjbVersion( "1.1" );
+            fail( "MojoException is expected" );
+        }
+        catch ( MojoExecutionException mex )
+        {
+        }
+    }
+
+    public void testEjb2VersionValidation()
+        throws MojoExecutionException
+    {
+        EjbMojo.validateEjbVersion( "2.1" );
+    }
+
+    public void testEjb3VersionValidation()
+        throws MojoExecutionException
+    {
+        EjbMojo.validateEjbVersion( "3.2" );
+    }
+
+    public void testEjb4VersionValidation()
+        throws MojoExecutionException
+    {
+        EjbMojo.validateEjbVersion( "4.0" );
+    }
+
     protected EjbMojo lookupMojo()
         throws Exception
     {