summaryrefslogtreecommitdiff
path: root/jurt/com
diff options
context:
space:
mode:
Diffstat (limited to 'jurt/com')
-rw-r--r--jurt/com/sun/star/lib/uno/bridges/java_remote/java_remote_bridge.java67
-rw-r--r--jurt/com/sun/star/lib/uno/environments/java/java_environment.java61
-rw-r--r--jurt/com/sun/star/lib/uno/environments/remote/IProtocol.java10
-rw-r--r--jurt/com/sun/star/lib/uno/environments/remote/Job.java30
-rw-r--r--jurt/com/sun/star/lib/uno/environments/remote/JobQueue.java13
-rw-r--r--jurt/com/sun/star/lib/uno/environments/remote/remote_environment.java21
-rw-r--r--jurt/com/sun/star/lib/uno/protocols/urp/Marshal.java209
-rw-r--r--jurt/com/sun/star/lib/uno/protocols/urp/Unmarshal.java205
-rw-r--r--jurt/com/sun/star/lib/uno/protocols/urp/urp.java154
9 files changed, 369 insertions, 401 deletions
diff --git a/jurt/com/sun/star/lib/uno/bridges/java_remote/java_remote_bridge.java b/jurt/com/sun/star/lib/uno/bridges/java_remote/java_remote_bridge.java
index 2e34af011314..b03e8a3b7467 100644
--- a/jurt/com/sun/star/lib/uno/bridges/java_remote/java_remote_bridge.java
+++ b/jurt/com/sun/star/lib/uno/bridges/java_remote/java_remote_bridge.java
@@ -2,9 +2,9 @@
*
* $RCSfile: java_remote_bridge.java,v $
*
- * $Revision: 1.9 $
+ * $Revision: 1.10 $
*
- * last change: $Author: kr $ $Date: 2000-12-22 10:01:29 $
+ * last change: $Author: kr $ $Date: 2001-01-16 18:01:24 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -108,6 +108,8 @@ import com.sun.star.lib.uno.environments.remote.Job;
import com.sun.star.lib.uno.environments.remote.ThreadID;
import com.sun.star.lib.uno.environments.remote.ThreadPool;
+import com.sun.star.lib.uno.typedesc.TypeDescription;
+
import com.sun.star.lib.util.IStableObject;
import com.sun.star.lib.util.IStableListener;
@@ -128,7 +130,7 @@ import com.sun.star.uno.IQueryInterface;
* The protocol to used is passed by name, the bridge
* then looks for it under <code>com.sun.star.lib.uno.protocols</code>.
* <p>
- * @version $Revision: 1.9 $ $ $Date: 2000-12-22 10:01:29 $
+ * @version $Revision: 1.10 $ $ $Date: 2001-01-16 18:01:24 $
* @author Kay Ramme
* @see com.sun.star.lib.uno.environments.remote.IProtocol
* @since UDK1.0
@@ -139,7 +141,6 @@ public class java_remote_bridge implements IBridge, IReceiver, IRequester, XBrid
*/
static private final boolean DEBUG = false;
-
/**
* E.g. to get privleges for security managers, it is
* possible to set a hook for the <code>MessageDispatcher</code> thread.
@@ -203,7 +204,6 @@ public class java_remote_bridge implements IBridge, IReceiver, IRequester, XBrid
super("MessageDispatcher");
}
-
public void run() {
if(__MessageDispatcher_run_hook != null) {
try {
@@ -227,21 +227,21 @@ public class java_remote_bridge implements IBridge, IReceiver, IRequester, XBrid
// Take care of special methods release and acquire
if(iMessage.getOperation() != null && iMessage.getOperation().equals("release")) {
- _java_environment.revokeInterface(iMessage.getOid(), iMessage.getInterface());
- remRefHolder(iMessage.getInterface(), iMessage.getOid());
+ _java_environment.revokeInterface(iMessage.getOid(), new Type(iMessage.getInterface()));
+ remRefHolder(new Type(iMessage.getInterface()), iMessage.getOid());
}
else if(iMessage.getOperation() != null && iMessage.getOperation().equals("acquire")) {
String oid_o[] = new String[]{iMessage.getOid()};
- _java_environment.registerInterface(null, oid_o, iMessage.getInterface());
+ _java_environment.registerInterface(null, oid_o, new Type(iMessage.getInterface()));
- addRefHolder(iMessage.getInterface(), iMessage.getOid());
+ addRefHolder(new Type(iMessage.getInterface()), iMessage.getOid());
}
else {
Object object = null;
if(iMessage.getOperation() != null) { // is it a request
- object = _java_environment.getRegisteredInterface(iMessage.getOid(), iMessage.getInterface());
+ object = _java_environment.getRegisteredInterface(iMessage.getOid(), new Type(iMessage.getInterface()));
Object xexception = null;
@@ -297,6 +297,7 @@ public class java_remote_bridge implements IBridge, IReceiver, IRequester, XBrid
catch(Exception exception) {
if(DEBUG) {
System.err.println(getClass() + " - reading message - exception occurred: \"" + exception + "\"");
+ exception.printStackTrace();
System.err.println(getClass() + " - giving up");
}
if(DEBUG)
@@ -350,40 +351,40 @@ public class java_remote_bridge implements IBridge, IReceiver, IRequester, XBrid
// use a static class, it is smaller
private static class RefHolder {
- Class _zInterface;
+ Type _type;
String _oid;
int _mapCount;
}
- void addRefHolder(Class zInterface, String oid) {
+ void addRefHolder(Type type, String oid) {
acquire();
- RefHolder refHolder = (RefHolder)_refHolders.get(oid + zInterface);
+ RefHolder refHolder = (RefHolder)_refHolders.get(oid + type);
if(refHolder == null) {
refHolder = new RefHolder();
- refHolder._zInterface = zInterface;
+ refHolder._type = type;
refHolder._oid = oid;
- _refHolders.put(oid + zInterface, refHolder);
+ _refHolders.put(oid + type, refHolder);
}
++ refHolder._mapCount;
}
- void remRefHolder(Class zInterface, String oid) {
- RefHolder refHolder = (RefHolder)_refHolders.get(oid + zInterface);
+ void remRefHolder(Type type, String oid) {
+ RefHolder refHolder = (RefHolder)_refHolders.get(oid + type);
if(refHolder != null) {
-- refHolder._mapCount;
if(refHolder._mapCount <= 0)
- _refHolders.remove(oid + zInterface);
+ _refHolders.remove(oid + type);
release();
}
else
- System.err.println(getClass().getName() + ".remRefHolder - warning - unknown oid:" + oid + " " + zInterface);
+ System.err.println(getClass().getName() + ".remRefHolder - warning - unknown oid:" + oid + " " + type);
}
@@ -397,7 +398,7 @@ public class java_remote_bridge implements IBridge, IReceiver, IRequester, XBrid
while(refHolder._mapCount > 0) {
-- refHolder._mapCount;
- _java_environment.revokeInterface(refHolder._oid, refHolder._zInterface);
+ _java_environment.revokeInterface(refHolder._oid, refHolder._type);
release();
}
}
@@ -569,10 +570,10 @@ public class java_remote_bridge implements IBridge, IReceiver, IRequester, XBrid
* <p>
* @return the object in the destination environment
* @param object the object to map
- * @param zInterface the interface under which is to be mapped
+ * @param type the interface under which is to be mapped
* @see com.sun.star.uno.IBridge#mapInterfaceTo
*/
- public Object mapInterfaceTo(Object object, Class zInterface) throws MappingException {
+ public Object mapInterfaceTo(Object object, Type type) throws MappingException {
if(_disposed) throw new RuntimeException("java_remote_bridge(" + this + ").mapInterfaceTo - is disposed");
String oid[] = new String[1];
@@ -581,11 +582,11 @@ public class java_remote_bridge implements IBridge, IReceiver, IRequester, XBrid
if(object instanceof String)
oid[0] = (String)object;
else {
- Object xobject = _java_environment.registerInterface(object, oid, zInterface);
+ Object xobject = _java_environment.registerInterface(object, oid, type);
if(!(xobject instanceof com.sun.star.lib.uno.environments.java.java_environment.HolderProxy))
- addRefHolder(zInterface, oid[0]);
+ addRefHolder(type, oid[0]);
}
- if(DEBUG) System.err.println("##### " + getClass() + " - mapInterfaceTo:" + object + " interface:" + zInterface + " " + oid[0]);
+ if(DEBUG) System.err.println("##### " + getClass() + " - mapInterfaceTo:" + object + " interface:" + type + " " + oid[0]);
return oid[0];
}
@@ -595,14 +596,14 @@ public class java_remote_bridge implements IBridge, IReceiver, IRequester, XBrid
* <p>
* @return the object in the source environment
* @param object the object to map
- * @param zInterface the interface under which is to be mapped
+ * @param type the interface under which is to be mapped
* @see com.sun.star.uno.IBridge#mapInterfaceFrom
*/
- public Object mapInterfaceFrom(Object oId, Class zInterface) throws MappingException {
+ public Object mapInterfaceFrom(Object oId, Type type) throws MappingException {
if(_disposed) throw new RuntimeException("java_remote_bridge(" + this + ").mapInterfaceFrom - is disposed");
// see if we already have object with zInterface of given oid
- Object object = _java_environment.getRegisteredInterface((String)oId, zInterface);
+ Object object = _java_environment.getRegisteredInterface((String)oId, type);
if(object != null) {
if(object instanceof DispatcherAdapterBase) {
DispatcherAdapterBase dispatcherAdapterBase = (DispatcherAdapterBase)object;
@@ -612,7 +613,7 @@ public class java_remote_bridge implements IBridge, IReceiver, IRequester, XBrid
if(!(dispatcherAdapterBase.getObject() instanceof String)) { // is it not my object?
try {
- sendRequest(oId, new Type(zInterface), "release", null, null, null);
+ sendRequest(oId, type, "release", null, null, null);
}
catch(Exception exception) {
throw new MappingException(exception.getMessage());
@@ -624,12 +625,12 @@ public class java_remote_bridge implements IBridge, IReceiver, IRequester, XBrid
else {
String oid[] = new String[]{(String)oId};
- Object proxy = Proxy.create(this, oid[0], zInterface, false, _forceSynchronouse); // this proxy sends a release, when finalized
- object = _java_environment.registerInterface(proxy, oid, zInterface);
+ Object proxy = Proxy.create(this, oid[0], type, false, _forceSynchronouse); // this proxy sends a release, when finalized
+ object = _java_environment.registerInterface(proxy, oid, type);
acquire();
}
- if(DEBUG) System.err.println("##### " + getClass() + " - mapInterfaceFrom:" + oId + " interface:" + zInterface + " " + object);
+ if(DEBUG) System.err.println("##### " + getClass() + " - mapInterfaceFrom:" + oId + " interface:" + type + " " + object);
return object;
}
@@ -853,7 +854,7 @@ public class java_remote_bridge implements IBridge, IReceiver, IRequester, XBrid
// is this what we realy want to do, is the writing to the stream realy protected? Not that
// an other thread flushes the output and an reply arrives before we have added the thread queue!!!
synchronized(_xConnection) {
- _iProtocol.writeRequest((String)object, type, operation, ThreadPool.getThreadId(), params, synchron, mustReply);
+ _iProtocol.writeRequest((String)object, (TypeDescription)type.getTypeDescription(), operation, ThreadPool.getThreadId(), params, synchron, mustReply);
if(synchron[0].booleanValue()) // prepare a queue for this thread in the threadpool
ThreadPool.addThread(this);
diff --git a/jurt/com/sun/star/lib/uno/environments/java/java_environment.java b/jurt/com/sun/star/lib/uno/environments/java/java_environment.java
index 477abbb38ed0..345fddd43c86 100644
--- a/jurt/com/sun/star/lib/uno/environments/java/java_environment.java
+++ b/jurt/com/sun/star/lib/uno/environments/java/java_environment.java
@@ -2,9 +2,9 @@
*
* $RCSfile: java_environment.java,v $
*
- * $Revision: 1.2 $
+ * $Revision: 1.3 $
*
- * last change: $Author: jbu $ $Date: 2001-01-09 13:43:15 $
+ * last change: $Author: kr $ $Date: 2001-01-16 18:01:25 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -76,6 +76,8 @@ import com.sun.star.lib.sandbox.generic.Dispatcher;
import com.sun.star.lib.sandbox.generic.DispatcherAdapterBase;
import com.sun.star.lib.sandbox.generic.DispatcherAdapterFactory;
+import com.sun.star.lib.uno.typedesc.TypeDescription;
+
import com.sun.star.uno.IEnvironment;
import com.sun.star.uno.IQueryInterface;
import com.sun.star.uno.MappingException;
@@ -90,7 +92,7 @@ import com.sun.star.uno.XInterface;
* interface defined in the uno runtime.
* <p>
* <p>
- * @version $Revision: 1.2 $ $ $Date: 2001-01-09 13:43:15 $
+ * @version $Revision: 1.3 $ $ $Date: 2001-01-16 18:01:25 $
* @author Kay Ramme
* @see com.sun.star.uno.UnoRuntime
* @see com.sun.star.uno.IEnvironment
@@ -138,7 +140,7 @@ public class java_environment implements IEnvironment, Disposable {
}
Holder _holder;
- Class _zInterface;
+ Type _type;
Hashtable _methods;
@@ -171,18 +173,18 @@ public class java_environment implements IEnvironment, Disposable {
super();
}
- public void setInterface(Class zInterface) {
- _zInterface = zInterface;
+ public void setInterface(Type type) {
+ _type = type;
_methods = __getMethodsAsTable(object.getClass());
}
- public Class getInterface() {
- return _zInterface;
+ public Type getInterface() {
+ return _type;
}
// IQueryInterface - delegate calls through this proxy
- public Object queryInterface(Class zInterface) throws MappingException {
- return UnoRuntime.queryInterface(zInterface, object);
+ public Object queryInterface(Type type) throws MappingException {
+ return UnoRuntime.queryInterface(type, object);
}
public boolean isSame(Object object) throws MappingException {
@@ -227,18 +229,19 @@ public class java_environment implements IEnvironment, Disposable {
_objects.remove(_oId);
}
- Object xxgetObject(Class zInterface) {
+ Object xxgetObject(Type type) {
Object result = _object;
if(_object instanceof Proxy) {
- if(DEBUG) System.err.println("###################### creating new Proxy Proxy");
- Class holderProxyClass = DispatcherAdapterFactory.createDispatcherAdapter(zInterface, HolderProxy.class.getName().replace('.', '/'));
+ if(DEBUG) System.err.println("##### " + getClass().getName() + " - creating new Proxy Proxy");
+ Class holderProxyClass = DispatcherAdapterFactory.createDispatcherAdapter(((TypeDescription)type.getTypeDescription()).getZClass(),
+ HolderProxy.class.getName().replace('.', '/'));
try {
HolderProxy holderProxy = (HolderProxy)holderProxyClass.newInstance();
holderProxy.setObject(holderProxy, _object);
holderProxy.setHolder(this);
- holderProxy.setInterface(zInterface);
+ holderProxy.setInterface(type);
result = holderProxy;
}
@@ -305,20 +308,20 @@ public class java_environment implements IEnvironment, Disposable {
* @return a proxy to registered interface if necessare, otherwise the registered object itself
* @param object the interface to register
* @param oId[] inout parameter for the corresponding object id
- * @param zInterface the type description of the given interface
+ * @param type the type description of the given interface
* @see com.sun.star.uno.IEnvironment#registerInterface
*/
- public Object registerInterface(Object object, String oId[], Class zInterface) {
+ public Object registerInterface(Object object, String oId[], Type type) {
if(oId[0] == null)
oId[0] = UnoRuntime.generateOid(object);
- String keyName = oId[0] + zInterface;
+ String keyName = oId[0] + type;
// get the holder
Holder holder = (Holder)_objects.get(keyName);
if(DEBUG)
- System.err.println("##### " + getClass().getName() + ".registerInterface:" + object + " " + oId[0] + " " + zInterface);
+ System.err.println("##### " + getClass().getName() + ".registerInterface:" + object + " " + oId[0] + " " + type);
if(holder == null) {
holder = new Holder(keyName, object);
@@ -330,42 +333,42 @@ public class java_environment implements IEnvironment, Disposable {
holder = (Holder)_objects.get(keyName);
holder.incRefCount();
- return holder.xxgetObject(zInterface);
+ return holder.xxgetObject(type);
}
/**
* You have to revoke ANY interface that has been registered via this method.
* <p>
* @param oId object id of interface to be revoked
- * @param zInterface the type description of the interface
+ * @param type the type description of the interface
* @see com.sun.star.uno.IEnvironment#revokeInterface
*/
- public void revokeInterface(String oId, Class zInterface) {
- if(DEBUG) System.err.println("##### " + getClass().getName() + ".revokeInterface:" + oId + " " + zInterface);
- Holder holder = (Holder)_objects.get(oId + zInterface);
+ public void revokeInterface(String oId, Type type) {
+ if(DEBUG) System.err.println("##### " + getClass().getName() + ".revokeInterface:" + oId + " " + type);
+ Holder holder = (Holder)_objects.get(oId + type);
if(holder != null)
holder.decRefCount();
else
- System.err.println("java_environment.revokeInterface - unknown oid:" + oId + " " + zInterface);
+ System.err.println("java_environment.revokeInterface - unknown oid:" + oId + " " + type);
}
/**
* Retrieves an interface identified by its object id and type from this environment.
* <p>
* @param oId object id of interface to be retrieved
- * @param zInterface the type description of the interface to be retrieved
+ * @param type the type description of the interface to be retrieved
* @see com.sun.star.uno.IEnvironment#getRegisteredInterface
*/
- public Object getRegisteredInterface(String oId, Class zInterface) {
+ public Object getRegisteredInterface(String oId, Type type) {
Object result = null;
- Holder holder = (Holder)_objects.get(oId + zInterface);
+ Holder holder = (Holder)_objects.get(oId + type);
if(holder != null) {
- result = holder.xxgetObject(zInterface);
+ result = holder.xxgetObject(type);
}
- if(DEBUG) System.err.println("##### " + getClass().getName() + ".getRegisteredInterface:>" + oId + "< " + zInterface +" " + result);
+ if(DEBUG) System.err.println("##### " + getClass().getName() + ".getRegisteredInterface:>" + oId + "< " + type +" " + result);
return result;
}
diff --git a/jurt/com/sun/star/lib/uno/environments/remote/IProtocol.java b/jurt/com/sun/star/lib/uno/environments/remote/IProtocol.java
index c90205cc053e..033f6d326238 100644
--- a/jurt/com/sun/star/lib/uno/environments/remote/IProtocol.java
+++ b/jurt/com/sun/star/lib/uno/environments/remote/IProtocol.java
@@ -2,9 +2,9 @@
*
* $RCSfile: IProtocol.java,v $
*
- * $Revision: 1.2 $
+ * $Revision: 1.3 $
*
- * last change: $Author: kr $ $Date: 2000-09-28 16:54:22 $
+ * last change: $Author: kr $ $Date: 2001-01-16 18:01:27 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -70,14 +70,14 @@ import com.sun.star.uno.IBridge;
-import com.sun.star.uno.Type;
+import com.sun.star.lib.uno.typedesc.TypeDescription;
/**
* This interface provides an abstraction for protocols
* for remote bridges.
* <p>
- * @version $Revision: 1.2 $ $ $Date: 2000-09-28 16:54:22 $
+ * @version $Revision: 1.3 $ $ $Date: 2001-01-16 18:01:27 $
* @author Kay Ramme
* @see com.sun.star.lib.uno.environments.remote.IMessage
* @see com.sun.star.lib.uno.environments.remote.Job
@@ -117,7 +117,7 @@ public interface IProtocol {
public void writeRequest(String oid,
- Type zInterface,
+ TypeDescription zInterface,
String operation,
ThreadID threadId,
Object params[],
diff --git a/jurt/com/sun/star/lib/uno/environments/remote/Job.java b/jurt/com/sun/star/lib/uno/environments/remote/Job.java
index 6915cf539d7e..360feef52fa8 100644
--- a/jurt/com/sun/star/lib/uno/environments/remote/Job.java
+++ b/jurt/com/sun/star/lib/uno/environments/remote/Job.java
@@ -2,9 +2,9 @@
*
* $RCSfile: Job.java,v $
*
- * $Revision: 1.2 $
+ * $Revision: 1.3 $
*
- * last change: $Author: kr $ $Date: 2000-11-17 10:45:40 $
+ * last change: $Author: kr $ $Date: 2001-01-16 18:01:27 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -65,16 +65,12 @@ package com.sun.star.lib.uno.environments.remote;
import java.io.IOException;
-import java.lang.reflect.Array;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
-import com.sun.star.corba.giop.ReplyStatusType_1_2;
-
-import com.sun.star.lib.uno.typeinfo.ParameterTypeInfo;
+import com.sun.star.lib.uno.typedesc.TypeDescription;
import com.sun.star.uno.Any;
-import com.sun.star.uno.MappingException;
import com.sun.star.uno.Type;
import com.sun.star.uno.UnoRuntime;
@@ -83,7 +79,7 @@ import com.sun.star.uno.UnoRuntime;
* The Job is an abstraction for tasks which have to be done
* remotely because of a method invocation.
* <p>
- * @version $Revision: 1.2 $ $ $Date: 2000-11-17 10:45:40 $
+ * @version $Revision: 1.3 $ $ $Date: 2001-01-16 18:01:27 $
* @author Kay Ramme
* @see com.sun.star.lib.uno.environments.remote.ThreadID
* @see com.sun.star.lib.uno.environments.remote.IReceiver
@@ -119,7 +115,7 @@ public class Job {
* @param o_out_sig the out signature as an out parameter
*/
protected Object dispatch_MethodCall(Object params[]) throws Exception {
- Method method = Protocol.__findMethod(_iMessage.getInterface(), _iMessage.getOperation());
+ Method method = _iMessage.getInterface().getMethodDescription(_iMessage.getOperation()).getMethod();
if(DEBUG) System.err.println("##### " + getClass().getName() + ".dispatch_MethodCall:" + _object + " " + method.getName() + " " + params);
@@ -137,14 +133,14 @@ public class Job {
* @param o_out_sig the out signature as an out parameter
*/
protected Object dispatch_queryInterface(Type type) throws Exception {
- Class zInterface = type.getDescription();
+ Class zInterface = ((TypeDescription)type.getTypeDescription()).getZClass();
Object result = null;
Object face = UnoRuntime.queryInterface(zInterface, _object);
// the hell knows why, but empty interfaces a given back as void anys
if(face != null)
- result = new com.sun.star.uno.Any(type.getDescription(), face);
+ result = new Any(type, face);
if(DEBUG) System.err.println("##### " + getClass().getName() + ".dispatch_queryInterface:" + _object + " " + zInterface + " result:" + result);
@@ -190,17 +186,15 @@ public class Job {
}
while(theException instanceof InvocationTargetException);
- // is this an exception we now?
if(theException instanceof com.sun.star.uno.Exception
|| theException instanceof com.sun.star.uno.RuntimeException) {
+ if(_iMessage.isSynchron())
+ _iReceiver.sendReply(true, _iMessage.getThreadID(), theException);
if(DEBUG) System.err.println("#### RemoteStub.request - exception:" + theException);
}
- else // wrap it as uno exception
- theException = new com.sun.star.uno.RuntimeException("java exception: " + theException.toString(), null);
-
- if(_iMessage.isSynchron())
- _iReceiver.sendReply(true, _iMessage.getThreadID(), theException);
+ else
+ throw (Exception)invocationTargetException.getTargetException();
}
return result;
@@ -256,7 +250,7 @@ public class Job {
* <p>
* @return returns the interface
*/
- public Class getInterface() {
+ public TypeDescription getInterface() {
return _iMessage.getInterface();
}
diff --git a/jurt/com/sun/star/lib/uno/environments/remote/JobQueue.java b/jurt/com/sun/star/lib/uno/environments/remote/JobQueue.java
index 78a419d3041e..655c5c2922b3 100644
--- a/jurt/com/sun/star/lib/uno/environments/remote/JobQueue.java
+++ b/jurt/com/sun/star/lib/uno/environments/remote/JobQueue.java
@@ -2,9 +2,9 @@
*
* $RCSfile: JobQueue.java,v $
*
- * $Revision: 1.6 $
+ * $Revision: 1.7 $
*
- * last change: $Author: kr $ $Date: 2000-12-22 10:01:27 $
+ * last change: $Author: kr $ $Date: 2001-01-16 18:01:27 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -81,7 +81,7 @@ import com.sun.star.uno.UnoRuntime;
* (put by <code>putjob</code>) into the async queue, which is only
* known by the sync queue.
* <p>
- * @version $Revision: 1.6 $ $ $Date: 2000-12-22 10:01:27 $
+ * @version $Revision: 1.7 $ $ $Date: 2001-01-16 18:01:27 $
* @author Kay Ramme
* @see com.sun.star.lib.uno.environments.remote.ThreadPool
* @see com.sun.star.lib.uno.environments.remote.Job
@@ -94,7 +94,6 @@ public class JobQueue {
*/
public static final boolean DEBUG = false;
-
/**
* E.g. to get privleges for security managers, it is
* possible to set a hook for the <code>JobDispatcher</code> thread.
@@ -318,10 +317,12 @@ public class JobQueue {
// if there is an async queue, wait for jobs to be done
if(_async_jobQueue != null) {
synchronized(_async_jobQueue) {
+
// wait for async queue to be empty and last job to be done
- while(_async_jobQueue._worker_thread != null && (_async_jobQueue._active || _async_jobQueue._head != null)) {
+ while(_async_jobQueue._active || _async_jobQueue._head != null) {
if(DEBUG) System.err.println("waiting for async:" + _async_jobQueue._head + " " + _async_jobQueue._worker_thread);
_async_jobQueue.wait(10);
+ if(DEBUG) System.err.println("waited for async");
}
}
}
@@ -467,7 +468,7 @@ public class JobQueue {
removeDisposeId(disposeId, disposeId_count);
if(_sync_jobQueue != null)
- notifyAll(); // notify waiters (e.g. this is an asyncQueue and there is a sync waiting)
+ notify(); // notify waiters (e.g. this is an asyncQueue and there is a sync waiting)
}
else
quit = false;
diff --git a/jurt/com/sun/star/lib/uno/environments/remote/remote_environment.java b/jurt/com/sun/star/lib/uno/environments/remote/remote_environment.java
index d6069daa4080..589d2c57fc77 100644
--- a/jurt/com/sun/star/lib/uno/environments/remote/remote_environment.java
+++ b/jurt/com/sun/star/lib/uno/environments/remote/remote_environment.java
@@ -2,9 +2,9 @@
*
* $RCSfile: remote_environment.java,v $
*
- * $Revision: 1.1.1.1 $
+ * $Revision: 1.2 $
*
- * last change: $Author: hr $ $Date: 2000-09-18 15:27:53 $
+ * last change: $Author: kr $ $Date: 2001-01-16 18:01:27 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -67,7 +67,10 @@ import java.util.Enumeration;
import com.sun.star.lib.util.WeakTable;
+import com.sun.star.lib.uno.typedesc.TypeDescription;
+
import com.sun.star.uno.IEnvironment;
+import com.sun.star.uno.Type;
import com.sun.star.uno.UnoRuntime;
@@ -124,17 +127,17 @@ public class remote_environment implements IEnvironment {
* @param oId[] inout parameter for the corresponding object id
* @param xtypeDescr type description of interface
*/
- public Object registerInterface(Object object, String oId[], Class zInterface) {
+ public Object registerInterface(Object object, String oId[], Type type) {
if(oId[0] == null)
oId[0] = UnoRuntime.generateOid(object);
- Object p_object = (Object)_objects.get(oId[0] + zInterface, zInterface);
+ Object p_object = (Object)_objects.get(oId[0] + type.getTypeDescription(), ((TypeDescription)type.getTypeDescription()).getZClass());
if(DEBUG)
System.err.println("#### AbstractEnvironment.registerInterface:" + object + " " + UnoRuntime.generateOid(object) + " " + p_object);
if(p_object == null)
- object = _objects.put(oId[0] + zInterface, object, zInterface);
+ object = _objects.put(oId[0] + type.getTypeDescription(), object, ((TypeDescription)type.getTypeDescription()).getZClass());
else
object = p_object;
@@ -147,7 +150,7 @@ public class remote_environment implements IEnvironment {
* @param oId object id of interface to be revoked
* @param xtypeDescr type description of interface to be revoked
*/
- public void revokeInterface(String oId, Class zInterface) {
+ public void revokeInterface(String oId, Type type) {
_objects.remove(oId);
}
@@ -157,10 +160,10 @@ public class remote_environment implements IEnvironment {
* @param oId object id of interface to be retrieved
* @param xtypeDescr description of interface to be retrieved
*/
- public Object getRegisteredInterface(String oId, Class zInterface) {
- Object object = _objects.get(oId + zInterface, zInterface);
+ public Object getRegisteredInterface(String oId, Type type) {
+ Object object = _objects.get(oId + type.getTypeDescription(), ((TypeDescription)type.getTypeDescription()).getZClass());
- if(DEBUG) System.err.println("#### AbstractEnvironment(" + getName() + ").getRegisteredInterface:>" + oId + "< " + zInterface +" " + object);
+ if(DEBUG) System.err.println("#### AbstractEnvironment(" + getName() + ").getRegisteredInterface:>" + oId + "< " + type +" " + object);
return object;
}
diff --git a/jurt/com/sun/star/lib/uno/protocols/urp/Marshal.java b/jurt/com/sun/star/lib/uno/protocols/urp/Marshal.java
index 9fb50ddb6391..7ba8e37fe2d7 100644
--- a/jurt/com/sun/star/lib/uno/protocols/urp/Marshal.java
+++ b/jurt/com/sun/star/lib/uno/protocols/urp/Marshal.java
@@ -2,9 +2,9 @@
*
* $RCSfile: Marshal.java,v $
*
- * $Revision: 1.4 $
+ * $Revision: 1.5 $
*
- * last change: $Author: kr $ $Date: 2000-12-13 16:32:20 $
+ * last change: $Author: kr $ $Date: 2001-01-16 18:01:32 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -91,6 +91,8 @@ import com.sun.star.lib.uno.environments.remote.IMarshal;
import com.sun.star.lib.uno.environments.remote.Protocol;
import com.sun.star.lib.uno.environments.remote.ThreadID;
+import com.sun.star.lib.uno.typedesc.TypeDescription;
+
import com.sun.star.lib.uno.typeinfo.MemberTypeInfo;
class Marshal implements IMarshal {
@@ -99,6 +101,14 @@ class Marshal implements IMarshal {
*/
static public final boolean DEBUG = false;
+ static public final TypeDescription __xInterfaceTypeDescription = TypeDescription.getTypeDescription(XInterface.class);
+ static public final TypeDescription __M_InterfaceReferenceTypeDescription = TypeDescription.getTypeDescription(M_InterfaceReference.class);
+ static public final TypeDescription __M_ThreadIdTypeDescription = TypeDescription.getTypeDescription(M_ThreadId.class);
+
+ static private final M_InterfaceReference __null_M_InterfaceReference = new M_InterfaceReference("", (short)0xffff);
+
+
+
static class M_ThreadId {
public byte full[];
public short cache;
@@ -146,25 +156,25 @@ class Marshal implements IMarshal {
void writeAny(Object object) throws Exception {
if(DEBUG) System.err.println("##### " + getClass().getName() + ".writeAny:" + object);
- Type type = null;
+ TypeDescription typeDescription = null;
if(object == null)
- type = new Type(Void.class);
+ typeDescription = TypeDescription.__void_TypeDescription;
else if(object instanceof Any) {
Any any = (Any)object;
- type = new Type(any.getInterface());
+ typeDescription = (TypeDescription)any.getType().getTypeDescription();
object = any.getObject();
}
else if(object instanceof XInterface)
- type = new Type(XInterface.class);
+ typeDescription = __xInterfaceTypeDescription;
else
- type = new Type(object.getClass());
+ typeDescription = TypeDescription.getTypeDescription(object.getClass());
- writeType(type);
- writeObject(type.getDescription(), object);
+ writeTypeDescrption(typeDescription);
+ writeObject(typeDescription, object);
}
void writeBoolean(Boolean zBoolean) throws Exception {
@@ -184,9 +194,17 @@ class Marshal implements IMarshal {
void writebyteSequence(byte bytes[]) throws Exception {
if(DEBUG) System.err.println("##### " + getClass().getName() + ".writebyteSequence:" + bytes);
- writeCompressedInt(bytes.length);
+ int size = 0;
+ if(bytes == null)
+ System.err.println("WARNING! writing null sequence as empty sequence");
- _dataOutput.write(bytes);
+ else
+ size = bytes.length;
+
+ writeCompressedInt(size);
+
+ if(size != 0)
+ _dataOutput.write(bytes);
}
void writeByte(Byte zByte) throws Exception {
@@ -213,20 +231,13 @@ class Marshal implements IMarshal {
writeint(enum.getValue());
}
- void writeThrowable(Class zClass, Throwable throwable) throws Exception {
+ void writeThrowable(TypeDescription typeDescription, Throwable throwable) throws Exception {
if(DEBUG) System.err.println("##### " + getClass().getName() + ".writeThrowable:" + throwable);
String message = throwable.getMessage();
writeString((message == null) ? "" : message);
- if(java.lang.Exception.class.isAssignableFrom(zClass))
- writeStruct(zClass, throwable);
-
- else if(java.lang.RuntimeException.class.isAssignableFrom(zClass))
- writeStruct(zClass, throwable);
-
- else
- throw new Exception("urp.Marshal.writeThrowable - unsupported throwable:" + zClass);
+ writeStruct(typeDescription, throwable);
}
void writeFloat(Float zFloat) throws Exception {
@@ -253,81 +264,48 @@ class Marshal implements IMarshal {
_dataOutput.writeLong(zLong.longValue());
}
- // we may optimize this method with a hashtable in the future
- public void writeObject(Class zClass, Object object) throws Exception {
- if(DEBUG) System.err.println("##### " + getClass().getName() + ".writeObject: <" + zClass + "> <" + object + ">");
-
- if(zClass == Any.class || zClass == Object.class) // write an any ?
- writeAny(object);
-
- else if(zClass.isArray() & zClass.getComponentType() == byte.class) // write a sequence ?
- writebyteSequence((byte [])object);
-
- else if(zClass.isArray()) // write a sequence ?
- writeSequence(zClass, object);
-
- else if(zClass == Void.class || zClass == void.class) // write nothing ?
- ; // nop
-
- else if(Enum.class.isAssignableFrom(zClass)) // write an enum ?
- writeEnum((Enum)object);
-
- else if(Union.class.isAssignableFrom(zClass)) // write a union ?
- writeUnion((Union)object);
-
- else if(Type.class.isAssignableFrom(zClass)) // write a type ?
- writeType((Type)object);
-
- else if(XInterface.class.isAssignableFrom(zClass)) // is it an interface ?
- writeReference(zClass, object);
-
- else if(object instanceof ThreadID) // is it a thread id ?
- writeThreadID((ThreadID)object);
-
- else if(zClass == boolean.class || zClass == Boolean.class) // is it a boolean
- writeBoolean((Boolean)object);
-
- else if(zClass == char.class || zClass == Character.class) // is it a character ?)
- writeCharacter((Character)object);
-
- else if(zClass == byte.class || zClass == Byte.class) // is it a byte ?
- writeByte((Byte)object);
-
- else if(zClass == short.class || zClass == Short.class) // is it a short ?
- writeShort((Short)object);
-
- else if(zClass == int.class || zClass == Integer.class) // is it an integer ?
- writeInteger((Integer)object);
-
- else if(zClass == long.class || zClass == Long.class) // is it a long ?
- writeLong((Long)object);
-
- else if(zClass == float.class || zClass == Float.class) // is it a float ?
- writeFloat((Float)object);
-
- else if(zClass == double.class || zClass == Double.class) // is it a double ?
- writeDouble((Double)object);
-
- else if(zClass == String.class) // is it a String ?
- writeString((String)object);
-
- else if(Throwable.class.isAssignableFrom(zClass)) // is it an exception?
- writeThrowable(zClass, (Throwable)object);
-
- else // otherwise it must be a struct
- writeStruct(zClass, object);
-
+ public void writeObject(TypeDescription typeDescription, Object object) throws Exception {
+ if(DEBUG) System.err.println("##### " + getClass().getName() + ".writeObject: <" + typeDescription + "> <" + object + ">");
+
+ switch(typeDescription.getTypeClass().getValue()) {
+ case TypeClass.ANY_value: writeAny(object); break; // write an any ?
+ case TypeClass.SEQUENCE_value:
+ case TypeClass.ARRAY_value: writeSequence(typeDescription, object); break; // write a sequence ?
+ case TypeClass.VOID_value: break; // write nothing ?
+ case TypeClass.ENUM_value: writeEnum((Enum)object); break; // write an enum ?
+ case TypeClass.UNION_value: writeUnion((Union)object); break; // write a union ?
+ case TypeClass.TYPE_value: writeTypeDescrption((TypeDescription)((Type)object).getTypeDescription()); break; // write a type ?
+ case TypeClass.INTERFACE_value: writeReference(typeDescription, object); break; // is it an interface ?
+ case TypeClass.BOOLEAN_value: writeBoolean((Boolean)object); break; // is it a boolean
+ case TypeClass.CHAR_value: writeCharacter((Character)object); break; // is it a character ?
+ case TypeClass.BYTE_value: writeByte((Byte)object); break; // is it a byte ?
+ case TypeClass.SHORT_value: writeShort((Short)object); break; // is it a short ?
+ case TypeClass.LONG_value: writeInteger((Integer)object); break; // is it an integer ?
+ case TypeClass.HYPER_value: writeLong((Long)object); break; // is it a long ?
+ case TypeClass.FLOAT_value: writeFloat((Float)object); break; // is it a float ?
+ case TypeClass.DOUBLE_value: writeDouble((Double)object); break; // is it a double ?
+ case TypeClass.STRING_value: writeString((String)object); break; // is it a String ?
+ case TypeClass.STRUCT_value:
+ if(object instanceof ThreadID) // is it a thread id ?
+ writeThreadID((ThreadID)object);
+ else // is it a struct ?
+ writeStruct(typeDescription, object);
+
+ break;
+ case TypeClass.EXCEPTION_value: writeThrowable(typeDescription, (Throwable)object); break; // is it an exception?
+
+ default:
+ throw new com.sun.star.uno.RuntimeException(getClass().getName() + ".writeObject - unknown typeClass:" + typeDescription.getTypeClass().getValue());
+ }
}
- static private final M_InterfaceReference null_M_InterfaceReference = new M_InterfaceReference("", (short)0xffff);
-
void writeOid(String oid) throws Exception {
if(DEBUG) System.err.println("##### " + getClass().getName() + ".writeOid:" + oid);
M_InterfaceReference m_InterfaceReference = null;
if(oid == null)
- m_InterfaceReference = null_M_InterfaceReference;
+ m_InterfaceReference = __null_M_InterfaceReference;
else {
boolean found[] = new boolean[1];
short index;
@@ -339,30 +317,35 @@ class Marshal implements IMarshal {
m_InterfaceReference = new M_InterfaceReference(found[0] ? "" : oid, index);
}
- writeObject(M_InterfaceReference.class, m_InterfaceReference);
+ writeObject(__M_InterfaceReferenceTypeDescription, m_InterfaceReference);
}
- void writeReference(Class zInterface, Object object) throws Exception {
- if(DEBUG) System.err.println("##### " + getClass().getName() + ".writeReference:" + zInterface + " " + object);
+ void writeReference(TypeDescription typeDescription, Object object) throws Exception {
+ if(DEBUG) System.err.println("##### " + getClass().getName() + ".writeReference:" + typeDescription + " " + object);
// map the object to universe
- writeOid(object != null ? (String)_iBridge.mapInterfaceTo(object, zInterface) : null);
+ writeOid(object != null ? (String)_iBridge.mapInterfaceTo(object, new Type(typeDescription)) : null);
}
- void writeSequence(Class zClass, Object object) throws Exception {
- if(DEBUG) System.err.println("##### " + getClass().getName() + ".writeSequence:" + zClass + " " + object);
+ void writeSequence(TypeDescription typeDescription, Object object) throws Exception {
+ if(DEBUG) System.err.println("##### " + getClass().getName() + ".writeSequence:" + typeDescription + " " + object);
- int size = 0;
- if(object == null)
- System.err.println("WARNING! writing null sequence as empty sequence");
- else
- size = Array.getLength(object);
+ if(typeDescription.getTypeClass() == TypeClass.BYTE) // write a byte sequence ?
+ writebyteSequence((byte [])object);
- writeCompressedInt(size);
+ else {
+ int size = 0;
+ if(object == null)
+ System.err.println("WARNING! writing null sequence as empty sequence");
+ else
+ size = Array.getLength(object);
+
+ writeCompressedInt(size);
- zClass = zClass.getComponentType();
- for(int i = 0; i < size; ++ i)
- writeObject(zClass, Array.get(object, i));
+ typeDescription = typeDescription.getComponentType();
+ for(int i = 0; i < size; ++ i)
+ writeObject(typeDescription, Array.get(object, i));
+ }
}
void writeShort(Short zShort) throws Exception {
@@ -397,13 +380,13 @@ class Marshal implements IMarshal {
_dataOutput.write(bytes);
}
- void writeStruct(Class zClass, Object object) throws Exception {
- if(DEBUG) System.err.println("##### " + getClass().getName() + ".writeStruct:" + zClass + " " + object);
+ void writeStruct(TypeDescription typeDescription, Object object) throws Exception {
+ if(DEBUG) System.err.println("##### " + getClass().getName() + ".writeStruct:" + typeDescription + " " + object);
- Field fields[] = zClass.getFields();
+ Field fields[] = typeDescription.getFields();
for(int i = 0; i < fields.length; ++ i) {
if((fields[i].getModifiers() & (Modifier.STATIC | Modifier.TRANSIENT)) == 0) { // neither static nor transient ?
- MemberTypeInfo memberTypeInfo = Protocol.__findMemberTypeInfo(zClass, fields[i].getName());
+ MemberTypeInfo memberTypeInfo = typeDescription.getMemberTypeInfo(fields[i].getName());
// default the member type to the declared type
Class zInterface = fields[i].getType();
@@ -430,7 +413,7 @@ class Marshal implements IMarshal {
}
}
- writeObject(zInterface, fields[i].get(object));
+ writeObject(TypeDescription.getTypeDescription(zInterface), fields[i].get(object));
}
}
}
@@ -447,20 +430,20 @@ class Marshal implements IMarshal {
M_ThreadId m_ThreadId = new M_ThreadId(found[0] ? null : threadID.getBytes(), index);
- writeObject(M_ThreadId.class, m_ThreadId);
+ writeObject(__M_ThreadIdTypeDescription, m_ThreadId);
}
- void writeType(Type type) throws Exception {
- TypeClass typeClass = type.getTypeClass();
+ void writeTypeDescrption(TypeDescription typeDescription) throws Exception {
+ TypeClass typeClass = typeDescription.getTypeClass();
- if(Type.isTypeClassSimple(typeClass))
+ if(TypeDescription.isTypeClassSimple(typeClass))
_dataOutput.writeByte((byte)typeClass.getValue()); // write the typeclass value
else {
boolean found[] = new boolean[1];
short index;
if(_useCaches)
- index = _typeCache.add(found, type.getTypeName());
+ index = _typeCache.add(found, typeDescription.getTypeName());
else
index = (short)0xffff;
@@ -469,7 +452,7 @@ class Marshal implements IMarshal {
_dataOutput.writeShort(index); // write the cache index
if(!found[0]) // if not found in cache and the type is complex, write the type name
- writeString(type.getTypeName());
+ writeString(typeDescription.getTypeName());
}
}
diff --git a/jurt/com/sun/star/lib/uno/protocols/urp/Unmarshal.java b/jurt/com/sun/star/lib/uno/protocols/urp/Unmarshal.java
index 9067dd15ec17..3f56ddbb1266 100644
--- a/jurt/com/sun/star/lib/uno/protocols/urp/Unmarshal.java
+++ b/jurt/com/sun/star/lib/uno/protocols/urp/Unmarshal.java
@@ -2,9 +2,9 @@
*
* $RCSfile: Unmarshal.java,v $
*
- * $Revision: 1.3 $
+ * $Revision: 1.4 $
*
- * last change: $Author: kr $ $Date: 2000-09-28 16:53:16 $
+ * last change: $Author: kr $ $Date: 2001-01-16 18:01:32 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -88,8 +88,11 @@ import com.sun.star.lib.uno.environments.remote.IUnmarshal;
import com.sun.star.lib.uno.environments.remote.Protocol;
import com.sun.star.lib.uno.environments.remote.ThreadID;
+import com.sun.star.lib.uno.typedesc.TypeDescription;
+
import com.sun.star.lib.uno.typeinfo.MemberTypeInfo;
+
class Unmarshal implements IUnmarshal {
/**
* When set to true, enables various debugging output.
@@ -100,22 +103,22 @@ class Unmarshal implements IUnmarshal {
private DataInput _dataInput;
private IBridge _iBridge;
private Object _objectCache[];
- private Type _typeCache[];
+ private TypeDescription _typeDescriptionCache[];
private ThreadID _threadIdCache[];
Unmarshal(IBridge iBridge, short cacheSize) {
_iBridge = iBridge;
- _objectCache = new Object[cacheSize];
- _typeCache = new Type[cacheSize];
- _threadIdCache = new ThreadID[cacheSize];
- _inputStream = new ByteArrayInputStream(new byte[0]);
- _dataInput = new DataInputStream(_inputStream);
+ _objectCache = new Object[cacheSize];
+ _typeDescriptionCache = new TypeDescription[cacheSize];
+ _threadIdCache = new ThreadID[cacheSize];
+ _inputStream = new ByteArrayInputStream(new byte[0]);
+ _dataInput = new DataInputStream(_inputStream);
}
Object readAny() throws Exception {
- Type type = readType();
- Object object = readObject(type.getDescription());
+ TypeDescription typeDescription = readTypeDescription();
+ Object object = readObject(typeDescription);
if(DEBUG) System.err.println("##### " + getClass().getName() + ".readAny:" + object);
@@ -173,10 +176,10 @@ class Unmarshal implements IUnmarshal {
return result;
}
- Enum readEnum(Class zClass) throws Exception {
+ Enum readEnum(TypeDescription typeDescription) throws Exception {
Integer index = readInteger();
- Method fromInt = zClass.getMethod("fromInt", new Class[] {int.class});
+ Method fromInt = typeDescription.getZClass().getMethod("fromInt", new Class[] {int.class});
Enum result = (Enum)fromInt.invoke(null, new Object[]{index});
if(DEBUG) System.err.println("##### " + getClass().getName() + ".readEnum:" + result);
@@ -184,20 +187,13 @@ class Unmarshal implements IUnmarshal {
return result;
}
- Throwable readThrowable(Class zClass) throws Exception {
+ Throwable readThrowable(TypeDescription typeDescription) throws Exception {
String message = readString();
- Constructor constructor = zClass.getConstructor(new Class[]{String.class});
+ Constructor constructor = typeDescription.getZClass().getConstructor(new Class[]{String.class});
Throwable throwable = (Throwable)constructor.newInstance(new Object[]{message});
- if(java.lang.Exception.class.isAssignableFrom(zClass))
- readStruct(zClass, throwable);
-
- else if(java.lang.RuntimeException.class.isAssignableFrom(zClass))
- readStruct(zClass, throwable);
-
- else
- throw new Exception("urp.Unmarshal.readThrowable - unsupported throwable:" + zClass);
+ readStruct(typeDescription, throwable);
if(DEBUG) System.err.println("##### " + getClass().getName() + ".readThrowable:" + throwable);
@@ -228,76 +224,50 @@ class Unmarshal implements IUnmarshal {
return result;
}
- public Object readObject(Class zClass) throws Exception {
+ public Object readObject(TypeDescription typeDescription) throws Exception {
Object result = null;
- if(zClass == Any.class || zClass == Object.class) // read an any?
- result = readAny();
-
- else if(zClass.isArray() && zClass.getComponentType() == byte.class) // read a sequence ?
- result = readbyteSequence();
-
- else if(zClass.isArray()) // read a sequence ?
- result = readSequence(zClass);
-
- else if(zClass == Void.class || zClass == void.class) // read nothing ?
- ; // nop
-
- else if(Enum.class.isAssignableFrom(zClass)) // read an enum ?
- result = readEnum(zClass);
-
- else if(Union.class.isAssignableFrom(zClass)) // read a union ?
- result = readUnion(zClass);
-
- else if(zClass == Type.class) // read a type ?
- result = readType();
-
- else if(XInterface.class.isAssignableFrom(zClass)) // read an interface ?
- result = readReference(zClass);
-
- else if(zClass == ThreadID.class) // read a thread id ?
- result = readThreadID();
-
- else if(zClass == boolean.class || zClass == Boolean.class) // is it a boolean
- result = readBoolean();
-
- else if(zClass == char.class || zClass == Character.class) // is it a character ?)
- result = readCharacter();
-
- else if(zClass == byte.class || zClass == Byte.class) // is it a byte ?
- result = readByte();
-
- else if(zClass == short.class || zClass == Short.class) // is it a short ?
- result = readShort();
-
- else if(zClass == int.class || zClass == Integer.class) // is it an integer ?
- result = readInteger();
-
- else if(zClass == long.class || zClass == Long.class) // is it a long ?
- result = readLong();
-
- else if(zClass == float.class || zClass == Float.class) // is it a float ?
- result = readFloat();
-
- else if(zClass == double.class || zClass == Double.class) // is it a double ?
- result = readDouble();
-
- else if(zClass == String.class) // is it a String ?
- result = readString();
-
- else if(Throwable.class.isAssignableFrom(zClass)) // is it an exception?
- result = readThrowable(zClass);
-
- else // otherwise read a struct
- result = readStruct(zClass);
+ switch(typeDescription.getTypeClass().getValue()) {
+ case TypeClass.ANY_value: result = readAny(); break; // read an any?
+ case TypeClass.SEQUENCE_value:
+ case TypeClass.ARRAY_value: result = readSequence(typeDescription); break; // read a sequence ?
+ case TypeClass.VOID_value: break; // nop // read nothing ?
+ case TypeClass.ENUM_value: result = readEnum(typeDescription); break; // read an enum ?
+ case TypeClass.UNION_value: result = readUnion(typeDescription); break; // read a union ?
+ case TypeClass.TYPE_value: result = new Type(readTypeDescription()); break; // read a type ?
+ case TypeClass.INTERFACE_value: result = readReference(typeDescription); break; // read an interface ?
+ case TypeClass.BOOLEAN_value: result = readBoolean(); break; // is it a boolean
+ case TypeClass.CHAR_value: result = readCharacter(); break; // is it a character ?)
+ case TypeClass.BYTE_value: result = readByte(); break; // is it a byte ?
+ case TypeClass.SHORT_value:
+ case TypeClass.UNSIGNED_SHORT_value: result = readShort(); break; // is it a short ?
+ case TypeClass.LONG_value:
+ case TypeClass.UNSIGNED_LONG_value: result = readInteger(); break; // is it an integer ?
+ case TypeClass.HYPER_value:
+ case TypeClass.UNSIGNED_HYPER_value: result = readLong(); break; // is it a long ?
+ case TypeClass.FLOAT_value: result = readFloat(); break; // is it a float ?
+ case TypeClass.DOUBLE_value: result = readDouble(); break; // is it a double ?
+ case TypeClass.STRING_value: result = readString(); break; // is it a String ?
+ case TypeClass.EXCEPTION_value: result = readThrowable(typeDescription); break; // is it an exception?
+ case TypeClass.STRUCT_value:
+ if(typeDescription.getZClass() == ThreadID.class) // read a thread id ?
+ result = readThreadID();
+ else // otherwise read a struct
+ result = readStruct(typeDescription);
+
+ break;
+
+ default:
+ throw new com.sun.star.uno.RuntimeException("unknown typeClass:" + typeDescription.getTypeClass());
+ }
- if(DEBUG) System.err.println("##### " + getClass().getName() + ".readObject:" + zClass + " " + result);
+ if(DEBUG) System.err.println("##### " + getClass().getName() + ".readObject:" + typeDescription + " " + result);
return result;
}
String readOid() throws Exception {
- Marshal.M_InterfaceReference m_InterfaceReference = (Marshal.M_InterfaceReference)readObject(Marshal.M_InterfaceReference.class);
+ Marshal.M_InterfaceReference m_InterfaceReference = (Marshal.M_InterfaceReference)readObject(Marshal.__M_InterfaceReferenceTypeDescription);
String oid = null;
@@ -315,7 +285,7 @@ class Unmarshal implements IUnmarshal {
return oid;
}
- Object readReference(Class zInterface) throws Exception {
+ Object readReference(TypeDescription typeDescription) throws Exception {
Object oid = readOid();;
// the result is a null ref, in case cache and oid are invalid
@@ -323,26 +293,31 @@ class Unmarshal implements IUnmarshal {
// map the object from universe
if(oid != null)
- result = _iBridge.mapInterfaceFrom(oid, zInterface);
+ result = _iBridge.mapInterfaceFrom(oid, new Type(typeDescription));
- if(DEBUG) System.err.println("##### " + getClass().getName() + ".readReference:" + zInterface + " " + result);
+ if(DEBUG) System.err.println("##### " + getClass().getName() + ".readReference:" + typeDescription + " " + result);
return result;
}
- Object readSequence(Class zClass) throws Exception {
- int size = readCompressedInt();
+ Object readSequence(TypeDescription typeDescription) throws Exception {
Object result = null;
+ if(typeDescription.getTypeClass() == TypeClass.BYTE) // read a byte sequence ?
+ result = readbyteSequence();
- zClass = zClass.getComponentType();
+ else {
+ int size = readCompressedInt();
- if(zClass == Any.class) // take special care of any array (cause anys are mapped to objects)
- result = Array.newInstance(Object.class, size);
- else
- result = Array.newInstance(zClass, size);
+ typeDescription = typeDescription.getComponentType();
- for(int i = 0; i < size; ++ i)
- Array.set(result, i, readObject(zClass));
+ if(typeDescription.getTypeClass() == TypeClass.ANY) // take special care of any array (cause anys are mapped to objects)
+ result = Array.newInstance(Object.class, size);
+ else
+ result = Array.newInstance(typeDescription.getZClass(), size);
+
+ for(int i = 0; i < size; ++ i)
+ Array.set(result, i, readObject(typeDescription));
+ }
if(DEBUG) System.err.println("##### " + getClass().getName() + ".readSequence:" + result);
@@ -385,12 +360,12 @@ class Unmarshal implements IUnmarshal {
return new String(bytes, "UTF8");
}
- void readStruct(Class zClass, Object object) throws Exception {
- Field fields[] = zClass.getFields();
+ void readStruct(TypeDescription typeDescription, Object object) throws Exception {
+ Field fields[] = typeDescription.getFields();
for(int i = 0; i < fields.length; ++ i) {
if((fields[i].getModifiers() & (Modifier.STATIC | Modifier.TRANSIENT)) == 0) { // neither static nor transient ?
- MemberTypeInfo memberTypeInfo = Protocol.__findMemberTypeInfo(zClass, fields[i].getName());
+ MemberTypeInfo memberTypeInfo = typeDescription.getMemberTypeInfo(fields[i].getName());
// default the member type to the declared type
Class zInterface = fields[i].getType();
@@ -415,23 +390,23 @@ class Unmarshal implements IUnmarshal {
}
}
- fields[i].set(object, readObject(zInterface));
+ fields[i].set(object, readObject(TypeDescription.getTypeDescription(zInterface)));
}
}
if(DEBUG) System.err.println("##### " + getClass().getName() + ".readStruct:" + object);
}
- Object readStruct(Class zClass) throws Exception {
- Object object = zClass.newInstance();
+ Object readStruct(TypeDescription typeDescription) throws Exception {
+ Object object = typeDescription.getZClass().newInstance();
- readStruct(zClass, object);
+ readStruct(typeDescription, object);
return object;
}
ThreadID readThreadID() throws Exception {
- Marshal.M_ThreadId m_threadId = (Marshal.M_ThreadId)readObject(Marshal.M_ThreadId.class);
+ Marshal.M_ThreadId m_threadId = (Marshal.M_ThreadId)readObject(Marshal.__M_ThreadIdTypeDescription);
ThreadID threadId = null;
@@ -449,34 +424,36 @@ class Unmarshal implements IUnmarshal {
return threadId;
}
- Type readType() throws Exception {
+ TypeDescription readTypeDescription() throws Exception {
int typeClassValue = _dataInput.readUnsignedByte() & 0xff;
TypeClass typeClass = TypeClass.fromInt(typeClassValue & 0x7f);
- Type type = null;
+ TypeDescription typeDescription = null;
- if(Type.isTypeClassSimple(typeClass)) // is it a simple type?
- type = new Type(typeClass);
+ if(TypeDescription.isTypeClassSimple(typeClass)) // is it a simple type?
+ typeDescription = TypeDescription.getTypeDescription(typeClass);
else {
short index = _dataInput.readShort(); // the cache index
if(index != (short)0xffff) { // shall we update the cache?
if((typeClassValue & 0x80) != 0) // update the cache?
- _typeCache[index] = new Type(typeClass, readString());
+ _typeDescriptionCache[index] = TypeDescription.getTypeDescription(readString());
+// _typeDescriptionCache[index] = TypeDescription.getType(typeClass, readString());
- type = _typeCache[index];
+ typeDescription = _typeDescriptionCache[index];
}
else
- type = new Type(typeClass, readString());
+ typeDescription = TypeDescription.getTypeDescription(readString());
+// type = TypeDescription.getType(typeClass, readString());
}
- if(DEBUG) System.err.println("##### " + getClass().getName() + ".readType:" + type);
+ if(DEBUG) System.err.println("##### " + getClass().getName() + ".readType:" + typeDescription);
- return type;
+ return typeDescription;
}
- Union readUnion(Class zClass) throws Exception {
+ Union readUnion(TypeDescription typeDescription) throws Exception {
throw new Exception("Unmarshal.readUnion - not implemented!!!");
}
diff --git a/jurt/com/sun/star/lib/uno/protocols/urp/urp.java b/jurt/com/sun/star/lib/uno/protocols/urp/urp.java
index aabfdada9e0c..531095c921d2 100644
--- a/jurt/com/sun/star/lib/uno/protocols/urp/urp.java
+++ b/jurt/com/sun/star/lib/uno/protocols/urp/urp.java
@@ -2,9 +2,9 @@
*
* $RCSfile: urp.java,v $
*
- * $Revision: 1.2 $
+ * $Revision: 1.3 $
*
- * last change: $Author: kr $ $Date: 2000-09-28 16:53:48 $
+ * last change: $Author: kr $ $Date: 2001-01-16 18:01:32 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -81,8 +81,9 @@ import com.sun.star.lib.uno.environments.remote.Protocol;
import com.sun.star.lib.uno.environments.remote.IUnmarshal;
import com.sun.star.lib.uno.environments.remote.ThreadID;
-import com.sun.star.lib.uno.typeinfo.MethodTypeInfo;
-import com.sun.star.lib.uno.typeinfo.TypeInfo;
+import com.sun.star.lib.uno.typedesc.MethodDescription;
+import com.sun.star.lib.uno.typedesc.TypeDescription;
+//import com.sun.star.lib.uno.typeinfo.TypeInfo;
import com.sun.star.uno.Any;
import com.sun.star.uno.UnoRuntime;
@@ -94,7 +95,7 @@ import com.sun.star.uno.Type;
* from uno. The functionality is reachable through
* the <code>IProtocol</code> interface.
* <p>
- * @version $Revision: 1.2 $ $ $Date: 2000-09-28 16:53:48 $
+ * @version $Revision: 1.3 $ $ $Date: 2001-01-16 18:01:32 $
* @author Kay Ramme
* @see com.sun.star.lib.uno.environments.remote.IProtocol
* @since UDK1.0
@@ -105,18 +106,19 @@ public class urp extends Protocol {
*/
static public final boolean DEBUG = false;
- static private final short __cache_size = 256;
+ static private final TypeDescription __emptyTypeDescArray[] = new TypeDescription[0];
+ static private final short __cache_size = 256;
protected IBridge _iBridge;
protected boolean _bIgnoreNextCloseConnection = false;
private String _in_oid;
- private Type _in_interface;
+ private TypeDescription _in_interface;
private ThreadID _in_threadId;
private String _out_oid;
- private Type _out_interface;
+ private TypeDescription _out_interface;
private ThreadID _out_threadId;
private int _message_count;
@@ -198,19 +200,19 @@ public class urp extends Protocol {
// get the out signature and parameter array of the reply
Object objects[] = (Object[])removePendingRequest(_in_threadId);
Object param[] = (Object[])objects[0];
- Class signature[] = (Class[])objects[1];
- Class resultClass = (Class)objects[2];
+ TypeDescription signature[] = (TypeDescription[])objects[1];
+ TypeDescription resultType = (TypeDescription)objects[2];
exception[0] = (header & EXCEPTION) != 0;
if(exception[0]) {// Exception? So the reply has an any as the result
- signature = new Class[0];
- resultClass = com.sun.star.uno.Any.class;
+ signature = __emptyTypeDescArray;
+ resultType = TypeDescription.__any_TypeDescription;
}
// read the result object
Object result = null;
- if(resultClass != null)
- result = _unmarshal.readObject(resultClass);
+ if(resultType != null)
+ result = _unmarshal.readObject(resultType);
// read the out parameters
for(int i = 0; i < signature.length; ++ i) {
@@ -218,24 +220,29 @@ public class urp extends Protocol {
Array.set(param[i], 0, _unmarshal.readObject(signature[i].getComponentType()));
}
+ if(DEBUG) System.err.println("##### " + getClass().getName() + ".readReply:" + result);
+
return result;
}
- private Object []readParams(MMDesc mMDesc) throws Exception {
- Object params[] = new Object[mMDesc._in_sig.length];
+ private Object []readParams(MethodDescription methodDescription) throws Exception {
+ TypeDescription in_sig[] = methodDescription.getInSignature();
+ TypeDescription out_sig[] = methodDescription.getOutSignature();
+
+ Object params[] = new Object[in_sig.length];
for(int i = 0; i < params.length; ++ i) {
- if(mMDesc._in_sig[i] != null) // is it an in parameter?
- if(mMDesc._out_sig[i] != null) {// is it also an out -> inout?
- Object inout = Array.newInstance(mMDesc._out_sig[i].getComponentType(), 1);
- Array.set(inout, 0, _unmarshal.readObject(mMDesc._out_sig[i].getComponentType()));
+ if(in_sig[i] != null) // is it an in parameter?
+ if(out_sig[i] != null) {// is it also an out -> inout?
+ Object inout = Array.newInstance(out_sig[i].getComponentType().getZClass(), 1);
+ Array.set(inout, 0, _unmarshal.readObject(out_sig[i].getComponentType()));
params[i] = inout;
}
else // it is only an in parameter
- params[i] = _unmarshal.readObject(mMDesc._in_sig[i]);
+ params[i] = _unmarshal.readObject(in_sig[i]);
else // it is only an out parameter, so provide the holder
- params[i] = Array.newInstance(mMDesc._out_sig[i].getComponentType(), 1);
+ params[i] = Array.newInstance(out_sig[i].getComponentType().getZClass(), 1);
}
return params;
@@ -252,19 +259,18 @@ public class urp extends Protocol {
else
methodId = (header & 0x3f);
- MMDesc mMDesc = getMMDesc(_in_interface.getDescription(), methodId);
- operation[0] = mMDesc._name;
+ MethodDescription methodDescription = _in_interface.getMethodDescription(methodId);
+ operation[0] = methodDescription.getName();
- if(mMDesc._methodTypeInfo == null) // is there a method type info
- synchron[0] = true; // if not, the default is synchron
- else
- synchron[0] = !mMDesc._methodTypeInfo.isOneway();
+ synchron[0] = !methodDescription.isOneway();
- param[0] = readParams(mMDesc);
+ param[0] = readParams(methodDescription);
if(synchron[0]) { // if the request is synchron, it is pending
- putPendingReply(_in_threadId, new Object[]{param[0], mMDesc._out_sig, mMDesc._res/*, mMDesc*/});
+ putPendingReply(_in_threadId, new Object[]{param[0], methodDescription.getOutSignature(), methodDescription.getReturnSig()/*, mMDesc*/});
}
+
+ if(DEBUG) System.err.println("##### " + getClass().getName() + ".readShortRequest:" + _in_oid + " " + operation[0] + " " + synchron[0]);
}
private void readLongRequest(byte header, String operation[], Object param[][], boolean synchron[]) throws Exception {
@@ -278,7 +284,7 @@ public class urp extends Protocol {
methodId = _unmarshal.readbyte();
if((header & NEWTYPE) != 0)
- _in_interface = _unmarshal.readType();
+ _in_interface = _unmarshal.readTypeDescription();
if((header & NEWOID) != 0) // new oid?
_in_oid = _unmarshal.readOid();
@@ -288,7 +294,7 @@ public class urp extends Protocol {
_ignore_cache = ((header & IGNORECACHE) != 0); // do not use cache for this request?
- MMDesc mMDesc = getMMDesc(_in_interface.getDescription(), methodId);
+ MethodDescription methodDescription = _in_interface.getMethodDescription(methodId);
boolean mustReply;
if((header & MOREFLAGS) != 0) {// is there an extended flags byte?
@@ -299,16 +305,18 @@ public class urp extends Protocol {
}
else {
// the typeinfo does not differentiate between MUSTREPLY and SYNCHRONOUSE
- synchron[0] = mMDesc._methodTypeInfo != null ? !mMDesc._methodTypeInfo.isOneway() : true;
+ synchron[0] = !methodDescription.isOneway();
mustReply = synchron[0];
}
- operation[0] = mMDesc._name;
+ operation[0] = methodDescription.getName();
- param[0] = readParams(mMDesc);
+ param[0] = readParams(methodDescription);
if(synchron[0]) // if the request is synchron, the reply is pending
- putPendingReply(_in_threadId, new Object[]{param[0], mMDesc._out_sig, mMDesc._res/*, mMDesc*/});
+ putPendingReply(_in_threadId, new Object[]{param[0], methodDescription.getOutSignature(), methodDescription.getReturnSig()/*, mMDesc*/});
+
+ if(DEBUG) System.err.println("##### " + getClass().getName() + ".readLongRequest:" + _in_oid + " " + operation[0] + " " + synchron[0]);
}
private Object readMessage(String operation[], Object param[], boolean synchron[], boolean exception[]) throws Exception {
@@ -334,7 +342,7 @@ public class urp extends Protocol {
public void writeRequest(String oid,
- Type zInterface,
+ TypeDescription zInterface,
String operation,
ThreadID threadId,
Object params[],
@@ -346,7 +354,7 @@ public class urp extends Protocol {
++ _requestsSend;
++ _message_count;
synchronized(_marshal) {
- MMDesc mMDesc = getMMDesc(zInterface.getDescription(), operation);
+ MethodDescription methodDescription = zInterface.getMethodDescription(operation);
byte header = 0;
boolean bigHeader = false;
@@ -384,28 +392,24 @@ public class urp extends Protocol {
// if the type of request is provided, test if it differs from declaration
if(synchron[0] != null) {
- if(mMDesc._methodTypeInfo != null && mMDesc._methodTypeInfo.isOneway() == synchron[0].booleanValue()) {
+ if(methodDescription.isOneway() == synchron[0].booleanValue()) {
bigHeader = true;
hasExFlags = true;
}
}
- else if(mMDesc._methodTypeInfo != null) // if the request type is not provided, use the typeInfo if available
- synchron[0] = new Boolean(!mMDesc._methodTypeInfo.isOneway());
- else // if no request type provided and no typeInfo available fall back to synchron
- synchron[0] = new Boolean(true);
+ else
+ synchron[0] = new Boolean(!methodDescription.isOneway());
// if the type of request is provided, test if it differs from declaration
if(mustReply[0] != null) {
- if(mMDesc._methodTypeInfo != null && mMDesc._methodTypeInfo.isOneway() == mustReply[0].booleanValue()) {
+ if(methodDescription.isOneway() == mustReply[0].booleanValue()) {
bigHeader = true;
hasExFlags = true;
}
}
- else if(mMDesc._methodTypeInfo != null) // if the request type is not provided, use the typeInfo if available
- mustReply[0] = new Boolean(!mMDesc._methodTypeInfo.isOneway());
- else // if no request type provided and no typeInfo available fall back to synchron
- mustReply[0] = new Boolean(true);
+ else
+ mustReply[0] = new Boolean(!methodDescription.isOneway());
if(bigHeader) { // something has changed, send big header
@@ -413,7 +417,7 @@ public class urp extends Protocol {
header |= REQUEST;
header |= hasExFlags ? MOREFLAGS : 0;
- if(mMDesc._index > 255)
+ if(methodDescription.getIndex() > 255)
header |= LONGMETHODID;
_marshal.writebyte(header);
@@ -428,13 +432,13 @@ public class urp extends Protocol {
}
// write the method id
- if(mMDesc._index > 255)
- _marshal.writeshort((short)mMDesc._index);
+ if(methodDescription.getIndex() > 255)
+ _marshal.writeshort((short)methodDescription.getIndex());
else
- _marshal.writebyte((byte)mMDesc._index);
+ _marshal.writebyte((byte)methodDescription.getIndex());
if(zInterface != null) // has the interface changed? -> write it
- _marshal.writeType(zInterface);
+ _marshal.writeTypeDescrption(zInterface);
if(oid != null) // has the oid changed? -> write it
_marshal.writeOid(_out_oid);
@@ -443,29 +447,31 @@ public class urp extends Protocol {
_marshal.writeThreadID(threadId);
}
else { // simple request
- if(mMDesc._index <= 0x2f) // does the method id fit in the header?
- _marshal.writebyte((byte)mMDesc._index);
+ if(methodDescription.getIndex() <= 0x2f) // does the method id fit in the header?
+ _marshal.writebyte((byte)methodDescription.getIndex());
else { // no
header |= DIR_MID;
- header |= mMDesc._index >> 8;
+ header |= methodDescription.getIndex() >> 8;
_marshal.writebyte(header);
- _marshal.writebyte((byte)(mMDesc._index & 0xff));
+ _marshal.writebyte((byte)(methodDescription.getIndex() & 0xff));
}
}
// write the in parameters
- for(int i = 0; i < mMDesc._in_sig.length; ++ i) {
- if(mMDesc._in_sig[i] != null) { // is it an in parameter?
- if(mMDesc._out_sig[i] != null) // is it also an out parameter?
- _marshal.writeObject(mMDesc._out_sig[i].getComponentType(), ((Object [])params[i])[0]);
+ TypeDescription in_sig[] = methodDescription.getInSignature();
+ TypeDescription out_sig[] = methodDescription.getOutSignature();
+ for(int i = 0; i < in_sig.length; ++ i) {
+ if(in_sig[i] != null) { // is it an in parameter?
+ if(out_sig[i] != null) // is it also an out parameter?
+ _marshal.writeObject(out_sig[i].getComponentType(), ((Object [])params[i])[0]);
else // in only
- _marshal.writeObject(mMDesc._in_sig[i], params[i]);
+ _marshal.writeObject(in_sig[i], params[i]);
}
}
if(synchron[0].booleanValue()) // if we are waiting for a reply, the reply is pending
- putPendingRequest(_out_threadId, new Object[]{params, mMDesc._out_sig, mMDesc._res});
+ putPendingRequest(_out_threadId, new Object[]{params, out_sig, methodDescription.getReturnSig()});
}
}
@@ -475,16 +481,16 @@ public class urp extends Protocol {
synchronized(_marshal) {
Object objects[] = (Object[])removePendingReply(threadId);
Object params[] = (Object[])objects[0];
- Class signature[] = (Class[])objects[1];
- Class resClass = (Class)objects[2];
+ TypeDescription signature[] = (TypeDescription[])objects[1];
+ TypeDescription resType = (TypeDescription)objects[2];
byte header = BIG_HEADER; // big header
if(exception) { // has an exception occurred?
header |= EXCEPTION;
- signature = new Class[0];
- resClass = Any.class;
+ signature = __emptyTypeDescArray;
+ resType = TypeDescription.__any_TypeDescription;
}
if(_out_threadId == null || !_out_threadId.equals(threadId)) { // change thread id ?
@@ -501,7 +507,7 @@ public class urp extends Protocol {
_marshal.writeThreadID(threadId);
// write the result
- _marshal.writeObject(resClass, result);
+ _marshal.writeObject(resType, result);
// write the out parameters
for(int i = 0; i < signature.length; ++ i)
@@ -536,7 +542,7 @@ public class urp extends Protocol {
static class Message implements IMessage {
String _oid;
Object _result;
- Class _interface;
+ TypeDescription _typeDescription;
String _operation;
ThreadID _threadId;
boolean _synchron;
@@ -545,7 +551,7 @@ public class urp extends Protocol {
Message(String oid,
Object result,
- Class zInterface,
+ TypeDescription typeDescription,
String operation,
ThreadID threadId,
boolean synchron,
@@ -554,7 +560,7 @@ public class urp extends Protocol {
{
_oid = oid;
_result = result;
- _interface = zInterface;
+ _typeDescription = typeDescription;
_operation = operation;
_threadId = threadId;
_synchron = synchron;
@@ -570,8 +576,8 @@ public class urp extends Protocol {
return _threadId;
}
- public Class getInterface() {
- return _interface;
+ public TypeDescription getInterface() {
+ return _typeDescription;
}
public boolean isSynchron() {
@@ -637,7 +643,7 @@ public class urp extends Protocol {
else { // a request
iMessage = new Message(_in_oid,
null,
- _in_interface.getDescription(),
+ _in_interface,
operation[0],
_in_threadId,
synchron[0],