I haven't tried accessing ASO's, but I have a threaded HiveMind service 
which I use on my tapestry pages.

This is the code I use in my ServletFilter
   if (firstRegistry == null) {
    firstRegistry = (Registry) 
context.getAttribute("org.apache.tapestry.Registry:portalapp");
   }
   if (firstRegistry != null) {
    logger.debug("Pushed PersonalIdentity to registry 
"+firstRegistry.hashCode());
    PersonalIdentity ident = (PersonalIdentity) 
firstRegistry.getService(PersonalIdentity.class);
    ....

I don't see why you would need to subclass ApplicationServlet

Henrik

"Joseph Hannon" <[EMAIL PROTECTED]> skrev i en meddelelse 
news:[EMAIL PROTECTED]
> Follow up: I can get the Visit object from my filter's ServletRequest 
> session.getAttribute("state:apply:Visit"), but I was attempting to really 
> use a proper HiveMind facility here.
>
> Joseph
>
> Joseph Hannon wrote:
>> Shing,
>>
>> I very much appreciate your time on this by the way, and your website 
>> looks very handy. :)
>>
>> I have gone back to the ApplicationServlet, and have written code as you 
>> show below into a static method in a singleton in my app.  When calling 
>> the method from a page class, Home, I get to my Visit object just as you 
>> did, so the method code is valid.  When calling the same method from my 
>> filter (non page class) I get the webRequest related exception, see 
>> below.  I did create a non page pojo from Home in which the pojo calls my 
>> method and it worked.  So non page pojos can do this but the filter can 
>> not. It definitely in not trivial to get to the Registry from a filter it 
>> would seem.  Not sure what to do now for the filter.  May have to look at 
>> HiveUtils.
>>
>> Thanks,
>> Joseph
>>
>> Exception:
>> java.lang.NullPointerException: Property 'webRequest' of <OuterProxy for 
>> tapestry.globals.RequestGlobals(org.apache.tapestry.services.RequestGlobals)>
>>  
>> is null. 
>> $WebRequest_10c4ab9cc40._targetServiceProperty($WebRequest_10c4ab9cc40.java) 
>> $WebRequest_10c4ab9cc40.getSession($WebRequest_10c4ab9cc40.java)
>>         $WebRequest_10c4ab9cc25.getSession($WebRequest_10c4ab9cc25.java)
>>
>> $WebRequest_10c4ab9cc24.getSession($WebRequest_10c4ab9cc24.java) 
>> org.apache.tapestry.engine.state.SessionScopeManager.getSession(SessionScopeManager.java:48)
>>  
>> org.apache.tapestry.engine.state.SessionScopeManager.get(SessionScopeManager.java:64)
>>  
>> $StateObjectPersistenceManager_10c4ab9cc3b.get($StateObjectPersistenceManager_10c4ab9cc3b.java)
>>  
>> $StateObjectPersistenceManager_10c4ab9cc3a.get($StateObjectPersistenceManager_10c4ab9cc3a.java)
>>  
>> org.apache.tapestry.engine.state.StateObjectManagerImpl.get(StateObjectManagerImpl.java:50)
>>  
>> org.apache.tapestry.engine.state.ApplicationStateManagerImpl.get(ApplicationStateManagerImpl.java:60)
>>  
>> $ApplicationStateManager_10c4ab9cbfc.get($ApplicationStateManager_10c4ab9cbfc.java)
>>  
>> $ApplicationStateManager_10c4ab9cbfd.get($ApplicationStateManager_10c4ab9cbfd.java)
>>  
>> foo.apply.utility.Utility.testASOService(Utility.java:61) 
>> foo.apply.application.SampleFilter.doFilter(SampleFilter.java:176)
>>
>>
>> Shing Hing Man wrote:
>>> The registry is stored in the servlet context.
>>> You can retreived it by :
>>>
>>>
>>>   String REGISTRY_KEY_PREFIX =
>>> "org.apache.tapestry.Registry:";
>>>     ServletContext context = getServletContext();
>>>     Registry registry = (Registry)
>>>        context.getAttribute(REGISTRY_KEY_PREFIX +
>>> "testPojoASO");
>>>     IInjectEnhancementWorker stateWorker =
>>> (IInjectEnhancementWorker) 
>>> registry.getService(IInjectEnhancementWorker.class);
>>>
>>> (In your case you need to replace  testPojoASO by the
>>> servlet name in web.xml.)
>>>
>>> In your orginal post, you have a custom ApplicationServlet.
>>> I have try the following approach with the code in
>>> your orginal post.
>>>
>>> Step 1) Use the framework ApplicationServlet.
>>>
>>> Step 2) Retrieve the registry as described above.
>>>
>>> Then I have no problem retrieving the stateWorker in
>>> the Home page  using the above method. (As long as you have access to 
>>> the
>>> context servlet, you can get stateWorker.)
>>>
>>> Joseph : I am sending your a war file (binary and
>>> source) of the above example off the list.
>>>
>>> Shing
>>> --- Joseph Hannon <[EMAIL PROTECTED]> wrote:
>>>
>>>> Shing,
>>>>
>>>> Cool.  I did replace <set-object with the
>>>> <set-service and got the same exception.  If you will notice in my 
>>>> original post,
>>>> this was commented out, I uncommented it and commented the line with
>>>> <set-object .
>>>>
>>>> Would you mind showing some code where you are
>>>> getting your asoService class from a pojo?  I would like to see how you 
>>>> are
>>>> making the call that gets the service.  I suspect getting my registry
>>>> from my servlet is not the way to go.
>>>>
>>>> Thanks,
>>>> Joseph
>>>>
>>>> Shing Hing Man wrote:
>>>>>> How are you calling getAppStateManager(), from
>>>> what
>>>>>> class?  How are you getting access to the registry from a POJO?
>>>>>
>>>>> In my how-to, appStateManager is injected to
>>>>> the tapestry service asoSerivce by hivemind.
>>>>>
>>>>>
>>>>> The following piece of code is meant to be in the
>>>>> .java class of my asoService.
>>>>>   HelloMessage message = (HelloMessage)
>>>>> getAppStateManager().get("message");
>>>>>   Also, in the .java of my asoService, there is getter/setter method 
>>>>> for the property appStateManager.
>>>>>
>>>>>
>>>>> I have noticed that in your
>>>>> service-point id="InjectStateWorker", you have   <set-object 
>>>>> property="applicationStateManager" 
>>>>> value="infrastructure:applicationStateManager"/>
>>>>>
>>>>> try replacing it by  <set-service property="applicationStateManager"
>>> service-id="tapestry.state.ApplicationStateManager"/>
>>>>> Shing
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> --- Joseph Hannon <[EMAIL PROTECTED]> wrote:
>>>>>
>>>>>> Shing,
>>>>>>
>>>>>> I did change the 'Visit' id to something else,
>>>>>> 'message', as a test and still get the exception of webRequest being 
>>>>>> null.
>>>>>>
>>>>>>  From your website: HelloMessage message =
>>>>>> (HelloMessage) getAppStateManager().get("message");
>>>>>> How are you calling getAppStateManager(), from
>>>> what
>>>>>> class?  How are you getting access to the registry from a POJO?
>>>>>>
>>>>>> Thanks,
>>>>>> Joseph
>>>>>>
>>>>>> Shing Hing Man wrote:
>>>>>>> Sorry ! Here is the correct link.
>>>>>>>
>>>>>>> http://lombok.demon.co.uk/tapestry4Demo/app
>>>>>>>
>>>>>>>
>>>>>>> Shing
>>>>>>> --- Shing Hing Man <[EMAIL PROTECTED]> wrote:
>>>>>>>
>>>>>>>> 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)
>>> === message truncated ===
>>>
>>> Home page :
>>>   http://uk.geocities.com/matmsh/index.html
>>>
>>>
>>>     ___________________________________________________________ All new 
>>> Yahoo! Mail "The new Interface is stunning in its simplicity and ease of 
>>> use." - PC Magazine http://uk.docs.yahoo.com/nowyoucan.html
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>>> For additional commands, e-mail: [EMAIL PROTECTED]
>>>
>>>
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>> For additional commands, e-mail: [EMAIL PROTECTED]
>>
>>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
> 




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

Reply via email to