Here is the exception.
-------------------------------------------------------------------------------
Test set: org.appfuse.tutorial.service.impl.PersonManagerImplTest
-------------------------------------------------------------------------------
Tests run: 4, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.25 sec <<<
FAILURE!
testSavePerson(org.appfuse.tutorial.service.impl.PersonManagerImplTest)
Time elapsed: 0.01 sec <<< ERROR!
java.lang.ClassCastException: java.lang.Object cannot be cast to
org.appfuse.tutorial.model.Person
at
org.appfuse.tutorial.service.impl.PersonManagerImpl.save(PersonManagerImpl.java:28)
at
org.appfuse.tutorial.service.impl.PersonManagerImplTest.testSavePerson(PersonManagerImplTest.java:76)
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:597)
at org.junit.internal.runners.TestMethod.invoke(TestMethod.java:59)
at org.jmock.integration.junit4.JMock$1.invoke(JMock.java:36)
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:138)
at
org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.execute(AbstractDirectoryTestSuite.java:125)
at org.apache.maven.surefire.Surefire.run(Surefire.java:132)
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:597)
at
org.apache.maven.surefire.booter.SurefireBooter.runSuitesInProcess(SurefireBooter.java:290)
at
org.apache.maven.surefire.booter.SurefireBooter.main(SurefireBooter.java:818)
mraible wrote:
>
> Can you post the full stack trace?
>
> Matt
>
> On Tue, Jun 17, 2008 at 6:13 AM, Martin Homik <[EMAIL PROTECTED]> wrote:
>
>>
>> Reproduced on the Person tutorial. Just add the following method to
>> PersonManagerImpl.java:
>> @Override
>> @Transactional
>> public Person save(Person person) {
>> /* do something else */
>>
>> return super.save(person);
>> }
>>
>>
>> Any ideas, how to overcome this obstacle? What's the proper way to
>> override
>> a save method in the manager?
>>
>> MH
>>
>>
>>
>>
>> Martin Homik wrote:
>> >
>> > In my managers, I override the save method. There is no problem in
>> > production state, that is jetty:run-war runs perfectly well. But in the
>> > test-cycle, I get a ClassCastException. So, the problem must be
>> related
>> > to the mocks in the test classes.
>> >
>> > Here is my manager class:
>> > public class SurveyValueManagerImpl
>> > extends GenericManagerImpl<SurveyValue, Long>
>> > implements SurveyValueManager {
>> >
>> > [... some other methods ...]
>> >
>> >
>> > @Override
>> > @Transactional
>> > public SurveyValue save(SurveyValue surveyValue) {
>> >
>> > [... do something else ...]
>> >
>> > Object o = super.save(surveyValue);
>> >
>> > return (SurveyValue) o;
>> > }
>> > }
>> >
>> > The super save method returns successfully, but because I have to
>> return
>> > something of type SurveyValue, I need to cast the object to the
>> > SurveyValue type. And that's the problem.
>> >
>> > The test method is no surprise:
>> >
>> > @Test
>> > public void testSaveSurveyValue() {
>> > log.debug("testing saveSurveyValue");
>> >
>> > final SurveyValue surveyValue = new SurveyValue();
>> > // enter all required fields
>> >
>> > // set expected behavior on dao
>> > context.checking(new Expectations() {
>> > {
>> > one(dao).save(with(same(surveyValue)));
>> > }
>> > });
>> >
>> > manager.save(surveyValue);
>> > }
>> >
>> > Any ideas?
>> >
>> > PS: You should be able to reproduce the exception in the tutorial by
>> > overriding 'save' in PersonManagerImpl.java (I have not tested it,
>> > sorry):
>> >
>> > @Override
>> > @Transactional
>> > public Person save(Person person) {
>> > return (Person) super.save(person);
>> > }
>> >
>> >
>>
>> --
>> View this message in context:
>> http://www.nabble.com/ClassCastException-when-testing-overriden-save-method-in-*Manager-tp17748663s2369p17900484.html
>> Sent from the AppFuse - User mailing list archive at Nabble.com.
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>> For additional commands, e-mail: [EMAIL PROTECTED]
>>
>>
>
>
--
View this message in context:
http://www.nabble.com/ClassCastException-when-testing-overriden-save-method-in-*Manager-tp17748663s2369p17960568.html
Sent from the AppFuse - User mailing list archive at Nabble.com.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]