In order to write your own Metadata Adapter, you can choose among a number of options:

  1. directly implement the MetadataProvider interface
  2. extend the MetadataProviderAdapter class (which implements the MetadataProvider interface)
  3. extend the LiteralBasedProvider or FilelBasedProvider classes (which extend the MetadataProviderAdapter class)

It's all a matter of hierarchy and inheritance.

Regarding having multiple data sources, if they are destined to deliver data to different client sessions, then you can plug multiple Data Adapters into Lightstreamer Server. On the other hand, if you need to deliver the data coming from different data sources to the same client session, then you need to write a single Data Adapter that accesses all of the feeds. Mixing different Data Adapters in the same client session is not supported yet.