IBM Support

JR41685: CMVC 217606 - PREVENT A CLASSCASTEXCEPTION WHILE COMPOSING AN ORDER WHERE PAYMENT PROTOCOL DATA IS STORED IN A NON STRING TYPE

Direct link to fix

Subscribe

You can track all active APARs for this component.

 

APAR status

  • Closed as program error.

Error description

  • Shoppers are trying to review an order in the storefront reach a
    generic error page.  The logs indicate that there was a
    CommandException while additional traces show that the root
    cause is a ClassCastException.
    
    The problem occurs since the GetOrder service, while composing
    the response BOD will try to include payment data, if such data
    exists.  While adding the protocol data into the response BOD,
    it assumes that all protocol data (PPCEXTDATA) is stored as type
    String, while it is possible to store this data in other java
    data types.
    
    The following is an example set of logs that show the error:
    
    [1/16/12 12:14:48:601 CST] 000000fb commands      1
    com.ibm.commerce.order.facade.server.commands.AbstractComposeOrd
    erCmdImpl composeProcotocolData java.lang.ClassCastException:
    java.lang.Integer incompatible with java.lang.String
    [1/16/12 12:14:48:601 CST] 000000fb CommerceSrvr  A
    com.ibm.commerce.order.facade.server.commands.ComposeOrderSummar
    yCmdImpl composeProcotocolData CMN0409E: The following error
    occurred during processing: "java.lang.Integer incompatible with
    java.lang.String".
    [1/16/12 12:14:48:601 CST] 000000fb commands      <
    com.ibm.commerce.order.facade.server.commands.GetOrderCmdImpl
    performExpression() RETURN null
    [1/16/12 12:14:48:601 CST] 000000fb bod           1
    com.ibm.commerce.foundation.server.command.bod.BusinessObjectDoc
    umentProcessor
    processBusinessObjectDocument(BusinessObjectDocumentType,
    String) catch throwable
                                     Current exception:
    Message:
       null
    Stack trace:
    com.ibm.websphere.command.CommandException
     at
    com.ibm.commerce.foundation.server.command.bod.BusinessObjectCom
    mandTargetImpl.executeCommand(BusinessObjectCommandTargetImpl.ja
    va:137)
     at
    com.ibm.ws.cache.command.CommandCache.executeCommand(CommandCach
    e.java:332)
    
    ...
    Caused by: com.ibm.commerce.exception.ECApplicationException:
    The following error occurred during processing:
    "java.lang.Integer incompatible with java.lang.String".
     at
    com.ibm.commerce.order.facade.server.commands.AbstractComposeOrd
    erCmdImpl.composePaymentInstruction(AbstractComposeOrderCmdImpl.
    java:2961)
     at
    com.ibm.commerce.order.facade.server.commands.AbstractComposeOrd
    erCmdImpl.composeOrderPaymentInfo(AbstractComposeOrderCmdImpl.ja
    va:2975)
     at
    com.ibm.commerce.order.facade.server.commands.AbstractComposeOrd
    erCmdImpl.composeOrder(AbstractComposeOrderCmdImpl.java:433)
     at
    com.ibm.commerce.order.facade.server.commands.ComposeOrderSummar
    yCmdImpl.composeOrderSummary(ComposeOrderSummaryCmdImpl.java:123
    )
     at
    com.ibm.commerce.order.facade.server.commands.ComposeOrderSummar
    yCmdImpl.execute(ComposeOrderSummaryCmdImpl.java:143)
     at
    com.ibm.commerce.order.facade.server.commands.GetOrderCmdImpl.pe
    rformExpression(GetOrderCmdImpl.java:124)
     at
    com.ibm.commerce.foundation.server.command.bod.AbstractGetBusine
    ssObjectDocumentCmdImpl.performExecute(AbstractGetBusinessObject
    DocumentCmdImpl.java:144)
     at
    com.ibm.commerce.foundation.server.command.bod.BusinessObjectCom
    mandTargetImpl.executeCommand(BusinessObjectCommandTargetImpl.ja
    va:112)
     ... 92 more
    

Local fix

  • This problem only occurs if the data type of the payment
    protocol data is a non-String type.  Adjusting your payment
    plugin to only use the String type can prevent this problem.
    

Problem summary

  • USERS AFFECTED:
    Users who use a customized payment plugin which stores protocol
    data in a non-string type and who use the GetOrder service on
    orders which have such data stored against it.
    
    PROBLEM ABSTRACT:
    ClassCastException is thrown while executing a GetOrder service
    request where the payment protocol data is stored in a
    non-String type.
    
    BUSINESS IMPACT:
    The GetOrder service returns in error for any order that has
    this type of data associated to it.
    
    RECOMMENDATION:
    

Problem conclusion

  • The code was updated to be type sensitive and correctly handle
    the data based on the type it was defined to be as per the
    PPCEXTDATA.ATTRIBUTETYPE column.
    -------------------------------------------------------------
    The latest available maintenance information can be obtained
    from the Recommended Fixes for WebSphere Commerce technote:
    http://www.ibm.com/support/docview.wss?rs=3046&uid=swg21261296
    

Temporary fix

Comments

APAR Information

  • APAR number

    JR41685

  • Reported component name

    3C COM PROF ED

  • Reported component ID

    5724I4000

  • Reported release

    700

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt

  • Submitted date

    2012-01-17

  • Closed date

    2012-02-10

  • Last modified date

    2012-02-10

  • APAR is sysrouted FROM one or more of the following:

  • APAR is sysrouted TO one or more of the following:

Fix information

  • Fixed component name

    3C COM PROF ED

  • Fixed component ID

    5724I4000

Applicable component levels

  • R700 PSY

       UP

[{"Business Unit":{"code":"BU059","label":"IBM Software w\/o TPS"},"Product":{"code":"SSPK6A","label":"WebSphere Commerce Professional"},"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"7.0","Line of Business":{"code":"LOB31","label":"WCE Watson Marketing and Commerce"}}]

Document Information

Modified date:
07 December 2021