| 301 | } |
| 302 | |
| 303 | @SuppressWarnings("unchecked") |
| 304 | public static boolean tupleEquals(Tuple expectedTuple, Tuple convertedTuple) { |
| 305 | if(expectedTuple == null) { |
| 306 | if(convertedTuple != null) { |
| 307 | return false; |
| 308 | } |
| 309 | } else { |
| 310 | if(convertedTuple == null) { |
| 311 | return false; |
| 312 | } |
| 313 | } |
| 314 | |
| 315 | if(expectedTuple.size() != convertedTuple.size()) { |
| 316 | return false; |
| 317 | } |
| 318 | |
| 319 | for(int i = 0; i < expectedTuple.size(); ++i) { |
| 320 | Object e ; |
| 321 | Object c ; |
| 322 | |
| 323 | try { |
| 324 | e = expectedTuple.get(i); |
| 325 | c = convertedTuple.get(i); |
| 326 | } catch (Exception e1) { |
| 327 | return false; |
| 328 | } |
| 329 | |
| 330 | if(e instanceof Map) { |
| 331 | Map<String, Object> eMap = (Map<String, Object>)e; |
| 332 | if(c instanceof Map) { |
| 333 | Map<String, Object> cMap = (Map<String, Object>)c; |
| 334 | if(!mapEquals(eMap, cMap)) { |
| 335 | return false; |
| 336 | } |
| 337 | } else { |
| 338 | return false; |
| 339 | } |
| 340 | } else if (e instanceof Tuple) { |
| 341 | if(c instanceof Tuple) { |
| 342 | if(!tupleEquals((Tuple)e, (Tuple)c)) { |
| 343 | return false; |
| 344 | } |
| 345 | } else { |
| 346 | return false; |
| 347 | } |
| 348 | } else if (e instanceof DataBag){ |
| 349 | if(c instanceof DataBag) { |
| 350 | if(!bagEquals((DataBag)e, (DataBag)c)) { |
| 351 | return false; |
| 352 | } |
| 353 | } else { |
| 354 | return false; |
| 355 | } |
| 356 | } else { |
| 357 | if(e == null) { |
| 358 | if(c != null) { |
| 359 | return false; |
| 360 | } |