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
10*ef39d40dSAndrew Rist  *
11*ef39d40dSAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
12*ef39d40dSAndrew Rist  *
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.
19*ef39d40dSAndrew Rist  *
20*ef39d40dSAndrew Rist  *************************************************************/
21*ef39d40dSAndrew Rist 
22*ef39d40dSAndrew Rist 
23cdf0e10cSrcweir package ifc.configuration.backend;
24cdf0e10cSrcweir 
25cdf0e10cSrcweir import com.sun.star.configuration.backend.XLayer;
26cdf0e10cSrcweir import com.sun.star.configuration.backend.XLayerHandler;
27cdf0e10cSrcweir import com.sun.star.io.XActiveDataSink;
28cdf0e10cSrcweir import com.sun.star.io.XInputStream;
29cdf0e10cSrcweir import com.sun.star.lang.XMultiServiceFactory;
30cdf0e10cSrcweir import com.sun.star.ucb.XSimpleFileAccess;
31cdf0e10cSrcweir import com.sun.star.uno.Type;
32cdf0e10cSrcweir import com.sun.star.uno.UnoRuntime;
33cdf0e10cSrcweir 
34cdf0e10cSrcweir import lib.MultiMethodTest;
35cdf0e10cSrcweir 
36cdf0e10cSrcweir import util.XLayerHandlerImpl;
37cdf0e10cSrcweir 
38cdf0e10cSrcweir 
39cdf0e10cSrcweir public class _XLayerHandler extends MultiMethodTest {
40cdf0e10cSrcweir     public XLayerHandler oObj = null;
41cdf0e10cSrcweir 
42cdf0e10cSrcweir     /** this method contains the logic for all test methods
43cdf0e10cSrcweir      * the others will be passed OK if this one is
44cdf0e10cSrcweir      */
_endLayer()45cdf0e10cSrcweir     public void _endLayer() {
46cdf0e10cSrcweir         boolean res = false;
47cdf0e10cSrcweir 
48cdf0e10cSrcweir         try {
49cdf0e10cSrcweir             oObj.startLayer();
50cdf0e10cSrcweir             oObj.overrideNode("org.openoffice.Setup", (short) 0, false);
51cdf0e10cSrcweir             oObj.overrideNode("Office", (short) 0, false);
52cdf0e10cSrcweir             oObj.overrideProperty("ooSetupInstCompleted", (short) 0,
53cdf0e10cSrcweir                                   new Type(java.lang.String.class), false);
54cdf0e10cSrcweir             oObj.setPropertyValue(new Boolean(false));
55cdf0e10cSrcweir             oObj.endProperty();
56cdf0e10cSrcweir             oObj.overrideProperty("ooSetupShowIntro", (short) 0,
57cdf0e10cSrcweir                                   new Type(java.lang.String.class), false);
58cdf0e10cSrcweir             oObj.setPropertyValue(new Boolean(true));
59cdf0e10cSrcweir             oObj.endProperty();
60cdf0e10cSrcweir             oObj.overrideProperty("ooSetupLocales", (short) 0,
61cdf0e10cSrcweir                                   new Type(java.lang.String.class), false);
62cdf0e10cSrcweir             oObj.setPropertyValue("en-US");
63cdf0e10cSrcweir             oObj.endProperty();
64cdf0e10cSrcweir             oObj.overrideNode("Factories", (short) 0, false);
65cdf0e10cSrcweir             oObj.addOrReplaceNode("com.sun.star.chart.ChartDocument",
66cdf0e10cSrcweir                                   (short) 0);
67cdf0e10cSrcweir             oObj.overrideProperty("ooSetupFactoryEmptyDocumentURL", (short) 0,
68cdf0e10cSrcweir                                   new Type(java.lang.String.class), false);
69cdf0e10cSrcweir             oObj.setPropertyValue("private:factory/schart");
70cdf0e10cSrcweir             oObj.endProperty();
71cdf0e10cSrcweir             oObj.overrideProperty("ooSetupFactoryIcon", (short) 0,
72cdf0e10cSrcweir                                   new Type(java.lang.Long.class), false);
73cdf0e10cSrcweir             oObj.setPropertyValue(new Integer(13));
74cdf0e10cSrcweir             oObj.endProperty();
75cdf0e10cSrcweir             oObj.overrideProperty("ooSetupFactoryShortName", (short) 0,
76cdf0e10cSrcweir                                   new Type(java.lang.String.class), false);
77cdf0e10cSrcweir             oObj.setPropertyValue("schart");
78cdf0e10cSrcweir             oObj.setPropertyValueForLocale("TemplateFile", "en-US");
79cdf0e10cSrcweir             oObj.endProperty();
80cdf0e10cSrcweir             oObj.overrideProperty("ooSetupFactoryTemplateFile", (short) 0,
81cdf0e10cSrcweir                                   new Type(java.lang.String.class), false);
82cdf0e10cSrcweir             oObj.setPropertyValue("empty");
83cdf0e10cSrcweir             oObj.endProperty();
84cdf0e10cSrcweir             oObj.addProperty("ooSetupFactoryTemplateFile", (short) 0,
85cdf0e10cSrcweir                              new Type(java.lang.String.class));
86cdf0e10cSrcweir             oObj.addPropertyWithValue("ooSetupFactoryTemplateFile", (short) 0,
87cdf0e10cSrcweir                                       "TemplateFile");
88cdf0e10cSrcweir             oObj.endNode();
89cdf0e10cSrcweir 
90cdf0e10cSrcweir             oObj.addOrReplaceNode("dropme", (short) 0);
91cdf0e10cSrcweir             oObj.overrideProperty("anyway", (short) 0,
92cdf0e10cSrcweir                                   new Type(java.lang.String.class), false);
93cdf0e10cSrcweir             oObj.setPropertyValue("nice");
94cdf0e10cSrcweir             oObj.endProperty();
95cdf0e10cSrcweir             oObj.dropNode("dropme");
96cdf0e10cSrcweir             oObj.endNode();
97cdf0e10cSrcweir 
98cdf0e10cSrcweir             oObj.addOrReplaceNodeFromTemplate("FromTemplate",
99cdf0e10cSrcweir                                               new com.sun.star.configuration.backend.TemplateIdentifier(
100cdf0e10cSrcweir                                                       "org.openoffice.Setup",
101cdf0e10cSrcweir                                                       "Setup"), (short) 0);
102cdf0e10cSrcweir             oObj.endNode();
103cdf0e10cSrcweir 
104cdf0e10cSrcweir             oObj.endNode();
105cdf0e10cSrcweir             oObj.endNode();
106cdf0e10cSrcweir             oObj.endNode();
107cdf0e10cSrcweir             oObj.endLayer();
108cdf0e10cSrcweir 
109cdf0e10cSrcweir             Object LayerParser = ((XMultiServiceFactory) tParam.getMSF()).createInstance(
110cdf0e10cSrcweir                                          "com.sun.star.comp.configuration.backend.xml.LayerParser");
111cdf0e10cSrcweir 
112cdf0e10cSrcweir             XActiveDataSink xSink = (XActiveDataSink) UnoRuntime.queryInterface(
113cdf0e10cSrcweir                                             XActiveDataSink.class, LayerParser);
114cdf0e10cSrcweir             Object fileacc = ((XMultiServiceFactory) tParam.getMSF()).createInstance(
115cdf0e10cSrcweir                                      "com.sun.star.comp.ucb.SimpleFileAccess");
116cdf0e10cSrcweir             XSimpleFileAccess simpleAccess = (XSimpleFileAccess) UnoRuntime.queryInterface(
117cdf0e10cSrcweir                                                      XSimpleFileAccess.class,
118cdf0e10cSrcweir                                                      fileacc);
119cdf0e10cSrcweir 
120cdf0e10cSrcweir             String filename = util.utils.getOfficeTemp(
121cdf0e10cSrcweir                                       (XMultiServiceFactory) tParam.getMSF()) +
122cdf0e10cSrcweir                               "LayerWriter.xcu";
123cdf0e10cSrcweir             log.println("Going to parse: " + filename);
124cdf0e10cSrcweir 
125cdf0e10cSrcweir             XInputStream xStream = simpleAccess.openFileRead(filename);
126cdf0e10cSrcweir 
127cdf0e10cSrcweir             xSink.setInputStream(xStream);
128cdf0e10cSrcweir 
129cdf0e10cSrcweir             XLayer xLayer = (XLayer) UnoRuntime.queryInterface(XLayer.class,
130cdf0e10cSrcweir                                                                LayerParser);
131cdf0e10cSrcweir 
132cdf0e10cSrcweir             XLayerHandlerImpl xLayerHandler = new XLayerHandlerImpl();
133cdf0e10cSrcweir 
134cdf0e10cSrcweir             xLayer.readData(xLayerHandler);
135cdf0e10cSrcweir 
136cdf0e10cSrcweir             res = xLayerHandler.getCalls().equals(getExpected());
137cdf0e10cSrcweir 
138cdf0e10cSrcweir             if (!res) {
139cdf0e10cSrcweir                 log.println("#### Getting: ");
140cdf0e10cSrcweir                 log.println(xLayerHandler.getCalls());
141cdf0e10cSrcweir                 log.println("#### Expected: ");
142cdf0e10cSrcweir                 log.println(getExpected());
143cdf0e10cSrcweir             }
144cdf0e10cSrcweir         } catch (com.sun.star.configuration.backend.MalformedDataException e) {
145cdf0e10cSrcweir             log.println("Unexpected Exception " + e);
146cdf0e10cSrcweir         } catch (com.sun.star.lang.WrappedTargetException e) {
147cdf0e10cSrcweir             log.println("Unexpected Exception " + e);
148cdf0e10cSrcweir         } catch (com.sun.star.uno.Exception e) {
149cdf0e10cSrcweir             log.println("Unexpected Exception " + e);
150cdf0e10cSrcweir         }
151cdf0e10cSrcweir 
152cdf0e10cSrcweir         tRes.tested("endLayer()", res);
153cdf0e10cSrcweir     }
154cdf0e10cSrcweir 
_addOrReplaceNode()155cdf0e10cSrcweir     public void _addOrReplaceNode() {
156cdf0e10cSrcweir         requiredMethod("endLayer()");
157cdf0e10cSrcweir         tRes.tested("addOrReplaceNode()", true);
158cdf0e10cSrcweir     }
159cdf0e10cSrcweir 
_addOrReplaceNodeFromTemplate()160cdf0e10cSrcweir     public void _addOrReplaceNodeFromTemplate() {
161cdf0e10cSrcweir         requiredMethod("endLayer()");
162cdf0e10cSrcweir         tRes.tested("addOrReplaceNodeFromTemplate()", true);
163cdf0e10cSrcweir     }
164cdf0e10cSrcweir 
_addProperty()165cdf0e10cSrcweir     public void _addProperty() {
166cdf0e10cSrcweir         requiredMethod("endLayer()");
167cdf0e10cSrcweir         tRes.tested("addProperty()", true);
168cdf0e10cSrcweir     }
169cdf0e10cSrcweir 
_addPropertyWithValue()170cdf0e10cSrcweir     public void _addPropertyWithValue() {
171cdf0e10cSrcweir         requiredMethod("endLayer()");
172cdf0e10cSrcweir         tRes.tested("addPropertyWithValue()", true);
173cdf0e10cSrcweir     }
174cdf0e10cSrcweir 
_dropNode()175cdf0e10cSrcweir     public void _dropNode() {
176cdf0e10cSrcweir         requiredMethod("endLayer()");
177cdf0e10cSrcweir         tRes.tested("dropNode()", true);
178cdf0e10cSrcweir     }
179cdf0e10cSrcweir 
_endNode()180cdf0e10cSrcweir     public void _endNode() {
181cdf0e10cSrcweir         requiredMethod("endLayer()");
182cdf0e10cSrcweir         tRes.tested("endNode()", true);
183cdf0e10cSrcweir     }
184cdf0e10cSrcweir 
_endProperty()185cdf0e10cSrcweir     public void _endProperty() {
186cdf0e10cSrcweir         requiredMethod("endLayer()");
187cdf0e10cSrcweir         tRes.tested("endProperty()", true);
188cdf0e10cSrcweir     }
189cdf0e10cSrcweir 
_overrideNode()190cdf0e10cSrcweir     public void _overrideNode() {
191cdf0e10cSrcweir         requiredMethod("endLayer()");
192cdf0e10cSrcweir         tRes.tested("overrideNode()", true);
193cdf0e10cSrcweir     }
194cdf0e10cSrcweir 
_overrideProperty()195cdf0e10cSrcweir     public void _overrideProperty() {
196cdf0e10cSrcweir         requiredMethod("endLayer()");
197cdf0e10cSrcweir         tRes.tested("overrideProperty()", true);
198cdf0e10cSrcweir     }
199cdf0e10cSrcweir 
_setPropertyValue()200cdf0e10cSrcweir     public void _setPropertyValue() {
201cdf0e10cSrcweir         requiredMethod("endLayer()");
202cdf0e10cSrcweir         tRes.tested("setPropertyValue()", true);
203cdf0e10cSrcweir     }
204cdf0e10cSrcweir 
_setPropertyValueForLocale()205cdf0e10cSrcweir     public void _setPropertyValueForLocale() {
206cdf0e10cSrcweir         requiredMethod("endLayer()");
207cdf0e10cSrcweir         tRes.tested("setPropertyValueForLocale()", true);
208cdf0e10cSrcweir     }
209cdf0e10cSrcweir 
_startLayer()210cdf0e10cSrcweir     public void _startLayer() {
211cdf0e10cSrcweir         requiredMethod("endLayer()");
212cdf0e10cSrcweir         tRes.tested("startLayer()", true);
213cdf0e10cSrcweir     }
214cdf0e10cSrcweir 
getExpected()215cdf0e10cSrcweir     protected String getExpected() {
216cdf0e10cSrcweir         String ls = System.getProperty("line.separator");
217cdf0e10cSrcweir         String expected = "startLayer();" + ls;
218cdf0e10cSrcweir         expected += ("overrideNode(org.openoffice.Setup,0,false);" + ls);
219cdf0e10cSrcweir         expected += ("overrideNode(Office,0,false);" + ls);
220cdf0e10cSrcweir         expected += ("overrideProperty(ooSetupInstCompleted,0,Type[string],false);" + ls);
221cdf0e10cSrcweir         expected += ("setPropertyValue(false);" + ls);
222cdf0e10cSrcweir         expected += ("endProperty();" + ls);
223cdf0e10cSrcweir         expected += ("overrideProperty(ooSetupShowIntro,0,Type[string],false);" + ls);
224cdf0e10cSrcweir         expected += ("setPropertyValue(true);" + ls);
225cdf0e10cSrcweir         expected += ("endProperty();" + ls);
226cdf0e10cSrcweir         expected += ("overrideProperty(ooSetupLocales,0,Type[string],false);" + ls);
227cdf0e10cSrcweir         expected += ("setPropertyValue(en-US);" + ls);
228cdf0e10cSrcweir         expected += ("endProperty();" + ls);
229cdf0e10cSrcweir         expected += ("overrideNode(Factories,0,false);" + ls);
230cdf0e10cSrcweir         expected += ("addOrReplace(com.sun.star.chart.ChartDocument,0);" + ls);
231cdf0e10cSrcweir         expected += ("overrideProperty(ooSetupFactoryEmptyDocumentURL,0,Type[string],false);" + ls);
232cdf0e10cSrcweir         expected += ("setPropertyValue(private:factory/schart);" + ls);
233cdf0e10cSrcweir         expected += ("endProperty();" + ls);
234cdf0e10cSrcweir         expected += ("overrideProperty(ooSetupFactoryIcon,0,Type[hyper],false);" + ls);
235cdf0e10cSrcweir         expected += ("setPropertyValue(13);" + ls);
236cdf0e10cSrcweir         expected += ("endProperty();" + ls);
237cdf0e10cSrcweir         expected += ("overrideProperty(ooSetupFactoryShortName,0,Type[string],false);" + ls);
238cdf0e10cSrcweir         expected += ("setPropertyValue(schart);" + ls);
239cdf0e10cSrcweir         expected += ("setPropertyValueForLocale(TemplateFile,en-US);" + ls);
240cdf0e10cSrcweir         expected += ("endProperty();" + ls);
241cdf0e10cSrcweir         expected += ("overrideProperty(ooSetupFactoryTemplateFile,0,Type[string],false);" + ls);
242cdf0e10cSrcweir         expected += ("setPropertyValue(empty);" + ls);
243cdf0e10cSrcweir         expected += ("endProperty();" + ls);
244cdf0e10cSrcweir         expected += ("addProperty(ooSetupFactoryTemplateFile,0,Type[string]);" + ls);
245cdf0e10cSrcweir         expected += ("addPropertyWithValue(ooSetupFactoryTemplateFile,0,TemplateFile);" + ls);
246cdf0e10cSrcweir         expected += ("endNode();" + ls);
247cdf0e10cSrcweir         expected += ("addOrReplace(dropme,0);" + ls);
248cdf0e10cSrcweir         expected += ("overrideProperty(anyway,0,Type[string],false);" + ls);
249cdf0e10cSrcweir         expected += ("setPropertyValue(nice);" + ls);
250cdf0e10cSrcweir         expected += ("endProperty();" + ls);
251cdf0e10cSrcweir         expected += ("dropNode(dropme);" + ls);
252cdf0e10cSrcweir         expected += ("endNode();" + ls);
253cdf0e10cSrcweir         expected += ("addOrReplace(FromTemplate,0);" + ls);
254cdf0e10cSrcweir         expected += ("endNode();" + ls);
255cdf0e10cSrcweir         expected += ("endNode();" + ls);
256cdf0e10cSrcweir         expected += ("endNode();" + ls);
257cdf0e10cSrcweir         expected += ("endNode();" + ls);
258cdf0e10cSrcweir         expected += ("endLayer();" + ls);
259cdf0e10cSrcweir 
260cdf0e10cSrcweir         return expected;
261cdf0e10cSrcweir     }
262cdf0e10cSrcweir }