1 /************************************************************** 2 * 3 * Licensed to the Apache Software Foundation (ASF) under one 4 * or more contributor license agreements. See the NOTICE file 5 * distributed with this work for additional information 6 * regarding copyright ownership. The ASF licenses this file 7 * to you under the Apache License, Version 2.0 (the 8 * "License"); you may not use this file except in compliance 9 * with the License. You may obtain a copy of the License at 10 * 11 * http://www.apache.org/licenses/LICENSE-2.0 12 * 13 * Unless required by applicable law or agreed to in writing, 14 * software distributed under the License is distributed on an 15 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16 * KIND, either express or implied. See the License for the 17 * specific language governing permissions and limitations 18 * under the License. 19 * 20 *************************************************************/ 21 22 23 24 package ifc.reflection; 25 26 import lib.MultiMethodTest; 27 28 import com.sun.star.lang.XInitialization; 29 import com.sun.star.reflection.XProxyFactory; 30 import com.sun.star.uno.UnoRuntime; 31 import com.sun.star.uno.XAggregation; 32 33 /** 34 /** 35 * Testing <code>com.sun.star.reflection.XProxyFactory</code> 36 * interface methods : 37 * <ul> 38 * <li><code> createProxy()</code></li> 39 * </ul> <p> 40 * Test is <b> NOT </b> multithread compilant. <p> 41 * @see com.sun.star.reflection.XProxyFactory 42 */ 43 public class _XProxyFactory extends MultiMethodTest { 44 /** Is initialized in super class(using reflection API) 45 * when instantiating the test. 46 */ 47 public XProxyFactory oObj; 48 49 /** 50 * First an implementation of 51 * <code>com.sun.star.lang.XInitialization</code> interface 52 * is made which sets a flag when its <code>initialize()</code> 53 * method is called. Then an instance of this implementation 54 * is created and a proxy object is created for it. Proxy 55 * object is tried to query for <code>XInitialization</code> 56 * interface and it's <code>initialize</code> method is 57 * called. The goal is to check if the real object method 58 * was called throwgh it's proxy. <p> 59 * Has <b>OK</b> status if the real object method was 60 * called and parameters were passed correctly. 61 */ _createProxy()62 public void _createProxy() { 63 class MyObject implements XInitialization { 64 Object[] params; 65 66 public void initialize(Object args[]) { 67 params = args; 68 } 69 } 70 71 MyObject obj = new MyObject(); 72 73 XAggregation xAggr = oObj.createProxy(obj); 74 75 XInitialization xInit = (XInitialization)UnoRuntime.queryInterface( 76 XInitialization.class, xAggr); 77 78 Object params[] = new Object[0]; 79 80 try { 81 xInit.initialize(params); 82 } catch(com.sun.star.uno.Exception e) { 83 log.println("Unexpected exception : " + e.getMessage()); 84 e.printStackTrace(log); 85 tRes.tested("createProxy()", false); 86 return; 87 } 88 89 tRes.tested("createProxy()", 90 util.ValueComparer.equalValue(params, obj.params)); 91 } 92 } 93 94