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)
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 ;
=== message truncated ===
Home page :
http://uk.geocities.com/matmsh/index.html
___________________________________________________________
To help you stay safe and secure online, we've developed the all new Yahoo! Security Centre. http://uk.security.yahoo.com
---------------------------------------------------------------------
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]