tapestry-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Adam Greene" <agre...@professionalopensource.ca>
Subject Re: Injecting the current RequestCycle into a Hivemind Service
Date Thu, 01 Sep 2005 21:26:23 GMT
I have created a patch for this.  But I can't seem to access JIRA to post a 
feature request and the patch.  So I am including it here (and will add it 
when JIRA is accessible again).  It is a patch against the latest from SVN 
as of Sept 1st, 4:00PM AST:

Index: C:/tapestryv4/Tapestry 
SVN/framework/src/java/org/apache/tapestry/IEngine.java
===================================================================
--- C:/tapestryv4/Tapestry 
SVN/framework/src/java/org/apache/tapestry/IEngine.java (revision 264932)
+++ C:/tapestryv4/Tapestry 
SVN/framework/src/java/org/apache/tapestry/IEngine.java (working copy)
@@ -22,6 +22,7 @@
 import org.apache.tapestry.engine.IScriptSource;
 import org.apache.tapestry.engine.ISpecificationSource;
 import org.apache.tapestry.services.Infrastructure;
+import org.apache.tapestry.services.RequestGlobals;
 import org.apache.tapestry.services.WebRequestServicer;
 import org.apache.tapestry.spec.IApplicationSpecification;

@@ -179,4 +180,6 @@
      */

     public Infrastructure getInfrastructure();
+
+ public void setGlobals(RequestGlobals requestGlobals);
 }
\ No newline at end of file
Index: C:/tapestryv4/Tapestry 
SVN/framework/src/java/org/apache/tapestry/engine/AbstractEngine.java
===================================================================
--- C:/tapestryv4/Tapestry 
SVN/framework/src/java/org/apache/tapestry/engine/AbstractEngine.java 
(revision 264932)
+++ C:/tapestryv4/Tapestry 
SVN/framework/src/java/org/apache/tapestry/engine/AbstractEngine.java 
(working copy)
@@ -36,6 +36,7 @@
 import org.apache.tapestry.listener.ListenerMap;
 import org.apache.tapestry.services.DataSqueezer;
 import org.apache.tapestry.services.Infrastructure;
+import org.apache.tapestry.services.RequestGlobals;
 import org.apache.tapestry.spec.IApplicationSpecification;
 import org.apache.tapestry.web.WebRequest;
 import org.apache.tapestry.web.WebResponse;
@@ -105,6 +106,8 @@

     private Locale _locale;

