/* -*- Mode: Java; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /************************************************************************* * * 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 com.sun.star.uno.XComponentContext; import com.sun.star.lib.uno.helper.Factory; import com.sun.star.lib.uno.helper.WeakBase; import com.sun.star.lang.XServiceInfo; import com.sun.star.task.*; import com.sun.star.uno.*; /** it implements a simple job component. * * Such jobs are executable in different ways: * */ public class AsyncJob extends WeakBase implements XServiceInfo, XAsyncJob { public final XComponentContext m_xCmpCtx; /** the const list of supported uno service names. */ public static final String[] SERVICENAMES = {"com.sun.star.task.AsyncJob"}; /** the const uno implementation name. * It must be a unique value! The best naming schema seems to use * a registered domain in reverse order ... */ public static final String IMPLEMENTATIONNAME = "com.sun.star.comp.framework.java.services.AsyncJob"; // interface /** initialize a new instance of this class with default values. */ public AsyncJob( XComponentContext xCompContext ) { m_xCmpCtx = xCompContext; } /** starts execution of this job. * * @param lArgs * list which contains: * * * @params xListener * callback to the executor of this job, which control our life time * * @throws com.sun.star.lang.IllegalArgumentException * if given argument list seems to be wrong */ public synchronized void executeAsync(com.sun.star.beans.NamedValue[] lArgs , com.sun.star.task.XJobListener xListener) throws com.sun.star.lang.IllegalArgumentException { // For asynchronous jobs a valid listener reference is guaranteed normally ... if (xListener == null) throw new com.sun.star.lang.IllegalArgumentException("invalid listener"); // extract all possible sub list of given argument list com.sun.star.beans.NamedValue[] lGenericConfig = null; com.sun.star.beans.NamedValue[] lJobConfig = null; com.sun.star.beans.NamedValue[] lEnvironment = null; com.sun.star.beans.NamedValue[] lDynamicData = null; int c = lArgs.length; for (int i=0; i