Yes, you're not setting things up correctly. What you're doing is having
ColdSpring create a single, separate instance of the BaseClass that has the
proper composed objects injected. But none of your other objects have these
injected. What you want is this:

<beans>
       <bean id="ComposedClassA" class="path.to.ComposedClassA" />
       <bean id="ComposedClassB" class="path.to.ComposedClassB" />
       <bean id="MockComposedClassA" class="path.to.MockComposedClassA" />
       <bean id="MockComposedClassb" class="path.to.MockComposedClassB" />
       <bean id="SubClassA" class="path.to.SubClassA">
               <property name="ComposedClassA">
                       <ref bean="MockComposedClassA"/>
               </property>
               <property name="ComposedClassB">
                       <ref bean="MockComposedClassB"/>
               </property>
       </bean>
       <bean id="SubClassB" class="path.to.SubClassB">
               <property name="ComposedClassA">
                       <ref bean="MockComposedClassA"/>
               </property>
               <property name="ComposedClassB">
                       <ref bean="MockComposedClassB"/>
               </property>
       </bean>
</beans>
Hope that helps,

Brian

On 6/11/07, Anthony Israel-Davis <[EMAIL PROTECTED]> wrote:


I'm running into a problem and I don't know if it's a problem in my code
or a misunderstanding about how the Coldspring beanfactory wires up
components. I'm using version 1.1.1.

I have two subclasses that use components that are composed into the base
class. I'm unit testing using CFCUnit, but my tests are returning errors
saying "ComposedClassA is undefined in variables." despite a
setComposedClassA method in the base class.

My bean definition looks something like this:

<beans>
        <bean id="ComposedClassA" class="path.to.ComposedClassA" />
        <bean id="ComposedClassB" class="path.to.ComposedClassB" />
        <bean id="MockComposedClassA" class="path.to.MockComposedClassA"
/>
        <bean id="MockComposedClassb" class="path.to.MockComposedClassB"
/>
        <bean id="BaseClass" class="path.to.BaseClass">
                <property name="ComposedClassA">
                        <ref bean="MockComposedClassA"/>
                </property>
                <property name="ComposedClassB">
                        <ref bean="MockComposedClassB"/>
                </property>
        </bean>
        <bean id="SubClassA" class="path.to.SubClassA"/>
        <bean id="SubClassB" class="path.to.SubClassB" />
</beans>

There are getters and setters in BaseClass for ComposedClass(A-B), so my
question is when I call local.beanFactory.getBean('SubClassA') (which
extends BaseClass) does Coldspring call the BaseClass' setters? It seems to
not call inherited setters, but if, in the config file, I put the properties
in SubClassA it configures the bean correctly.

So am I doing something wrong or is Coldspring performing as expected? I
couldn't find anything in the documentation or in the forums specifically
about this, so any help would be appreciated.

Thanks,
anthony

Reply via email to