You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@ofbiz.apache.org by Ritesh Trivedi <ri...@gmail.com> on 2008/10/04 04:55:05 UTC

How is request passed to groovy scripts?

Hi,

I am trying to call sendEmailFromScreen for a custom screen very similar to
EmailOrderScreens, the groovy script is one of the existing ones
ShopCart.groovy. sendEmailFromScreen service throws an exception groovy -
property request not found for class ShopCart. 

I looked at similar code in e-commerce etc for sending email e.g.
OrderConfirmEmail - I dont see any difference in 2 calls.

Will appreciate any pointers...
-- 
View this message in context: http://www.nabble.com/How-is-request-passed-to-groovy-scripts--tp19808550p19808550.html
Sent from the OFBiz - User mailing list archive at Nabble.com.


Re: How is request passed to groovy scripts?

Posted by "bjfree@free-man.net" <bj...@free-man.net>.
have you looked at the confirmed order email.
seems your duplicating it function.

Ritesh Trivedi wrote:
> I guess I could have been bit more clear in asking the question...
> 
> I actually meant request object (HttpServletRequest) passed to the groovy
> script. As it seems like its an implicit object or getting passed somehow
> that I cant figure out.
> 
> I will try to be more explicit. I am calling sendEmailFromScreen service and
> passing it one of the screen names.  
> 
> Here is the screen definition
> <screens xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
>        
> xsi:noNamespaceSchemaLocation="http://www.ofbiz.org/dtds/widget-screen.xsd">
>     <screen name="EmailFullCart">
>         <section>
>             <actions>
>                 <set field="titleProperty" value="PageTitleShoppingCart"/>
>                 <set field="headerItem" value="Shopping Cart"/>
>                 <script
> location="component://ecommerce/webapp/ecommerce/WEB-INF/actions/cart/ShowCart.groovy"/>
>                 <script
> location="component://ecommerce/webapp/ecommerce/WEB-INF/actions/cart/ShowPromoText.groovy"/>
>             </actions>
>             <widgets>
>                 <platform-specific><html><html-template
> location="component://neobits/webapp/neobits/cart/showcart.ftl"/></html></platform-specific>
>             </widgets>
>         </section>
>     </screen>
> </screens>
> 
> As you can see one of the actions is ShowCart.groovy which is an existing
> groovy script in ecommerce demo app and here is the first line of that
> script
> 
> // Get the Cart and Prepare Size
> shoppingCart = ShoppingCartEvents.getCartObject(request);
> 
> I get request property not set for ShowCart error while passing this screen
> to be rendered with sendMailFromScreen from my java code. 
> 
> So my original question was how is request object passed to Groovy script,
> Looking at the existing calls it doesnt look like it is passed in the
> context while calling the service or is it done by ServiceEventHandler. Can
> someone more familiar with the topic shed some light?
> 
> 
> King-of-mabs wrote:
>> Hi ,
>> I am not confirm but let you check this that whether you set property for
>> your groovy file or not. and So then please post your console or screen
>> error in mail.
>>
>>
>> Regards
>> Ravindra Mandre
>> Indore
>>
>>
> 

Re: How is request passed to groovy scripts?

Posted by "bjfree@free-man.net" <bj...@free-man.net>.
orderservices.java
calls
sendOrderNotificationScreen with a type like PRDS_ODR_CONFIRM
sendOrderNotificationScreen  lookes up in the ProductStoreEmails
https://demo.hotwaxmedia.com/webtools/control/FindGeneric?entityName=ProductStoreEmailSetting&find=true&VIEW_SIZE=50&VIEW_INDEX=0

I could not find the OrderStatus.groovy
however
SendConfirmationEmail.groovy
does the same thing that orderservices.java does



