I'm testsing RarInfo, I'm having a problem with Validator.rules.
When Validator tries to load the rules class, it gets an exception, because it cannot find MCFNull:
java.lang.IllegalArgumentException: MCFNull
at org.ironjacamar.validator.Validator.extractRules(Validator.java:168)
at org.ironjacamar.validator.Validator.validate(Validator.java:112)
at org.ironjacamar.validator.Validation.validate(Validation.java:235)
at org.ironjacamar.validator.Validation.validate(Validation.java:168)
at org.ironjacamar.as.rarinfo.Main.rarInfo(Main.java:384)
at org.ironjacamar.as.rarinfo.RarInfoTestCase.testLazyRar(RarInfoTestCase.java:67)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:117)
at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:42)
at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:262)
at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:84)
Caused by: java.lang.ClassNotFoundException: MCFNull
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:348)
at org.ironjacamar.validator.Validator.extractRules(Validator.java:161)
... 29 more
Compliant: No
The problem is that Validator specifies class names for the rules without pointing the package name:
https://github.com/ironjacamar/ironjacamar/blob/master/validator/src/main/java/org/ironjacamar/validator/Validator.java#L43My question is how to fix it? I'm assuming that Validator is using class names, and trying to load them, because probably the rule class could change per execution?
Otherwise, wouldn't it be better to just use the MCFNull Rule class directly, instead of trying to load it?
Thanks!
Flavia