I have noticed that in the retrieveVisit method of
InjectStateWorker.java : 
 visit = (Visit) _applicationStateManager.get("visit")
;


But in the hivemodule.xml, the state object name is 
'Visit' with a captial V.

You might like to rename 'visit' to something else.
I do not know whether it would conflict with the
default visit object (the one that could be specified
in
.application.) 


I have written up an example on injecting an aso into
a service  and put it on 
http://lombok.demon.co.uk/tapestry4Demo

If you like, you can take a look and see if it helps.


Shing


--- Finster Hannon <[EMAIL PROTECTED]> wrote:

> 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]
> 
> 


Home page :
  http://uk.geocities.com/matmsh/index.html


                
____________________________________________________ 
 
Yahoo! Photos is now offering a quality print service from just 7p a photo. 
http://uk.photos.yahoo.com

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to