You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
70 lines
2.7 KiB
70 lines
2.7 KiB
15 years ago
|
/***************************************************************************
|
||
|
Invocation.java - description
|
||
|
-------------------
|
||
|
begin : Tue Oct 31 06:12:14 2000
|
||
|
copyright : (C) Gert-Jan van der Heiden. All rights reserved.
|
||
|
written by : Gert-Jan van der Heiden.
|
||
|
***************************************************************************/
|
||
|
|
||
|
/***************************************************************************
|
||
|
* *
|
||
|
* This program is free software; you can redistribute it and/or modify *
|
||
|
* it under the terms of the GNU Library General Public License as published by*
|
||
|
* the Free Software Foundation; either version 2 of the License, or *
|
||
|
* (at your option) any later version. *
|
||
|
* *
|
||
|
***************************************************************************/
|
||
|
|
||
11 years ago
|
package org.trinitydesktop.koala;
|
||
15 years ago
|
|
||
|
import java.util.*;
|
||
|
import java.lang.reflect.*;
|
||
11 years ago
|
import org.trinitydesktop.qt.qtjava;
|
||
15 years ago
|
|
||
|
/** A utility class for creating a closure to invoke later
|
||
|
*/
|
||
|
class Invocation{
|
||
|
public static ArrayList invokeInterfaces(long qtObject){
|
||
|
return invokeArrayOperation(qtObject, "interfaces");
|
||
|
}
|
||
|
public static ArrayList invokeFunctions(long qtObject){
|
||
|
return invokeArrayOperation(qtObject, "functions");
|
||
|
}
|
||
|
public static ArrayList invokeArrayOperation(long qtObject, String operationName){
|
||
|
try{
|
||
|
Object onThis = qtjava.objectForQtKey(qtObject, "java.lang.object", true);
|
||
|
if(onThis != null){
|
||
|
Object[] arguments = new Object[0];
|
||
|
Class[] objectTypes = new Class[0];
|
||
|
Method method = onThis.getClass().getMethod(operationName, objectTypes);
|
||
|
return (ArrayList) method.invoke(onThis,arguments);
|
||
|
}else {
|
||
|
System.out.println("Invocation.invokeArrayOperation() : object not found!");
|
||
|
}
|
||
|
}catch(Exception e){
|
||
|
e.printStackTrace();
|
||
|
}
|
||
|
return new ArrayList();
|
||
|
}
|
||
|
public static DCOPAnswer invokeProcess(long qtObject, String fun, byte[] data){
|
||
|
try{
|
||
|
Object onThis = qtjava.objectForQtKey(qtObject, "java.lang.object", true);
|
||
|
if(onThis != null){
|
||
|
Object[] arguments = {fun, data};
|
||
|
Class[] objectTypes = { String.class,
|
||
|
data.getClass()};
|
||
|
|
||
|
Method method = onThis.getClass().getMethod("javaProcess", objectTypes);
|
||
|
return (DCOPAnswer) method.invoke(onThis,arguments);
|
||
|
}else {
|
||
|
System.out.println("Invocation.invokeArrayOperation() : object not found!");
|
||
|
}
|
||
|
}catch(Exception e){
|
||
|
e.printStackTrace();
|
||
|
}
|
||
|
DCOPAnswer answer = new DCOPAnswer();
|
||
|
answer.setSucces(false);
|
||
|
return answer;
|
||
|
}
|
||
|
}
|