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)
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 ;

=== message truncated ===


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


                
___________________________________________________________ Try the all-new Yahoo! Mail. "The New Version is radically easier to use" – The Wall Street Journal 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]

Reply via email to