Invalid property 'playerDao' of bean class

estou seguindo o exemplo do livro: Java na Web com JSF, Spring, Hibernate e Netbeans 6

e me deparei com o seguinte erro quando mando executar o teste:

[b]Testcase: save(facade.PlayerFacadeTest): Caused an ERROR
null
java.lang.NullPointerException
at facade.PlayerFacade.save(PlayerFacade.java:24)
at facade.PlayerFacadeTest.save(PlayerFacadeTest.java:57)

Test facade.PlayerFacadeTest FAILED[/b]

segue abaixo o applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>


<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
       http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd">

    <!-- Configurador que substitui os marcadores ${...} com os valores definidos no arquivo de properties -->
    <!-- (in this case, JDBC-related settings for the dataSource definition below) -->
    <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="location" value="classpath:/jdbc.properties"/>
    </bean>

    <!-- Local C3P0 DataSource que trabalha em qualquer ambiente, em ambientes de produção use jndi -->
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
        <property name="driverClass" value="${jdbc.driverClassName}"/>
        <property name="jdbcUrl" value="${jdbc.url}"/>
        <property name="user" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
    </bean>

    <!-- JPA EntityManagerFactory -->
    <bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
        <property name="dataSource" ref="dataSource"/>
        <property name="jpaVendorAdapter">
            <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
                <property name="showSql" value="true"/>
                <property name="generateDdl" value="false"/>
                <property name="databasePlatform" value="org.hibernate.dialect.PostgreSQLDialect" />
            </bean>
        </property>
    </bean>

    <!-- Transaction manager para um JPA EntityManagerFactory simples (alternativa ao JTA) -->
    <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
        <property name="entityManagerFactory" ref="entityManagerFactory"/>
    </bean>

    <!-- Instrui o Spring a realizar gerenciamento transacional declarativo automático nas classes anotadas.-->
    <tx:annotation-driven/>

    <!-- PostProcessors para realizar injeção de recursos de acordo com a especificação JPA (@PersistenceContext, @PersistenceUnit). -->
    <bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor"/>

    <!-- PostProcessors para realizar a conversão de exceções nas classes @Repository (das exceções nativas como JPA PersistenceExceptions to Spring's DataAccessException). -->
    <bean class="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor"/>

    <!-- Será automaticamente transacional graças ao @Transactional. EntityManager irá ser auto-injetado graças ao @PersistenceContext. PersistenceExceptions irá ser auto-convertido graças ao @Repository. -->

    <bean id="player" class="dominio.Player" scope="session" />

    <bean id="playerDao" class="dao.PlayerDao" />

    <bean id="playerFacade" class="facade.PlayerFacade">
	   <property name="playerDao" ref="playerDao"/>
    </bean>

</beans>

e segue abaixo o playerFacadeTest.java :

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package facade;

import dominio.Player;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import java.util.List;
import static org.junit.Assert.*;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;


public class PlayerFacadeTest {

    public PlayerFacadeTest() {
    }

    @Before
    public void setUp() {
    }

    @After
    public void tearDown() {
    }

    /**
     * Test of gravar method, of class PlayerFacade.
     */
    @Test
    public void save() {

	ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");

        Player playerTeste = new Player();

        playerTeste.setName("teste");
        playerTeste.setEmail("teste@noia.com");
        playerTeste.setUser("teste");
        playerTeste.setPass("123");

        System.out.println("gravar player");

        PlayerFacade instance =(PlayerFacade)context.getBean("playerFacade");
        Player result = instance.save(playerTeste);

        try {
            assertNotNull(result.getIdPlayer());
        } catch (AssertionError e){
            fail("Falhou a gravação de usuário.");
        }

    }
}

fazem ideia de onde está o erro?

o property do playerFacade estava errado, corrigi mas o erro agora é outro:


Testcase: save(facade.PlayerFacadeTest): Caused an ERROR
Error creating bean with name ‘playerFacade’ defined in class path resource [applicationContext.xml]: Error setting property values; nested exception is org.springframework.beans.NotWritablePropertyException: Invalid property ‘playerDao’ of bean class [facade.PlayerFacade]: Bean property ‘playerDao’ is not writable or has an invalid setter method. Does the parameter type of the setter match the return type of the getter?
org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘playerFacade’ defined in class path resource [applicationContext.xml]: Error setting property values; nested exception is org.springframework.beans.NotWritablePropertyException: Invalid property ‘playerDao’ of bean class [facade.PlayerFacade]: Bean property ‘playerDao’ is not writable or has an invalid setter method. Does the parameter type of the setter match the return type of the getter?
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1303)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1042)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:539)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:485)
at java.security.AccessController.doPrivileged(Native Method)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:455)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:251)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:169)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:248)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:170)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:413)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:735)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:369)
at org.springframework.context.support.ClassPathXmlApplicationContext.(ClassPathXmlApplicationContext.java:122)
at org.springframework.context.support.ClassPathXmlApplicationContext.(ClassPathXmlApplicationContext.java:66)
at facade.PlayerFacadeTest.save(PlayerFacadeTest.java:41)
Caused by: org.springframework.beans.NotWritablePropertyException: Invalid property ‘playerDao’ of bean class [facade.PlayerFacade]: Bean property ‘playerDao’ is not writable or has an invalid setter method. Does the parameter type of the setter match the return type of the getter?
at org.springframework.beans.BeanWrapperImpl.setPropertyValue(BeanWrapperImpl.java:805)
at org.springframework.beans.BeanWrapperImpl.setPropertyValue(BeanWrapperImpl.java:655)
at org.springframework.beans.AbstractPropertyAccessor.setPropertyValues(AbstractPropertyAccessor.java:78)
at org.springframework.beans.AbstractPropertyAccessor.setPropertyValues(AbstractPropertyAccessor.java:59)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1300)

não sei se deveria ter feito isso… mas ele tava reclamando que não tinha get set então dei os get set que ele tanto reclamou não sei se alguem passou pelo mesmo problema mais fica ae a solução:

na facade eu coloquei os metodos set e get para o objeto PlayerDao. pronto resolvido.

...
public class PlayerFacade {

	private PlayerDao playerDao;

	public PlayerFacade(){
	}

	public void setPlayerDao(PlayerDao playerDao){
		this.playerDao = playerDao;
	}
	
	public PlayerDao getPlayerDao(){
		return this.playerDao;
	}
...