Best SeLion code snippet using com.paypal.selion.platform.dataprovider.impl.XmlDataProviderImpl.getFilteredXml
Source:XmlDataProviderImpl.java
...66 Document doc = getDocument();67 Object[][][] multipleObjectDataProviders = new Object[resource.getXpathMap().size()][][];68 int i = 0;69 for (Entry<String, Class<?>> entry : resource.getXpathMap().entrySet()) {70 String xml = getFilteredXml(doc, entry.getKey());71 List<?> object = loadDataFromXml(xml, entry.getValue());72 Object[][] objectDataProvider = DataProviderHelper.convertToObjectArray(object);73 multipleObjectDataProviders[i++] = objectDataProvider;74 }75 objectArray = DataProviderHelper.getAllDataMultipleArgs(multipleObjectDataProviders);76 } else {77 List<?> objectList = loadDataFromXmlFile();78 objectArray = DataProviderHelper.convertToObjectArray(objectList);79 }80 // Passing no arguments to exiting() because implementation to print 2D array could be highly recursive.81 logger.exiting();82 return objectArray;83 }84 /**85 * Generates an object array in iterator as TestNG DataProvider from the XML data filtered per {@code dataFilter}.86 *87 * @param dataFilter88 * an implementation class of {@link DataProviderFilter}89 * @return An iterator over a collection of Object Array to be used with TestNG DataProvider90 */91 @Override92 public Iterator<Object[]> getDataByFilter(DataProviderFilter dataFilter) {93 logger.entering(new Object[] { resource, dataFilter });94 List<Object[]> allObjs = getDataListByFilter(dataFilter);95 return allObjs.iterator();96 }97 /**98 * Generates an objects in List from the XML data filtered per {@code dataFilter}.99 *100 * @param dataFilter an implementation class of {@link DataProviderFilter}101 * @return List of objects102 */103 private List<Object[]> getDataListByFilter(DataProviderFilter dataFilter) {104 logger.entering(dataFilter);105 List<Object[]> allObjs = new ArrayList<>();106 if ((null == resource.getCls()) && (null != resource.getXpathMap())) {107 Document doc = getDocument();108 for (Entry<String, Class<?>> entry : resource.getXpathMap().entrySet()) {109 String xml = getFilteredXml(doc, entry.getKey());110 List<?> objectList = loadDataFromXml(xml, entry.getValue());111 List<Object[]> singleResourceObjs = DataProviderHelper.filterToListOfObjects(objectList, dataFilter);112 allObjs.addAll(singleResourceObjs);113 }114 } else {115 List<?> objectList = loadDataFromXmlFile();116 allObjs = DataProviderHelper.filterToListOfObjects(objectList, dataFilter);117 }118 logger.exiting(allObjs);119 return allObjs;120 }121 /**122 * Generates an object array in iterator as TestNG DataProvider from the XML data filtered per given indexes string.123 * This method may throw {@link DataProviderException} when an unexpected error occurs during data provision from124 * XML file.125 *126 * @param filterIndexes127 * The indexes for which data is to be fetched as a conforming string pattern.128 *129 * @return An Object[][] object to be used with TestNG DataProvider.130 */131 @Override132 public Object[][] getDataByIndex(String filterIndexes) {133 logger.entering(filterIndexes);134 SimpleIndexInclusionFilter filter = new SimpleIndexInclusionFilter(filterIndexes);135 List<Object[]> objectList = getDataListByFilter(filter);136 Object[][] objectArray = DataProviderHelper.convertToObjectArray(objectList);137 logger.exiting((Object[]) objectArray);138 return objectArray;139 }140 /**141 * Generates an object array in iterator as TestNG DataProvider from the XML data filtered per given indexes. This142 * method may throw {@link DataProviderException} when an unexpected error occurs during data provision from XML143 * file.144 *145 * @param indexes146 * The indexes for which data is to be fetched as a conforming string pattern.147 *148 * @return An Object[][] object to be used with TestNG DataProvider.149 */150 @Override151 public Object[][] getDataByIndex(int[] indexes) {152 logger.entering(indexes);153 SimpleIndexInclusionFilter filter = new SimpleIndexInclusionFilter(indexes);154 List<Object[]> objectList = getDataListByFilter(filter);155 Object[][] objectArray = DataProviderHelper.convertToObjectArray(objectList);156 logger.exiting((Object[]) objectArray);157 return objectArray;158 }159 /**160 * Generates a two dimensional array for TestNG DataProvider from the XML data representing a map of name value161 * collection.162 *163 * This method needs the referenced {@link DataResource} to be instantiated using its constructors with164 * parameter {@code Class<?> cls} and set to {@code KeyValueMap.class}. The implementation in this method is tightly165 * coupled with {@link KeyValueMap} and {@link KeyValuePair}.166 *167 * The hierarchy and name of the nodes are strictly as instructed. A name value pair should be represented as nodes168 * 'key' and 'value' as child nodes contained in a parent node named 'item'. A sample data with proper tag names is169 * shown here as an example:170 *171 * <pre>172 * <items>173 * <item>174 * <key>k1</key>175 * <value>val1</value>176 * </item>177 * <item>178 * <key>k2</key>179 * <value>val2</value>180 * </item>181 * <item>182 * <key>k3</key>183 * <value>val3</value>184 * </item>185 * </items>186 * </pre>187 *188 * @return A two dimensional object array.189 */190 @Override191 public Object[][] getAllKeyValueData() {192 logger.entering();193 Object[][] objectArray;194 try {195 JAXBContext context = JAXBContext.newInstance(resource.getCls());196 Unmarshaller unmarshaller = context.createUnmarshaller();197 StreamSource xmlStreamSource = new StreamSource(resource.getInputStream());198 Map<String, KeyValuePair> keyValueItems = unmarshaller199 .unmarshal(xmlStreamSource, KeyValueMap.class).getValue().getMap();200 objectArray = DataProviderHelper.convertToObjectArray(keyValueItems);201 } catch (JAXBException excp) {202 throw new DataProviderException("Error unmarshalling XML file.", excp);203 }204 // Passing no arguments to exiting() because implementation to print 2D array could be highly recursive.205 logger.exiting();206 return objectArray;207 }208 /**209 * Generates a two dimensional array for TestNG DataProvider from the XML data representing a map of name value210 * collection filtered by keys.211 *212 * A name value item should use the node name 'item' and a specific child structure since the implementation depends213 * on {@link KeyValuePair} class. The structure of an item in collection is shown below where 'key' and 'value' are214 * child nodes contained in a parent node named 'item':215 *216 * <pre>217 * <items>218 * <item>219 * <key>k1</key>220 * <value>val1</value>221 * </item>222 * <item>223 * <key>k2</key>224 * <value>val2</value>225 * </item>226 * <item>227 * <key>k3</key>228 * <value>val3</value>229 * </item>230 * </items>231 * </pre>232 *233 * @param keys234 * The string keys to filter the data.235 * @return A two dimensional object array.236 */237 @Override238 public Object[][] getDataByKeys(String[] keys) {239 logger.entering(Arrays.toString(keys));240 if (null == resource.getCls()) {241 resource.setCls(KeyValueMap.class);242 }243 Object[][] objectArray;244 try {245 JAXBContext context = JAXBContext.newInstance(resource.getCls());246 Unmarshaller unmarshaller = context.createUnmarshaller();247 StreamSource xmlStreamSource = new StreamSource(resource.getInputStream());248 Map<String, KeyValuePair> keyValueItems = unmarshaller249 .unmarshal(xmlStreamSource, KeyValueMap.class).getValue().getMap();250 objectArray = DataProviderHelper.getDataByKeys(keyValueItems, keys);251 } catch (JAXBException excp) {252 logger.exiting(excp.getMessage());253 throw new DataProviderException("Error unmarshalling XML file.", excp);254 }255 // Passing no arguments to exiting() because implementation to print 2D array could be highly recursive.256 logger.exiting();257 return objectArray;258 }259 /**260 * Gets xml data and returns in a hashtable instead of an Object 2D array. Only compatible with a xml file261 * formatted to return a map. <br>262 * <br>263 * XML file example:264 *265 * <pre>266 * <items>267 * <item>268 * <key>k1</key>269 * <value>val1</value>270 * </item>271 * <item>272 * <key>k2</key>273 * <value>val2</value>274 * </item>275 * <item>276 * <key>k3</key>277 * <value>val3</value>278 * </item>279 * </items>280 * </pre>281 *282 * @return xml data in form of a Hashtable.283 */284 @Override285 public Hashtable<String, Object> getDataAsHashtable() {286 logger.entering();287 if (null == resource.getCls()) {288 resource.setCls(KeyValueMap.class);289 }290 Hashtable<String, Object> dataHashTable = new Hashtable<>();291 try {292 JAXBContext context = JAXBContext.newInstance(resource.getCls());293 Unmarshaller unmarshaller = context.createUnmarshaller();294 StreamSource xmlStreamSource = new StreamSource(resource.getInputStream());295 Map<String, KeyValuePair> keyValueItems = unmarshaller296 .unmarshal(xmlStreamSource, KeyValueMap.class).getValue().getMap();297 for (Entry<?, ?> entry : keyValueItems.entrySet()) {298 dataHashTable.put((String) entry.getKey(), entry.getValue());299 }300 } catch (JAXBException excp) {301 logger.exiting(excp.getMessage());302 throw new DataProviderException("Error unmarshalling XML file.", excp);303 }304 logger.exiting();305 return dataHashTable;306 }307 /**308 * Generates a list of the declared type after parsing the XML file.309 *310 * @return A {@link List} of object of declared type {@link XmlFileSystemResource#getCls()}.311 */312 private List<?> loadDataFromXmlFile() {313 logger.entering();314 Preconditions.checkArgument(resource.getCls() != null, "Please provide a valid type.");315 List<?> returned;316 try {317 JAXBContext context = JAXBContext.newInstance(Wrapper.class, resource.getCls());318 Unmarshaller unmarshaller = context.createUnmarshaller();319 StreamSource xmlStreamSource = new StreamSource(resource.getInputStream());320 Wrapper<?> wrapper = unmarshaller.unmarshal(xmlStreamSource, Wrapper.class).getValue();321 returned = wrapper.getList();322 } catch (JAXBException excp) {323 logger.exiting(excp.getMessage());324 throw new DataProviderException("Error unmarshalling XML file.", excp);325 }326 logger.exiting(returned);327 return returned;328 }329 /**330 * Generates a list of the declared type after parsing the XML data string.331 *332 * @param xml333 * String containing the XML data.334 * @param cls335 * The declared type modeled by the XML content.336 * @return A {@link List} of object of declared type {@link XmlFileSystemResource#getCls()}.337 */338 private List<?> loadDataFromXml(String xml, Class<?> cls) {339 logger.entering(new Object[] { xml, cls });340 Preconditions.checkArgument(cls != null, "Please provide a valid type.");341 List<?> returned;342 try {343 JAXBContext context = JAXBContext.newInstance(Wrapper.class, cls);344 Unmarshaller unmarshaller = context.createUnmarshaller();345 StringReader xmlStringReader = new StringReader(xml);346 StreamSource streamSource = new StreamSource(xmlStringReader);347 Wrapper<?> wrapper = unmarshaller.unmarshal(streamSource, Wrapper.class).getValue();348 returned = wrapper.getList();349 } catch (JAXBException excp) {350 logger.exiting(excp.getMessage());351 throw new DataProviderException("Error unmarshalling XML string.", excp);352 }353 logger.exiting(returned);354 return returned;355 }356 /**357 * Loads the XML data from the {@link XmlFileSystemResource} into a {@link org.dom4j.Document}.358 *359 * @return A Document object.360 */361 private Document getDocument() {362 logger.entering();363 DOMDocumentFactory domFactory = new DOMDocumentFactory();364 SAXReader reader = new SAXReader(domFactory);365 Document doc;366 try {367 doc = reader.read(resource.getInputStream());368 } catch (DocumentException excp) {369 logger.exiting(excp.getMessage());370 throw new DataProviderException("Error reading XML data.", excp);371 }372 logger.exiting(doc.asXML());373 return doc;374 }375 /**376 * Generates an XML string containing only the nodes filtered by the XPath expression.377 *378 * @param document379 * An XML {@link org.dom4j.Document}380 * @param xpathExpression381 * A string indicating the XPath expression to be evaluated.382 * @return A string of XML data with root node named "root".383 */384 @SuppressWarnings("unchecked")385 private String getFilteredXml(Document document, String xpathExpression) {386 logger.entering(new Object[] { document, xpathExpression });387 List<Node> nodes = (List<Node>) document.selectNodes(xpathExpression);388 StringBuilder newDocument = new StringBuilder(document.asXML().length());389 newDocument.append("<root>");390 for (Node n : nodes) {391 newDocument.append(n.asXML());392 }393 newDocument.append("</root>");394 logger.exiting(newDocument);395 return newDocument.toString();396 }397}...
getFilteredXml
Using AI Code Generation
1XmlDataProviderImpl xmlDataProviderImpl = new XmlDataProviderImpl();2xmlDataProviderImpl.getFilteredXml("path to xml file", "xpath expression");3XmlDataProviderImpl xmlDataProviderImpl = new XmlDataProviderImpl();4xmlDataProviderImpl.getFilteredXml("path to xml file", "xpath expression", "name of the attribute");5XmlDataProviderImpl xmlDataProviderImpl = new XmlDataProviderImpl();6xmlDataProviderImpl.getFilteredXml("path to xml file", "xpath expression", "name of the attribute", "value of the attribute");7XmlDataProviderImpl xmlDataProviderImpl = new XmlDataProviderImpl();8xmlDataProviderImpl.getFilteredXml("path to xml file", "xpath expression", "name of the attribute", "value of the attribute", "name of the attribute", "value of the attribute");9XmlDataProviderImpl xmlDataProviderImpl = new XmlDataProviderImpl();10xmlDataProviderImpl.getFilteredXml("path to xml file", "xpath expression", "name of the attribute", "value of the attribute", "name of the attribute", "value of the attribute", "name of the attribute", "value of the attribute");11XmlDataProviderImpl xmlDataProviderImpl = new XmlDataProviderImpl();12xmlDataProviderImpl.getFilteredXml("path to xml file", "xpath expression", "name of the attribute", "value of the attribute", "name of the attribute", "value of the attribute", "name of the attribute", "value of the attribute", "name of the attribute", "value of the attribute");13XmlDataProviderImpl xmlDataProviderImpl = new XmlDataProviderImpl();
getFilteredXml
Using AI Code Generation
1XmlDataProviderImpl xmlDataProvider = new XmlDataProviderImpl();2xmlDataProvider.getFilteredXml("src/test/resources/testng.xml", "src/test/resources/testng.xml", "test", "test");3XmlDataProviderImpl xmlDataProvider = new XmlDataProviderImpl();4xmlDataProvider.getFilteredXml("src/test/resources/testng.xml", "src/test/resources/testng.xml", "test", "test", "test");5XmlDataProviderImpl xmlDataProvider = new XmlDataProviderImpl();6xmlDataProvider.getFilteredXml("src/test/resources/testng.xml", "src/test/resources/testng.xml", "test", "test", "test", "test");7XmlDataProviderImpl xmlDataProvider = new XmlDataProviderImpl();8xmlDataProvider.getFilteredXml("src/test/resources/testng.xml", "src/test/resources/testng.xml", "test", "test", "test", "test", "test");9XmlDataProviderImpl xmlDataProvider = new XmlDataProviderImpl();10xmlDataProvider.getFilteredXml("src/test/resources/testng.xml", "src/test/resources/testng.xml", "test", "test", "test", "test", "test", "test");11XmlDataProviderImpl xmlDataProvider = new XmlDataProviderImpl();12xmlDataProvider.getFilteredXml("src/test/resources/testng.xml", "src/test/resources/testng.xml", "test", "test", "test", "test", "test", "test", "test");13XmlDataProviderImpl xmlDataProvider = new XmlDataProviderImpl();14xmlDataProvider.getFilteredXml("src/test/resources/testng.xml", "src/test/resources/testng.xml", "test", "test", "test", "test", "test", "test", "test", "test");15XmlDataProviderImpl xmlDataProvider = new XmlDataProviderImpl();16xmlDataProvider.getFilteredXml("src/test/resources/testng.xml", "src/test/resources/testng.xml", "test", "test", "test", "test", "test", "test", "test", "test", "test");17XmlDataProviderImpl xmlDataProvider = new XmlDataProviderImpl();18xmlDataProvider.getFilteredXml("src/test/resources/testng.xml", "src/test/resources/testng.xml", "test", "test", "test", "test", "test", "test", "test", "test", "test", "test");19XmlDataProviderImpl xmlDataProvider = new XmlDataProviderImpl();20xmlDataProvider.getFilteredXml("src/test/resources/testng.xml", "src/test/resources/testng.xml", "test", "test", "test", "test", "test", "
getFilteredXml
Using AI Code Generation
1XmlDataProviderImpl xmlDataProvider = new XmlDataProviderImpl();2xmlDataProvider.getFilteredXml("path/to/xml/file.xml", "xpath/to/element", "attributeName", "valueToMatch");3XmlDataProviderImpl xmlDataProvider = new XmlDataProviderImpl();4xmlDataProvider.getFilteredXml("path/to/xml/file.xml", "xpath/to/element", "attributeName", "valueToMatch", "attributeName", "valueToMatch");5XmlDataProviderImpl xmlDataProvider = new XmlDataProviderImpl();6xmlDataProvider.getFilteredXml("path/to/xml/file.xml", "xpath/to/element", "attributeName", "valueToMatch", "attributeName", "valueToMatch", "attributeName", "valueToMatch");7@Test(dataProvider = "XmlDataProvider", dataProviderClass = XmlDataProviderImpl.class)8public void testMethod1(String value1, String value2) {9}10@Test(dataProvider = "XmlDataProvider", dataProviderClass = XmlDataProviderImpl.class)11public void testMethod2(String value1, String value2, String value3) {12}13@Test(dataProvider = "XmlDataProvider", dataProviderClass = XmlDataProviderImpl.class)14public void testMethod3(String value1, String value2, String value3, String value4) {15}16@Test(dataProvider = "XmlDataProvider", dataProviderClass = XmlDataProviderImpl.class)17public void testMethod4(String value1, String value2, String
getFilteredXml
Using AI Code Generation
1XmlDataProviderImpl xmlProvider = new XmlDataProviderImpl();2String filteredXml = xmlProvider.getFilteredXml("src/test/resources/DataProvider.xml", "test", "test2");3XmlDataProviderImpl xmlProvider = new XmlDataProviderImpl();4String filteredXml = xmlProvider.getFilteredXml("src/test/resources/DataProvider.xml", "test", "test2", "test3");5XmlDataProviderImpl xmlProvider = new XmlDataProviderImpl();6String filteredXml = xmlProvider.getFilteredXml("src/test/resources/DataProvider.xml", "test", "test2", "test3", "test4");7XmlDataProviderImpl xmlProvider = new XmlDataProviderImpl();8String filteredXml = xmlProvider.getFilteredXml("src/test/resources/DataProvider.xml", "test", "test2", "test3", "test4", "test5");9XmlDataProviderImpl xmlProvider = new XmlDataProviderImpl();10String filteredXml = xmlProvider.getFilteredXml("src/test/resources/DataProvider.xml", "test", "test2", "test3", "test4", "test5", "test6");11XmlDataProviderImpl xmlProvider = new XmlDataProviderImpl();12String filteredXml = xmlProvider.getFilteredXml("src/test/resources/DataProvider.xml", "test", "test2", "test3", "test4", "test5", "test6", "test7");13XmlDataProviderImpl xmlProvider = new XmlDataProviderImpl();14String filteredXml = xmlProvider.getFilteredXml("src/test/resources/DataProvider.xml", "test", "test2", "test3", "test4", "test5", "test6", "test7", "test8");
getFilteredXml
Using AI Code Generation
1XmlDataProviderImpl dataProvider = new XmlDataProviderImpl();2System.out.println(data);3XmlDataProviderImpl dataProvider = new XmlDataProviderImpl();4System.out.println(data);5XmlDataProviderImpl dataProvider = new XmlDataProviderImpl();6System.out.println(data);7XmlDataProviderImpl dataProvider = new XmlDataProviderImpl();8System.out.println(data);
getFilteredXml
Using AI Code Generation
1String xml = new XmlDataProviderImpl().getFilteredXml("src/test/resources/dataprovider/XmlDataProviderTest.xml", "test", "test1");2System.out.println(xml);3String xml = new XmlDataProviderImpl().getFilteredXml("src/test/resources/dataprovider/XmlDataProviderTest.xml", "test", "test2");4System.out.println(xml);5String xml = new XmlDataProviderImpl().getFilteredXml("src/test/resources/dataprovider/XmlDataProviderTest.xml", "test", "test3");6System.out.println(xml);7String xml = new XmlDataProviderImpl().getFilteredXml("src/test/resources/dataprovider/XmlDataProviderTest.xml", "test", "test4");8System.out.println(xml);9String xml = new XmlDataProviderImpl().getFilteredXml("src/test/resources/dataprovider/XmlDataProviderTest.xml", "test", "test5");10System.out.println(xml);
getFilteredXml
Using AI Code Generation
1XmlDataProviderImpl xmlDataProviderImpl = new XmlDataProviderImpl();2String filteredXml = xmlDataProviderImpl.getFilteredXml("path/to/file", "xpath", "value");3Document filteredXmlDocument = xmlDataProviderImpl.getFilteredXmlAsDocument("path/to/file", "xpath", "value");4+package com.paypal.selion.platform.dataprovider.impl;5+import java.io.File;6+import java.io.IOException;7+import java.util.ArrayList;8+import java.util.List;9+import org.apache.commons.io.FileUtils;10+import org.testng.annotations.Test;11+public class XmlDataProviderImplTest {12+ private static final String XML_FILE_PATH = "src/test/resources/testdata/test.xml";13+ private static final String XML_FILE_PATH_2 = "src/test/resources/testdata/test2.xml";14+}15+package com.paypal.selion.platform.dataprovider.impl;16+import java.util.ArrayList;17+import java.util.List;18+import org.testng.Assert;19+import org.testng.annotations.Test;20+public class XmlDataProviderImplTest {21+ private static final String XML_FILE_PATH = "src/test/resources/testdata/test.xml";22+ private static final String XML_FILE_PATH_2 = "src/test/resources/testdata/test2.xml";23+ public void testGetFilteredXml() {24+ XmlDataProviderImpl xmlDataProviderImpl = new XmlDataProviderImpl();25+ Assert.assertTrue(filteredXml.contains("child2"));26+ Assert.assertFalse(filteredXml.contains("child1"));27+ }28+}29+package com.paypal.selion.platform.dataprovider.impl;30+import java.util.ArrayList;31+import java.util.List;32+import org.testng.Assert;33+import org.testng.annotations.Test;34+public class XmlDataProviderImplTest {35+ private static final String XML_FILE_PATH = "src/test/resources/testdata/test.xml";36+ private static final String XML_FILE_PATH_2 = "src/test/resources/testdata/test2.xml";37+ public void testGetFilteredXmlAsDocument() {
Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!