summaryrefslogtreecommitdiff
path: root/jurt
diff options
context:
space:
mode:
authorKay Ramme <kr@openoffice.org>2001-02-26 17:26:36 +0000
committerKay Ramme <kr@openoffice.org>2001-02-26 17:26:36 +0000
commit53a6fd00952dcbd645a57043fd77bc78c0bbd779 (patch)
tree0df7103b899f3cfc5b745fba84e730c2c2b06c95 /jurt
parent446e5876a05c5e05aaedde04be9d64c564a481de (diff)
merged changes from 1.2 - 1.2.4.1 (synchronize incs, decs, _objects)
Diffstat (limited to 'jurt')
-rw-r--r--jurt/com/sun/star/lib/uno/environments/java/java_environment.java49
1 files changed, 27 insertions, 22 deletions
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 345fddd43c86..a5358cab3caa 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.3 $
+ * $Revision: 1.4 $
*
- * last change: $Author: kr $ $Date: 2001-01-16 18:01:25 $
+ * last change: $Author: kr $ $Date: 2001-02-26 18:26:36 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -92,7 +92,7 @@ import com.sun.star.uno.XInterface;
* interface defined in the uno runtime.
* <p>
* <p>
- * @version $Revision: 1.3 $ $ $Date: 2001-01-16 18:01:25 $
+ * @version $Revision: 1.4 $ $ $Date: 2001-02-26 18:26:36 $
* @author Kay Ramme
* @see com.sun.star.uno.UnoRuntime
* @see com.sun.star.uno.IEnvironment
@@ -212,15 +212,16 @@ public class java_environment implements IEnvironment, Disposable {
Holder(String oId, Object object) {
_oId = oId;
_object = object;
+ _refCount = 1;
}
- void incRefCount() {
+ synchronized void incRefCount() {
if(DEBUG) System.err.println("##### " + getClass().getName() + ".incRefCount:" + _refCount);
++ _refCount;
}
- void decRefCount() {
+ synchronized void decRefCount() {
if(DEBUG) System.err.println("##### " + getClass().getName() + ".decRefCount:" + _refCount);
-- _refCount;
@@ -317,23 +318,25 @@ public class java_environment implements IEnvironment, Disposable {
String keyName = oId[0] + type;
- // get the holder
- Holder holder = (Holder)_objects.get(keyName);
+ synchronized(_objects) {
+ // get the holder
+ Holder holder = (Holder)_objects.get(keyName);
- if(DEBUG)
- System.err.println("##### " + getClass().getName() + ".registerInterface:" + object + " " + oId[0] + " " + type);
+ if(DEBUG)
+ System.err.println("##### " + getClass().getName() + ".registerInterface:" + object + " " + oId[0] + " " + type);
- if(holder == null) {
- holder = new Holder(keyName, object);
+ if(holder == null) {
+ holder = new Holder(keyName, object);
- _objects.put(keyName, holder);
- }
+ _objects.put(keyName, holder);
+ }
+ else
+ holder.incRefCount();
- // get the holder again, so we dont have to guard this section and are thread safe
- holder = (Holder)_objects.get(keyName);
- holder.incRefCount();
+ object = holder.xxgetObject(type);
+ }
- return holder.xxgetObject(type);
+ return object;
}
/**
@@ -345,11 +348,13 @@ public class java_environment implements IEnvironment, Disposable {
*/
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 + " " + type);
+ synchronized(_objects) {
+ Holder holder = (Holder)_objects.get(oId + type);
+ if(holder != null)
+ holder.decRefCount();
+ else
+ System.err.println("java_environment.revokeInterface - unknown oid:" + oId + " " + type);
+ }
}
/**