diff options
Diffstat (limited to 'odk/examples/DevelopersGuide/OfficeDev/DesktopEnvironment/OnewayExecutor.java')
-rw-r--r-- | odk/examples/DevelopersGuide/OfficeDev/DesktopEnvironment/OnewayExecutor.java | 240 |
1 files changed, 0 insertions, 240 deletions
diff --git a/odk/examples/DevelopersGuide/OfficeDev/DesktopEnvironment/OnewayExecutor.java b/odk/examples/DevelopersGuide/OfficeDev/DesktopEnvironment/OnewayExecutor.java deleted file mode 100644 index c98045d9..00000000 --- a/odk/examples/DevelopersGuide/OfficeDev/DesktopEnvironment/OnewayExecutor.java +++ /dev/null @@ -1,240 +0,0 @@ -/************************************************************************* - * - * The Contents of this file are made available subject to the terms of - * the BSD license. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of Sun Microsystems, Inc. nor the names of its - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS - * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR - * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE - * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - *************************************************************************/ - -import java.util.Vector; - -// __________ Implementation __________ - -/** - * It's not allowed to call synchronoues back inside an oneway interface call. - * (see IOnewayLink too). So we start a thread (implemented by this class), which - * gets all neccessary parameters from the original called object and - * call it back later inside his run() method. So the execution of such oneway call - * will be asynchronous. It works in a generic way and can be used or any type - * of oneway request. Because the source and the target of this call-link knows, - * which method was used and which parameters must be handled. - * - * @author Andreas Schlüns - * @created 17.07.2002 08:18 - */ -class OnewayExecutor extends Thread -{ - // _______________________________ - - /** - * const - * We define some request for some well known oneway interface - * calls here too. So they mustn't be declared more then ones. - * Of course it's not necessary to use it ... but why not :-) - */ - - public static final int REQUEST_FRAMEACTION = 1 ; - public static final int REQUEST_STATUSCHANGED = 2 ; - public static final int REQUEST_ADDSTATUSLISTENER = 3 ; - public static final int REQUEST_REMOVESTATUSLISTENER = 4 ; - public static final int REQUEST_DISPATCH = 5 ; - - public static final boolean ENCODE_PARAMS = true ; - public static final boolean DECODE_PARAMS = false ; - - // _______________________________ - - /** - * @member m_rLink the object, which wish to be called back by this thread - * @member m_nRequest describes the type of the original request (means the - * called oneyway method) - * @member m_lParams list of parameters of the original request - */ - private IOnewayLink m_rLink ; - private int m_nRequest ; - private Vector m_lParams ; - - // _______________________________ - - /** - * ctor - * It's initialize this thread with all neccessary parameters. - * It gets the object, which wish to be called back and the type - * and parameters of the original request. - * - * @param nRequest - * The two user of this callback can define an unique number, - * which identify the type of original interface method. - * So the called interface object can decide, which action will be - * neccessary. - * - * @param lParams - * If the original method used parameters, they will be coded here in - * a generic way. Only the called interface object know (it depends - * from the original request - see nRequest too), how this list must - * be interpreted. - * Note: Atomic types (e.g. int, long) will be transported as objects - * too (Integer, Long)! - */ - public OnewayExecutor( IOnewayLink rLink , - int nRequest , - Vector lParams ) - { - m_rLink = rLink ; - m_nRequest = nRequest; - m_lParams = lParams ; - - if (m_rLink==null) - System.out.println("ctor ... m_rLink == null"); - if (m_lParams==null) - System.out.println("ctor ... m_lParams == null"); - } - - // _______________________________ - - /** - * implements the thread function - * Here we call the internal set link object back and - * give him all neccessary parameters. - * After that we die by ouerself ... - */ - public void run() - { - if (m_rLink==null) - System.out.println("run ... m_rLink == null"); - if (m_lParams==null) - System.out.println("run ... m_lParams == null"); - - if (m_rLink!=null) - m_rLink.execOneway( m_nRequest, m_lParams ); - } - - // _______________________________ - - /** - * static helper! - * To make convertion of the generic parameter list to the original - * one easier - you can use this helper methods. They know how suchlist - * must be coded. It's not a must to use it - but you can ... - */ - public static void codeFrameAction( - boolean bEncode, Vector[] lParams, - com.sun.star.frame.FrameActionEvent[] aAction) - { - if (bEncode) - { - lParams[0] = new Vector(1); - lParams[0].add( (Object)(aAction[0]) ); - } - else - { - aAction[0] = (com.sun.star.frame.FrameActionEvent) - (lParams[0].elementAt(0)); - } - } - - // _______________________________ - - public static void codeStatusChanged( - boolean bEncode, Vector[] lParams, - com.sun.star.frame.FeatureStateEvent[] aStatus) - { - if (bEncode) - { - lParams[0] = new Vector(1); - lParams[0].add( (Object)aStatus[0] ); - } - else - { - aStatus[0] = (com.sun.star.frame.FeatureStateEvent) - (lParams[0].elementAt(0)); - } - } - - // _______________________________ - - public static void codeAddOrRemoveStatusListener( - boolean bEncode, Vector[] lParams, - com.sun.star.frame.XStatusListener[] xListener, - com.sun.star.util.URL[] aURL) - { - if (bEncode) - { - lParams[0] = new Vector(2); - lParams[0].add( (Object)xListener[0] ); - lParams[0].add( (Object)aURL[0] ); - } - else - { - xListener[0] = (com.sun.star.frame.XStatusListener) - (lParams[0].elementAt(0)); - aURL[0] = (com.sun.star.util.URL)(lParams[0].elementAt(1)); - } - } - - // _______________________________ - - public static void codeDispatch( - boolean bEncode, Vector[] lParams, - com.sun.star.util.URL[] aURL, - com.sun.star.beans.PropertyValue[][] lArgs) - { - if (bEncode) - { - int nLength = lArgs.length+1; - int nPos = 0; - lParams[0] = new Vector(nLength); - - lParams[0].add( (Object)aURL[0] ); - --nLength; - - while (nLength>0) - { - lParams[0].add( (Object)lArgs[0][nPos] ); - --nLength; - ++nPos ; - } - } - else - { - int nLength = lParams[0].size()-1; - int nPos = 0; - - lArgs[0] = new com.sun.star.beans.PropertyValue[nLength]; - aURL[0] = (com.sun.star.util.URL)(lParams[0].elementAt(0)); - - while (nPos<nLength) - { - lArgs[0][nPos] = (com.sun.star.beans.PropertyValue) - (lParams[0].elementAt(nPos+1)); - ++nPos; - } - } - } -} |