[Lift] Re: JPA w/Scala (and hibernate validator)
Out of interest, I tried playing around with hibernate-validator on this demo to see if it works, and (as you can see below), it doesnt. Any ideas why its doing this? Looking at the compiled bytecode, its trying to invoke the synthesized method name_$eq(String x$1), and for some reason, failing to call it properly. Anyone else's input would be interesting :) Cheers Tim --- Test set: com.foo.jpaweb.model.TestJPAWeb --- Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 1.598 sec FAILURE! save_stuff(com.foo.jpaweb.model.TestJPAWeb) Time elapsed: 1.554 sec ERROR! java.lang.IllegalStateException: Could not get property value at org.hibernate.validator.ClassValidator.getMemberValue(ClassValidator.java: 537) at org.hibernate.validator.ClassValidator.getInvalidValues(ClassValidator.java: 383) at org.hibernate.validator.ClassValidator.getInvalidValues(ClassValidator.java: 351) at org.hibernate.validator.event.ValidateEventListener.validate(ValidateEventListener.java: 139) at org.hibernate.validator.event.ValidateEventListener.onPreInsert(ValidateEventListener.java: 172) at org.hibernate.action.EntityIdentityInsertAction.preInsert(EntityIdentityInsertAction.java: 119) at org.hibernate.action.EntityIdentityInsertAction.execute(EntityIdentityInsertAction.java: 42) at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:250) at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java: 298) at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java: 181) at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java: 107) at org.hibernate.ejb.event.EJB3PersistEventListener.saveWithGeneratedId(EJB3PersistEventListener.java: 49) at org.hibernate.event.def.DefaultPersistEventListener.entityIsTransient(DefaultPersistEventListener.java: 131) at org.hibernate.event.def.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java: 87) at org.hibernate.event.def.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java: 38) at org.hibernate.impl.SessionImpl.firePersist(SessionImpl.java:618) at org.hibernate.impl.SessionImpl.persist(SessionImpl.java:592) at org.hibernate.impl.SessionImpl.persist(SessionImpl.java:596) at org.hibernate.ejb.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java: 213) at com.foo.jpaweb.model.TestJPAWeb.save_stuff(TestJPAWeb.scala:34) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java: 39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java: 25) at java.lang.reflect.Method.invoke(Method.java:585) at org.junit.internal.runners.TestMethod.invoke(TestMethod.java:59) at org.junit.internal.runners.MethodRoadie.runTestMethod(MethodRoadie.java: 98) at org.junit.internal.runners.MethodRoadie$2.run(MethodRoadie.java: 79) at org.junit.internal.runners.MethodRoadie.runBeforesThenTestThenAfters(MethodRoadie.java: 87) at org.junit.internal.runners.MethodRoadie.runTest(MethodRoadie.java: 77) at org.junit.internal.runners.MethodRoadie.run(MethodRoadie.java:42) at org.junit.internal.runners.JUnit4ClassRunner.invokeTestMethod(JUnit4ClassRunner.java: 88) at org.junit.internal.runners.JUnit4ClassRunner.runMethods(JUnit4ClassRunner.java: 51) at org.junit.internal.runners.JUnit4ClassRunner $1.run(JUnit4ClassRunner.java:44) at org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java: 27) at org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java: 37) at org.junit.internal.runners.JUnit4ClassRunner.run(JUnit4ClassRunner.java: 42) at org.apache.maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.java: 62) at org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.executeTestSet(AbstractDirectoryTestSuite.java: 140) at org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.execute(AbstractDirectoryTestSuite.java: 127) at org.apache.maven.surefire.Surefire.run(Surefire.java:177) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java: 39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java: 25) at java.lang.reflect.Method.invoke(Method.java:585) at org.apache.maven.surefire.booter.SurefireBooter.runSuitesInProcess(SurefireBooter.java: 338) at
[Lift] Re: JPA w/Scala (and hibernate validator)
Or just write a PropertyAccessor implementation for Scala vars? That should do the trick. Cheers, Viktor On Wed, Sep 10, 2008 at 3:22 PM, Derek Chen-Becker [EMAIL PROTECTED]wrote: Two lines lower it looks like it's trying to fetch the value (ClassValidator.getMemberValue), but name_$eq is the setter for a value, not the getter. That's probably why it's coming up with the error wrong number of arguments. You might try adding an explicit getter for the property you want to validate and put the annotation there to see if that works. The @BeanProperty Scala annotation might be enough to force the use ofr get/set by the Validator framework. Just a guess at this point. Derek On Wed, Sep 10, 2008 at 3:47 AM, Tim Perrett [EMAIL PROTECTED] wrote: Out of interest, I tried playing around with hibernate-validator on this demo to see if it works, and (as you can see below), it doesnt. Any ideas why its doing this? Looking at the compiled bytecode, its trying to invoke the synthesized method name_$eq(String x$1), and for some reason, failing to call it properly. Anyone else's input would be interesting :) Cheers Tim --- Test set: com.foo.jpaweb.model.TestJPAWeb --- Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 1.598 sec FAILURE! save_stuff(com.foo.jpaweb.model.TestJPAWeb) Time elapsed: 1.554 sec ERROR! java.lang.IllegalStateException: Could not get property value at org.hibernate.validator.ClassValidator.getMemberValue(ClassValidator.java: 537) at org.hibernate.validator.ClassValidator.getInvalidValues(ClassValidator.java: 383) at org.hibernate.validator.ClassValidator.getInvalidValues(ClassValidator.java: 351) at org.hibernate.validator.event.ValidateEventListener.validate(ValidateEventListener.java: 139) at org.hibernate.validator.event.ValidateEventListener.onPreInsert(ValidateEventListener.java: 172) at org.hibernate.action.EntityIdentityInsertAction.preInsert(EntityIdentityInsertAction.java: 119) at org.hibernate.action.EntityIdentityInsertAction.execute(EntityIdentityInsertAction.java: 42) at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:250) at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java: 298) at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java: 181) at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java: 107) at org.hibernate.ejb.event.EJB3PersistEventListener.saveWithGeneratedId(EJB3PersistEventListener.java: 49) at org.hibernate.event.def.DefaultPersistEventListener.entityIsTransient(DefaultPersistEventListener.java: 131) at org.hibernate.event.def.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java: 87) at org.hibernate.event.def.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java: 38) at org.hibernate.impl.SessionImpl.firePersist(SessionImpl.java:618) at org.hibernate.impl.SessionImpl.persist(SessionImpl.java:592) at org.hibernate.impl.SessionImpl.persist(SessionImpl.java:596) at org.hibernate.ejb.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java: 213) at com.foo.jpaweb.model.TestJPAWeb.save_stuff(TestJPAWeb.scala:34) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java: 39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java: 25) at java.lang.reflect.Method.invoke(Method.java:585) at org.junit.internal.runners.TestMethod.invoke(TestMethod.java:59) at org.junit.internal.runners.MethodRoadie.runTestMethod(MethodRoadie.java: 98) at org.junit.internal.runners.MethodRoadie$2.run(MethodRoadie.java: 79) at org.junit.internal.runners.MethodRoadie.runBeforesThenTestThenAfters(MethodRoadie.java: 87) at org.junit.internal.runners.MethodRoadie.runTest(MethodRoadie.java: 77) at org.junit.internal.runners.MethodRoadie.run(MethodRoadie.java:42) at org.junit.internal.runners.JUnit4ClassRunner.invokeTestMethod(JUnit4ClassRunner.java: 88) at org.junit.internal.runners.JUnit4ClassRunner.runMethods(JUnit4ClassRunner.java: 51) at org.junit.internal.runners.JUnit4ClassRunner $1.run(JUnit4ClassRunner.java:44) at org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java: 27) at org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java: 37) at