@Override protected StreamEntity<D> buildClone() { try { return new RecordEnvelope<>((D) CopyHelper.copy(_record), this, false); } catch (CopyNotSupportedException cnse) { throw new UnsupportedOperationException(cnse); } }
@Override public GlobalMetadata<S> copy() throws CopyNotSupportedException { if (CopyHelper.isCopyable(schema)) { return new GlobalMetadata((S)CopyHelper.copy(schema)); } throw new CopyNotSupportedException("Type is not copyable: " + schema.getClass().getName()); }
@Test public void testUnsupportedTypes() throws CopyNotSupportedException { Object foobar = mock(ByteArrayInputStream.class); try { CopyHelper.copy(foobar); Assert.fail("Should throw exception"); } catch (CopyNotSupportedException cnse) { } catch (Exception e) { Assert.fail("Should not throw any exception other than CopyNotSupportedException. ", e); } }
@Test public void testByteArray() throws CopyNotSupportedException { int length = RANDOM.nextInt(200); byte[] bytes = new byte[length]; RANDOM.nextBytes(bytes); Assert.assertTrue(CopyHelper.isCopyable(bytes)); byte[] copiedBytes = (byte[]) CopyHelper.copy(bytes); Assert.assertTrue(copiedBytes != bytes, "Copied bytes reference should be different for every copy after that"); Assert.assertEquals(copiedBytes, bytes, "Copied bytes value should be the same"); }
@Test public void testCopyable() throws CopyNotSupportedException { Copyable c = mock(Copyable.class); Assert.assertTrue(CopyHelper.isCopyable(c)); Object copy = new Object(); when(c.copy()).thenReturn(copy); Assert.assertEquals(CopyHelper.copy(c), copy); Assert.assertEquals(CopyHelper.copy(c), copy); }
@Test public void testImmutables() throws CopyNotSupportedException { Object nullObject = null; Integer integer = RANDOM.nextInt(200); byte[] bytes = new byte[integer]; RANDOM.nextBytes(bytes); String string = new String(bytes); Long longNum = RANDOM.nextLong(); Object[] immutables = new Object[]{nullObject, integer, string, longNum}; for (Object immutable : immutables) { Assert.assertTrue(CopyHelper.isCopyable(immutable)); for (int i=0; i < 2; ++i) { Object copiedObject = CopyHelper.copy(immutable); Assert.assertEquals(copiedObject, immutable); } } }
for (Optional<Fork> fork : this.forks.keySet()) { if (fork.isPresent() && forkedRecords.get(branch)) { Object recordForFork = needToCopy ? CopyHelper.copy(convertedRecord) : convertedRecord; copyInstance++; if (isStreamingTask()) {
forkedStream.filter(new ForkFilter<>(idx)).map(RecordWithForkMap::getRecordCopyIfNecessary); forkStreams.add(inputStream.withRecordStream(thisStream, mustCopy ? (GlobalMetadata<S>) CopyHelper.copy(inputStream.getGlobalMetadata()) : inputStream.getGlobalMetadata())); } else {
@Override protected StreamEntity<D> buildClone() { try { return new RecordEnvelope<>((D) CopyHelper.copy(_record), this, false); } catch (CopyNotSupportedException cnse) { throw new UnsupportedOperationException(cnse); } }
@Override public GlobalMetadata<S> copy() throws CopyNotSupportedException { if (CopyHelper.isCopyable(schema)) { return new GlobalMetadata((S)CopyHelper.copy(schema)); } throw new CopyNotSupportedException("Type is not copyable: " + schema.getClass().getName()); }
for (Optional<Fork> fork : this.forks.keySet()) { if (fork.isPresent() && forkedRecords.get(branch)) { Object recordForFork = needToCopy ? CopyHelper.copy(convertedRecord) : convertedRecord; copyInstance++; if (isStreamingTask()) {
forkedStream.filter(new ForkFilter<>(idx)).map(RecordWithForkMap::getRecordCopyIfNecessary); forkStreams.add(inputStream.withRecordStream(thisStream, mustCopy ? (GlobalMetadata<S>) CopyHelper.copy(inputStream.getGlobalMetadata()) : inputStream.getGlobalMetadata())); } else {