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.








Attachment: smime.p7s
Description: S/MIME cryptographic signature

Reply via email to