Uploaded image for project: 'OFBiz'
  1. OFBiz
  2. OFBIZ-6057

Quote item view FreeMarker error due Freemarker 2.3 versions higher than 2.3.19

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Major
    • Resolution: Incomplete
    • Affects Version/s: Release Branch 12.04, Release Branch 13.07, Release Branch 14.12, Trunk
    • Fix Version/s: 14.12.01, 13.07.02, 16.11.01
    • Component/s: accounting, order
    • Labels:
      None
    • Environment:

      Linux

      Description

      In order to fix OFBIZ-2120, code was added to the applications/order/webapp/ordermgr/quote/ViewQuoteItemInfo.ftl file at lines 53 through 57, with the offending line being at 5:

      https://github.com/apache/ofbiz/blob/trunk/applications/order/webapp/ordermgr/quote/ViewQuoteItemInfo.ftl##L56

      Here is the commit: https://github.com/apache/ofbiz/commit/27253c4667e87721212fa8955d75c74a0d171c73

      This ends up causing the following error:

      [java] freemarker.core.InvalidReferenceException: The following has evaluated to null or missing:
      [java] ==> null [in template "component://order/webapp/ordermgr/quote/ViewQuoteItemInfo.ftl" at line 56, column 40]
      [java]
      [java] ----
      [java] Tip: If the failing expression is known to be legally refer to something that's null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
      [java] ----
      [java]
      [java] ----
      [java] FTL stack trace ("~" means nesting-related):
      [java] - Failed at: #assign product = null [in template "component://order/webapp/ordermgr/quote/ViewQuoteItemInfo.ftl" at line 56, column 21]
      [java] - Reached through: #list quoteItems as quoteItem [in template "component://order/webapp/ordermgr/quote/ViewQuoteItemInfo.ftl" at line 52, column 13]

      The main reason for this is because there is no concept of "null" in FreeMarker 2.3, as the following thread explains: http://ehc.ac/p/freemarker/discussion/2346/thread/85da30a4/ Not sure how to go about fixing this error, the thread suggests setting the variable to the string "null".

      There are other instances of this bug as well:

      $ grep -r "<#assign" * | grep "= null"
      applications/order/webapp/ordermgr/return/returnItems.ftl: <#assign returnItemSubTotal = null > <#-- otherwise the last item's might carry over -->
      applications/order/webapp/ordermgr/quote/ViewQuoteItemInfo.ftl: <#assign product = null> <#-- don't drag it along to the next iteration -->
      applications/accounting/webapp/accounting/reports/DepositSlip.fo.ftl: <#assign creditCard = null/>
      framework/webtools/webapp/webtools/datafile/viewdatafile.ftl: <#assign lastRecordName = null>

      Reproduction Steps:

      1) Visit http://demo-stable-ofbiz.apache.org/ordermgr/control/FindRequest
      2) Click "New Request"
      3) Set

      • Cust Request Type Id = Request for Quote
      • Requesting Party = DemoCustomer
      • Cust Request Name = Test Request
      • Description = This is a test request

      4) Click "Sumbit"
      5) "Create Quote from request"
      6) error will appear

        Issue Links

          Activity

          Hide
          deepak.dixit Deepak Dixit added a comment - - edited

          Thanks Forrest Rae for reporting the issue.
          This has been fixed at
          Trunk at r#1672873
          14.12 at r#1672874
          13.07 at r#1672875

          Show
          deepak.dixit Deepak Dixit added a comment - - edited Thanks Forrest Rae for reporting the issue. This has been fixed at Trunk at r#1672873 14.12 at r#1672874 13.07 at r#1672875
          Hide
          jacques.le.roux Jacques Le Roux added a comment - - edited

          We still need to fix the other cases Forrest signaled, and also in R12.04... I reopen.

          Show
          jacques.le.roux Jacques Le Roux added a comment - - edited We still need to fix the other cases Forrest signaled, and also in R12.04... I reopen.
          Hide
          jacopoc Jacopo Cappellato added a comment -

          Please create a new ticket (that references this) for the 12.04 branch: otherwise the fixes for the already fixed branches will not appear in the release notes.

          Show
          jacopoc Jacopo Cappellato added a comment - Please create a new ticket (that references this) for the 12.04 branch: otherwise the fixes for the already fixed branches will not appear in the release notes.
          Hide
          jacques.le.roux Jacques Le Roux added a comment - - edited

          Since I reopened, I believe I can change the "Affects Version/s:" and "Fix Version/s:" fields, et voilà, why a new issue?

          I'm not sure I got your point "otherwise the fixes for the already fixed branches will not appear in the release notes." Did I miss something?

          Show
          jacques.le.roux Jacques Le Roux added a comment - - edited Since I reopened, I believe I can change the "Affects Version/s:" and "Fix Version/s:" fields, et voilà, why a new issue? I'm not sure I got your point "otherwise the fixes for the already fixed branches will not appear in the release notes." Did I miss something?
          Hide
          jacopoc Jacopo Cappellato added a comment -

          Until it will be closed it will disappears from the release notes, even the ones of the releases that are already fixed.
          This is what I meant.

          Show
          jacopoc Jacopo Cappellato added a comment - Until it will be closed it will disappears from the release notes, even the ones of the releases that are already fixed. This is what I meant.
          Hide
          jacques.le.roux Jacques Le Roux added a comment -

          Ho, I see your point, you have released R13.07.02 already. OK I close here... but we need more work for this to be really closed, only a part has been done. I mean not only on R12.04 but all the rest, quoting the description:

          $ grep -r "<#assign" * | grep "= null"
          applications/order/webapp/ordermgr/return/returnItems.ftl: <#assign returnItemSubTotal = null > <#-- otherwise the last item's might carry over -->
          applications/order/webapp/ordermgr/quote/ViewQuoteItemInfo.ftl: <#assign product = null> <#-- don't drag it along to the next iteration -->
          applications/accounting/webapp/accounting/reports/DepositSlip.fo.ftl: <#assign creditCard = null/>
          framework/webtools/webapp/webtools/datafile/viewdatafile.ftl: <#assign lastRecordName = null>

          Anyway I agree, because of the release of R13.07.02, I will....

          Show
          jacques.le.roux Jacques Le Roux added a comment - Ho, I see your point, you have released R13.07.02 already. OK I close here... but we need more work for this to be really closed, only a part has been done. I mean not only on R12.04 but all the rest, quoting the description: $ grep -r "<#assign" * | grep "= null" applications/order/webapp/ordermgr/return/returnItems.ftl: <#assign returnItemSubTotal = null > <#-- otherwise the last item's might carry over --> applications/order/webapp/ordermgr/quote/ViewQuoteItemInfo.ftl: <#assign product = null> <#-- don't drag it along to the next iteration --> applications/accounting/webapp/accounting/reports/DepositSlip.fo.ftl: <#assign creditCard = null/> framework/webtools/webapp/webtools/datafile/viewdatafile.ftl: <#assign lastRecordName = null> Anyway I agree, because of the release of R13.07.02, I will....
          Hide
          jacques.le.roux Jacques Le Roux added a comment -

          I created OFBIZ-6249 (raw for now)

          Show
          jacques.le.roux Jacques Le Roux added a comment - I created OFBIZ-6249 (raw for now)
          Hide
          jacques.le.roux Jacques Le Roux added a comment -

          BTW I was wrong, weirdly there is no needs to change R12.04 though it uses Freemarker 2.3, exactly 2.3.19, this is confusing... But the other null assignments are wrong in trunk and newer branches anyay

          Show
          jacques.le.roux Jacques Le Roux added a comment - BTW I was wrong, weirdly there is no needs to change R12.04 though it uses Freemarker 2.3, exactly 2.3.19, this is confusing... But the other null assignments are wrong in trunk and newer branches anyay

            People

            • Assignee:
              deepak.dixit Deepak Dixit
              Reporter:
              fbr@14x.net Forrest Rae
            • Votes:
              0 Vote for this issue
              Watchers:
              4 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:

                Development