Uploaded image for project: 'PUBLIC - Liferay Commerce'
  1. PUBLIC - Liferay Commerce
  2. COMMERCE-1787

ClassCastException when using the shipping origin locator (for FedEx shipping)

    Details

      Description

      When Liferay Commerce is configured to use the FedEx shipping method as an enabled option, the "Shipping Methods" step in checkout fails to render and a ClassCastException is thrown.

      Steps to reproduce:

      1. Navigate to Site Admin -> Commerce -> Settings -> Shipping Methods
      2. Enable FedEx as a shipping method
      3. Go back to the site and adds some products to cart
      4. Start the checkout process
      5. Proceed through checkout until you get to the Shipping Options step
        Result: the error message "Checkout is temporarily unavailable" is shown, and the following error appears in the logs:
      2019-08-26 18:41:33.230 ERROR [http-nio-8080-exec-9][PortletServlet:112] 
      javax.portlet.PortletException: java.io.IOException: Unable to render /checkout_step/shipping_method.jsp
      	at com.liferay.commerce.checkout.web.internal.portlet.CommerceCheckoutPortlet.render(CommerceCheckoutPortlet.java:131)
      	at com.liferay.portlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:127)
      	at com.liferay.portlet.ScriptDataPortletFilter.doFilter(ScriptDataPortletFilter.java:58)
      	at com.liferay.portlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:124)
      	at com.liferay.portal.kernel.portlet.PortletFilterUtil.doFilter(PortletFilterUtil.java:71)
      	at com.liferay.portal.kernel.servlet.PortletServlet.service(PortletServlet.java:108)
      	at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
      	at org.eclipse.equinox.http.servlet.internal.registration.EndpointRegistration.service(EndpointRegistration.java:153)
      	at org.eclipse.equinox.http.servlet.internal.servlet.ResponseStateHandler.processRequest(ResponseStateHandler.java:62)
      	at org.eclipse.equinox.http.servlet.internal.context.DispatchTargets.doDispatch(DispatchTargets.java:120)
      	at org.eclipse.equinox.http.servlet.internal.servlet.RequestDispatcherAdaptor.include(RequestDispatcherAdaptor.java:48)
      	at com.liferay.portlet.internal.InvokerPortletImpl.invoke(InvokerPortletImpl.java:569)
      	at com.liferay.portlet.internal.InvokerPortletImpl.invokeRender(InvokerPortletImpl.java:665)
      	at com.liferay.portlet.internal.InvokerPortletImpl.render(InvokerPortletImpl.java:362)
      	at com.liferay.portal.monitoring.internal.portlet.MonitoringInvokerPortlet.lambda$render$0(MonitoringInvokerPortlet.java:280)
      	at com.liferay.portal.monitoring.internal.portlet.MonitoringInvokerPortlet._render(MonitoringInvokerPortlet.java:383)
      	at com.liferay.portal.monitoring.internal.portlet.MonitoringInvokerPortlet.render(MonitoringInvokerPortlet.java:278)
      	at org.apache.jsp.html.portal.render_005fportlet_jsp._jspService(render_005fportlet_jsp.java:1536)
      	at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
      	at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
      	at com.liferay.portal.servlet.DirectRequestDispatcher.include(DirectRequestDispatcher.java:64)
      	at com.liferay.portal.servlet.DirectRequestDispatcherFactoryImpl$IndirectRequestDispatcher.include(DirectRequestDispatcherFactoryImpl.java:202)
      	at com.liferay.portal.servlet.ClassLoaderRequestDispatcherWrapper.doDispatch(ClassLoaderRequestDispatcherWrapper.java:79)
      	at com.liferay.portal.servlet.ClassLoaderRequestDispatcherWrapper.include(ClassLoaderRequestDispatcherWrapper.java:53)
      	at com.liferay.portal.servlet.TransferHeadersHelperImpl$TransferHeadersRequestDispatcher.include(TransferHeadersHelperImpl.java:162)
      	at com.liferay.portlet.internal.PortletContainerImpl._render(PortletContainerImpl.java:871)
      	at com.liferay.portlet.internal.PortletContainerImpl.lambda$render$2(PortletContainerImpl.java:216)
      	at com.liferay.portlet.internal.PortletContainerImpl._preserveGroupIds(PortletContainerImpl.java:396)
      	at com.liferay.portlet.internal.PortletContainerImpl.render(PortletContainerImpl.java:205)
      	at com.liferay.portlet.SecurityPortletContainerWrapper.render(SecurityPortletContainerWrapper.java:142)
      	at com.liferay.portlet.RestrictPortletContainerWrapper.lambda$render$0(RestrictPortletContainerWrapper.java:126)
      	at com.liferay.portlet.RestrictPortletContainerWrapper._render(RestrictPortletContainerWrapper.java:183)
      	at com.liferay.portlet.RestrictPortletContainerWrapper.render(RestrictPortletContainerWrapper.java:124)
      	at com.liferay.portal.kernel.portlet.PortletContainerUtil.render(PortletContainerUtil.java:212)
      	at com.liferay.portal.layoutconfiguration.util.PortletRenderer._render(PortletRenderer.java:192)
      	at com.liferay.portal.layoutconfiguration.util.PortletRenderer.render(PortletRenderer.java:84)
      	at com.liferay.portal.layoutconfiguration.util.RuntimePageImpl.doProcessTemplate(RuntimePageImpl.java:567)
      	at com.liferay.portal.layoutconfiguration.util.RuntimePageImpl.doDispatch(RuntimePageImpl.java:340)
      	at com.liferay.portal.layoutconfiguration.util.RuntimePageImpl.processTemplate(RuntimePageImpl.java:154)
      	at com.liferay.portal.layoutconfiguration.util.RuntimePageImpl.processTemplate(RuntimePageImpl.java:175)
      	at com.liferay.portal.kernel.layoutconfiguration.util.RuntimePageUtil.processTemplate(RuntimePageUtil.java:94)
      	at org.apache.jsp.html.portal.layout.view.portlet_jsp._jspService(portlet_jsp.java:730)
      	at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
      	at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
      	at com.liferay.portal.servlet.DirectRequestDispatcher.include(DirectRequestDispatcher.java:64)
      	at com.liferay.portal.servlet.DirectRequestDispatcherFactoryImpl$IndirectRequestDispatcher.include(DirectRequestDispatcherFactoryImpl.java:202)
      	at com.liferay.portal.servlet.ClassLoaderRequestDispatcherWrapper.doDispatch(ClassLoaderRequestDispatcherWrapper.java:79)
      	at com.liferay.portal.servlet.ClassLoaderRequestDispatcherWrapper.include(ClassLoaderRequestDispatcherWrapper.java:53)
      	at com.liferay.portal.servlet.TransferHeadersHelperImpl$TransferHeadersRequestDispatcher.include(TransferHeadersHelperImpl.java:162)
      	at com.liferay.portal.model.impl.LayoutTypeControllerImpl.includeLayoutContent(LayoutTypeControllerImpl.java:171)
      	at com.liferay.portal.model.impl.LayoutImpl.includeLayoutContent(LayoutImpl.java:903)
      	at com.liferay.portal.action.LayoutAction.processLayout(LayoutAction.java:404)
      	at com.liferay.portal.action.LayoutAction.execute(LayoutAction.java:174)
      	at com.liferay.portal.struts.PortalRequestProcessor._processActionPerform(PortalRequestProcessor.java:715)
      	at com.liferay.portal.struts.PortalRequestProcessor._process(PortalRequestProcessor.java:655)
      	at com.liferay.portal.struts.PortalRequestProcessor.process(PortalRequestProcessor.java:194)
      	at com.liferay.portal.servlet.MainServlet.process(MainServlet.java:1066)
      	at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:449)
      	at javax.servlet.http.HttpServlet.service(HttpServlet.java:634)
      	at com.liferay.portal.servlet.MainServlet.callParentService(MainServlet.java:597)
      	at com.liferay.portal.servlet.MainServlet.service(MainServlet.java:574)
      	at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
      	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
              ...
      Caused by: java.io.IOException: Unable to render /checkout_step/shipping_method.jsp
      	at com.liferay.frontend.taglib.servlet.taglib.util.JSPRenderer.renderJSP(JSPRenderer.java:65)
      	at com.liferay.frontend.taglib.servlet.taglib.util.JSPRenderer.renderJSP(JSPRenderer.java:48)
      	at com.liferay.commerce.checkout.web.internal.util.ShippingMethodCommerceCheckoutStep.render(ShippingMethodCommerceCheckoutStep.java:146)
      	at com.liferay.commerce.checkout.web.internal.display.context.CheckoutDisplayContext.renderCurrentCheckoutStep(CheckoutDisplayContext.java:127)
      	at org.apache.jsp.view_jsp._jspService(view_jsp.java:436)
      	at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:111)
      	at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
      	at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:411)
      	at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:473)
      	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:377)
      	at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
      	at com.liferay.portal.osgi.web.servlet.jsp.compiler.internal.JspServlet.service(JspServlet.java:319)
      	at com.liferay.portal.osgi.web.servlet.jsp.compiler.internal.JspServlet.service(JspServlet.java:330)
      	at org.eclipse.equinox.http.servlet.internal.registration.EndpointRegistration.service(EndpointRegistration.java:153)
      	at org.eclipse.equinox.http.servlet.internal.servlet.ResponseStateHandler.processRequest(ResponseStateHandler.java:62)
      	at org.eclipse.equinox.http.servlet.internal.context.DispatchTargets.doDispatch(DispatchTargets.java:120)
      	at org.eclipse.equinox.http.servlet.internal.servlet.RequestDispatcherAdaptor.include(RequestDispatcherAdaptor.java:48)
      	at com.liferay.portlet.internal.PortletRequestDispatcherImpl.dispatch(PortletRequestDispatcherImpl.java:318)
      	at com.liferay.portlet.internal.PortletRequestDispatcherImpl.include(PortletRequestDispatcherImpl.java:128)
      	at com.liferay.portal.kernel.portlet.bridges.mvc.MVCPortlet.include(MVCPortlet.java:592)
      	at com.liferay.portal.kernel.portlet.bridges.mvc.MVCPortlet.include(MVCPortlet.java:608)
      	at com.liferay.portal.kernel.portlet.bridges.mvc.MVCPortlet.doView(MVCPortlet.java:160)
      	at com.liferay.portal.kernel.portlet.LiferayPortlet.doDispatch(LiferayPortlet.java:303)
      	at com.liferay.portal.kernel.portlet.bridges.mvc.MVCPortlet.doDispatch(MVCPortlet.java:492)
      	at javax.portlet.GenericPortlet.render(GenericPortlet.java:291)
      	at com.liferay.portal.kernel.portlet.bridges.mvc.MVCPortlet.render(MVCPortlet.java:316)
      	at com.liferay.commerce.checkout.web.internal.portlet.CommerceCheckoutPortlet.render(CommerceCheckoutPortlet.java:128)
      	... 180 more
      Caused by: javax.servlet.ServletException: com.liferay.commerce.exception.CommerceShippingEngineException: java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to com.liferay.commerce.inventory.model.CommerceInventoryWarehouse
      	at org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:953)
      	at org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:885)
      	at com.liferay.taglib.servlet.PageContextWrapper.handlePageException(PageContextWrapper.java:173)
      	at org.apache.jsp.checkout_005fstep.shipping_005fmethod_jsp._jspService(shipping_005fmethod_jsp:441)
      	at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:111)
      	at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
      	at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:411)
      	at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:473)
      	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:377)
      	at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
      	at com.liferay.portal.osgi.web.servlet.jsp.compiler.internal.JspServlet.service(JspServlet.java:319)
      	at com.liferay.portal.osgi.web.servlet.jsp.compiler.internal.JspServlet.service(JspServlet.java:330)
      	at org.eclipse.equinox.http.servlet.internal.registration.EndpointRegistration.service(EndpointRegistration.java:153)
      	at org.eclipse.equinox.http.servlet.internal.servlet.ResponseStateHandler.processRequest(ResponseStateHandler.java:62)
      	at org.eclipse.equinox.http.servlet.internal.context.DispatchTargets.doDispatch(DispatchTargets.java:120)
      	at org.eclipse.equinox.http.servlet.internal.servlet.RequestDispatcherAdaptor.include(RequestDispatcherAdaptor.java:48)
      	at com.liferay.frontend.taglib.servlet.taglib.util.JSPRenderer.renderJSP(JSPRenderer.java:60)
      	... 206 more

        Attachments

          Activity

            People

            Assignee:
            luca.pellizzon Luca Pellizzon
            Reporter:
            alec.shay Alec Shay
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Dates

              Created:
              Updated:
              Resolved:

                Packages

                Version Package
                2.1.0