1*b1cdbd2cSJim Jagielski /************************************************************** 2*b1cdbd2cSJim Jagielski * 3*b1cdbd2cSJim Jagielski * Licensed to the Apache Software Foundation (ASF) under one 4*b1cdbd2cSJim Jagielski * or more contributor license agreements. See the NOTICE file 5*b1cdbd2cSJim Jagielski * distributed with this work for additional information 6*b1cdbd2cSJim Jagielski * regarding copyright ownership. The ASF licenses this file 7*b1cdbd2cSJim Jagielski * to you under the Apache License, Version 2.0 (the 8*b1cdbd2cSJim Jagielski * "License"); you may not use this file except in compliance 9*b1cdbd2cSJim Jagielski * with the License. You may obtain a copy of the License at 10*b1cdbd2cSJim Jagielski * 11*b1cdbd2cSJim Jagielski * http://www.apache.org/licenses/LICENSE-2.0 12*b1cdbd2cSJim Jagielski * 13*b1cdbd2cSJim Jagielski * Unless required by applicable law or agreed to in writing, 14*b1cdbd2cSJim Jagielski * software distributed under the License is distributed on an 15*b1cdbd2cSJim Jagielski * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*b1cdbd2cSJim Jagielski * KIND, either express or implied. See the License for the 17*b1cdbd2cSJim Jagielski * specific language governing permissions and limitations 18*b1cdbd2cSJim Jagielski * under the License. 19*b1cdbd2cSJim Jagielski * 20*b1cdbd2cSJim Jagielski *************************************************************/ 21*b1cdbd2cSJim Jagielski 22*b1cdbd2cSJim Jagielski 23*b1cdbd2cSJim Jagielski package ifc.configuration.backend; 24*b1cdbd2cSJim Jagielski 25*b1cdbd2cSJim Jagielski import com.sun.star.configuration.backend.XBackend; 26*b1cdbd2cSJim Jagielski import com.sun.star.configuration.backend.XLayer; 27*b1cdbd2cSJim Jagielski import com.sun.star.configuration.backend.XUpdateHandler; 28*b1cdbd2cSJim Jagielski import com.sun.star.lang.XMultiServiceFactory; 29*b1cdbd2cSJim Jagielski import com.sun.star.uno.UnoRuntime; 30*b1cdbd2cSJim Jagielski import com.sun.star.util.XStringSubstitution; 31*b1cdbd2cSJim Jagielski 32*b1cdbd2cSJim Jagielski import lib.MultiMethodTest; 33*b1cdbd2cSJim Jagielski 34*b1cdbd2cSJim Jagielski import util.XLayerHandlerImpl; 35*b1cdbd2cSJim Jagielski 36*b1cdbd2cSJim Jagielski 37*b1cdbd2cSJim Jagielski public class _XBackend extends MultiMethodTest { 38*b1cdbd2cSJim Jagielski public XBackend oObj; 39*b1cdbd2cSJim Jagielski _getOwnUpdateHandler()40*b1cdbd2cSJim Jagielski public void _getOwnUpdateHandler() { 41*b1cdbd2cSJim Jagielski boolean res = true; 42*b1cdbd2cSJim Jagielski 43*b1cdbd2cSJim Jagielski String noUpdate = (String) tEnv.getObjRelation("noUpdate"); 44*b1cdbd2cSJim Jagielski 45*b1cdbd2cSJim Jagielski if (noUpdate != null) { 46*b1cdbd2cSJim Jagielski log.println(noUpdate); 47*b1cdbd2cSJim Jagielski tRes.tested("getOwnUpdateHandler()", res); 48*b1cdbd2cSJim Jagielski 49*b1cdbd2cSJim Jagielski return; 50*b1cdbd2cSJim Jagielski } 51*b1cdbd2cSJim Jagielski 52*b1cdbd2cSJim Jagielski try { 53*b1cdbd2cSJim Jagielski XUpdateHandler aHandler = oObj.getOwnUpdateHandler( 54*b1cdbd2cSJim Jagielski "org.openoffice.Office.Linguistic"); 55*b1cdbd2cSJim Jagielski res &= (aHandler != null); 56*b1cdbd2cSJim Jagielski 57*b1cdbd2cSJim Jagielski if (aHandler == null) { 58*b1cdbd2cSJim Jagielski log.println("\treturned Layer is NULL -- FAILED"); 59*b1cdbd2cSJim Jagielski } 60*b1cdbd2cSJim Jagielski } catch (com.sun.star.configuration.backend.BackendAccessException e) { 61*b1cdbd2cSJim Jagielski log.println("unexpected Exception " + e + " -- FAILED"); 62*b1cdbd2cSJim Jagielski res = false; 63*b1cdbd2cSJim Jagielski } catch (com.sun.star.lang.IllegalArgumentException e) { 64*b1cdbd2cSJim Jagielski log.println("unexpected Exception " + e + " -- FAILED"); 65*b1cdbd2cSJim Jagielski res = false; 66*b1cdbd2cSJim Jagielski } catch (com.sun.star.lang.NoSupportException e) { 67*b1cdbd2cSJim Jagielski log.println("unexpected Exception " + e + " -- FAILED"); 68*b1cdbd2cSJim Jagielski res = false; 69*b1cdbd2cSJim Jagielski } 70*b1cdbd2cSJim Jagielski 71*b1cdbd2cSJim Jagielski tRes.tested("getOwnUpdateHandler()", res); 72*b1cdbd2cSJim Jagielski } 73*b1cdbd2cSJim Jagielski _getUpdateHandler()74*b1cdbd2cSJim Jagielski public void _getUpdateHandler() { 75*b1cdbd2cSJim Jagielski boolean res = true; 76*b1cdbd2cSJim Jagielski 77*b1cdbd2cSJim Jagielski String noUpdate = (String) tEnv.getObjRelation("noUpdate"); 78*b1cdbd2cSJim Jagielski 79*b1cdbd2cSJim Jagielski if (noUpdate != null) { 80*b1cdbd2cSJim Jagielski log.println(noUpdate); 81*b1cdbd2cSJim Jagielski tRes.tested("getUpdateHandler()", res); 82*b1cdbd2cSJim Jagielski 83*b1cdbd2cSJim Jagielski return; 84*b1cdbd2cSJim Jagielski } 85*b1cdbd2cSJim Jagielski 86*b1cdbd2cSJim Jagielski try { 87*b1cdbd2cSJim Jagielski XUpdateHandler aHandler = oObj.getUpdateHandler( 88*b1cdbd2cSJim Jagielski "org.openoffice.Office.TypeDetection", 89*b1cdbd2cSJim Jagielski "illegal"); 90*b1cdbd2cSJim Jagielski log.println("Exception expected -- FAILED"); 91*b1cdbd2cSJim Jagielski res = false; 92*b1cdbd2cSJim Jagielski } catch (com.sun.star.configuration.backend.BackendAccessException e) { 93*b1cdbd2cSJim Jagielski log.println("expected Exception -- OK"); 94*b1cdbd2cSJim Jagielski } catch (com.sun.star.lang.IllegalArgumentException e) { 95*b1cdbd2cSJim Jagielski log.println("unexpected Exception -- FAILED"); 96*b1cdbd2cSJim Jagielski res = false; 97*b1cdbd2cSJim Jagielski } catch (com.sun.star.lang.NoSupportException e) { 98*b1cdbd2cSJim Jagielski log.println("unexpected Exception " + e + " -- FAILED"); 99*b1cdbd2cSJim Jagielski res = false; 100*b1cdbd2cSJim Jagielski } 101*b1cdbd2cSJim Jagielski 102*b1cdbd2cSJim Jagielski try { 103*b1cdbd2cSJim Jagielski XStringSubstitution sts = createStringSubstitution( 104*b1cdbd2cSJim Jagielski (XMultiServiceFactory) tParam.getMSF()); 105*b1cdbd2cSJim Jagielski String ent = sts.getSubstituteVariableValue("$(inst)") + 106*b1cdbd2cSJim Jagielski "/share/registry"; 107*b1cdbd2cSJim Jagielski XUpdateHandler aHandler = oObj.getUpdateHandler( 108*b1cdbd2cSJim Jagielski "org.openoffice.Office.Jobs", 109*b1cdbd2cSJim Jagielski ent); 110*b1cdbd2cSJim Jagielski 111*b1cdbd2cSJim Jagielski if (aHandler == null) { 112*b1cdbd2cSJim Jagielski log.println("\treturned Layer is NULL -- FAILED"); 113*b1cdbd2cSJim Jagielski } 114*b1cdbd2cSJim Jagielski } catch (com.sun.star.configuration.backend.BackendAccessException e) { 115*b1cdbd2cSJim Jagielski log.println("unexpected Exception -- FAILED"); 116*b1cdbd2cSJim Jagielski res = false; 117*b1cdbd2cSJim Jagielski } catch (com.sun.star.lang.IllegalArgumentException e) { 118*b1cdbd2cSJim Jagielski log.println("unexpected Exception -- FAILED"); 119*b1cdbd2cSJim Jagielski res = false; 120*b1cdbd2cSJim Jagielski } catch (com.sun.star.lang.NoSupportException e) { 121*b1cdbd2cSJim Jagielski log.println("unexpected Exception " + e + " -- FAILED"); 122*b1cdbd2cSJim Jagielski res = false; 123*b1cdbd2cSJim Jagielski } catch (com.sun.star.container.NoSuchElementException e) { 124*b1cdbd2cSJim Jagielski log.println("unexpected Exception " + e + " -- FAILED"); 125*b1cdbd2cSJim Jagielski res = false; 126*b1cdbd2cSJim Jagielski } 127*b1cdbd2cSJim Jagielski 128*b1cdbd2cSJim Jagielski tRes.tested("getUpdateHandler()", res); 129*b1cdbd2cSJim Jagielski } 130*b1cdbd2cSJim Jagielski _listLayers()131*b1cdbd2cSJim Jagielski public void _listLayers() { 132*b1cdbd2cSJim Jagielski boolean res = true; 133*b1cdbd2cSJim Jagielski 134*b1cdbd2cSJim Jagielski try { 135*b1cdbd2cSJim Jagielski XStringSubstitution sts = createStringSubstitution( 136*b1cdbd2cSJim Jagielski (XMultiServiceFactory) tParam.getMSF()); 137*b1cdbd2cSJim Jagielski String ent = sts.getSubstituteVariableValue("$(inst)") + 138*b1cdbd2cSJim Jagielski "/share/registry"; 139*b1cdbd2cSJim Jagielski XLayer[] Layers = oObj.listLayers( 140*b1cdbd2cSJim Jagielski "org.openoffice.Office.Linguistic", ent); 141*b1cdbd2cSJim Jagielski 142*b1cdbd2cSJim Jagielski for (int i = 0; i < Layers.length; i++) { 143*b1cdbd2cSJim Jagielski log.println("Checking Layer " + i); 144*b1cdbd2cSJim Jagielski res &= checkLayer(Layers[i]); 145*b1cdbd2cSJim Jagielski } 146*b1cdbd2cSJim Jagielski } catch (com.sun.star.configuration.backend.BackendAccessException e) { 147*b1cdbd2cSJim Jagielski log.println("unexpected Exception " + e + " -- FAILED"); 148*b1cdbd2cSJim Jagielski res = false; 149*b1cdbd2cSJim Jagielski } catch (com.sun.star.lang.IllegalArgumentException e) { 150*b1cdbd2cSJim Jagielski log.println("unexpected Exception " + e + " -- FAILED"); 151*b1cdbd2cSJim Jagielski res = false; 152*b1cdbd2cSJim Jagielski } catch (com.sun.star.container.NoSuchElementException e) { 153*b1cdbd2cSJim Jagielski log.println("unexpected Exception " + e + " -- FAILED"); 154*b1cdbd2cSJim Jagielski res = false; 155*b1cdbd2cSJim Jagielski } 156*b1cdbd2cSJim Jagielski 157*b1cdbd2cSJim Jagielski tRes.tested("listLayers()", res); 158*b1cdbd2cSJim Jagielski } 159*b1cdbd2cSJim Jagielski _listOwnLayers()160*b1cdbd2cSJim Jagielski public void _listOwnLayers() { 161*b1cdbd2cSJim Jagielski boolean res = true; 162*b1cdbd2cSJim Jagielski 163*b1cdbd2cSJim Jagielski try { 164*b1cdbd2cSJim Jagielski XLayer[] Layers = oObj.listOwnLayers( 165*b1cdbd2cSJim Jagielski "org.openoffice.Office.Common"); 166*b1cdbd2cSJim Jagielski 167*b1cdbd2cSJim Jagielski for (int i = 0; i < Layers.length; i++) { 168*b1cdbd2cSJim Jagielski log.println("Checking Layer " + i); 169*b1cdbd2cSJim Jagielski res &= checkLayer(Layers[i]); 170*b1cdbd2cSJim Jagielski } 171*b1cdbd2cSJim Jagielski if (Layers.length==0) { 172*b1cdbd2cSJim Jagielski System.out.println("No Layers found -- FAILED"); 173*b1cdbd2cSJim Jagielski res &= false; 174*b1cdbd2cSJim Jagielski } 175*b1cdbd2cSJim Jagielski } catch (com.sun.star.configuration.backend.BackendAccessException e) { 176*b1cdbd2cSJim Jagielski log.println("unexpected Exception " + e + " -- FAILED"); 177*b1cdbd2cSJim Jagielski res = false; 178*b1cdbd2cSJim Jagielski } catch (com.sun.star.lang.IllegalArgumentException e) { 179*b1cdbd2cSJim Jagielski log.println("unexpected Exception " + e + " -- FAILED"); 180*b1cdbd2cSJim Jagielski res = false; 181*b1cdbd2cSJim Jagielski } 182*b1cdbd2cSJim Jagielski 183*b1cdbd2cSJim Jagielski tRes.tested("listOwnLayers()", res); 184*b1cdbd2cSJim Jagielski } 185*b1cdbd2cSJim Jagielski checkLayer(XLayer aLayer)186*b1cdbd2cSJim Jagielski protected boolean checkLayer(XLayer aLayer) { 187*b1cdbd2cSJim Jagielski boolean res = false; 188*b1cdbd2cSJim Jagielski 189*b1cdbd2cSJim Jagielski log.println("Checking for Exception in case of null argument"); 190*b1cdbd2cSJim Jagielski 191*b1cdbd2cSJim Jagielski try { 192*b1cdbd2cSJim Jagielski aLayer.readData(null); 193*b1cdbd2cSJim Jagielski } catch (com.sun.star.lang.NullPointerException e) { 194*b1cdbd2cSJim Jagielski log.println("Expected Exception -- OK"); 195*b1cdbd2cSJim Jagielski res = true; 196*b1cdbd2cSJim Jagielski } catch (com.sun.star.lang.WrappedTargetException e) { 197*b1cdbd2cSJim Jagielski log.println("Unexpected Exception (" + e + ") -- FAILED"); 198*b1cdbd2cSJim Jagielski } catch (com.sun.star.configuration.backend.MalformedDataException e) { 199*b1cdbd2cSJim Jagielski log.println("Unexpected Exception (" + e + ") -- FAILED"); 200*b1cdbd2cSJim Jagielski } 201*b1cdbd2cSJim Jagielski 202*b1cdbd2cSJim Jagielski log.println("checking read data with own XLayerHandler implementation"); 203*b1cdbd2cSJim Jagielski 204*b1cdbd2cSJim Jagielski try { 205*b1cdbd2cSJim Jagielski XLayerHandlerImpl xLayerHandler = new XLayerHandlerImpl(); 206*b1cdbd2cSJim Jagielski aLayer.readData(xLayerHandler); 207*b1cdbd2cSJim Jagielski 208*b1cdbd2cSJim Jagielski String implCalled = xLayerHandler.getCalls(); 209*b1cdbd2cSJim Jagielski log.println(implCalled); 210*b1cdbd2cSJim Jagielski 211*b1cdbd2cSJim Jagielski int sl = implCalled.indexOf("startLayer"); 212*b1cdbd2cSJim Jagielski 213*b1cdbd2cSJim Jagielski if (sl < 0) { 214*b1cdbd2cSJim Jagielski log.println("startLayer wasn't called -- FAILED"); 215*b1cdbd2cSJim Jagielski res &= false; 216*b1cdbd2cSJim Jagielski } else { 217*b1cdbd2cSJim Jagielski log.println("startLayer was called -- OK"); 218*b1cdbd2cSJim Jagielski res &= true; 219*b1cdbd2cSJim Jagielski } 220*b1cdbd2cSJim Jagielski 221*b1cdbd2cSJim Jagielski int el = implCalled.indexOf("endLayer"); 222*b1cdbd2cSJim Jagielski 223*b1cdbd2cSJim Jagielski if (el < 0) { 224*b1cdbd2cSJim Jagielski log.println("endLayer wasn't called -- FAILED"); 225*b1cdbd2cSJim Jagielski res &= false; 226*b1cdbd2cSJim Jagielski } else { 227*b1cdbd2cSJim Jagielski log.println("endLayer was called -- OK"); 228*b1cdbd2cSJim Jagielski res &= true; 229*b1cdbd2cSJim Jagielski } 230*b1cdbd2cSJim Jagielski } catch (com.sun.star.lang.NullPointerException e) { 231*b1cdbd2cSJim Jagielski log.println("Unexpected Exception (" + e + ") -- FAILED"); 232*b1cdbd2cSJim Jagielski res &= false; 233*b1cdbd2cSJim Jagielski } catch (com.sun.star.lang.WrappedTargetException e) { 234*b1cdbd2cSJim Jagielski log.println("Unexpected Exception (" + e + ") -- FAILED"); 235*b1cdbd2cSJim Jagielski res &= false; 236*b1cdbd2cSJim Jagielski } catch (com.sun.star.configuration.backend.MalformedDataException e) { 237*b1cdbd2cSJim Jagielski log.println("Unexpected Exception (" + e + ") -- FAILED"); 238*b1cdbd2cSJim Jagielski res &= false; 239*b1cdbd2cSJim Jagielski } 240*b1cdbd2cSJim Jagielski 241*b1cdbd2cSJim Jagielski return res; 242*b1cdbd2cSJim Jagielski } 243*b1cdbd2cSJim Jagielski createStringSubstitution(XMultiServiceFactory xMSF)244*b1cdbd2cSJim Jagielski public static XStringSubstitution createStringSubstitution(XMultiServiceFactory xMSF) { 245*b1cdbd2cSJim Jagielski Object xPathSubst = null; 246*b1cdbd2cSJim Jagielski 247*b1cdbd2cSJim Jagielski try { 248*b1cdbd2cSJim Jagielski xPathSubst = xMSF.createInstance( 249*b1cdbd2cSJim Jagielski "com.sun.star.util.PathSubstitution"); 250*b1cdbd2cSJim Jagielski } catch (com.sun.star.uno.Exception e) { 251*b1cdbd2cSJim Jagielski e.printStackTrace(); 252*b1cdbd2cSJim Jagielski } 253*b1cdbd2cSJim Jagielski 254*b1cdbd2cSJim Jagielski if (xPathSubst != null) { 255*b1cdbd2cSJim Jagielski return (XStringSubstitution) UnoRuntime.queryInterface( 256*b1cdbd2cSJim Jagielski XStringSubstitution.class, xPathSubst); 257*b1cdbd2cSJim Jagielski } else { 258*b1cdbd2cSJim Jagielski return null; 259*b1cdbd2cSJim Jagielski } 260*b1cdbd2cSJim Jagielski } 261*b1cdbd2cSJim Jagielski }