How to use DataProviderException class of com.paypal.selion.platform.dataprovider package

Best SeLion code snippet using com.paypal.selion.platform.dataprovider.DataProviderException

Source:XmlDataProviderImpl.java Github

copy

Full Screen

...31import org.dom4j.dom.DOMDocumentFactory;32import org.dom4j.io.SAXReader;33import com.google.common.base.Preconditions;34import com.paypal.selion.logger.SeLionLogger;35import com.paypal.selion.platform.dataprovider.DataProviderException;36import com.paypal.selion.platform.dataprovider.DataResource;37import com.paypal.selion.platform.dataprovider.XmlDataProvider;38import com.paypal.selion.platform.dataprovider.XmlDataSource;39import com.paypal.selion.platform.dataprovider.filter.DataProviderFilter;40import com.paypal.selion.platform.dataprovider.filter.SimpleIndexInclusionFilter;41import com.paypal.selion.platform.dataprovider.pojos.KeyValueMap;42import com.paypal.selion.platform.dataprovider.pojos.KeyValuePair;43import com.paypal.test.utilities.logging.SimpleLogger;44/**45 * This class provides several methods to retrieve test data from XML files. Users can get data returned in an Object 2D46 * array by loading the XML file. If the entire XML file is not needed then specific data entries can be retrieved by47 * indexes.48 *49 */50public final class XmlDataProviderImpl implements XmlDataProvider {51 private static SimpleLogger logger = SeLionLogger.getLogger();52 private final XmlDataSource resource;53 public XmlDataProviderImpl(XmlDataSource resource) {54 this.resource = resource;55 }56 /**57 * Generates a two dimensional array for TestNG DataProvider from the XML data.58 *59 * @return A two dimensional object array.60 */61 @Override62 public Object[][] getAllData() {63 logger.entering();64 Object[][] objectArray;65 if ((null == resource.getCls()) && (null != resource.getXpathMap())) {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")...

Full Screen

Full Screen

DataProviderException

Using AI Code Generation

copy

Full Screen

1import com.paypal.selion.platform.dataprovider.DataProviderException;2import com.paypal.selion.platform.dataprovider.DataProviderException;3import com.paypal.selion.platform.dataprovider.DataProviderException;4import com.paypal.selion.platform.dataprovider.DataProviderException;5import com.paypal.selion.platform.dataprovider.DataProviderException;6import com.paypal.selion.platform.dataprovider.DataProviderException;7import com.paypal.selion.platform.dataprovider.DataProviderException;8import com.paypal.selion.platform.dataprovider.DataProviderException;9import com.paypal.selion.platform.dataprovider.DataProviderException;10import com.paypal.selion.platform.dataprovider.DataProviderException;11import com.paypal.selion.platform.dataprovider.DataProviderException;12import com.paypal.selion.platform.dataprovider.DataProviderException;13import com.paypal.selion.platform.dataprovider.DataProviderException;14import com.paypal.selion.platform.dataprovider.DataProviderException;15import com.paypal.selion.platform.dataprovider.DataProviderException;

Full Screen

Full Screen

DataProviderException

Using AI Code Generation

copy

Full Screen

1import com.paypal.selion.platform.dataprovider.DataProviderException;2import com.paypal.selion.platform.dataprovider.impl.ExcelDataProviderImpl;3import com.paypal.selion.platform.dataprovider.impl.JsonDataProviderImpl;4import com.paypal.selion.platform.dataprovider.impl.XMLDataProviderImpl;5import com.paypal.selion.platform.dataprovider.impl.YamlDataProviderImpl;6public class DataProviderExceptionExample {7 public static void main(String[] args) throws DataProviderException {8 JsonDataProviderImpl jsonDataProvider = new JsonDataProviderImpl();9 jsonDataProvider.getTestData("testData.json", "Sheet1", "test1");10 ExcelDataProviderImpl excelDataProvider = new ExcelDataProviderImpl();11 excelDataProvider.getTestData("testData.xls", "Sheet1", "test1");12 XMLDataProviderImpl xmlDataProvider = new XMLDataProviderImpl();13 xmlDataProvider.getTestData("testData.xml", "Sheet1", "test1");14 YamlDataProviderImpl yamlDataProvider = new YamlDataProviderImpl();15 yamlDataProvider.getTestData("testData.yml", "Sheet1", "test1");16 }17}18 at com.paypal.selion.platform.dataprovider.impl.JsonDataProviderImpl.getTestData(JsonDataProviderImpl.java:69)19 at com.paypal.selion.platform.dataprovider.DataProviderExceptionExample.main(DataProviderExceptionExample.java:15)20Caused by: java.io.FileNotFoundException: testData.json (No such file or directory)21 at java.io.FileInputStream.open0(Native Method)22 at java.io.FileInputStream.open(FileInputStream.java:195)23 at java.io.FileInputStream.<init>(FileInputStream.java:138)24 at java.io.FileInputStream.<init>(FileInputStream.java:93)25 at com.paypal.selion.platform.dataprovider.impl.JsonDataProviderImpl.getTestData(JsonDataProviderImpl.java:65)

Full Screen

Full Screen

Automation Testing Tutorials

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.

LambdaTest Learning Hubs:

YouTube

You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.

Run SeLion automation tests on LambdaTest cloud grid

Perform automation testing on 3000+ real desktop and mobile devices online.

Most used methods in DataProviderException

Test Your Web Or Mobile Apps On 3000+ Browsers

Signup for free

Try LambdaTest Now !!

Get 100 minutes of automation test minutes FREE!!

Next-Gen App & Browser Testing Cloud

Was this article helpful?

Helpful

NotHelpful