blob: 748c360a5d8da232e776eee7c4f49bc17ba13960 [file] [log] [blame]
/**************************************************************
*
* 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
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
*************************************************************/
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.XInteractionAbort;
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.XInteractionReplaceExistingData;
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 {
static private final String fileName
= "testcase-do-not-remove.sxw";
static private final String httpSourceDir
= "http://so-berlin/~webdav/";
static private final String httpTargetDir
= "http://so-berlin/~webdav/";
static private final String fileSourceDir
= "file:///d:/temp/source/";
static private final String fileTargetDir
= "file:///d:/temp/";
public String getTestObjectName() {
return getClass().getName();
}
public String[] getTestMethodNames() {
return new String[] { "testNameClashASK" };
}
public void testNameClashASK() throws Exception {
Object oObj = null;
try {
XMultiServiceFactory xMSF = (XMultiServiceFactory)param.getMSF();
oObj
= xMSF.createInstance( "com.sun.star.ucb.UniversalContentBroker" );
}
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
= (XCommandProcessor)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 XCommandProcessor m_cmdProc = null;
private 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
= (XInteractionSupplyName)
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();
}
}
}
}