I would like to get access to my ASO 'Visit' from a servlet filter let's
say. I have used a piece I saw Howard post where I am subclassing the
ApplicationServlet which will provide access to the HiveMind (HM)
registry. I would think then calling from anywhere in the app to the
servlet would give me the HM registry. Once I have the registry, I
would think I can access it's services. I saw an example of injecting
an ASO into a POJO using a service and implemented that below. It is
not really the ASO getting injected, rather it is the
ApplicationStateManager (ASM) getting injected. I am getting the
service, getting the ASM, but when attempting to get 'Visit' from the
ASM, an exception is thrown visible in the logging below. I then moved
my call to a page class to see if that would change things and it did
not. Debugging my servlet shows the registry obtained has many services
including mine.
I have seen many references to 'HiveUtils ObjectBuilder' and would like
to get this working before attempting use of that. Also saw in this
list: 'how to inject visit object into pojo', 'how to inject aso in
service', 'injecting an aso into a hivemind service', and 'injecting
an aso into a service' which all relate to this post.
Can I get the HM registry from my servlet and is it valid? Is there
another way to get the registry? Suggestions on getting the ASO 'Visit'
from a POJO? Is my code invalid?
Thanks,
Joseph
The call:
IInjectEnhancementWorker stateWorker = (IInjectEnhancementWorker)
ApplyServlet.getRegistry().getService(IInjectEnhancementWorker.class);
Some logging:
Getting HM Registry..........
ASM: <OuterProxy for
tapestry.state.ApplicationStateManager(org.apache.tapestry.engine.state.ApplicationStateManager)>
Visit is not yet defined: Property 'webRequest' of <OuterProxy for
tapestry.globals.RequestGlobals(org.apache.tapestry.services.RequestGlobals)>
is null.
hivemodule.xml:
<?xml version="1.0" encoding="utf-8"?>
<module id="apply" version="1.0.0" package="foo.apply.hivemind">
<contribution configuration-id="tapestry.state.ApplicationObjects">
<state-object name="Visit" scope="session">
<create-instance class="foo.apply.application.Visit"/>
</state-object>
</contribution>
<service-point id="InjectStateWorker"
interface="foo.apply.hivemind.IInjectEnhancementWorker">
<invoke-factory>
<construct class="foo.apply.hivemind.InjectStateWorker">
<!--<set-service property="applicationStateManager"
service-id="tapestry.state.ApplicationStateManager"/>-->
<set-object property="applicationStateManager"
value="infrastructure:applicationStateManager"/>
</construct>
</invoke-factory>
</service-point>
</module>
Servlet:
public class ApplyServlet extends ApplicationServlet {
Logger log = Utility.fetchLogger(ApplyServlet.class) ;
private static Registry sRegistry ;
private static final String REGISTRY_KEY =
"org.apache.tapestry.Registry:apply" ;
public void init(ServletConfig config)
throws ServletException {
super.init(config) ;
log.debug ("Pre getting registry...") ;
Registry r = (Registry)
getServletContext().getAttribute(REGISTRY_KEY) ;
log.debug ("Registry='" + r.toString() + "'") ;
sRegistry = r ;
}
public static Registry getRegistry() {
return sRegistry ;
}
}
Service interface:
public interface IInjectEnhancementWorker {
public void setApplicationStateManager(ApplicationStateManager manager) ;
public ApplicationStateManager getApplicationStateManager() ;
public Visit retrieveVisit () ;
}
Service POJO:
public class InjectStateWorker implements IInjectEnhancementWorker {
private Logger log = Utility.fetchLogger(InjectStateWorker.class) ;
private ApplicationStateManager _applicationStateManager ;
public void setApplicationStateManager(ApplicationStateManager
manager) {
_applicationStateManager = manager ;
}
public ApplicationStateManager getApplicationStateManager() {
return _applicationStateManager ;
}
public Visit retrieveVisit () {
Visit visit = null ;
try {
log.debug ("ASM: " + _applicationStateManager) ;
visit = (Visit) _applicationStateManager.get("visit") ;
}
catch (Exception e) {
log.info ("Visit is not yet defined: " + e.getMessage()) ;
}
return visit ;
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]