diff options
Diffstat (limited to 'ucb/test/com')
-rw-r--r-- | ucb/test/com/sun/star/comp/ucb/GlobalTransfer_Test.java | 201 | ||||
-rw-r--r-- | ucb/test/com/sun/star/comp/ucb/makefile.mk | 44 |
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..1e265182b --- /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 InteractionHandler(); + + public XInteractionHandler getInteractionHandler() { + return m_InteractionHandler; + } + + public XProgressHandler getProgressHandler() { + // not needed for the test. + return null; + } + } + + private final class InteractionHandler 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) $@ |