diff options
Diffstat (limited to 'javaunohelper/com/sun/star/lib/uno/helper/WeakBase.java')
-rw-r--r-- | javaunohelper/com/sun/star/lib/uno/helper/WeakBase.java | 143 |
1 files changed, 0 insertions, 143 deletions
diff --git a/javaunohelper/com/sun/star/lib/uno/helper/WeakBase.java b/javaunohelper/com/sun/star/lib/uno/helper/WeakBase.java deleted file mode 100644 index ace0713cc..000000000 --- a/javaunohelper/com/sun/star/lib/uno/helper/WeakBase.java +++ /dev/null @@ -1,143 +0,0 @@ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -package com.sun.star.lib.uno.helper; -import com.sun.star.uno.XWeak; -import com.sun.star.uno.XAdapter; -import com.sun.star.lang.XTypeProvider; -import com.sun.star.uno.Type; -import java.util.Vector; -import java.util.Map; -import java.util.Hashtable; - - -/** This class can be used as the base class for UNO components. It implements the capability - * to be kept weak (com.sun.star.uno.XWeak) and it implements com.sun.star.lang.XTypeProvider - * which is necessary for using the component with StarBasic. - */ -public class WeakBase implements XWeak, XTypeProvider -{ - private final boolean DEBUG= false; - - // Contains all WeakAdapter which have been created in this class - // They have to be notified when this object dies - private WeakAdapter m_adapter; - - protected static Map _mapImplementationIds= new Hashtable(); - protected static Map _mapTypes= new Hashtable(); - - /** Method of XWeak. The returned XAdapter implementation can be used to keap - * a weak reference to this object. - * @return a com.sun.star.uno.XAdapter implementation. - */ - synchronized public XAdapter queryAdapter() - { - if (m_adapter == null) - m_adapter= new WeakAdapter(this); - return m_adapter; - } - - /** Override of Object.finalize. When there are no references to this object anymore - * then the garbage collector calls this method. Thereby causing the adapter object - * to be notified. The adapter, in turn, notifies all listeners (com.sun.star.uno.XReference) - */ - protected void finalize() throws java.lang.Throwable - { - if (m_adapter != null) - m_adapter.referentDying(); - super.finalize(); - } - - /** Method of XTypeProvider. It returns an array of Type objects which represent - * all implemented UNO interfaces of this object. - * @return Type objects of all implemented interfaces. - */ - public Type[] getTypes() - { - Type[] arTypes= (Type[]) _mapTypes.get( getClass()); - if (arTypes == null) - { - Vector vec= new Vector(); - Class currentClass= getClass(); - do - { - Class interfaces[]= currentClass.getInterfaces(); - for(int i = 0; i < interfaces.length; ++ i) - { - // Test if it is a UNO interface - if (com.sun.star.uno.XInterface.class.isAssignableFrom((interfaces[i]))) - vec.add(new Type(interfaces[i])); - } - // get the superclass the currentClass inherits from - currentClass= currentClass.getSuperclass(); - } while (currentClass != null); - - Type types[]= new Type[vec.size()]; - for( int i= 0; i < types.length; i++) - types[i]= (Type) vec.elementAt(i); - _mapTypes.put(getClass(), types); - arTypes= types; - } - return arTypes; - } - - /** Method of XTypeProvider. It provides an identifier that represents the set of UNO - * interfaces implemented by this class. All instances of this class - * which run in the same Java Virtual Machine return the same array. (This only works as long - * the ClassLoader preserves the class even if no instance exist.) - *@return identifier as array of bytes - */ - public byte[] getImplementationId() - { - byte[] id= null; - synchronized (_mapImplementationIds) - { - id= (byte[]) _mapImplementationIds.get(getClass()); - - if (id == null) - { - int hash = hashCode(); - String sName= getClass().getName(); - byte[] arName= sName.getBytes(); - int nNameLength= arName.length; - - id= new byte[ 4 + nNameLength]; - id[0]= (byte)(hash & 0xff); - id[1]= (byte)((hash >>> 8) & 0xff); - id[2]= (byte)((hash >>> 16) & 0xff); - id[3]= (byte)((hash >>>24) & 0xff); - - for (int i= 0; i < nNameLength; i++) - { - id[4 + i]= arName[i]; - } - _mapImplementationIds.put(getClass(), id); - } - } - return id; - } -} |