xref: /AOO41X/main/qadevOOo/tests/java/ifc/io/_XObjectInputStream.java (revision ef39d40d3f5e66cf3f035b3e93783012b340500d)
1*ef39d40dSAndrew Rist /**************************************************************
2cdf0e10cSrcweir  *
3*ef39d40dSAndrew Rist  * Licensed to the Apache Software Foundation (ASF) under one
4*ef39d40dSAndrew Rist  * or more contributor license agreements.  See the NOTICE file
5*ef39d40dSAndrew Rist  * distributed with this work for additional information
6*ef39d40dSAndrew Rist  * regarding copyright ownership.  The ASF licenses this file
7*ef39d40dSAndrew Rist  * to you under the Apache License, Version 2.0 (the
8*ef39d40dSAndrew Rist  * "License"); you may not use this file except in compliance
9*ef39d40dSAndrew Rist  * with the License.  You may obtain a copy of the License at
10cdf0e10cSrcweir  *
11*ef39d40dSAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
12cdf0e10cSrcweir  *
13*ef39d40dSAndrew Rist  * Unless required by applicable law or agreed to in writing,
14*ef39d40dSAndrew Rist  * software distributed under the License is distributed on an
15*ef39d40dSAndrew Rist  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*ef39d40dSAndrew Rist  * KIND, either express or implied.  See the License for the
17*ef39d40dSAndrew Rist  * specific language governing permissions and limitations
18*ef39d40dSAndrew Rist  * under the License.
19cdf0e10cSrcweir  *
20*ef39d40dSAndrew Rist  *************************************************************/
21*ef39d40dSAndrew Rist 
22*ef39d40dSAndrew Rist 
23cdf0e10cSrcweir 
24cdf0e10cSrcweir package ifc.io;
25cdf0e10cSrcweir 
26cdf0e10cSrcweir import lib.MultiMethodTest;
27cdf0e10cSrcweir import lib.Status;
28cdf0e10cSrcweir import util.ValueComparer;
29cdf0e10cSrcweir 
30cdf0e10cSrcweir import com.sun.star.beans.Property;
31cdf0e10cSrcweir import com.sun.star.beans.XPropertySet;
32cdf0e10cSrcweir import com.sun.star.io.XObjectInputStream;
33cdf0e10cSrcweir import com.sun.star.io.XObjectOutputStream;
34cdf0e10cSrcweir import com.sun.star.io.XPersistObject;
35cdf0e10cSrcweir import com.sun.star.uno.UnoRuntime;
36cdf0e10cSrcweir 
37cdf0e10cSrcweir /**
38cdf0e10cSrcweir * Testing <code>com.sun.star.io.XObjectInputStream</code>
39cdf0e10cSrcweir * interface methods:
40cdf0e10cSrcweir * <ul>
41cdf0e10cSrcweir *   <li><code>readObject()</code></li>
42cdf0e10cSrcweir * </ul> <p>
43cdf0e10cSrcweir * This test needs the following object relations :
44cdf0e10cSrcweir * <ul>
45cdf0e10cSrcweir *  <li> <code>'PersistObject'</code> (of type <code>Object</code>):
46cdf0e10cSrcweir *   object that supports interface <code>XPersistObject</code> </li>
47cdf0e10cSrcweir * <ul> <p>
48cdf0e10cSrcweir * After test completion object environment has to be recreated.
49cdf0e10cSrcweir * @see com.sun.star.io.XObjectInputStream
50cdf0e10cSrcweir * @see com.sun.star.io.XPersistObject
51cdf0e10cSrcweir */
52cdf0e10cSrcweir public class _XObjectInputStream extends MultiMethodTest {
53cdf0e10cSrcweir 
54cdf0e10cSrcweir     public XObjectInputStream oObj = null;
55cdf0e10cSrcweir     private Object objRead = null ;
56cdf0e10cSrcweir     private Object objWrite = null ;
57cdf0e10cSrcweir 
58cdf0e10cSrcweir     /**
59cdf0e10cSrcweir     * Test reads perisist object from stream and compares properties
60cdf0e10cSrcweir     * of the object with properties of persist object obtained
61cdf0e10cSrcweir     * from relation <code>'PersistObject'</code> <p>
62cdf0e10cSrcweir     * Has <b> OK </b> status if returned value isn't null and values
63cdf0e10cSrcweir     * of objects properties are equal. <p>
64cdf0e10cSrcweir     */
_readObject()65cdf0e10cSrcweir     public void _readObject() {
66cdf0e10cSrcweir         objWrite = tEnv.getObjRelation("PersistObject") ;
67cdf0e10cSrcweir         if (objWrite == null) {
68cdf0e10cSrcweir             log.println("PersistObject not found in relations") ;
69cdf0e10cSrcweir             tRes.tested("readObject()", false) ;
70cdf0e10cSrcweir             return ;
71cdf0e10cSrcweir         }
72cdf0e10cSrcweir 
73cdf0e10cSrcweir         // write the object
74cdf0e10cSrcweir         try {
75cdf0e10cSrcweir             XObjectOutputStream oStream = (XObjectOutputStream)
76cdf0e10cSrcweir                                     tEnv.getObjRelation("StreamWriter");
77cdf0e10cSrcweir             oStream.writeObject((XPersistObject)objWrite);
78cdf0e10cSrcweir         } catch(com.sun.star.io.IOException e) {
79cdf0e10cSrcweir             log.println("Couldn't write object to stream");
80cdf0e10cSrcweir             e.printStackTrace(log);
81cdf0e10cSrcweir             tRes.tested("readObject()", Status.skipped(false));
82cdf0e10cSrcweir             return;
83cdf0e10cSrcweir         }
84cdf0e10cSrcweir 
85cdf0e10cSrcweir         try {
86cdf0e10cSrcweir             objRead = oObj.readObject() ;
87cdf0e10cSrcweir         } catch(com.sun.star.io.IOException e) {
88cdf0e10cSrcweir             log.println("Couldn't read object from stream");
89cdf0e10cSrcweir             e.printStackTrace(log);
90cdf0e10cSrcweir             tRes.tested("readObject()", false) ;
91cdf0e10cSrcweir             return ;
92cdf0e10cSrcweir         }
93cdf0e10cSrcweir 
94cdf0e10cSrcweir         if (objRead == null) {
95cdf0e10cSrcweir             log.println("No object was read.") ;
96cdf0e10cSrcweir             tRes.tested("readObject()", false) ;
97cdf0e10cSrcweir             return ;
98cdf0e10cSrcweir         }
99cdf0e10cSrcweir 
100cdf0e10cSrcweir         XPropertySet props1 = null ;
101cdf0e10cSrcweir         XPropertySet props2 = null ;
102cdf0e10cSrcweir 
103cdf0e10cSrcweir         props1 = (XPropertySet) UnoRuntime.queryInterface
104cdf0e10cSrcweir             (XPropertySet.class, objRead) ;
105cdf0e10cSrcweir 
106cdf0e10cSrcweir         props2 = (XPropertySet) UnoRuntime.queryInterface
107cdf0e10cSrcweir             (XPropertySet.class, objWrite) ;
108cdf0e10cSrcweir 
109cdf0e10cSrcweir         if (props1 == null) {
110cdf0e10cSrcweir             log.println("Object read doesn't implement XPropertySet") ;
111cdf0e10cSrcweir             tRes.tested("readObject()", false) ;
112cdf0e10cSrcweir             return ;
113cdf0e10cSrcweir         }
114cdf0e10cSrcweir         if (props2 == null) {
115cdf0e10cSrcweir             log.println("Object written doesn't implement XPropertySet") ;
116cdf0e10cSrcweir             tRes.tested("readObject()", false) ;
117cdf0e10cSrcweir             return ;
118cdf0e10cSrcweir         }
119cdf0e10cSrcweir 
120cdf0e10cSrcweir         tRes.tested("readObject()",
121cdf0e10cSrcweir             compareProperties(props1, props2)) ;
122cdf0e10cSrcweir     }
123cdf0e10cSrcweir 
compareProperties(XPropertySet props1, XPropertySet props2)124cdf0e10cSrcweir     protected boolean compareProperties(XPropertySet props1,
125cdf0e10cSrcweir         XPropertySet props2)  {
126cdf0e10cSrcweir 
127cdf0e10cSrcweir         Property[] p1 = props1.getPropertySetInfo().getProperties() ;
128cdf0e10cSrcweir         Property[] p2 = props2.getPropertySetInfo().getProperties() ;
129cdf0e10cSrcweir 
130cdf0e10cSrcweir         if (p1.length != p2.length) {
131cdf0e10cSrcweir             log.println("Number of properties differs") ;
132cdf0e10cSrcweir             return false ;
133cdf0e10cSrcweir         }
134cdf0e10cSrcweir 
135cdf0e10cSrcweir         boolean result = true ;
136cdf0e10cSrcweir 
137cdf0e10cSrcweir         for (int i = 0; i < p1.length; i++) {
138cdf0e10cSrcweir             String propName = p1[i].Name ;
139cdf0e10cSrcweir 
140cdf0e10cSrcweir             log.print("Comparing property '" + propName + "' ...") ;
141cdf0e10cSrcweir             boolean res = false ;
142cdf0e10cSrcweir             try {
143cdf0e10cSrcweir                 res = ValueComparer.equalValue
144cdf0e10cSrcweir                     (props1.getPropertyValue(propName),
145cdf0e10cSrcweir                      props2.getPropertyValue(propName)) ;
146cdf0e10cSrcweir             } catch (com.sun.star.beans.UnknownPropertyException e) {
147cdf0e10cSrcweir                 log.println("Not found !") ;
148cdf0e10cSrcweir             } catch (com.sun.star.lang.WrappedTargetException e) {
149cdf0e10cSrcweir                 log.println(e) ;
150cdf0e10cSrcweir             }
151cdf0e10cSrcweir 
152cdf0e10cSrcweir             if (res)
153cdf0e10cSrcweir                 log.println("OK.") ;
154cdf0e10cSrcweir             else
155cdf0e10cSrcweir                 log.println("Different !") ;
156cdf0e10cSrcweir 
157cdf0e10cSrcweir             result &= res ;
158cdf0e10cSrcweir         }
159cdf0e10cSrcweir 
160cdf0e10cSrcweir         return result ;
161cdf0e10cSrcweir     }
162cdf0e10cSrcweir 
163cdf0e10cSrcweir     /**
164cdf0e10cSrcweir     * Forces object environment recreation.
165cdf0e10cSrcweir     */
after()166cdf0e10cSrcweir     public void after() {
167cdf0e10cSrcweir         this.disposeEnvironment() ;
168cdf0e10cSrcweir     }
169cdf0e10cSrcweir }
170cdf0e10cSrcweir 
171