Each Adapter is made with 2 object's instances. A DataProvider instance and a MetadataProvider one.
To configure an Adapter you must create an adapters.xml file and put it under the adapters folder (refer to LS_HOME/DOCS-SDKs/sdk_adapter_java/examples/StockListDemo/Deployment_LS/README.TXT. for further details on how to deploy an adapter) In this file you choose the DataProvider class, the MetadaProvider class and it's also possible to set parameters to be passed to the class's instances.

Obviously you can use a class to create more Adapters. eg you have 2 adapters. Just set the 2 adapters.xml as follows:
The first one will use MyDataProvider as DataProvider and MyMetadataProvider as MetadataProvider.
Code xml:
  1. <?xml version="1.0"?>
  2.  
  3. <adapters_conf id="ADAPTER_1">
  4.    <metadata_provider>
  5.       <adapter_class>my_package.MyMetadataProvider</adapter_class>
  6.       <param name="match_id">ADAPTER_1</param>
  7.    </metadata_provider>
  8.  
  9.    <data_provider>
  10.       <adapter_class>my_package.MyDataProvider</adapter_class>
  11.       <param name="match_id">ADAPTER_1</param>
  12.    </data_provider>
  13. </adapters_conf>

The other use MyDataProvider2 as DataProvider and MyMetadataProvider as MetadataProvider.
Code xml:
  1. <?xml version="1.0"?>
  2.  
  3. <adapters_conf id="ADAPTER_2">
  4.    <metadata_provider>
  5.       <adapter_class>my_package.MyMetadataProvider</adapter_class>
  6.       <param name="match_id">ADAPTER_2</param>
  7.    </metadata_provider>
  8.  
  9.    <data_provider>
  10.       <adapter_class>my_package.MyDataProvider2</adapter_class>
  11.       <param name="match_id">ADAPTER_2</param>
  12.    </data_provider>
  13. </adapters_conf>

At this point you have 2 MyMetadaProvider instances and each one receives its match_id parameter.
Code java:
  1. String adapter_id = (String) params.get("match_id");
so adapter_id is "ADAPTER_1" for the first instance and "ADAPTER_2" for the other.

Now with this call
Code java:
  1. MyDataProviderInstances.put(adapter_id,this);
each MyMetadataProvider instance puts in the MyDataProviderInstances HashMap its reference with a different key (equals to the match_id received).

From the other side MyDataProvider an MyDataProvider2 instances get each one a different MyMetadataProvider instance.
Code java:
  1. String adapter_id = (String) params.get("match_id");
Code java:
  1. metadataAdapter = (MyMetadataProvider) MyMetadataProvider.MyDataProviderInstances.get(adapter_id);

Mone.

PS: I saw that on my previous post i fogot to instantiate MyDataProviderInstances. Sorry.