Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Tapestry Wiki" for 
change notification.

The following page has been changed by NickWestgate:
http://wiki.apache.org/tapestry/InjectASOIntoService

------------------------------------------------------------------------------
- =How to inject an Application State Object (ASO) into a Tapestry service=
+ = How to inject an Application State Object (ASO) into a Tapestry service =
  
+  Instead of injecting an ASO directly into a Tapestry service, we need to 
inject an Application``State``Manager and use the Application``State``Manager 
to retrieve the desired ASO. Suppose you would like to inject the ASO message 
into the service asoService. The following piece of hivemodule.xml shows how it 
could be done.
+ 
+ {{{
+  hivemodule.xml:
+ 
+  <contribution configuration-id="tapestry.state.ApplicationObjects">
+    <state-object name="message" scope="application">
+    <create-instance class="man.aso.HelloMessage"/>
+    </state-object>
+ </contribution>
+ 
+        <!-- Inject ApplicationStateManger into service asoSerive -->
+ <service-point id="asoService" 
interface="org.apache.tapestry.engine.IEngineService">
+     <invoke-factory>
+       <construct class="service.ASOService">
+         <set-object property="exceptionReporter" 
value="infrastructure:requestExceptionReporter"/>
+         <set-object property="response" value="infrastructure:response"/>
+         <set-object property="linkFactory" 
value="infrastructure:linkFactory"/>       
+      <set-service property="appStateManager" 
+                 service-id="tapestry.state.ApplicationStateManager"/>
+       </construct>
+     </invoke-factory>
+   </service-point>
+ 
+ 
+ }}}
+ 
+ In the .jave file of the Tapestry service asoService, add the setter/getter 
method for property app``State``Manager :
+ {{{
+  private ApplicationStateManager appStateManager;
+       public ApplicationStateManager getAppStateManager() {
+               return appStateManager;
+       }
+ 
+       public void setAppStateManager(ApplicationStateManager appStateManager) 
{
+               this.appStateManager = appStateManager;
+       }
+ }}}
+ 
+ 
+ To access the ASO message in the asoService :
+ {{{
+  HelloMessage message = (HelloMessage) getAppStateManager().get("message");
+  }}}
+ 

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

Reply via email to