I believe this could be a bug, in case it is, please let me know so that
I can post it in the JIRA.
Thanks. Raul.
I'm trying to reference a service from a ApplicationState contribution
and I find two weird behaviors.
1. If the service calls a class directly instead of an interface
auto-wiring doesn't work and my service doesn't get injected my other
EntityService.
2. If the service is in fact an Interface with its implementation, I get
the following exception:
org.apache.hivemind.ApplicationRuntimeException
Error invoking method setFactory on
[EMAIL PROTECTED] (at
jar:file:/Users/dobleerre/Public/Laszlo/openlaszlo-3.0.2/Server/tomcat-5.0.24/webapps/com.estudiowebs.CMS/WEB-INF/lib/tapestry-4.0-beta-13.jar!/META-INF/tapestry.state.xml,
line 76, column 47): setFactory
location:
jar:file:/Users/dobleerre/Public/Laszlo/openlaszlo-3.0.2/Server/tomcat-5.0.24/webapps/com.estudiowebs.CMS/WEB-INF/lib/tapestry-4.0-beta-13.jar!/META-INF/tapestry.state.xml,
line 76, column 47
71 The factory object that will create the state object as needed.
72 </attribute>
73
74 <rules>
75 <push-attribute attribute="object"/>
76 <invoke-parent method="setFactory"/>
77 </rules>
78
79 </element>
80 </element>
81 </schema>
java.lang.NoSuchMethodException
setFactory
Here is the code that I'm using:
hivemodule.xml
--------------------------------------------------------------------
<contribution configuration-id="tapestry.state.ApplicationObjects">
<state-object name="globalMenu" scope="application">
<invoke-factory object="service:CMS.GlobalMenu" />
</state-object>
</contribution>
<service-point id="GlobalMenu"
interface="com.estudiowebs.CMS.DAO.IGlobalMenu">
<invoke-factory model="singleton">
<construct class="com.estudiowebs.CMS.DAO.GlobalMenu"/>
</invoke-factory>
</service-point>
GlobalMenu.java
--------------------------------------------------------------------
public class GlobalMenu extends Menu implements IGlobalMenu{
private EntityService service;
public void setService(EntityService service) {
this.service = service;
}
public GlobalMenu() {
Menu m = null;
System.out.println("EntityService is " + service);
m = (Menu) service.load(Menu.class, new Integer(1));
System.out.println("Global menu constructed");
}
}
MyComponent.jwc
--------------------------------------------------------------------
public abstract class MenuNavigation extends BaseComponent {
@InjectState("globalMenu")
public abstract IGlobalMenu getMenu();
public Collection getCategories() {
return getMenu().getCategories();
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]