KV<Serde, Serde> getOrCreateTableSerdes(String tableId, KVSerde kvSerde) { Serde keySerde, valueSerde; keySerde = kvSerde.getKeySerde(); valueSerde = kvSerde.getValueSerde(); if (!tableSerdes.containsKey(tableId)) { tableSerdes.put(tableId, KV.of(keySerde, valueSerde)); return tableSerdes.get(tableId); } KV<Serde, Serde> currentSerdePair = tableSerdes.get(tableId); if (!currentSerdePair.getKey().equals(keySerde) || !currentSerdePair.getValue().equals(valueSerde)) { throw new IllegalArgumentException(String.format("Serde for table %s is already defined. Cannot change it to " + "different serdes.", tableId)); } return streamSerdes.get(tableId); }
KV<Serde, Serde> getOrCreateTableSerdes(String tableId, KVSerde kvSerde) { Serde keySerde, valueSerde; keySerde = kvSerde.getKeySerde(); valueSerde = kvSerde.getValueSerde(); if (!tableSerdes.containsKey(tableId)) { tableSerdes.put(tableId, KV.of(keySerde, valueSerde)); return tableSerdes.get(tableId); } KV<Serde, Serde> currentSerdePair = tableSerdes.get(tableId); if (!currentSerdePair.getKey().equals(keySerde) || !currentSerdePair.getValue().equals(valueSerde)) { throw new IllegalArgumentException(String.format("Serde for table %s is already defined. Cannot change it to " + "different serdes.", tableId)); } return streamSerdes.get(tableId); }
KV<Serde, Serde> getOrCreateTableSerdes(String tableId, KVSerde kvSerde) { Serde keySerde, valueSerde; keySerde = kvSerde.getKeySerde(); valueSerde = kvSerde.getValueSerde(); if (!tableSerdes.containsKey(tableId)) { tableSerdes.put(tableId, KV.of(keySerde, valueSerde)); return tableSerdes.get(tableId); } KV<Serde, Serde> currentSerdePair = tableSerdes.get(tableId); if (!currentSerdePair.getKey().equals(keySerde) || !currentSerdePair.getValue().equals(valueSerde)) { throw new IllegalArgumentException(String.format("Serde for table %s is already defined. Cannot change it to " + "different serdes.", tableId)); } return streamSerdes.get(tableId); }
KV<Serde, Serde> getOrCreateTableSerdes(String tableId, KVSerde kvSerde) { Serde keySerde, valueSerde; keySerde = kvSerde.getKeySerde(); valueSerde = kvSerde.getValueSerde(); if (!tableSerdes.containsKey(tableId)) { tableSerdes.put(tableId, KV.of(keySerde, valueSerde)); return tableSerdes.get(tableId); } KV<Serde, Serde> currentSerdePair = tableSerdes.get(tableId); if (!currentSerdePair.getKey().equals(keySerde) || !currentSerdePair.getValue().equals(valueSerde)) { throw new IllegalArgumentException(String.format("Serde for table %s is already defined. Cannot change it to " + "different serdes.", tableId)); } return streamSerdes.get(tableId); }
KV<Serde, Serde> getOrCreateTableSerdes(String tableId, KVSerde kvSerde) { Serde keySerde, valueSerde; keySerde = kvSerde.getKeySerde(); valueSerde = kvSerde.getValueSerde(); if (!tableSerdes.containsKey(tableId)) { tableSerdes.put(tableId, KV.of(keySerde, valueSerde)); return tableSerdes.get(tableId); } KV<Serde, Serde> currentSerdePair = tableSerdes.get(tableId); if (!currentSerdePair.getKey().equals(keySerde) || !currentSerdePair.getValue().equals(valueSerde)) { throw new IllegalArgumentException(String.format("Serde for table %s is already defined. Cannot change it to " + "different serdes.", tableId)); } return streamSerdes.get(tableId); }
KV<Serde, Serde> getOrCreateStreamSerdes(String streamId, Serde serde) { Serde keySerde, valueSerde; KV<Serde, Serde> currentSerdePair = streamSerdes.get(streamId); if (serde instanceof KVSerde) { keySerde = ((KVSerde) serde).getKeySerde(); valueSerde = ((KVSerde) serde).getValueSerde(); } else { keySerde = new NoOpSerde(); valueSerde = serde; } if (currentSerdePair == null) { if (keySerde instanceof NoOpSerde) { LOGGER.info("Using NoOpSerde as the key serde for stream " + streamId + ". Keys will not be (de)serialized"); } if (valueSerde instanceof NoOpSerde) { LOGGER.info("Using NoOpSerde as the value serde for stream " + streamId + ". Values will not be (de)serialized"); } streamSerdes.put(streamId, KV.of(keySerde, valueSerde)); } else if (!currentSerdePair.getKey().equals(keySerde) || !currentSerdePair.getValue().equals(valueSerde)) { throw new IllegalArgumentException(String.format("Serde for streamId: %s is already defined. Cannot change it to " + "different serdes.", streamId)); } return streamSerdes.get(streamId); }
KV<Serde, Serde> getOrCreateStreamSerdes(String streamId, Serde serde) { Serde keySerde, valueSerde; KV<Serde, Serde> currentSerdePair = streamSerdes.get(streamId); if (serde instanceof KVSerde) { keySerde = ((KVSerde) serde).getKeySerde(); valueSerde = ((KVSerde) serde).getValueSerde(); } else { keySerde = new NoOpSerde(); valueSerde = serde; } if (currentSerdePair == null) { if (keySerde instanceof NoOpSerde) { LOGGER.info("Using NoOpSerde as the key serde for stream " + streamId + ". Keys will not be (de)serialized"); } if (valueSerde instanceof NoOpSerde) { LOGGER.info("Using NoOpSerde as the value serde for stream " + streamId + ". Values will not be (de)serialized"); } streamSerdes.put(streamId, KV.of(keySerde, valueSerde)); } else if (!currentSerdePair.getKey().equals(keySerde) || !currentSerdePair.getValue().equals(valueSerde)) { throw new IllegalArgumentException(String.format("Serde for streamId: %s is already defined. Cannot change it to " + "different serdes.", streamId)); } return streamSerdes.get(streamId); }
KV<Serde, Serde> getOrCreateStreamSerdes(String streamId, Serde serde) { Serde keySerde, valueSerde; KV<Serde, Serde> currentSerdePair = streamSerdes.get(streamId); if (serde instanceof KVSerde) { keySerde = ((KVSerde) serde).getKeySerde(); valueSerde = ((KVSerde) serde).getValueSerde(); } else { keySerde = new NoOpSerde(); valueSerde = serde; } if (currentSerdePair == null) { if (keySerde instanceof NoOpSerde) { LOGGER.info("Using NoOpSerde as the key serde for stream " + streamId + ". Keys will not be (de)serialized"); } if (valueSerde instanceof NoOpSerde) { LOGGER.info("Using NoOpSerde as the value serde for stream " + streamId + ". Values will not be (de)serialized"); } streamSerdes.put(streamId, KV.of(keySerde, valueSerde)); } else if (!currentSerdePair.getKey().equals(keySerde) || !currentSerdePair.getValue().equals(valueSerde)) { throw new IllegalArgumentException(String.format("Serde for streamId: %s is already defined. Cannot change it to " + "different serdes.", streamId)); } return streamSerdes.get(streamId); }
LocalTableDescriptor ld = (LocalTableDescriptor) d; tableKeySerdes.put(ld.getTableId(), ld.getSerde().getKeySerde()); tableValueSerdes.put(ld.getTableId(), ld.getSerde().getValueSerde()); }); serdes.addAll(tableKeySerdes.values());
KV<Serde, Serde> getOrCreateStreamSerdes(String streamId, Serde serde) { Serde keySerde, valueSerde; KV<Serde, Serde> currentSerdePair = streamSerdes.get(streamId); if (serde instanceof KVSerde) { keySerde = ((KVSerde) serde).getKeySerde(); valueSerde = ((KVSerde) serde).getValueSerde(); } else { keySerde = new NoOpSerde(); valueSerde = serde; } if (currentSerdePair == null) { if (keySerde instanceof NoOpSerde) { LOGGER.info("Using NoOpSerde as the key serde for stream " + streamId + ". Keys will not be (de)serialized"); } if (valueSerde instanceof NoOpSerde) { LOGGER.info("Using NoOpSerde as the value serde for stream " + streamId + ". Values will not be (de)serialized"); } streamSerdes.put(streamId, KV.of(keySerde, valueSerde)); } else if (!currentSerdePair.getKey().equals(keySerde) || !currentSerdePair.getValue().equals(valueSerde)) { throw new IllegalArgumentException(String.format("Serde for streamId: %s is already defined. Cannot change it to " + "different serdes.", streamId)); } return streamSerdes.get(streamId); }
KV<Serde, Serde> getOrCreateStreamSerdes(String streamId, Serde serde) { Serde keySerde, valueSerde; KV<Serde, Serde> currentSerdePair = streamSerdes.get(streamId); if (serde instanceof KVSerde) { keySerde = ((KVSerde) serde).getKeySerde(); valueSerde = ((KVSerde) serde).getValueSerde(); } else { keySerde = new NoOpSerde(); valueSerde = serde; } if (currentSerdePair == null) { if (keySerde instanceof NoOpSerde) { LOGGER.info("Using NoOpSerde as the key serde for stream " + streamId + ". Keys will not be (de)serialized"); } if (valueSerde instanceof NoOpSerde) { LOGGER.info("Using NoOpSerde as the value serde for stream " + streamId + ". Values will not be (de)serialized"); } streamSerdes.put(streamId, KV.of(keySerde, valueSerde)); } else if (!currentSerdePair.getKey().equals(keySerde) || !currentSerdePair.getValue().equals(valueSerde)) { throw new IllegalArgumentException(String.format("Serde for streamId: %s is already defined. Cannot change it to " + "different serdes.", streamId)); } return streamSerdes.get(streamId); }
@Test public void testGetOutputStreamWithKeyValueSerde() { String streamId = "test-stream-1"; KVSerde mockKVSerde = mock(KVSerde.class); Serde mockKeySerde = mock(Serde.class); Serde mockValueSerde = mock(Serde.class); doReturn(mockKeySerde).when(mockKVSerde).getKeySerde(); doReturn(mockValueSerde).when(mockKVSerde).getValueSerde(); GenericSystemDescriptor sd = new GenericSystemDescriptor("mockSystem", "mockSystemFactoryClass"); GenericOutputDescriptor osd = sd.getOutputDescriptor(streamId, mockKVSerde); StreamApplicationDescriptorImpl streamAppDesc = new StreamApplicationDescriptorImpl(appDesc -> { appDesc.getOutputStream(osd); }, getConfig()); OutputStreamImpl<TestMessageEnvelope> outputStreamImpl = streamAppDesc.getOutputStreams().get(streamId); assertEquals(streamId, outputStreamImpl.getStreamId()); assertEquals(osd, streamAppDesc.getOutputDescriptors().get(streamId)); assertEquals(mockKeySerde, outputStreamImpl.getKeySerde()); assertEquals(mockValueSerde, outputStreamImpl.getValueSerde()); }
@Test public void testGetInputStreamWithKeyValueSerde() { String streamId = "test-stream-1"; KVSerde mockKVSerde = mock(KVSerde.class); Serde mockKeySerde = mock(Serde.class); Serde mockValueSerde = mock(Serde.class); doReturn(mockKeySerde).when(mockKVSerde).getKeySerde(); doReturn(mockValueSerde).when(mockKVSerde).getValueSerde(); GenericSystemDescriptor sd = new GenericSystemDescriptor("mockSystem", "mockSystemFactoryClass"); GenericInputDescriptor isd = sd.getInputDescriptor(streamId, mockKVSerde); StreamApplicationDescriptorImpl streamAppDesc = new StreamApplicationDescriptorImpl(appDesc -> { appDesc.getInputStream(isd); }, getConfig()); InputOperatorSpec inputOpSpec = streamAppDesc.getInputOperators().get(streamId); assertEquals(OpCode.INPUT, inputOpSpec.getOpCode()); assertEquals(streamId, inputOpSpec.getStreamId()); assertEquals(isd, streamAppDesc.getInputDescriptors().get(streamId)); assertEquals(mockKeySerde, inputOpSpec.getKeySerde()); assertEquals(mockValueSerde, inputOpSpec.getValueSerde()); }
@Test public void testGetIntermediateStreamWithKeyValueSerde() { String streamId = "streamId"; StreamApplicationDescriptorImpl streamAppDesc = new StreamApplicationDescriptorImpl(appDesc -> { }, getConfig()); KVSerde mockKVSerde = mock(KVSerde.class); Serde mockKeySerde = mock(Serde.class); Serde mockValueSerde = mock(Serde.class); doReturn(mockKeySerde).when(mockKVSerde).getKeySerde(); doReturn(mockValueSerde).when(mockKVSerde).getValueSerde(); IntermediateMessageStreamImpl<TestMessageEnvelope> intermediateStreamImpl = streamAppDesc.getIntermediateStream(streamId, mockKVSerde, false); assertEquals(streamAppDesc.getInputOperators().get(streamId), intermediateStreamImpl.getOperatorSpec()); assertEquals(streamAppDesc.getOutputStreams().get(streamId), intermediateStreamImpl.getOutputStream()); assertEquals(streamId, intermediateStreamImpl.getStreamId()); assertEquals(mockKeySerde, intermediateStreamImpl.getOutputStream().getKeySerde()); assertEquals(mockValueSerde, intermediateStreamImpl.getOutputStream().getValueSerde()); assertEquals(mockKeySerde, ((InputOperatorSpec) (OperatorSpec) intermediateStreamImpl.getOperatorSpec()).getKeySerde()); assertEquals(mockValueSerde, ((InputOperatorSpec) (OperatorSpec) intermediateStreamImpl.getOperatorSpec()).getValueSerde()); }
@Test public void testStreamDescriptorContainsKVserde() { String systemName = "eventHub"; String streamId = "input-stream"; EventHubsSystemDescriptor systemDescriptor = new EventHubsSystemDescriptor(systemName); EventHubsInputDescriptor<KV<String, String>> outputDescriptor = systemDescriptor .getInputDescriptor(streamId, "entity-namespace", "entity3", new StringSerde()); assertTrue(outputDescriptor.getSerde() instanceof KVSerde); assertTrue(((KVSerde) outputDescriptor.getSerde()).getKeySerde() instanceof NoOpSerde); assertTrue(((KVSerde) outputDescriptor.getSerde()).getValueSerde() instanceof StringSerde); } }
@Test public void testStreamDescriptorContainsKVserde() { String systemName = "eventHub"; String streamId = "output-stream"; EventHubsSystemDescriptor systemDescriptor = new EventHubsSystemDescriptor(systemName); EventHubsOutputDescriptor<KV<String, String>> outputDescriptor = systemDescriptor .getOutputDescriptor(streamId, "entity-namespace", "entity3", new StringSerde()); assertTrue(outputDescriptor.getSerde() instanceof KVSerde); assertTrue(((KVSerde) outputDescriptor.getSerde()).getKeySerde() instanceof NoOpSerde); assertTrue(((KVSerde) outputDescriptor.getSerde()).getValueSerde() instanceof StringSerde); } }