Ritesh Trivedi wrote:
> Joe,
> 
> Thanks for pointing that out - but sendMailFromScreen is not calling that
> method, it calls the populateContextForService method. OrderConfirmEmail
> actually gets sent from service (OrderServices.java) and yet the groovy
> script in OrderStatus uses request object without any errors. So it seems
> that someone is passing request object explicity as bodyParameter but I cant
> find it.
> 
> 
> 
> Joe Eckard wrote:
>> Check the populateContextForRequest method in /framework/widget/src/ 
>> org/ofbiz/widget/screen/ScreenRenderer.java, I believe this is what  
>> you're looking for.
>>
>> -Joe
>>
>> On Oct 4, 2008, at 1:43 AM, Ritesh Trivedi wrote:
>>
>>> I guess I could have been bit more clear in asking the question...
>>>
>>> I actually meant request object (HttpServletRequest) passed to the  
>>> groovy
>>> script. As it seems like its an implicit object or getting passed  
>>> somehow
>>> that I cant figure out.
>>>
>>> I will try to be more explicit. I am calling sendEmailFromScreen  
>>> service and
>>> passing it one of the screen names.
>>>
>>> Here is the screen definition
>>> <screens xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>>>
>>> xsi:noNamespaceSchemaLocation="http://www.ofbiz.org/dtds/widget-screen.xsd 
>>> ">
>>>    <screen name="EmailFullCart">
>>>        <section>
>>>            <actions>
>>>                <set field="titleProperty"  
>>> value="PageTitleShoppingCart"/>
>>>                <set field="headerItem" value="Shopping Cart"/>
>>>                <script
>>> location="component://ecommerce/webapp/ecommerce/WEB-INF/actions/ 
>>> cart/ShowCart.groovy"/>
>>>                <script
>>> location="component://ecommerce/webapp/ecommerce/WEB-INF/actions/ 
>>> cart/ShowPromoText.groovy"/>
>>>            </actions>
>>>            <widgets>
>>>                <platform-specific><html><html-template
>>> location="component://neobits/webapp/neobits/cart/showcart.ftl"/></ 
>>> html></platform-specific>
>>>            </widgets>
>>>        </section>
>>>    </screen>
>>> </screens>
>>>
>>> As you can see one of the actions is ShowCart.groovy which is an  
>>> existing
>>> groovy script in ecommerce demo app and here is the first line of that
>>> script
>>>
>>> // Get the Cart and Prepare Size
>>> shoppingCart = ShoppingCartEvents.getCartObject(request);
>>>
>>> I get request property not set for ShowCart error while passing this  
>>> screen
>>> to be rendered with sendMailFromScreen from my java code.
>>>
>>> So my original question was how is request object passed to Groovy  
>>> script,
>>> Looking at the existing calls it doesnt look like it is passed in the
>>> context while calling the service or is it done by  
>>> ServiceEventHandler. Can
>>> someone more familiar with the topic shed some light?
>>>
>>>
>>> King-of-mabs wrote:
>>>> Hi ,
>>>> I am not confirm but let you check this that whether you set  
>>>> property for
>>>> your groovy file or not. and So then please post your console or  
>>>> screen
>>>> error in mail.
>>>>
>>>>
>>>> Regards
>>>> Ravindra Mandre
>>>> Indore
>>>>
>>>>
>>> -- 
>>> View this message in context:
>>> http://www.nabble.com/How-is-request-passed-to-groovy-scripts--tp19808550p19809275.html
>>> Sent from the OFBiz - User mailing list archive at Nabble.com.
>>
>>  
>>
> 

Re: How is request passed to groovy scripts?

Posted by Ritesh Trivedi <ri...@gmail.com>.
Joe,

Thanks for pointing that out - but sendMailFromScreen is not calling that
method, it calls the populateContextForService method. OrderConfirmEmail
actually gets sent from service (OrderServices.java) and yet the groovy
script in OrderStatus uses request object without any errors. So it seems
that someone is passing request object explicity as bodyParameter but I cant
find it.



