Menu

Type Mismatch Excpetion

Dilip Rai
2018-03-20
2018-03-22
  • Dilip Rai

    Dilip Rai - 2018-03-20

    Hi Vikram,

    I'm trying to convert C# code into Java code.
    Below is C# code.
    var objProjectList = objServer.Enumerator;
    int numDataSources;
    var objDataSource = objProjectList.ItemByProjectName("XXX", out numDataSources);
    objDataSource.Init();
    var mysession = objDataSource.CreateSession();

            IDSSSource obj =(IDSSSource) mysession.Component[EnumDSSComponentRole.DssRoleObjectSource];
    
           /// Console.WriteLine("guid = "+ obj.Project.Info.Name);
    
            IDSSReportDefinition rd5 = (IDSSReportDefinition)obj.FindObject("2CEF84F448D46B6XXXXXXXXXXXXXXX", EnumDSSObjectType.DssTypeReportDefinition);
            Console.WriteLine("proceed further for dss source");
    
        **   Below is Java code**
    
           JIVariant enumerator = dispatch.get("Enumerator");
        IJIComObject objProjectList = enumerator.getObjectAsComObject();
        IJIDispatch dispatchEnum = (IJIDispatch) JIObjectFactory.narrowObject((IJIComObject) objProjectList.queryInterface(IJIDispatch.IID));
        Integer numDataSources=null;
        Object[] objO = new Object[]{"XXX",numDataSources};
    
        JIVariant[] dsssource = dispatchEnum.callMethodA("ItemByProjectName",objO);
        IJIComObject obj = dsssource[0].getObjectAsComObject();
        IJIDispatch objDataSource = (IJIDispatch) JIObjectFactory.narrowObject((IJIComObject) obj.queryInterface(IJIDispatch.IID));
        //var objDataSource = objProjectList.ItemByProjectName("MSSQL Project", out numDataSources);
        objDataSource.callMethod("Init");
    
        JIVariant sessionVariant = objDataSource.callMethodA("CreateSession");
        IJIComObject sessionO = sessionVariant.getObjectAsComObject();
        IJIDispatch sessionDispatch = (IJIDispatch) JIObjectFactory.narrowObject((IJIComObject) sessionO.queryInterface(IJIDispatch.IID));
    
        JIVariant[] componentArray = sessionDispatch.get("Component",new Object[]{13});//Component is an array
    
        IJIDispatch idsssourceDispatch = (IJIDispatch) JIObjectFactory.narrowObject((IJIComObject) componentArray[0].getObjectAsComObject().queryInterface(IJIDispatch.IID));
    
        System.out.println("Calling....... Find object");
        JIVariant[] ji = idsssourceDispatch.callMethodA("FindObject",new Object[]{new String("2CEF84F448D46B6B5B37DEB9ACF6D775"),3});
        System.out.println("Done");
    
        **But while invoking FindObject I'm getting below exception**
    
        Exception in thread "main" org.jinterop.dcom.impls.automation.JIAutomationException: Type mismatch.  [0x80020005]
    at org.jinterop.dcom.impls.automation.JIDispatchImpl.invoke(JIDispatchImpl.java:333)
    at org.jinterop.dcom.impls.automation.JIDispatchImpl.callMethodA(JIDispatchImpl.java:520)
    at org.jinterop.dcom.impls.automation.JIDispatchImpl.callMethodA(JIDispatchImpl.java:526)
    at org.jinterop.dcom.impls.automation.JIDispatchImpl.callMethodA(JIDispatchImpl.java:477)
    at com.company.Test4.main(Test4.java:70)
    

    Caused by: org.jinterop.dcom.common.JIRuntimeException: Type mismatch. [0x80020005]
    at org.jinterop.dcom.core.JICallBuilder.readResult(JICallBuilder.java:1079)
    at org.jinterop.dcom.core.JICallBuilder.read(JICallBuilder.java:957)
    at ndr.NdrObject.decode(NdrObject.java:36)
    at rpc.ConnectionOrientedEndpoint.call(ConnectionOrientedEndpoint.java:137)
    at rpc.Stub.call(Stub.java:113)
    at org.jinterop.dcom.core.JIComServer.call(JIComServer.java:901)
    at org.jinterop.dcom.core.JIComServer.call(JIComServer.java:856)
    at org.jinterop.dcom.core.JIComObjectImpl.call(JIComObjectImpl.java:266)

    Can you point somewhere so that I can unblock my self.

     
    • Vikram Roopchand

      Hi,

      The JIAutomationException has more information in it. Please check that for
      the exact thing that went wrong here.

      best regards,
      Vikram

      On Tue, Mar 20, 2018 at 4:41 PM, Dilip Rai dilipbhumca@users.sourceforge.net wrote:

      Hi Vikram,

      I'm trying to convert C# code into Java code.
      Below is C# code.
      var objProjectList = objServer.Enumerator;
      int numDataSources;
      var objDataSource = objProjectList.ItemByProjectName("XXX", out
      numDataSources);
      objDataSource.Init();
      var mysession = objDataSource.CreateSession();

          IDSSSource obj =(IDSSSource) mysession.Component[EnumDSSComponentRole.DssRoleObjectSource];
      
         /// Console.WriteLine("guid = "+ obj.Project.Info.Name);
      
          IDSSReportDefinition rd5 = (IDSSReportDefinition)obj.FindObject("2CEF84F448D46B6XXXXXXXXXXXXXXX", EnumDSSObjectType.DssTypeReportDefinition);
          Console.WriteLine("proceed further for dss source");
      
      **   Below is Java code**
      
         JIVariant enumerator = dispatch.get("Enumerator");
      IJIComObject objProjectList = enumerator.getObjectAsComObject();
      IJIDispatch dispatchEnum = (IJIDispatch) JIObjectFactory.narrowObject((IJIComObject) objProjectList.queryInterface(IJIDispatch.IID));
      Integer numDataSources=null;
      Object[] objO = new Object[]{"XXX",numDataSources};
      
      JIVariant[] dsssource = dispatchEnum.callMethodA("ItemByProjectName",objO);
      IJIComObject obj = dsssource[0].getObjectAsComObject();
      IJIDispatch objDataSource = (IJIDispatch) JIObjectFactory.narrowObject((IJIComObject) obj.queryInterface(IJIDispatch.IID));
      //var objDataSource = objProjectList.ItemByProjectName("MSSQL Project", out numDataSources);
      objDataSource.callMethod("Init");
      
      JIVariant sessionVariant = objDataSource.callMethodA("CreateSession");
      IJIComObject sessionO = sessionVariant.getObjectAsComObject();
      IJIDispatch sessionDispatch = (IJIDispatch) JIObjectFactory.narrowObject((IJIComObject) sessionO.queryInterface(IJIDispatch.IID));
      
      JIVariant[] componentArray = sessionDispatch.get("Component",new Object[]{13});//Component is an array
      
      IJIDispatch idsssourceDispatch = (IJIDispatch) JIObjectFactory.narrowObject((IJIComObject) componentArray[0].getObjectAsComObject().queryInterface(IJIDispatch.IID));
      
      System.out.println("Calling....... Find object");
      JIVariant[] ji = idsssourceDispatch.callMethodA("FindObject",new Object[]{new String("2CEF84F448D46B6B5B37DEB9ACF6D775"),3});
      System.out.println("Done");
      
      **But while invoking FindObject I'm getting below exception**
      
      Exception in thread "main" org.jinterop.dcom.impls.automation.JIAutomationException: Type mismatch.  [0x80020005]
      

      at org.jinterop.dcom.impls.automation.JIDispatchImpl.invoke(JIDispatchImpl.java:333)
      at org.jinterop.dcom.impls.automation.JIDispatchImpl.callMethodA(JIDispatchImpl.java:520)
      at org.jinterop.dcom.impls.automation.JIDispatchImpl.callMethodA(JIDispatchImpl.java:526)
      at org.jinterop.dcom.impls.automation.JIDispatchImpl.callMethodA(JIDispatchImpl.java:477)
      at com.company.Test4.main(Test4.java:70)

      Caused by: org.jinterop.dcom.common.JIRuntimeException: Type mismatch.
      [0x80020005]
      at org.jinterop.dcom.core.JICallBuilder.readResult(
      JICallBuilder.java:1079)
      at org.jinterop.dcom.core.JICallBuilder.read(JICallBuilder.java:957)
      at ndr.NdrObject.decode(NdrObject.java:36)
      at rpc.ConnectionOrientedEndpoint.call(ConnectionOrientedEndpoint.
      java:137)
      at rpc.Stub.call(Stub.java:113)
      at org.jinterop.dcom.core.JIComServer.call(JIComServer.java:901)
      at org.jinterop.dcom.core.JIComServer.call(JIComServer.java:856)
      at org.jinterop.dcom.core.JIComObjectImpl.call(JIComObjectImpl.java:266)

      Can you point somewhere so that I can unblock my self.

      Type Mismatch Excpetion
      https://sourceforge.net/p/j-interop/discussion/600729/thread/65f7b904/?limit=25#d8cc


      Sent from sourceforge.net because you indicated interest in
      https://sourceforge.net/p/j-interop/discussion/600729/

      To unsubscribe from further messages, please visit
      https://sourceforge.net/auth/subscriptions/

      --
      The Mind is a place of its own. It can make a heaven out of hell or a hell
      out of heaven. Attitude is everything. No matter how adverse conditions
      maybe, one has the capacity to turn things around by one's Determination,
      Perseverance and Hardwork.

      John Milton
      (Paradise Lost)

       
      • Dilip Rai

        Dilip Rai - 2018-03-21

        Hi Vikram,

        I don't know how to get more info from JIAutomationException. Seems like I'm not able to get more then type mismatch code and exception.

        How to get the exact thing.
        I've printed used below pring command.
        System.out.println("*** ***");
        JIExcepInfo jiInfo = jia.getExcepInfo();
        int errorCode = jiInfo.getErrorCode();
        String execDes = jiInfo.getExcepDesc();
        String execSource = jiInfo.getExcepDesc();
        String filepath = jiInfo.getHelpFilePath();

                 System.out.println("error code = "+errorCode );
                System.out.println("exec desc = "+execDes );
                System.out.println("error source = "+execSource );
                System.out.println("file path = "+filepath );
                System.out.println("message = "+jia.getMessage());
                System.out.println("Cause = "+jia.getCause());
                System.out.println("Error code = "+jia.getErrorCode());
                System.out.println("****************** ******************");
        
                Below is the output.
        
                ****************** ******************
        

        error code = 0
        exec desc = [
        error source = [
        file path = ]

        message = Type mismatch. [0x80020005]
        Cause = org.jinterop.dcom.common.JIRuntimeException: Type mismatch. [0x80020005]
        Error code = -2147352571


        Regards,
        Dilip

         
  • Dilip Rai

    Dilip Rai - 2018-03-22

    HI Vikram,

    I tried reaching you on vikram.roopchand@j-interop.org but looks like your mailbox is unavailable now. Can you post your mail id for further communication.

    Regards,
    Dilip

     

Log in to post a comment.