[Lift] Re: JPA w/Scala (and hibernate validator)

2008-09-10 Thread Tim Perrett

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)

2008-09-10 Thread Viktor Klang
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