/** * @param it Iterator. * @param bound Value bound. * @throws Exception If failed. */ private void testIteratorSerialization(Iterator<?> it, int bound) throws Exception { ByteArrayOutputStream byteOut = new ByteArrayOutputStream(); try (ObjectOutputStream out = new ObjectOutputStream(byteOut)) { out.writeObject(it); } byte[] bytes = byteOut.toByteArray(); ObjectInputStream in = new ObjectInputStream(new ByteArrayInputStream(bytes)); Iterator<?> it0 = (Iterator<?>) in.readObject(); int cnt = 0; while (it0.hasNext()) { Object obj = it0.next(); if (obj instanceof GridCacheEntry) checkEntry((GridCacheEntry<String, Integer>) obj, bound); else if (obj instanceof String) checkKey((String) obj); else if (obj instanceof Integer) checkValue((Integer) obj, bound); else assert false : "Wrong type."; cnt++; } assert cnt == bound; }
/** {@inheritDoc} */ @Override public Class<?> deployClass() { if (cls == null) { Class<?> cls0 = null; if (depCls != null) cls0 = depCls; else { for (Iterator<Object> it = objs.iterator(); (cls0 == null || U.isJdk(cls0)) && it.hasNext(); ) { Object o = it.next(); if (o != null) cls0 = U.detectClass(o); } if (cls0 == null || U.isJdk(cls0)) cls0 = GridDataLoaderImpl.class; } assert cls0 != null : "Failed to detect deploy class [objs=" + objs + ']'; cls = cls0; } return cls; }