summaryrefslogtreecommitdiffstats
path: root/ucb/test
diff options
context:
space:
mode:
Diffstat (limited to 'ucb/test')
-rw-r--r--ucb/test/com/sun/star/comp/ucb/GlobalTransfer_Test.java201
-rw-r--r--ucb/test/com/sun/star/comp/ucb/makefile.mk44
2 files changed, 245 insertions, 0 deletions
diff --git a/ucb/test/com/sun/star/comp/ucb/GlobalTransfer_Test.java b/ucb/test/com/sun/star/comp/ucb/GlobalTransfer_Test.java
new file mode 100644
index 000000000..a3fb7545d
--- /dev/null
+++ b/ucb/test/com/sun/star/comp/ucb/GlobalTransfer_Test.java
@@ -0,0 +1,201 @@
+/*
+ * 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 com.sun.star.comp.ucb;
+
+import complexlib.ComplexTestCase;
+import com.sun.star.lang.IllegalArgumentException;
+import com.sun.star.lang.XMultiServiceFactory;
+import com.sun.star.task.XInteractionHandler;
+import com.sun.star.task.XInteractionRequest;
+import com.sun.star.task.XInteractionContinuation;
+import com.sun.star.ucb.Command;
+import com.sun.star.ucb.GlobalTransferCommandArgument;
+import com.sun.star.ucb.NameClash;
+import com.sun.star.ucb.NameClashResolveRequest;
+import com.sun.star.ucb.TransferCommandOperation;
+import com.sun.star.ucb.XCommandEnvironment;
+import com.sun.star.ucb.XCommandProcessor;
+import com.sun.star.ucb.XInteractionSupplyName;
+import com.sun.star.ucb.XProgressHandler;
+import com.sun.star.uno.AnyConverter;
+import com.sun.star.uno.UnoRuntime;
+import java.io.PrintWriter;
+
+public final class GlobalTransfer_Test extends ComplexTestCase {
+
+ private static final String fileName
+ = "testcase-do-not-remove.sxw";
+ private static final String httpSourceDir
+ = "http://so-berlin/~webdav/";
+ private static final String fileTargetDir
+ = "file:///d:/temp/";
+
+ @Override
+ public String getTestObjectName() {
+ return getClass().getName();
+ }
+
+ @Override
+ public String[] getTestMethodNames() {
+ return new String[] { "testNameClashASK" };
+ }
+
+ public void testNameClashASK() throws Exception {
+ Object oObj = null;
+ try {
+ XMultiServiceFactory xMSF = param.getMSF();
+ oObj
+ = xMSF.createInstance( "com.sun.star.ucb.UniversalContentBroker" );
+ // unconfigured instance
+ }
+ catch(com.sun.star.uno.Exception e) {
+ e.printStackTrace((PrintWriter)log);
+
+ // After this exception the test has failed and cannot continue.
+ failed( "Cannot create service instance: com.sun.star.ucb." +
+ "UniversalContentBroker. message:" + e.getMessage() );
+ return;
+ }
+
+ if ( oObj == null ) {
+ failed( "Cannot create service instance: com.sun.star.ucb." +
+ "UniversalContentBroker");
+ return;
+ }
+
+ XCommandProcessor xCmdProc
+ = UnoRuntime.queryInterface(
+ XCommandProcessor.class, oObj );
+ assure( "UCB does not implement mandatory interface XCommandProcessor!",
+ xCmdProc != null);
+
+ ResourceCopier cp = new ResourceCopier( xCmdProc );
+
+ try {
+ cp.copyResource( httpSourceDir, fileTargetDir, fileName );
+ }
+ catch(com.sun.star.uno.Exception e) {
+ e.printStackTrace((PrintWriter)log);
+
+ // After this exception the test has failed and cannot continue.
+ failed( "Could not copy resource:" + e.getMessage() );
+ }
+ }
+
+ private final class ResourceCopier {
+ private final XCommandProcessor m_cmdProc;
+ private final CommandEnvironment m_env = new CommandEnvironment();
+
+ ResourceCopier( XCommandProcessor oCmdProc )
+ {
+ m_cmdProc = oCmdProc;
+ }
+
+ public void copyResource(
+ String sourceDir, String targetDir, String fileName )
+ throws Exception {
+
+ GlobalTransferCommandArgument transferArg
+ = new GlobalTransferCommandArgument(
+ TransferCommandOperation.COPY,
+ sourceDir + fileName,
+ targetDir,
+ "",
+ NameClash.ASK );
+
+ Command cmd = new Command( "globalTransfer", -1, transferArg );
+
+ m_cmdProc.execute( cmd, 0, m_env );
+ }
+ }
+
+ private final class CommandEnvironment implements XCommandEnvironment {
+ private final XInteractionHandler m_InteractionHandler
+ = new InteractionHadler();
+
+ public XInteractionHandler getInteractionHandler() {
+ return m_InteractionHandler;
+ }
+
+ public XProgressHandler getProgressHandler() {
+ // not needed for the test.
+ return null;
+ }
+ }
+
+ private final class InteractionHadler implements XInteractionHandler {
+ public void handle( /*IN*/XInteractionRequest Request ) {
+
+ log.println( "Interaction Handler called." );
+
+ try {
+ NameClashResolveRequest req = (NameClashResolveRequest)
+ AnyConverter.toObject(
+ NameClashResolveRequest.class, Request.getRequest() );
+
+ log.println( "Interaction Handler: NameClashResolveRequest: "
+ + req.ClashingName );
+
+ XInteractionContinuation[] continuations
+ = Request.getContinuations();
+ for ( int i = 0; i < continuations.length; ++i ) {
+/*
+ XInteractionAbort xAbort
+ = (XInteractionAbort)UnoRuntime.queryInterface(
+ XInteractionAbort.class, continuations[ i ] );
+ if ( xAbort != null ) {
+ log.println( "Interaction Handler selects: ABORT" );
+ xAbort.select();
+ return;
+ }
+*/
+/*
+ XInteractionReplaceExistingData xReplace
+ = (XInteractionReplaceExistingData)
+ UnoRuntime.queryInterface(
+ XInteractionReplaceExistingData.class,
+ continuations[ i ] );
+ if ( xReplace != null ) {
+ log.println( "Interaction Handler selects: REPLACE" );
+ xReplace.select();
+ return;
+ }
+*/
+ XInteractionSupplyName xSupplyName
+ = UnoRuntime.queryInterface(
+ XInteractionSupplyName.class,
+ continuations[ i ] );
+ if ( xSupplyName != null ) {
+ String newname = "renamed_" + req.ClashingName;
+ log.println( "Interaction Handler selects: NEW NAME: "
+ + newname );
+ xSupplyName.setName( newname );
+ xSupplyName.select();
+ return;
+ }
+ }
+ }
+ catch ( IllegalArgumentException e )
+ {
+ e.printStackTrace();
+ }
+ }
+ }
+
+}
diff --git a/ucb/test/com/sun/star/comp/ucb/makefile.mk b/ucb/test/com/sun/star/comp/ucb/makefile.mk
new file mode 100644
index 000000000..99fe6e119
--- /dev/null
+++ b/ucb/test/com/sun/star/comp/ucb/makefile.mk
@@ -0,0 +1,44 @@
+#
+# 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 .
+#
+
+PRJ := ..$/..$/..$/..$/..$/..
+PRJNAME := ucb
+PACKAGE := com$/sun$/star$/comp$/ucb
+TARGET := test_com_sun_star_comp_ucb
+
+.INCLUDE : settings.mk
+
+JAVAFILES = $(subst,$(CLASSDIR)$/$(PACKAGE)$/, $(subst,.class,.java $(JAVACLASSFILES)))
+
+CLASSDIR !:= $(CLASSDIR)$/test
+
+JARFILES = OOoRunner.jar \
+ ridl.jar \
+ unoil.jar \
+ juh.jar \
+ jurt.jar
+
+JAVACLASSFILES = $(CLASSDIR)$/$(PACKAGE)$/GlobalTransfer_Test.class
+
+.INCLUDE: target.mk
+
+$(JAVAFILES): $(MISC)$/$(TARGET).createdclassdir
+
+$(MISC)$/$(TARGET).createdclassdir:
+ - $(MKDIR) $(CLASSDIR)
+ $(TOUCH) $@