| /************************************************************** |
| * |
| * 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. |
| * |
| *************************************************************/ |
| |
| import com.sun.star.comp.servicemanager.ServiceManager; |
| |
| import com.sun.star.lang.XMultiServiceFactory; |
| import com.sun.star.lang.XMultiComponentFactory; |
| import com.sun.star.connection.XConnector; |
| import com.sun.star.connection.XConnection; |
| |
| import com.sun.star.bridge.XUnoUrlResolver; |
| import com.sun.star.uno.UnoRuntime; |
| import com.sun.star.uno.XInterface; |
| import com.sun.star.uno.XNamingService; |
| import com.sun.star.uno.XComponentContext; |
| |
| import com.sun.star.container.*; |
| import com.sun.star.beans.*; |
| import com.sun.star.lang.*; |
| |
| import storagetesting.*; |
| |
| public class StorageFunctionality { |
| |
| public static void main( String args[] ) |
| { |
| // connect to the office |
| String sConnectionString = "uno:socket,host=localhost,port=8100;urp;StarOffice.NamingService"; |
| |
| // It is possible to use a different connection string, passed as argument |
| if ( args.length == 1 ) { |
| sConnectionString = args[0]; |
| } |
| |
| XMultiServiceFactory xMSF = null; |
| |
| // create connection(s) and get multiservicefactory |
| try { |
| xMSF = connect( sConnectionString ); |
| |
| if ( xMSF == null ) |
| { |
| System.out.println( "Error: Couldn't get MSF!" ); |
| return; |
| } |
| } catch( Exception e ) { |
| System.out.println( "Error: Couldn't get MSF, exception: " + e ); |
| return; |
| } |
| |
| XSingleServiceFactory xStorageFactory = null; |
| try |
| { |
| Object oStorageFactory = xMSF.createInstance( "com.sun.star.embed.StorageFactory" ); |
| xStorageFactory = (XSingleServiceFactory)UnoRuntime.queryInterface( XSingleServiceFactory.class, |
| oStorageFactory ); |
| |
| if ( xStorageFactory == null ) |
| { |
| System.out.println( "Error: Can not get storage factory!" ); |
| return; |
| } |
| } |
| catch ( Exception e ) |
| { |
| System.out.println( "Error: Can't get storage factory, exception: " + e + "!" ); |
| return; |
| } |
| |
| boolean bTestsPassed = true; |
| |
| final int nNumTests = 9; |
| StorageTest pTests[] = new StorageTest[nNumTests]; |
| pTests[0] = (StorageTest) new Test01( xMSF, xStorageFactory ); |
| pTests[1] = (StorageTest) new Test02( xMSF, xStorageFactory ); |
| pTests[2] = (StorageTest) new Test03( xMSF, xStorageFactory ); |
| pTests[3] = (StorageTest) new Test04( xMSF, xStorageFactory ); |
| pTests[4] = (StorageTest) new Test05( xMSF, xStorageFactory ); |
| pTests[5] = (StorageTest) new Test06( xMSF, xStorageFactory ); |
| pTests[6] = (StorageTest) new Test07( xMSF, xStorageFactory ); |
| pTests[7] = (StorageTest) new Test08( xMSF, xStorageFactory ); |
| pTests[8] = (StorageTest) new Test09( xMSF, xStorageFactory ); |
| |
| System.out.println( "\nstart testing\n" ); |
| |
| for ( int nInd = 0; nInd < nNumTests; nInd++ ) |
| { |
| String sTestName = "Test" + ( ( nInd < 9 ) ? "0" : "" ) + ( nInd + 1 ); |
| |
| System.out.println( "======= Storage test " + sTestName + " started!" ); |
| if ( pTests[nInd].test() ) |
| System.out.println( "======= Storage test " + sTestName + " passed!" ); |
| else |
| { |
| System.out.println( "======= Storage test " + sTestName + " failed!" ); |
| bTestsPassed = false; |
| } |
| } |
| |
| if ( bTestsPassed ) |
| System.out.println( "\ntesting passed" ); |
| else |
| System.out.println( "\ntesting failed" ); |
| |
| System.out.println( "done" ); |
| |
| System.exit( 0 ); |
| } |
| |
| |
| public static XMultiServiceFactory connect( String sConnectStr ) |
| throws com.sun.star.uno.Exception, |
| com.sun.star.uno.RuntimeException, |
| Exception |
| { |
| // Get component context |
| XComponentContext xComponentContext = |
| com.sun.star.comp.helper.Bootstrap.createInitialComponentContext( |
| null ); |
| |
| // initial serviceManager |
| XMultiComponentFactory xLocalServiceManager = |
| xComponentContext.getServiceManager(); |
| |
| // create a connector, so that it can contact the office |
| Object oUrlResolver = xLocalServiceManager.createInstanceWithContext( |
| "com.sun.star.bridge.UnoUrlResolver", xComponentContext ); |
| XUnoUrlResolver xUrlResolver = (XUnoUrlResolver)UnoRuntime.queryInterface( |
| XUnoUrlResolver.class, oUrlResolver ); |
| |
| Object oInitialObject = xUrlResolver.resolve( sConnectStr ); |
| XNamingService xName = (XNamingService)UnoRuntime.queryInterface( |
| XNamingService.class, oInitialObject ); |
| |
| XMultiServiceFactory xMSF = null; |
| if( xName != null ) { |
| System.err.println( "got the remote naming service !" ); |
| Object oMSF = xName.getRegisteredObject("StarOffice.ServiceManager" ); |
| |
| xMSF = (XMultiServiceFactory) |
| UnoRuntime.queryInterface( XMultiServiceFactory.class, oMSF ); |
| } |
| else |
| System.out.println( "Error: Can't get XNamingService interface from url resolver!" ); |
| |
| return xMSF; |
| } |
| |
| } |
| |