xref: /AOO41X/main/qadevOOo/tests/java/ifc/configuration/backend/_XLayerHandler.java (revision cdf0e10c4e3984b49a9502b011690b615761d4a3)
1 /*************************************************************************
2  *
3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4  *
5  * Copyright 2000, 2010 Oracle and/or its affiliates.
6  *
7  * OpenOffice.org - a multi-platform office productivity suite
8  *
9  * This file is part of OpenOffice.org.
10  *
11  * OpenOffice.org is free software: you can redistribute it and/or modify
12  * it under the terms of the GNU Lesser General Public License version 3
13  * only, as published by the Free Software Foundation.
14  *
15  * OpenOffice.org is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18  * GNU Lesser General Public License version 3 for more details
19  * (a copy is included in the LICENSE file that accompanied this code).
20  *
21  * You should have received a copy of the GNU Lesser General Public License
22  * version 3 along with OpenOffice.org.  If not, see
23  * <http://www.openoffice.org/license.html>
24  * for a copy of the LGPLv3 License.
25  *
26  ************************************************************************/
27 package ifc.configuration.backend;
28 
29 import com.sun.star.configuration.backend.XLayer;
30 import com.sun.star.configuration.backend.XLayerHandler;
31 import com.sun.star.io.XActiveDataSink;
32 import com.sun.star.io.XInputStream;
33 import com.sun.star.lang.XMultiServiceFactory;
34 import com.sun.star.ucb.XSimpleFileAccess;
35 import com.sun.star.uno.Type;
36 import com.sun.star.uno.UnoRuntime;
37 
38 import lib.MultiMethodTest;
39 
40 import util.XLayerHandlerImpl;
41 
42 
43 public class _XLayerHandler extends MultiMethodTest {
44     public XLayerHandler oObj = null;
45 
46     /** this method contains the logic for all test methods
47      * the others will be passed OK if this one is
48      */
49     public void _endLayer() {
50         boolean res = false;
51 
52         try {
53             oObj.startLayer();
54             oObj.overrideNode("org.openoffice.Setup", (short) 0, false);
55             oObj.overrideNode("Office", (short) 0, false);
56             oObj.overrideProperty("ooSetupInstCompleted", (short) 0,
57                                   new Type(java.lang.String.class), false);
58             oObj.setPropertyValue(new Boolean(false));
59             oObj.endProperty();
60             oObj.overrideProperty("ooSetupShowIntro", (short) 0,
61                                   new Type(java.lang.String.class), false);
62             oObj.setPropertyValue(new Boolean(true));
63             oObj.endProperty();
64             oObj.overrideProperty("ooSetupLocales", (short) 0,
65                                   new Type(java.lang.String.class), false);
66             oObj.setPropertyValue("en-US");
67             oObj.endProperty();
68             oObj.overrideNode("Factories", (short) 0, false);
69             oObj.addOrReplaceNode("com.sun.star.chart.ChartDocument",
70                                   (short) 0);
71             oObj.overrideProperty("ooSetupFactoryEmptyDocumentURL", (short) 0,
72                                   new Type(java.lang.String.class), false);
73             oObj.setPropertyValue("private:factory/schart");
74             oObj.endProperty();
75             oObj.overrideProperty("ooSetupFactoryIcon", (short) 0,
76                                   new Type(java.lang.Long.class), false);
77             oObj.setPropertyValue(new Integer(13));
78             oObj.endProperty();
79             oObj.overrideProperty("ooSetupFactoryShortName", (short) 0,
80                                   new Type(java.lang.String.class), false);
81             oObj.setPropertyValue("schart");
82             oObj.setPropertyValueForLocale("TemplateFile", "en-US");
83             oObj.endProperty();
84             oObj.overrideProperty("ooSetupFactoryTemplateFile", (short) 0,
85                                   new Type(java.lang.String.class), false);
86             oObj.setPropertyValue("empty");
87             oObj.endProperty();
88             oObj.addProperty("ooSetupFactoryTemplateFile", (short) 0,
89                              new Type(java.lang.String.class));
90             oObj.addPropertyWithValue("ooSetupFactoryTemplateFile", (short) 0,
91                                       "TemplateFile");
92             oObj.endNode();
93 
94             oObj.addOrReplaceNode("dropme", (short) 0);
95             oObj.overrideProperty("anyway", (short) 0,
96                                   new Type(java.lang.String.class), false);
97             oObj.setPropertyValue("nice");
98             oObj.endProperty();
99             oObj.dropNode("dropme");
100             oObj.endNode();
101 
102             oObj.addOrReplaceNodeFromTemplate("FromTemplate",
103                                               new com.sun.star.configuration.backend.TemplateIdentifier(
104                                                       "org.openoffice.Setup",
105                                                       "Setup"), (short) 0);
106             oObj.endNode();
107 
108             oObj.endNode();
109             oObj.endNode();
110             oObj.endNode();
111             oObj.endLayer();
112 
113             Object LayerParser = ((XMultiServiceFactory) tParam.getMSF()).createInstance(
114                                          "com.sun.star.comp.configuration.backend.xml.LayerParser");
115 
116             XActiveDataSink xSink = (XActiveDataSink) UnoRuntime.queryInterface(
117                                             XActiveDataSink.class, LayerParser);
118             Object fileacc = ((XMultiServiceFactory) tParam.getMSF()).createInstance(
119                                      "com.sun.star.comp.ucb.SimpleFileAccess");
120             XSimpleFileAccess simpleAccess = (XSimpleFileAccess) UnoRuntime.queryInterface(
121                                                      XSimpleFileAccess.class,
122                                                      fileacc);
123 
124             String filename = util.utils.getOfficeTemp(
125                                       (XMultiServiceFactory) tParam.getMSF()) +
126                               "LayerWriter.xcu";
127             log.println("Going to parse: " + filename);
128 
129             XInputStream xStream = simpleAccess.openFileRead(filename);
130 
131             xSink.setInputStream(xStream);
132 
133             XLayer xLayer = (XLayer) UnoRuntime.queryInterface(XLayer.class,
134                                                                LayerParser);
135 
136             XLayerHandlerImpl xLayerHandler = new XLayerHandlerImpl();
137 
138             xLayer.readData(xLayerHandler);
139 
140             res = xLayerHandler.getCalls().equals(getExpected());
141 
142             if (!res) {
143                 log.println("#### Getting: ");
144                 log.println(xLayerHandler.getCalls());
145                 log.println("#### Expected: ");
146                 log.println(getExpected());
147             }
148         } catch (com.sun.star.configuration.backend.MalformedDataException e) {
149             log.println("Unexpected Exception " + e);
150         } catch (com.sun.star.lang.WrappedTargetException e) {
151             log.println("Unexpected Exception " + e);
152         } catch (com.sun.star.uno.Exception e) {
153             log.println("Unexpected Exception " + e);
154         }
155 
156         tRes.tested("endLayer()", res);
157     }
158 
159     public void _addOrReplaceNode() {
160         requiredMethod("endLayer()");
161         tRes.tested("addOrReplaceNode()", true);
162     }
163 
164     public void _addOrReplaceNodeFromTemplate() {
165         requiredMethod("endLayer()");
166         tRes.tested("addOrReplaceNodeFromTemplate()", true);
167     }
168 
169     public void _addProperty() {
170         requiredMethod("endLayer()");
171         tRes.tested("addProperty()", true);
172     }
173 
174     public void _addPropertyWithValue() {
175         requiredMethod("endLayer()");
176         tRes.tested("addPropertyWithValue()", true);
177     }
178 
179     public void _dropNode() {
180         requiredMethod("endLayer()");
181         tRes.tested("dropNode()", true);
182     }
183 
184     public void _endNode() {
185         requiredMethod("endLayer()");
186         tRes.tested("endNode()", true);
187     }
188 
189     public void _endProperty() {
190         requiredMethod("endLayer()");
191         tRes.tested("endProperty()", true);
192     }
193 
194     public void _overrideNode() {
195         requiredMethod("endLayer()");
196         tRes.tested("overrideNode()", true);
197     }
198 
199     public void _overrideProperty() {
200         requiredMethod("endLayer()");
201         tRes.tested("overrideProperty()", true);
202     }
203 
204     public void _setPropertyValue() {
205         requiredMethod("endLayer()");
206         tRes.tested("setPropertyValue()", true);
207     }
208 
209     public void _setPropertyValueForLocale() {
210         requiredMethod("endLayer()");
211         tRes.tested("setPropertyValueForLocale()", true);
212     }
213 
214     public void _startLayer() {
215         requiredMethod("endLayer()");
216         tRes.tested("startLayer()", true);
217     }
218 
219     protected String getExpected() {
220         String ls = System.getProperty("line.separator");
221         String expected = "startLayer();" + ls;
222         expected += ("overrideNode(org.openoffice.Setup,0,false);" + ls);
223         expected += ("overrideNode(Office,0,false);" + ls);
224         expected += ("overrideProperty(ooSetupInstCompleted,0,Type[string],false);" + ls);
225         expected += ("setPropertyValue(false);" + ls);
226         expected += ("endProperty();" + ls);
227         expected += ("overrideProperty(ooSetupShowIntro,0,Type[string],false);" + ls);
228         expected += ("setPropertyValue(true);" + ls);
229         expected += ("endProperty();" + ls);
230         expected += ("overrideProperty(ooSetupLocales,0,Type[string],false);" + ls);
231         expected += ("setPropertyValue(en-US);" + ls);
232         expected += ("endProperty();" + ls);
233         expected += ("overrideNode(Factories,0,false);" + ls);
234         expected += ("addOrReplace(com.sun.star.chart.ChartDocument,0);" + ls);
235         expected += ("overrideProperty(ooSetupFactoryEmptyDocumentURL,0,Type[string],false);" + ls);
236         expected += ("setPropertyValue(private:factory/schart);" + ls);
237         expected += ("endProperty();" + ls);
238         expected += ("overrideProperty(ooSetupFactoryIcon,0,Type[hyper],false);" + ls);
239         expected += ("setPropertyValue(13);" + ls);
240         expected += ("endProperty();" + ls);
241         expected += ("overrideProperty(ooSetupFactoryShortName,0,Type[string],false);" + ls);
242         expected += ("setPropertyValue(schart);" + ls);
243         expected += ("setPropertyValueForLocale(TemplateFile,en-US);" + ls);
244         expected += ("endProperty();" + ls);
245         expected += ("overrideProperty(ooSetupFactoryTemplateFile,0,Type[string],false);" + ls);
246         expected += ("setPropertyValue(empty);" + ls);
247         expected += ("endProperty();" + ls);
248         expected += ("addProperty(ooSetupFactoryTemplateFile,0,Type[string]);" + ls);
249         expected += ("addPropertyWithValue(ooSetupFactoryTemplateFile,0,TemplateFile);" + ls);
250         expected += ("endNode();" + ls);
251         expected += ("addOrReplace(dropme,0);" + ls);
252         expected += ("overrideProperty(anyway,0,Type[string],false);" + ls);
253         expected += ("setPropertyValue(nice);" + ls);
254         expected += ("endProperty();" + ls);
255         expected += ("dropNode(dropme);" + ls);
256         expected += ("endNode();" + ls);
257         expected += ("addOrReplace(FromTemplate,0);" + ls);
258         expected += ("endNode();" + ls);
259         expected += ("endNode();" + ls);
260         expected += ("endNode();" + ls);
261         expected += ("endNode();" + ls);
262         expected += ("endLayer();" + ls);
263 
264         return expected;
265     }
266 }