Author: jlaskowski
Date: Sun Dec  9 11:09:08 2007
New Revision: 602721

URL: http://svn.apache.org/viewvc?rev=602721&view=rev
Log:
OPENEJB-732 New command line option - validate

Partial implementation (needs more testing before claiming it's finished)

Added:
    
openejb/trunk/openejb3/container/openejb-core/src/main/resources/META-INF/org.apache.openejb.cli/validate
      - copied, changed from r602702, 
openejb/trunk/openejb3/container/openejb-core/src/main/resources/META-INF/org.apache.openejb.cli/validate.disabled
Removed:
    
openejb/trunk/openejb3/container/openejb-core/src/main/resources/META-INF/org.apache.openejb.cli/validate.disabled
Modified:
    
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AppValidator.java

Modified: 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AppValidator.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AppValidator.java?rev=602721&r1=602720&r2=602721&view=diff
==============================================================================
--- 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AppValidator.java
 (original)
+++ 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AppValidator.java
 Sun Dec  9 11:09:08 2007
@@ -16,9 +16,20 @@
  */
 package org.apache.openejb.config;
 
-import java.util.Vector;
-
+import java.io.File;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.commons.cli.CommandLine;
+import org.apache.commons.cli.CommandLineParser;
+import org.apache.commons.cli.HelpFormatter;
+import org.apache.commons.cli.Option;
+import org.apache.commons.cli.OptionBuilder;
+import org.apache.commons.cli.Options;
+import org.apache.commons.cli.ParseException;
+import org.apache.commons.cli.PosixParser;
 import org.apache.openejb.OpenEJBException;
+import org.apache.openejb.cli.SystemExitException;
 import org.apache.openejb.config.rules.CheckClasses;
 import org.apache.openejb.config.rules.CheckMethods;
 import org.apache.openejb.config.rules.CheckAssemblyBindings;
@@ -26,7 +37,11 @@
 import org.apache.openejb.config.rules.CheckInjectionTargets;
 import org.apache.openejb.config.rules.CheckPersistenceRefs;
 import org.apache.openejb.util.Messages;
+import org.apache.openejb.util.OpenEjbVersion;
 
+/**
+ * @version $Rev$ $Date$
+ */
 public class AppValidator {
 
     protected static final Messages _messages = new 
Messages("org.apache.openejb.config.rules");
@@ -36,7 +51,7 @@
     boolean PRINT_WARNINGS = true;
     boolean PRINT_COUNT = false;
 
-    private Vector sets = new Vector();
+    private List<ValidationResults> sets = new ArrayList<ValidationResults>();
 
     /*------------------------------------------------------*/
     /*    Constructors                                      */
@@ -57,8 +72,7 @@
 
     public ValidationResults[] getValidationResultsSets() {
         ValidationResults[] ejbSets = new ValidationResults[sets.size()];
-        sets.copyInto(ejbSets);
-        return ejbSets;
+        return sets.toArray(ejbSets);
     }
 
     public AppModule validate(final AppModule appModule) {
@@ -195,6 +209,66 @@
                 }
             }
         }
+    }
+    
+    public static void main(String[] args) throws SystemExitException {
+        CommandLineParser parser = new PosixParser();
+
+        // create the Options
+        Options options = new Options();
+        options.addOption(AppValidator.option("v", "version", 
"cmd.validate.opt.version"));
+        options.addOption(AppValidator.option("h", "help", 
"cmd.validate.opt.help"));
+
+        CommandLine line = null;
+        try {
+            line = parser.parse(options, args);
+        } catch (ParseException exp) {
+            AppValidator.help(options);
+            throw new SystemExitException(-1);
+        }
+
+        if (line.hasOption("help")) {
+            AppValidator.help(options);
+            return;
+        } else if (line.hasOption("version")) {
+            OpenEjbVersion.get().print(System.out);
+            return;
+        }
+
+        if (line.getArgList().size() == 0) {
+            System.out.println("Must specify an module id.");
+            AppValidator.help(options);
+        }
+        
+        DeploymentLoader deploymentLoader = new DeploymentLoader();
+
+        try {
+            AppValidator validator = new AppValidator();
+            for (Object obj : line.getArgList()) {
+                String module = (String) obj;
+                File file = new File(module);
+                AppModule appModule = deploymentLoader.load(file);
+                validator.validate(appModule);
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+    
+    private static void help(Options options) {
+        HelpFormatter formatter = new HelpFormatter();
+        formatter.printHelp("validate [options] <file> [<file>...]", "\n"+ 
AppValidator.i18n("cmd.validate.description"), options, "\n");
+    }
+
+    private static Option option(String shortOpt, String longOpt, String 
description) {
+        return 
OptionBuilder.withLongOpt(longOpt).withDescription(AppValidator.i18n(description)).create(shortOpt);
+    }
+
+    private static Option option(String shortOpt, String longOpt, String 
argName, String description) {
+        return 
OptionBuilder.withLongOpt(longOpt).withArgName(argName).hasArg().withDescription(AppValidator.i18n(description)).create(shortOpt);
+    }
 
+    private static String i18n(String key) {
+        return AppValidator._messages.format(key);
     }
 }

Copied: 
openejb/trunk/openejb3/container/openejb-core/src/main/resources/META-INF/org.apache.openejb.cli/validate
 (from r602702, 
openejb/trunk/openejb3/container/openejb-core/src/main/resources/META-INF/org.apache.openejb.cli/validate.disabled)
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/resources/META-INF/org.apache.openejb.cli/validate?p2=openejb/trunk/openejb3/container/openejb-core/src/main/resources/META-INF/org.apache.openejb.cli/validate&p1=openejb/trunk/openejb3/container/openejb-core/src/main/resources/META-INF/org.apache.openejb.cli/validate.disabled&r1=602702&r2=602721&rev=602721&view=diff
==============================================================================
--- 
openejb/trunk/openejb3/container/openejb-core/src/main/resources/META-INF/org.apache.openejb.cli/validate.disabled
 (original)
+++ 
openejb/trunk/openejb3/container/openejb-core/src/main/resources/META-INF/org.apache.openejb.cli/validate
 Sun Dec  9 11:09:08 2007
@@ -13,7 +13,7 @@
 #  See the License for the specific language governing permissions and
 #  limitations under the License.
 #
-main.class = org.apache.openejb.config.EjbValidator
+main.class = org.apache.openejb.config.AppValidator
 name = validate
 description = Validate an ejb jar
 description.pl = Sprawd\u017a poprawno\u015b\u0107 ejb jar


Reply via email to