+ private RequestGlobals _requestGlobals;
+
     /**
      * The name of the application specification property used to specify 
the class of the visit
      * object.
@@ -222,6 +225,7 @@
         try
         {
             cycle = 
_infrastructure.getRequestCycleFactory().newRequestCycle(this);
+            _requestGlobals.store(cycle);
         }
         catch (RuntimeException ex)
         {
@@ -546,4 +550,8 @@
     {
         return _infrastructure.getOutputEncoding();
     }
+
+    public void setGlobals(RequestGlobals requestGlobals) {
+     _requestGlobals = requestGlobals;
+    }
 }
\ No newline at end of file
Index: C:/tapestryv4/Tapestry 
SVN/framework/src/java/org/apache/tapestry/services/impl/RequestGlobalsImpl.java
===================================================================
--- C:/tapestryv4/Tapestry 
SVN/framework/src/java/org/apache/tapestry/services/impl/RequestGlobalsImpl.java 
(revision 264932)
+++ C:/tapestryv4/Tapestry 
SVN/framework/src/java/org/apache/tapestry/services/impl/RequestGlobalsImpl.java 
(working copy)
@@ -17,6 +17,7 @@
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;

+import org.apache.tapestry.IRequestCycle;
 import org.apache.tapestry.services.RequestGlobals;
 import org.apache.tapestry.web.WebRequest;
 import org.apache.tapestry.web.WebResponse;
@@ -37,6 +38,8 @@
     private HttpServletRequest _request;

     private HttpServletResponse _response;
+
+    private IRequestCycle _cycle;

     public WebRequest getWebRequest()
     {
@@ -69,4 +72,12 @@
         _request = request;
         _response = response;
     }
+
+ public IRequestCycle getCycle() {
+  return _cycle;
+ }
+
+ public void store(IRequestCycle cycle) {
+  _cycle = cycle;
+ }
 }
\ No newline at end of file
Index: C:/tapestryv4/Tapestry 
SVN/framework/src/java/org/apache/tapestry/services/impl/EngineFactoryImpl.java
===================================================================
--- C:/tapestryv4/Tapestry 
SVN/framework/src/java/org/apache/tapestry/services/impl/EngineFactoryImpl.java 
(revision 264932)
+++ C:/tapestryv4/Tapestry 
SVN/framework/src/java/org/apache/tapestry/services/impl/EngineFactoryImpl.java 
(working copy)
@@ -20,6 +20,7 @@
 import org.apache.hivemind.ClassResolver;
 import org.apache.tapestry.IEngine;
 import org.apache.tapestry.services.EngineFactory;
+import org.apache.tapestry.services.RequestGlobals;
 import org.apache.tapestry.spec.IApplicationSpecification;

 /**
@@ -36,6 +37,7 @@
     private String _defaultEngineClassName;
     private EngineConstructor _constructor;
     private ClassResolver _classResolver;
+    private RequestGlobals _requestGlobals;

     interface EngineConstructor
     {
@@ -90,6 +92,7 @@
         IEngine result = _constructor.construct();

         result.setLocale(locale);
+        result.setGlobals(_requestGlobals);

         return result;
     }
@@ -109,4 +112,8 @@
         _defaultEngineClassName = string;
     }

+ public void setRequestGlobals(RequestGlobals requestGlobals) {
+  _requestGlobals = requestGlobals;
+ }
+
 }
Index: C:/tapestryv4/Tapestry 
SVN/framework/src/java/org/apache/tapestry/services/RequestGlobals.java
===================================================================
--- C:/tapestryv4/Tapestry 
SVN/framework/src/java/org/apache/tapestry/services/RequestGlobals.java 
(revision 264932)
+++ C:/tapestryv4/Tapestry 
SVN/framework/src/java/org/apache/tapestry/services/RequestGlobals.java 
(working copy)
@@ -17,6 +17,7 @@
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;

+import org.apache.tapestry.IRequestCycle;
 import org.apache.tapestry.web.WebRequest;
 import org.apache.tapestry.web.WebResponse;

@@ -31,6 +32,8 @@
     public void store(HttpServletRequest request, HttpServletResponse 
response);

     public void store(WebRequest request, WebResponse response);
+
+    public void store(IRequestCycle cycle);

     public HttpServletRequest getRequest();

@@ -39,4 +42,6 @@
     public HttpServletResponse getResponse();

     public WebResponse getWebResponse();
+
+    public IRequestCycle getCycle();
 }
\ No newline at end of file
Index: C:/tapestryv4/Tapestry 
SVN/framework/src/descriptor/META-INF/tapestry.globals.xml
===================================================================
--- C:/tapestryv4/Tapestry 
SVN/framework/src/descriptor/META-INF/tapestry.globals.xml (revision 264932)
+++ C:/tapestryv4/Tapestry 
SVN/framework/src/descriptor/META-INF/tapestry.globals.xml (working copy)
@@ -74,6 +74,17 @@
     </invoke-factory>
   </service-point>

+  <service-point id="RequestCycle" 
interface="org.apache.tapestry.IRequestCycle">
+
+    Exposes the current thread's WebResponse as a service.  The response is 
actually
+    stored in the RequestGlobals service.
+
+
+    <invoke-factory service-id="hivemind.lib.ServicePropertyFactory">
+      <construct service-id="RequestGlobals" property="cycle"/>
+    </invoke-factory>
+  </service-point>
+
   <service-point id="WebContext" 
interface="org.apache.tapestry.web.WebContext">

     Exposes the global WebContext (a wrapper around the Servlet or Portlet 
context)
@@ -109,6 +120,7 @@
     <property name="request" object="service:WebRequest"/>
     <property name="response" object="service:WebResponse"/>
     <property name="applicationId" 
object="service-property:ApplicationGlobals:activatorName"/>
-    <property name="context" object="service:WebContext"/>
+    <property name="context" object="service:WebContext"/>
+    <property name="cycle" object="service:RequestCycle"/>
   </contribution>
 </module>
\ No newline at end of file
Index: C:/tapestryv4/Tapestry 
SVN/framework/src/descriptor/META-INF/tapestry.request.xml
===================================================================
--- C:/tapestryv4/Tapestry 
SVN/framework/src/descriptor/META-INF/tapestry.request.xml (revision 264932)
+++ C:/tapestryv4/Tapestry 
SVN/framework/src/descriptor/META-INF/tapestry.request.xml (working copy)
@@ -83,6 +83,7 @@
       <construct class="impl.EngineFactoryImpl">
         <set-object property="applicationSpecification" 
value="infrastructure:applicationSpecification"/>
         <set-object property="defaultEngineClassName" 
value="global-property:org.apache.tapestry.engine-class"/>
+        <set-object property="requestGlobals" 
value="service:tapestry.globals.RequestGlobals"/>
       </construct>
     </invoke-factory>


----- Original Message ----- 
From: "Howard Lewis Ship" <hlship@gmail.com>
To: "Tapestry development" <tapestry-dev@jakarta.apache.org>
Sent: Thursday, September 01, 2005 5:01 PM
Subject: Re: Injecting the current RequestCycle into a Hivemind Service


> Yes, that could be done; it just isn't yet.
>
> On 9/1/05, Adam Greene <agreene@professionalopensource.ca> wrote:
>> Could it not be placed into Infrastructure like the WebRequest et al?  It 
>> is
>> via a class held in Infrastructure that the new RequestCycle is created 
>> to
>> begin with, just a small layer of indirection should do it.  I'll submit 
>> a
>> patch once I have one and leave it to the community to decide.
>>
>> ----- Original Message -----
>> From: "Howard Lewis Ship" <hlship@gmail.com>
>> To: "Tapestry development" <tapestry-dev@jakarta.apache.org>
>> Sent: Thursday, September 01, 2005 2:21 PM
>> Subject: Re: Injecting the current RequestCycle into a Hivemind Service
>>
>>
>> > Not easily; it isn't a service or a property of a service, it's
>> > literally passed around from one object to another.
>> >
>> > On 8/31/05, Adam Greene <agreene@professionalopensource.ca> wrote:
>> >> Is there any way to access the current RequestCycle from within a
>> >> Hivemind service?
>> >>
>> >
>> >
>> > --
>> > Howard M. Lewis Ship
>> > Independent J2EE / Open-Source Java Consultant
>> > Creator, Jakarta Tapestry
>> > Creator, Jakarta HiveMind
>> >
>> > Professional Tapestry training, mentoring, support
>> > and project work.  http://howardlewisship.com
>> >
>> > ---------------------------------------------------------------------
>> > To unsubscribe, e-mail: tapestry-dev-unsubscribe@jakarta.apache.org
>> > For additional commands, e-mail: tapestry-dev-help@jakarta.apache.org
>> >
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: tapestry-dev-unsubscribe@jakarta.apache.org
>> For additional commands, e-mail: tapestry-dev-help@jakarta.apache.org
>>
>>
>
>
> -- 
> Howard M. Lewis Ship
> Independent J2EE / Open-Source Java Consultant
> Creator, Jakarta Tapestry
> Creator, Jakarta HiveMind
>
> Professional Tapestry training, mentoring, support
> and project work.  http://howardlewisship.com
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: tapestry-dev-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: tapestry-dev-help@jakarta.apache.org
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: tapestry-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tapestry-dev-help@jakarta.apache.org


Mime
View raw message