GenericSystemDescriptor extends SystemDescriptor<GenericSystemDescriptor> implements SimpleInputDescriptorProvider, OutputDescriptorProvider { @Override public <StreamMessageType> GenericInputDescriptor<StreamMessageType> getInputDescriptor( String streamId, Serde<StreamMessageType> serde) { return new GenericInputDescriptor<>(streamId, this, serde); } GenericSystemDescriptor(String systemName, String factoryClassName); @Override GenericInputDescriptor<StreamMessageType> getInputDescriptor(
      String streamId, Serde<StreamMessageType> serde); @Override GenericOutputDescriptor<StreamMessageType> getOutputDescriptor(
      String streamId, Serde<StreamMessageType> serde);  }
@Test(expected = IllegalArgumentException.class) public void testGetInputDescriptorWithNullSerde() { GenericSystemDescriptor mySystem = new GenericSystemDescriptor("input-system", "factory.class.name"); mySystem.getInputDescriptor("streamId", null); }