diff options
Diffstat (limited to 'ucb/qa/complex/ucb/UCB.java')
-rw-r--r-- | ucb/qa/complex/ucb/UCB.java | 151 |
1 files changed, 151 insertions, 0 deletions
diff --git a/ucb/qa/complex/ucb/UCB.java b/ucb/qa/complex/ucb/UCB.java new file mode 100644 index 000000000..16ee67080 --- /dev/null +++ b/ucb/qa/complex/ucb/UCB.java @@ -0,0 +1,151 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * 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 . + */ + +package complex.ucb; + +import com.sun.star.beans.Property; +import com.sun.star.sdbc.XRow; +import com.sun.star.ucb.*; +import com.sun.star.uno.UnoRuntime; + +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.Test; +import org.openoffice.test.OfficeConnection; +import static org.junit.Assert.*; + +/** + * This class is used to copy the content of a folder to + * another folder. + * There is an inconsistency with argument order. + * It should be always: dir,filename. + */ +public class UCB { + private XUniversalContentBroker ucb; + + public void init() throws Exception { + ucb = UniversalContentBroker.create(connection.getComponentContext()); + } + + public void delete(String filename) throws Exception { + executeCommand(getContent(filename), "delete", Boolean.TRUE); + } + + /** + * target name can be "", in which case the name stays lige the source name + */ + public Object executeCommand( + Object xContent, + String aCommandName, + Object aArgument) + throws com.sun.star.ucb.CommandAbortedException, com.sun.star.uno.Exception { + XCommandProcessor xCmdProcessor = + UnoRuntime.queryInterface(XCommandProcessor.class, xContent); + Command aCommand = new Command(); + aCommand.Name = aCommandName; + aCommand.Handle = -1; // not available + aCommand.Argument = aArgument; + return xCmdProcessor.execute(aCommand, 0, null); + } + + public Object getContentProperty( + Object content, + String propName, + Class type) + throws Exception { + Property[] pv = new Property[1]; + pv[0] = new Property(); + pv[0].Name = propName; + pv[0].Handle = -1; + + Object row = executeCommand(content, "getPropertyValues", pv); + XRow xrow = UnoRuntime.queryInterface(XRow.class, row); + if (type.equals(String.class)) + { + return xrow.getString(1); + } + else if (type.equals(Boolean.class)) + { + return xrow.getBoolean(1) ? Boolean.TRUE : Boolean.FALSE; + } + else if (type.equals(Integer.class)) + { + return Integer.valueOf(xrow.getInt(1)); + } + else if (type.equals(Short.class)) + { + return Short.valueOf(xrow.getShort(1)); + } + else + { + return null; + } + + } + + public Object getContent(String path) throws Exception + { + XContentIdentifier id = ucb.createContentIdentifier(path); + return ucb.queryContent(id); + } + + @Test public void checkWrongFtpConnection() { + try { + String acountUrl = "ftp://noname:nopasswd@*nohost.invalid"; + System.out.println(acountUrl); + init(); + Object content = getContent(acountUrl); + + OpenCommandArgument2 aArg = new OpenCommandArgument2(); + aArg.Mode = OpenMode.ALL; // FOLDER, DOCUMENTS -> simple filter + aArg.Priority = 32768; // Ignored by most implementations + + System.out.println("now executing open"); + executeCommand(content, "open", aArg); + fail("Expected exception 'IllegalArgumentException' or 'IllegalIdentifierException' was not thrown."); + } catch (com.sun.star.lang.IllegalArgumentException ex) { + // correct + } catch (com.sun.star.ucb.IllegalIdentifierException ex) { + // correct + } catch(com.sun.star.ucb.InteractiveNetworkException ex) { + System.out.println("This Exception is correctly thrown when no Proxy in StarOffice is used."); + System.out.println("To reproduce the bug behaviour, use a Proxy and try again."); + } catch (Exception ex) { + ex.printStackTrace(); + String exceptionName = ex.toString(); + System.out.println("ExName: '"+exceptionName+"'"); + fail("Wrong exception thrown: " + exceptionName); + } + } + + // setup and close connections + @BeforeClass public static void setUpConnection() throws Exception { + System.out.println("setUpConnection()"); + connection.setUp(); + } + + @AfterClass public static void tearDownConnection() + throws InterruptedException, com.sun.star.uno.Exception + { + System.out.println("tearDownConnection()"); + connection.tearDown(); + } + + private static final OfficeConnection connection = new OfficeConnection(); + +} |