Service Virtualization

  • 1.  Issue with applying style to xls file using Dynamic Java Execution Step

    Posted Jul 30, 2018 07:27 AM

    Hi

     

    We are using CA Devtest 10.2.1.

     

    We have prepared a Jar while which is used for below purpose:

    1.Iterate through all the sheets in a workbook and count total no. of pass/fail cases

    2.Color the passed cases in green and failed one in red

    3.Prepare a execution summary sheet and update it with pass/fail count

    4.Apply border to the execution summary sheet.

     

    The Jar file is working as expected when running via eclipse but when running using Dynamic Java Execution step its giving below error:

     

    ============================================================================
    | Exception:
    ============================================================================
    | Step:        n/a
    ----------------------------------------------------------------------------
    | Message:     Invocation Exception on Dynamic Call/Ctor void executionSummary( java.lang.String filePath, java.lang.String fileName )
    ----------------------------------------------------------------------------
    | Trapped Exception: org.apache.poi.ss.usermodel.CellStyle.setFillPattern(Lorg/apache/poi/ss/usermodel/FillPatternType;)V
    | Trapped Message:   java.lang.NoSuchMethodError: org.apache.poi.ss.usermodel.CellStyle.setFillPattern(Lorg/apache/poi/ss/usermodel/FillPatternType;)V
    ----------------------------------------------------------------------------
    STACK TRACE
    java.lang.NoSuchMethodError: org.apache.poi.ss.usermodel.CellStyle.setFillPattern(Lorg/apache/poi/ss/usermodel/FillPatternType;)V
     at com.itko.Execution_Summary.Main.executionSummary(Main.java:85)
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
     at java.lang.reflect.Method.invoke(Method.java:498)
     at com.itko.lisa.dynexec.Call.execute(Call.java:910)
     at com.itko.lisa.dynexec.Call.execute(Call.java:558)
     at com.itko.lisa.dynexec.CallEditor.invokeRaw(CallEditor.java:512)
     at com.itko.lisa.dynexec.CallEditor.invoke(CallEditor.java:371)
     at com.itko.lisa.dynexec.ComplexObjEditor.execute(ComplexObjEditor.java:948)
     at com.itko.lisa.dynexec.ComplexObjEditor.access$1100(ComplexObjEditor.java:48)
     at com.itko.lisa.dynexec.ComplexObjEditor$15.actionPerformed(ComplexObjEditor.java:865)
     at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
     at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)
     at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
     at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
     at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
     at java.awt.Component.processMouseEvent(Component.java:6533)
     at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
     at java.awt.Component.processEvent(Component.java:6298)
     at java.awt.Container.processEvent(Container.java:2236)
     at java.awt.Component.dispatchEventImpl(Component.java:4889)
     at java.awt.Container.dispatchEventImpl(Container.java:2294)
     at java.awt.Component.dispatchEvent(Component.java:4711)
     at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888)
     at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4525)
     at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466)
     at java.awt.Container.dispatchEventImpl(Container.java:2280)
     at java.awt.Window.dispatchEventImpl(Window.java:2746)
     at java.awt.Component.dispatchEvent(Component.java:4711)
     at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
     at java.awt.EventQueue.access$500(EventQueue.java:97)
     at java.awt.EventQueue$3.run(EventQueue.java:709)
     at java.awt.EventQueue$3.run(EventQueue.java:703)
     at java.security.AccessController.doPrivileged(Native Method)
     at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
     at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
     at java.awt.EventQueue$4.run(EventQueue.java:731)
     at java.awt.EventQueue$4.run(EventQueue.java:729)
     at java.security.AccessController.doPrivileged(Native Method)
     at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
     at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
     at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
     at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
     at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
     at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
     at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
     at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
    ============================================================================


     at com.itko.lisa.dynexec.Call.execute(Call.java:945)
     at com.itko.lisa.dynexec.Call.execute(Call.java:558)
     at com.itko.lisa.dynexec.CallEditor.invokeRaw(CallEditor.java:512)
     at com.itko.lisa.dynexec.CallEditor.invoke(CallEditor.java:371)
     at com.itko.lisa.dynexec.ComplexObjEditor.execute(ComplexObjEditor.java:948)
     at com.itko.lisa.dynexec.ComplexObjEditor.access$1100(ComplexObjEditor.java:48)
     at com.itko.lisa.dynexec.ComplexObjEditor$15.actionPerformed(ComplexObjEditor.java:865)
     at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
     at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)
     at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
     at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
     at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
     at java.awt.Component.processMouseEvent(Component.java:6533)
     at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
     at java.awt.Component.processEvent(Component.java:6298)
     at java.awt.Container.processEvent(Container.java:2236)
     at java.awt.Component.dispatchEventImpl(Component.java:4889)
     at java.awt.Container.dispatchEventImpl(Container.java:2294)
     at java.awt.Component.dispatchEvent(Component.java:4711)
     at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888)
     at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4525)
     at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466)
     at java.awt.Container.dispatchEventImpl(Container.java:2280)
     at java.awt.Window.dispatchEventImpl(Window.java:2746)
     at java.awt.Component.dispatchEvent(Component.java:4711)
     at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
     at java.awt.EventQueue.access$500(EventQueue.java:97)
     at java.awt.EventQueue$3.run(EventQueue.java:709)
     at java.awt.EventQueue$3.run(EventQueue.java:703)
     at java.security.AccessController.doPrivileged(Native Method)
     at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
     at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
     at java.awt.EventQueue$4.run(EventQueue.java:731)
     at java.awt.EventQueue$4.run(EventQueue.java:729)
     at java.security.AccessController.doPrivileged(Native Method)
     at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
     at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
     at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
     at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
     at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
     at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
     at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
     at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)



  • 2.  Re: Issue with applying style to xls file using Dynamic Java Execution Step

    Posted Jul 30, 2018 08:52 AM

    Which version of DevTest are you using?

    Check the version of poi-x.x.jar (where x.x = 3.14 or 3.17) deployed in your DevTest_HOME/lib/shared.

    Version 3.14 does not support a setFillPattern method that takes an object of type FillPatternType. 

    poi.3.14.jar - takes a short

    poi.3.17.jar - takes a FillPatternType

     

    You might convert as follows:

    NO_FILL                  0,     SOLID_FOREGROUND         1,

    FINE_DOTS                2,     ALT_BARS                 3,

    SPARSE_DOTS              4,     THICK_HORZ_BANDS         5,

    THICK_VERT_BANDS         6,     THICK_BACKWARD_DIAG      7,

    THICK_FORWARD_DIAG       8,     BIG_SPOTS                9,

    BRICKS                  10,     THIN_HORZ_BANDS         11,

    THIN_VERT_BANDS         12,     THIN_BACKWARD_DIAG      13,

    THIN_FORWARD_DIAG       14,     SQUARES                 15,

    DIAMONDS                16,     LESS_DOTS               17,

    LEAST_DOTS              18



  • 3.  Re: Issue with applying style to xls file using Dynamic Java Execution Step

    Posted Jul 30, 2018 09:31 AM

    Hi Joel

     

    Thanks for the quick reply.

    PFB the required version details:

    1.CA Devtest : CA Devtest 10.2.1

    2.version of poi-x.x.jar deployed in DevTest_HOME/lib/shared : poi-3.14

     

    Note:

    1. I have the poi-3.17 version in the hot deploy folder

    2.If I place the poi-3.17 version in the  DevTest_HOME/lib/shared path than would it resolve the issue

     

    Thanks and Regards

    Yugain Sharma



  • 4.  Re: Issue with applying style to xls file using Dynamic Java Execution Step

    Posted Jul 30, 2018 10:14 AM

    Having two jars in two locations has the potential to create conflicts. The 3.14 version in lib/shared is loaded by the class loader when the JVM starts whereas the 3.17 version in hotdeploy uses a more dynamic loading mechanism.

    Replacing the JAR may work for your example, but it has the potential to make other DevTest product features inoperable. We simply do not know what those features might be. I would use extreme caution if you decide to replace the JAR in lib/shared, and I would perform testing of other DevTest steps in your environment that use Excel type datasets and data structures to ensure the change does not solve one problem and create others.



  • 5.  Re: Issue with applying style to xls file using Dynamic Java Execution Step

    Posted Jul 31, 2018 03:40 AM

    Hi Joel

     

    Currently we are using below code:

    style1.setFillForegroundColor(IndexedColors.GREEN.getIndex());

    style1.setFillPattern(FillPatternType.SOLID_FOREGROUND);

    row.getCell(lastCellNumber-1).setCellStyle(style1);

     

    can u recommend the change we need to make over here

     

    Thanks and Regards

    Yugain Sharma



  • 6.  Re: Issue with applying style to xls file using Dynamic Java Execution Step

    Posted Jul 31, 2018 08:24 AM

    For poi-3.14.jar, just a guess, but try sending the short value 1 from PatternFormatting.

    import org.apache.poi.ss.usermodel.PatternFormatting;

    style1.setFillPattern( PatternFormatting.SOLID_FOREGROUND );  // SOLID_FOREGROUND