Joe Eckard wrote:
> 
> Check the populateContextForRequest method in /framework/widget/src/ 
> org/ofbiz/widget/screen/ScreenRenderer.java, I believe this is what  
> you're looking for.
> 
> -Joe
> 
> On Oct 4, 2008, at 1:43 AM, Ritesh Trivedi wrote:
> 
>>
>> I guess I could have been bit more clear in asking the question...
>>
>> I actually meant request object (HttpServletRequest) passed to the  
>> groovy
>> script. As it seems like its an implicit object or getting passed  
>> somehow
>> that I cant figure out.
>>
>> I will try to be more explicit. I am calling sendEmailFromScreen  
>> service and
>> passing it one of the screen names.
>>
>> Here is the screen definition
>> <screens xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>>
>> xsi:noNamespaceSchemaLocation="http://www.ofbiz.org/dtds/widget-screen.xsd 
>> ">
>>    <screen name="EmailFullCart">
>>        <section>
>>            <actions>
>>                <set field="titleProperty"  
>> value="PageTitleShoppingCart"/>
>>                <set field="headerItem" value="Shopping Cart"/>
>>                <script
>> location="component://ecommerce/webapp/ecommerce/WEB-INF/actions/ 
>> cart/ShowCart.groovy"/>
>>                <script
>> location="component://ecommerce/webapp/ecommerce/WEB-INF/actions/ 
>> cart/ShowPromoText.groovy"/>
>>            </actions>
>>            <widgets>
>>                <platform-specific><html><html-template
>> location="component://neobits/webapp/neobits/cart/showcart.ftl"/></ 
>> html></platform-specific>
>>            </widgets>
>>        </section>
>>    </screen>
>> </screens>
>>
>> As you can see one of the actions is ShowCart.groovy which is an  
>> existing
>> groovy script in ecommerce demo app and here is the first line of that
>> script
>>
>> // Get the Cart and Prepare Size
>> shoppingCart = ShoppingCartEvents.getCartObject(request);
>>
>> I get request property not set for ShowCart error while passing this  
>> screen
>> to be rendered with sendMailFromScreen from my java code.
>>
>> So my original question was how is request object passed to Groovy  
>> script,
>> Looking at the existing calls it doesnt look like it is passed in the
>> context while calling the service or is it done by  
>> ServiceEventHandler. Can
>> someone more familiar with the topic shed some light?
>>
>>
>> King-of-mabs wrote:
>>>
>>> Hi ,
>>> I am not confirm but let you check this that whether you set  
>>> property for
>>> your groovy file or not. and So then please post your console or  
>>> screen
>>> error in mail.
>>>
>>>
>>> Regards
>>> Ravindra Mandre
>>> Indore
>>>
>>>
>>
>> -- 
>> View this message in context:
>> http://www.nabble.com/How-is-request-passed-to-groovy-scripts--tp19808550p19809275.html
>> Sent from the OFBiz - User mailing list archive at Nabble.com.
> 
> 
>  
> 

-- 
View this message in context: http://www.nabble.com/How-is-request-passed-to-groovy-scripts--tp19808550p19815152.html
Sent from the OFBiz - User mailing list archive at Nabble.com.


Re: How is request passed to groovy scripts?

Posted by Joe Eckard <jo...@redrocketcorp.com>.
Check the populateContextForRequest method in /framework/widget/src/ 
org/ofbiz/widget/screen/ScreenRenderer.java, I believe this is what  
you're looking for.

-Joe

On Oct 4, 2008, at 1:43 AM, Ritesh Trivedi wrote:

>
> I guess I could have been bit more clear in asking the question...
>
> I actually meant request object (HttpServletRequest) passed to the  
> groovy
> script. As it seems like its an implicit object or getting passed  
> somehow
> that I cant figure out.
>
> I will try to be more explicit. I am calling sendEmailFromScreen  
> service and
> passing it one of the screen names.
>
> Here is the screen definition
> <screens xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>
> xsi:noNamespaceSchemaLocation="http://www.ofbiz.org/dtds/widget-screen.xsd 
> ">
>    <screen name="EmailFullCart">
>        <section>
>            <actions>
>                <set field="titleProperty"  
> value="PageTitleShoppingCart"/>
>                <set field="headerItem" value="Shopping Cart"/>
>                <script
> location="component://ecommerce/webapp/ecommerce/WEB-INF/actions/ 
> cart/ShowCart.groovy"/>
>                <script
> location="component://ecommerce/webapp/ecommerce/WEB-INF/actions/ 
> cart/ShowPromoText.groovy"/>
>            </actions>
>            <widgets>
>                <platform-specific><html><html-template
> location="component://neobits/webapp/neobits/cart/showcart.ftl"/></ 
> html></platform-specific>
>            </widgets>
>        </section>
>    </screen>
> </screens>
>
> As you can see one of the actions is ShowCart.groovy which is an  
> existing
> groovy script in ecommerce demo app and here is the first line of that
> script
>
> // Get the Cart and Prepare Size
> shoppingCart = ShoppingCartEvents.getCartObject(request);
>
> I get request property not set for ShowCart error while passing this  
> screen
> to be rendered with sendMailFromScreen from my java code.
>
> So my original question was how is request object passed to Groovy  
> script,
> Looking at the existing calls it doesnt look like it is passed in the
> context while calling the service or is it done by  
> ServiceEventHandler. Can
> someone more familiar with the topic shed some light?
>
>
> King-of-mabs wrote:
>>
>> Hi ,
>> I am not confirm but let you check this that whether you set  
>> property for
>> your groovy file or not. and So then please post your console or  
>> screen
>> error in mail.
>>
>>
>> Regards
>> Ravindra Mandre
>> Indore
>>
>>
>
> -- 
> View this message in context: http://www.nabble.com/How-is-request-passed-to-groovy-scripts--tp19808550p19809275.html
> Sent from the OFBiz - User mailing list archive at Nabble.com.


Re: How is request passed to groovy scripts?

Posted by Ritesh Trivedi <ri...@gmail.com>.
I guess I could have been bit more clear in asking the question...

