I have changed the service definition to include paymentGatewayRespMsg as
parameter and checked which parameter has been passed as per your
suggestion. Also changed the calling code where paymentGatewayRespMsg is
being passed, now instead of savePgr it will call savePgrMessage, as we
could not decided which parameter is passed in savePgr, I have created this
separate method, savePgrMessage.

I will submit the patch when jira is up.


On Wed, Sep 30, 2009 at 2:07 PM, Scott Gray <[email protected]>wrote:

> You could use the same service I guess since it's only real function is to
> save a generic value.  I would change the service definition though so that
> there is a separate input attribute for a paymentGatewayResponseMsg and
> instead of checking checking the entity name just check which attribute has
> been passed in, I think this will be clearer for people looking at the code.
>
> Regards
> Scott
>
>
> On 30/09/2009, at 9:30 PM, Abdullah Shaikh wrote:
>
>  Scott,
>>
>> Should we then have a separate service for saving
>> PaymentGatewayResponseMsgs
>> or should we have a condition in savePaymentGatewayResponse, which will
>> check the entity name (genericvalue.getEntityName()), and decided on the
>> field mapping ?
>>
>>
>> On Wed, Sep 30, 2009 at 1:56 PM, Abdullah Shaikh <
>> [email protected]> wrote:
>>
>>  The savePgr method of PaymentGatewayServices, is called from multiple
>>> places, this method expects 2 parameters, DispatchContext & GenericValue,
>>> but the issue is the calling methods which calls savePgr methods passes
>>> PaymentGatewayResponse in some places and PaymentGatewayRespMsg in some
>>> places.
>>>
>>> The savePgr method in turn calls savePaymentGatewayResponse service.
>>>
>>> I guess we need to have one more method which will work if
>>> PaymentGatewayRespMsg as GenericValue is passed or may be a condition
>>> based
>>> on the entity name which we can get from the GenericValue ?
>>>
>>> Any other thoughts ?
>>>
>>> On Wed, Sep 30, 2009 at 1:54 PM, Scott Gray <[email protected]
>>> >wrote:
>>>
>>>  You are right Abdullah, it looks the like the code calling the service
>>>> is
>>>> attempting to use it for saving both PaymentGatewayResponses and
>>>> PaymentGatewayResponseMsgs, but it is only capable of handling the
>>>> former.
>>>> The fix I think would be to have a separate service for saving
>>>> PaymentGatewayResponseMsgs and have the calling code use that where
>>>> needed.
>>>>
>>>> Regards
>>>> Scott
>>>>
>>>>
>>>> On 30/09/2009, at 8:52 PM, Abdullah Shaikh wrote:
>>>>
>>>> Hi Scott,
>>>>
>>>>>
>>>>> Yes, PaymentGatewayResponse does have a field called gatewayMessage,
>>>>> but
>>>>> the
>>>>> GenericValue we are getting from the context is of
>>>>> PaymentGatewayRespMsg.
>>>>>
>>>>> There can be two cases here:
>>>>>
>>>>> 1) Either the GenericValue that we are getting from the context should
>>>>> be
>>>>> of
>>>>> type PaymentGatewayResponse, which currently is PaymentGatewayRespMsg
>>>>>
>>>>> or
>>>>>
>>>>> 2) The field name should be changed as I mentioned earlier.
>>>>>
>>>>> Below is the error that I was getting that lead me to this issue :
>>>>>
>>>>> ---- exception report
>>>>> ----------------------------------------------------------
>>>>>  [java] Service [savePaymentGatewayResponse] threw an unexpected
>>>>> exception/error
>>>>>  [java] Exception: org.ofbiz.service.GenericServiceException
>>>>>  [java] Message: Service [savePaymentGatewayResponse] target threw an
>>>>> unexpected exception ([GenericEntity.get] "gatewayMessage" is not a
>>>>> field
>>>>> of
>>>>> PaymentGatewayRespMsg)
>>>>>  [java] ---- cause
>>>>> ---------------------------------------------------------------------
>>>>>  [java] Exception: java.lang.IllegalArgumentException
>>>>>  [java] Message: [GenericEntity.get] "gatewayMessage" is not a field of
>>>>> PaymentGatewayRespMsg
>>>>>  [java] ---- stack trace
>>>>> ---------------------------------------------------------------
>>>>>  [java] java.lang.IllegalArgumentException: [GenericEntity.get]
>>>>> "gatewayMessage" is not a field of PaymentGatewayRespMsg
>>>>>  [java] org.ofbiz.entity.GenericEntity.get(GenericEntity.java:305)
>>>>>  [java]
>>>>> org.ofbiz.entity.GenericEntity.getString(GenericEntity.java:582)
>>>>>  [java]
>>>>>
>>>>>
>>>>> org.ofbiz.accounting.payment.PaymentGatewayServices.savePaymentGatewayResponse(PaymentGatewayServices.java:2850)
>>>>>
>>>>>
>>>>> On Wed, Sep 30, 2009 at 12:07 PM, Abdullah Shaikh <
>>>>> [email protected]> wrote:
>>>>>
>>>>> Jira issue created and patch attached,
>>>>>
>>>>>> https://issues.apache.org/jira/browse/OFBIZ-2978
>>>>>>
>>>>>>
>>>>>> On Wed, Sep 30, 2009 at 2:07 AM, Scott Gray <
>>>>>> [email protected]
>>>>>>
>>>>>>> wrote:
>>>>>>>
>>>>>>
>>>>>> Yes please
>>>>>>
>>>>>>>
>>>>>>> Regards
>>>>>>> Scott
>>>>>>>
>>>>>>>
>>>>>>> On 30/09/2009, at 1:45 AM, Abdullah Shaikh wrote:
>>>>>>>
>>>>>>> Should I submit the patch ?
>>>>>>>
>>>>>>>
>>>>>>>> On Tue, Sep 29, 2009 at 4:00 PM, Abdullah Shaikh <
>>>>>>>> [email protected]> wrote:
>>>>>>>>
>>>>>>>> In savePaymentGatewayResponse method of PaymentGatewayServices
>>>>>>>> class,
>>>>>>>> we
>>>>>>>>
>>>>>>>>  are setting the "gatewayMessage" field on the GenericValue of
>>>>>>>>> PaymentGatewayRespMsg, but there is no field named "gatewayMessage"
>>>>>>>>> in
>>>>>>>>> entity PaymentGatewayRespMsg but instead we need to use
>>>>>>>>> "pgrMessage"
>>>>>>>>> in
>>>>>>>>> place of "gatewayMessage".
>>>>>>>>>
>>>>>>>>> I guess we mistakely assumed the GenericValue which we get from the
>>>>>>>>> context, context.get("paymentGatewayResponse");, to be of
>>>>>>>>> PaymentGatewayResponse, but its the GenericValue of
>>>>>>>>> PaymentGatewayRespMsg
>>>>>>>>> but while putting it on the context we named it as
>>>>>>>>> "paymentGatewayResponse".
>>>>>>>>>
>>>>>>>>> I have changed the savePaymentGatewayResponse, and will submit the
>>>>>>>>> patch,
>>>>>>>>> but before submitting I would like to confirm this.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>
>>>>>>
>>>>
>>>
>

Reply via email to