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 }