I actually meant request object (HttpServletRequest) passed to the groovy
script. As it seems like its an implicit object or getting passed somehow
that I cant figure out.

I will try to be more explicit. I am calling sendEmailFromScreen service and
passing it one of the screen names.  

Here is the screen definition
<screens xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
       
xsi:noNamespaceSchemaLocation="http://www.ofbiz.org/dtds/widget-screen.xsd">
    <screen name="EmailFullCart">
        <section>
            <actions>
                <set field="titleProperty" value="PageTitleShoppingCart"/>
                <set field="headerItem" value="Shopping Cart"/>
                <script
location="component://ecommerce/webapp/ecommerce/WEB-INF/actions/cart/ShowCart.groovy"/>
                <script
location="component://ecommerce/webapp/ecommerce/WEB-INF/actions/cart/ShowPromoText.groovy"/>
            </actions>
            <widgets>
                <platform-specific><html><html-template
location="component://neobits/webapp/neobits/cart/showcart.ftl"/></html></platform-specific>
            </widgets>
        </section>
    </screen>
</screens>

As you can see one of the actions is ShowCart.groovy which is an existing
groovy script in ecommerce demo app and here is the first line of that
script

// Get the Cart and Prepare Size
shoppingCart = ShoppingCartEvents.getCartObject(request);

I get request property not set for ShowCart error while passing this screen
to be rendered with sendMailFromScreen from my java code. 

So my original question was how is request object passed to Groovy script,
Looking at the existing calls it doesnt look like it is passed in the
context while calling the service or is it done by ServiceEventHandler. Can
someone more familiar with the topic shed some light?


King-of-mabs wrote:
> 
> Hi ,
> I am not confirm but let you check this that whether you set property for
> your groovy file or not. and So then please post your console or screen
> error in mail.
> 
> 
> Regards
> Ravindra Mandre
> Indore
> 
> 

-- 
View this message in context: http://www.nabble.com/How-is-request-passed-to-groovy-scripts--tp19808550p19809275.html
Sent from the OFBiz - User mailing list archive at Nabble.com.


Re: How is request passed to groovy scripts?

Posted by Ravi <ra...@gmail.com>.
Hi ,
I am not confirm but let you check this that whether you set property for
your groovy file or not. and So then please post your console or screen
error in mail.


Regards
Ravindra Mandre
Indore

Re: How is request passed to groovy scripts?

Posted by "bjfree@free-man.net" <bj...@free-man.net>.
take a look at the ProductStoreEmailSetting
data in the
application/ecommerce/data/demoproducts.xml
for examples of screens being used for this service.
if you look at the service
sendMailFromScreen
you will see what is needed.
if you look at
component://party/widget/partymgr/EmailPartyScreens.xml#CreatePartyNotification
you will see an example of a screen that is passed



bjfree@free-man.net wrote:
> groovy does not have anything to do with calling a service.
> that is done thru the target and the controller.
> grovvy is used to marshal and manipulate data for display or sending in 
> context to services.
> review
> http://docs.ofbiz.org/display/OFBTECH/Framework+Introduction+Videos+and+Diagrams 
> 
> all videos specifically #7
> 
> Ritesh Trivedi wrote:
>> Hi,
>>
>> I am trying to call sendEmailFromScreen for a custom screen very 
>> similar to
>> EmailOrderScreens, the groovy script is one of the existing ones
>> ShopCart.groovy. sendEmailFromScreen service throws an exception groovy -
>> property request not found for class ShopCart.
>> I looked at similar code in e-commerce etc for sending email e.g.
>> OrderConfirmEmail - I dont see any difference in 2 calls.
>>
>> Will appreciate any pointers...
> 
> 
> 

Re: How is request passed to groovy scripts?

Posted by "bjfree@free-man.net" <bj...@free-man.net>.
groovy does not have anything to do with calling a service.
that is done thru the target and the controller.
grovvy is used to marshal and manipulate data for display or sending in 
context to services.
review
http://docs.ofbiz.org/display/OFBTECH/Framework+Introduction+Videos+and+Diagrams
all videos specifically #7

Ritesh Trivedi wrote:
> Hi,
> 
> I am trying to call sendEmailFromScreen for a custom screen very similar to
> EmailOrderScreens, the groovy script is one of the existing ones
> ShopCart.groovy. sendEmailFromScreen service throws an exception groovy -
> property request not found for class ShopCart. 
> 
> I looked at similar code in e-commerce etc for sending email e.g.
> OrderConfirmEmail - I dont see any difference in 2 calls.
> 
> Will appreciate any pointers...