blob: 697729531b8c2425df28f6664014b299d03d9491 [file] [log] [blame]
/**************************************************************
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
*************************************************************/
package com.sun.star.comp.beans;
import com.sun.star.uno.UnoRuntime;
//==========================================================================
/** Wrapper base class for UNO services which emulates the upcoming
mode of automatic runtime Java classes to get rid of the need for
queryInterface.
Because its not worth the efford to create a runtime generated wrapper
for this purpose, as it might be for OOo 2.0, you still have to use
UnoRuntime.queryInterface() for interfaces which are optional or come
from a subclass. But for non optional interfaces you can already
directly call their methods.
This wrapper will only work for UNO objects via a bridge, not for
direct Java objects.
@since OOo 2.0.0
*/
class Wrapper
implements
com.sun.star.lib.uno.Proxy,
// see the comment in com.sun.star.lib.uno.bridges.java_remote
// .java_remote_bridge.mapInterfaceTo for the consequences of this
// hack
com.sun.star.uno.IQueryInterface,
com.sun.star.lang.XComponent
{
private com.sun.star.uno.IQueryInterface xQueryInterface;
private com.sun.star.lang.XComponent xComponent;
public Wrapper( com.sun.star.uno.XInterface xProxy )
{
xQueryInterface = (com.sun.star.uno.IQueryInterface) xProxy;
xComponent = (com.sun.star.lang.XComponent)
UnoRuntime.queryInterface(
com.sun.star.lang.XComponent.class, xProxy );
}
//==============================================================
// com.sun.star.uno.IQueryInterface
//--------------------------------------------------------------
public String getOid()
{
return xQueryInterface.getOid();
}
public boolean isSame( Object aObject )
{
return xQueryInterface.isSame( aObject );
}
public Object queryInterface( com.sun.star.uno.Type aType )
{
//System.err.println( "Wrapper::queryInterface(" + aType + ")" );
return xQueryInterface.queryInterface( aType );
}
//==============================================================
// com.sun.star.lang.XComponent
//--------------------------------------------------------------
public void dispose( )
{
xComponent.dispose();
}
public void addEventListener( /*IN*/ com.sun.star.lang.XEventListener xListener )
{
xComponent.addEventListener( xListener );
}
public void removeEventListener( /*IN*/ com.sun.star.lang.XEventListener xListener )
{
xComponent.removeEventListener( xListener );
}
};