void AttachEventListener() throws JIException { //6FBA474D-43AC-11CE-9A0E-00AA0062BB4C JILocalCoClass javaComponent = new JILocalCoClass(new JILocalInterfaceDefinition("6FBA474D-43AC-11CE-9A0E-00AA0062BB4C"),SysInfoEvents.class); javaComponent.getInterfaceDefinition().addMethodDescriptor(new JILocalMethodDescriptor("PowerStatusChanged",8,null)); javaComponent.getInterfaceDefinition().addMethodDescriptor(new JILocalMethodDescriptor("TimeChanged",3,null)); identifier = JIObjectFactory.attachEventHandler(sysInfoServer,"6FBA474D-43AC-11CE-9A0E-00AA0062BB4C",JIObjectFactory.buildObject(session,javaComponent)); try { Thread.sleep(3000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } //for call backs }
public static final JILocalCoClass getCoClass(JIOPCEventSink instance){ //Define the onEvent method for this interface JILocalParamsDescriptor oeParams=new JILocalParamsDescriptor(); oeParams.addInParamAsType(Integer.class, JIFlags.FLAG_NULL); oeParams.addInParamAsType(Integer.class, JIFlags.FLAG_NULL); oeParams.addInParamAsType(Integer.class, JIFlags.FLAG_NULL); oeParams.addInParamAsType(Integer.class, JIFlags.FLAG_NULL); oeParams.addInParamAsObject(new JIArray(outStruct(),null,1,true), JIFlags.FLAG_NULL); JILocalMethodDescriptor oeMethod=new JILocalMethodDescriptor("onEvent",0,oeParams); //This identify the JIOPCEventSink and not the interface JILocalInterfaceDefinition def=new JILocalInterfaceDefinition(LOCAL_CLASS_IID,false); def.addMethodDescriptor(oeMethod); JILocalCoClass coClass=(instance==null) ? new JILocalCoClass(def,JIOPCEventSink.class) : new JILocalCoClass(def,instance); ArrayList list = new ArrayList(); //Supported interface list.add(OPC_IID); coClass.setSupportedEventInterfaces(list); return coClass; } }
if ( component.isAlreadyExported () ) component.setSession ( session ); final String iid = component.isCoClassUnderRealIID () ? component.getCoClassIID () : IJIComObject.IID;//has to be IUnknown's IID. final byte[] bytes = new byte[8]; randomGen.nextBytes ( bytes ); component.setObjectId ( oid.getOID () ); component.setAssociatedInterfacePointer ( ptr );
JILocalCoClass javaComponent = new JILocalCoClass(new JILocalInterfaceDefinition("34A715A0-6587-11D0-924A-0020AFC7AC4D"),DWebBrowserEvents2.class); javaComponent.getInterfaceDefinition().addMethodDescriptor(methodDescriptor); navigateObject.addInParamAsType(JIVariant.class,JIFlags.FLAG_NULL); methodDescriptor = new JILocalMethodDescriptor("BeforeNavigate2",0xFA,navigateObject); javaComponent.getInterfaceDefinition().addMethodDescriptor(methodDescriptor); javaComponent.getInterfaceDefinition().addMethodDescriptor(methodDescriptor); ProgressChange.addInParamAsType(Integer.class,JIFlags.FLAG_NULL); methodDescriptor = new JILocalMethodDescriptor("ProgressChange",0x6c,ProgressChange); javaComponent.getInterfaceDefinition().addMethodDescriptor(methodDescriptor); CommandStateChange.addInParamAsType(Boolean.class,JIFlags.FLAG_NULL); methodDescriptor = new JILocalMethodDescriptor("CommandStateChange",0x69,CommandStateChange); javaComponent.getInterfaceDefinition().addMethodDescriptor(methodDescriptor); javaComponent.getInterfaceDefinition().addMethodDescriptor(methodDescriptor); javaComponent.getInterfaceDefinition().addMethodDescriptor(methodDescriptor); javaComponent.getInterfaceDefinition().addMethodDescriptor(methodDescriptor); NewWindow2.addInParamAsType(JIVariant.class,JIFlags.FLAG_NULL); methodDescriptor = new JILocalMethodDescriptor("NewWindow2",0xfb,NewWindow2); javaComponent.getInterfaceDefinition().addMethodDescriptor(methodDescriptor); NavigateComplete2.addInParamAsType(JIVariant.class,JIFlags.FLAG_NULL);
logger.trace ( "RemUnknownObject: [QI] JIJavcCoClass is {}", component.getCoClassIID () ); String ipid2 = UUIDGenerator.generateID (); if ( !component.isPresent ( iid.toString () ) ) try tmpIpid = component.getIpidFromIID ( iid.toString () ); component.exportInstance ( iid.toString (), ipid2 );
try result = this.component.invokeMethod ( ipid, this.opnum, ndr ); if ( this.component.getInterfaceDefinitionFromIPID ( ipid ).isDispInterface () && this.opnum == 6 ) callObject.attachSession ( this.component.getSession () ); if ( result != null )
public static void testSinkDebug(String[] args) throws JIException, InterruptedException, UnknownHostException { JISession session = JISession.createSession(args[1], args[2], args[3]); JIComServer comStub = new JIComServer(JIProgId.valueOf("TstMarsh.Test"), args[0], session); IJIComObject unknown = comStub.createInstance(); IJIComObject ITest = (IJIComObject) unknown.queryInterface("89D8C8BE-1E91-11D3-910F-00C04F9403C2"); //ITest //Create the Java Server class. This contains the instance to be called by the COM Server // JILocalInterfaceDefinition interfaceDefinition = registerInterface(); if (StaticSinkJavaCoClass != null) StaticSinkJavaCoClass = new JILocalCoClass(interfaceDefinition, new SampleTestServerCallback()); IJIComObject iStaticSink = JIObjectFactory.buildObject(session, StaticSinkJavaCoClass); Object[] results = new Object[1]; // Create the session JICallBuilder javaCallback = new JICallBuilder(true); javaCallback.setOpnum(8); javaCallback.addInParamAsComObject(iStaticSink, JIFlags.FLAG_NULL); javaCallback.addOutParamAsType(Integer.class, JIFlags.FLAG_NULL); //Long results = ITest.call(javaCallback);//<== same exception is thrown here as well System.out.println("ITest.DoSomethingAndGetSomethingBack succeeded, session out =" + results[0]); int staticSession = ((Integer)results[0]).intValue(); Thread.sleep(30000); javaCallback.reInit(); javaCallback.setOpnum(1); javaCallback.addInParamAsInt(staticSession, JIFlags.FLAG_REPRESENTATION_UNSIGNED_INT); System.out.println("ITest.UnDoSomething about to be called"); results = ITest.call(javaCallback); System.out.println("ITest.UnDoSomething succeeded"); JISession.destroySession(session); }
static JILocalCoClass getJavaComponentFromIPID(String ipid) { JILocalCoClass component = null; synchronized (mutex2) { for (int i = 0; i < listOfExportedJavaComponents.size(); i++ ) { component = (JILocalCoClass)listOfExportedJavaComponents.get(i); //this will be unique, no two components will ever have same IPID for an IID.They will have different IPIDs for same IIDs. if (component.getIIDFromIpid(ipid) != null) { break; } component = null; } } return component; }
final Object[] portandthread = details.getCOMRuntimeHelper ().startRemUnknown ( details.getIID (), remunknownipid, details.getIpid (), details.getReferent ().getSupportedInterfaces () ); port = ( (Integer)portandthread[0] ).intValue (); details.setRemUnknownThreadGroup ( (ThreadGroup)portandthread[1] );
JILocalCoClass javaComponent = new JILocalCoClass(new JILocalInterfaceDefinition("34A715A0-6587-11D0-924A-0020AFC7AC4D"),DWebBrowserEvents2.class); javaComponent.getInterfaceDefinition().addMethodDescriptor(methodDescriptor); navigateObject.addInParamAsType(JIVariant.class,JIFlags.FLAG_NULL); methodDescriptor = new JILocalMethodDescriptor("BeforeNavigate2",0xFA,navigateObject); javaComponent.getInterfaceDefinition().addMethodDescriptor(methodDescriptor); javaComponent.getInterfaceDefinition().addMethodDescriptor(methodDescriptor); ProgressChange.addInParamAsType(Integer.class,JIFlags.FLAG_NULL); methodDescriptor = new JILocalMethodDescriptor("ProgressChange",0x6c,ProgressChange); javaComponent.getInterfaceDefinition().addMethodDescriptor(methodDescriptor); CommandStateChange.addInParamAsType(Boolean.class,JIFlags.FLAG_NULL); methodDescriptor = new JILocalMethodDescriptor("CommandStateChange",0x69,CommandStateChange); javaComponent.getInterfaceDefinition().addMethodDescriptor(methodDescriptor); javaComponent.getInterfaceDefinition().addMethodDescriptor(methodDescriptor); javaComponent.getInterfaceDefinition().addMethodDescriptor(methodDescriptor); javaComponent.getInterfaceDefinition().addMethodDescriptor(methodDescriptor); NewWindow2.addInParamAsType(JIVariant.class,JIFlags.FLAG_NULL); methodDescriptor = new JILocalMethodDescriptor("NewWindow2",0xfb,NewWindow2); javaComponent.getInterfaceDefinition().addMethodDescriptor(methodDescriptor); NavigateComplete2.addInParamAsType(JIVariant.class,JIFlags.FLAG_NULL);
JISystem.getLogger().finest("RemUnknownObject: [QI] JIJavcCoClass is " + component.getCoClassIID()); int hresult = 0; String ipid2 = GUIDUtil.guidStringFromHexString(IdentifierFactory.createUniqueIdentifier().toHexString());; if (!component.isPresent(iid.toString())) tmpIpid = component.getIpidFromIID(iid.toString()); }catch(Exception e) component.exportInstance(iid.toString(), ipid2);
Object[] retArray = null; try { result = component.invokeMethod(ipid,opnum,ndr); } catch (JIException e) { hresult = e.getErrorCode(); if (component.getInterfaceDefinitionFromIPID(ipid).isDispInterface() && opnum == 6) callObject.attachSession(component.getSession()); if (result != null)
public static void testSinkDebug(String[] args) throws JIException, InterruptedException, UnknownHostException { JISession session = JISession.createSession(args[1], args[2], args[3]); JIComServer comStub = new JIComServer(JIProgId.valueOf("TstMarsh.Test"), args[0], session); IJIComObject unknown = comStub.createInstance(); IJIComObject ITest = (IJIComObject) unknown.queryInterface("89D8C8BE-1E91-11D3-910F-00C04F9403C2"); //ITest //Create the Java Server class. This contains the instance to be called by the COM Server // JILocalInterfaceDefinition interfaceDefinition = registerInterface(); if (StaticSinkJavaCoClass != null) StaticSinkJavaCoClass = new JILocalCoClass(interfaceDefinition, new SampleTestServerCallback()); IJIComObject iStaticSink = JIObjectFactory.buildObject(session, StaticSinkJavaCoClass); Object[] results = new Object[1]; // Create the session JICallBuilder javaCallback = new JICallBuilder(true); javaCallback.setOpnum(8); javaCallback.addInParamAsComObject(iStaticSink, JIFlags.FLAG_NULL); javaCallback.addOutParamAsType(Integer.class, JIFlags.FLAG_NULL); //Long results = ITest.call(javaCallback);//<== same exception is thrown here as well System.out.println("ITest.DoSomethingAndGetSomethingBack succeeded, session out =" + results[0]); int staticSession = ((Integer)results[0]).intValue(); Thread.sleep(30000); javaCallback.reInit(); javaCallback.setOpnum(1); javaCallback.addInParamAsInt(staticSession, JIFlags.FLAG_REPRESENTATION_UNSIGNED_INT); System.out.println("ITest.UnDoSomething about to be called"); results = ITest.call(javaCallback); System.out.println("ITest.UnDoSomething succeeded"); JISession.destroySession(session); }
static JILocalCoClass getJavaComponentFromIPID(String ipid) { JILocalCoClass component = null; synchronized (mutex2) { for (int i = 0; i < listOfExportedJavaComponents.size(); i++ ) { component = (JILocalCoClass)listOfExportedJavaComponents.get(i); //this will be unique, no two components will ever have same IPID for an IID.They will have different IPIDs for same IIDs. if (component.getIIDFromIpid(ipid) != null) { break; } component = null; } } return component; }
Object[] portandthread = details.getCOMRuntimeHelper().startRemUnknown(details.getIID(),remunknownipid,details.getIpid(), details.getReferent().getSupportedInterfaces()); port = ((Integer)portandthread[0]).intValue(); details.setRemUnknownThreadGroup((ThreadGroup)portandthread[1]);
if (component.isAlreadyExported()) component.setSession(session); String iid = component.isCoClassUnderRealIID() ? component.getCoClassIID() : IJIComObject.IID;//has to be IUnknown's IID. byte[] bytes = new byte[8]; randomGen.nextBytes(bytes); component.setObjectId(oid.getOID()); component.setAssociatedInterfacePointer(ptr);
final JILocalCoClass javaComponent = new JILocalCoClass ( new JILocalInterfaceDefinition ( "34A715A0-6587-11D0-924A-0020AFC7AC4D" ), DWebBrowserEvents2.class ); javaComponent.getInterfaceDefinition ().addMethodDescriptor ( methodDescriptor ); navigateObject.addInParamAsType ( JIVariant.class, JIFlags.FLAG_NULL ); methodDescriptor = new JILocalMethodDescriptor ( "BeforeNavigate2", 0xFA, navigateObject ); javaComponent.getInterfaceDefinition ().addMethodDescriptor ( methodDescriptor ); javaComponent.getInterfaceDefinition ().addMethodDescriptor ( methodDescriptor ); ProgressChange.addInParamAsType ( Integer.class, JIFlags.FLAG_NULL ); methodDescriptor = new JILocalMethodDescriptor ( "ProgressChange", 0x6c, ProgressChange ); javaComponent.getInterfaceDefinition ().addMethodDescriptor ( methodDescriptor ); CommandStateChange.addInParamAsType ( Boolean.class, JIFlags.FLAG_NULL ); methodDescriptor = new JILocalMethodDescriptor ( "CommandStateChange", 0x69, CommandStateChange ); javaComponent.getInterfaceDefinition ().addMethodDescriptor ( methodDescriptor ); javaComponent.getInterfaceDefinition ().addMethodDescriptor ( methodDescriptor ); javaComponent.getInterfaceDefinition ().addMethodDescriptor ( methodDescriptor ); javaComponent.getInterfaceDefinition ().addMethodDescriptor ( methodDescriptor ); NewWindow2.addInParamAsType ( JIVariant.class, JIFlags.FLAG_NULL ); methodDescriptor = new JILocalMethodDescriptor ( "NewWindow2", 0xfb, NewWindow2 ); javaComponent.getInterfaceDefinition ().addMethodDescriptor ( methodDescriptor ); NavigateComplete2.addInParamAsType ( JIVariant.class, JIFlags.FLAG_NULL );
JISystem.getLogger().finest("RemUnknownObject: [QI] JIJavcCoClass is " + component.getCoClassIID()); int hresult = 0; String ipid2 = GUIDUtil.guidStringFromHexString(IdentifierFactory.createUniqueIdentifier().toHexString());; if (!component.isPresent(iid.toString())) tmpIpid = component.getIpidFromIID(iid.toString()); }catch(Exception e) component.exportInstance(iid.toString(), ipid2);
Object[] retArray = null; try { result = component.invokeMethod(ipid,opnum,ndr); } catch (JIException e) { hresult = e.getErrorCode(); if (component.getInterfaceDefinitionFromIPID(ipid).isDispInterface() && opnum == 6) callObject.attachSession(component.getSession()); if (result != null)
void AttachEventListener() throws JIException { //6FBA474D-43AC-11CE-9A0E-00AA0062BB4C JILocalCoClass javaComponent = new JILocalCoClass(new JILocalInterfaceDefinition("6FBA474D-43AC-11CE-9A0E-00AA0062BB4C"),SysInfoEvents.class); javaComponent.getInterfaceDefinition().addMethodDescriptor(new JILocalMethodDescriptor("PowerStatusChanged",8,null)); javaComponent.getInterfaceDefinition().addMethodDescriptor(new JILocalMethodDescriptor("TimeChanged",3,null)); identifier = JIObjectFactory.attachEventHandler(sysInfoServer,"6FBA474D-43AC-11CE-9A0E-00AA0062BB4C",JIObjectFactory.buildObject(session,javaComponent)); try { Thread.sleep(3000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } //for call backs }