class DependencyGraphTraceProviderResource extends AbstractDataResource {

  public static URI uriMarketData(URI baseUri, List<MarketDataSpecification> marketData) {
    for (MarketDataSpecification mdSpec : marketData) {
      if (mdSpec instanceof UserMarketDataSpecification) {
        String snapshotId = ((UserMarketDataSpecification) mdSpec).getUserSnapshotId().toString();
        UriBuilder bld = UriBuilder.fromUri(baseUri).path("marketDataSnapshot/{snapshotId}");
        baseUri = bld.build(snapshotId);
      } else if (mdSpec instanceof LiveMarketDataSpecification) {
        String dataSource = ((LiveMarketDataSpecification) mdSpec).getDataSource();
        if (dataSource == null) {
          UriBuilder bld = UriBuilder.fromUri(baseUri).path("marketDataLiveDefault");
          baseUri = bld.build();
        } else {
          UriBuilder bld = UriBuilder.fromUri(baseUri).path("marketDataLive/{dataSource}");
          baseUri = bld.build(dataSource);
        }
      } else if (mdSpec instanceof FixedHistoricalMarketDataSpecification) {
        String snapshotDate = ((FixedHistoricalMarketDataSpecification) mdSpec).getSnapshotDate().toString();
        String timeSeriesResolverKey = ((FixedHistoricalMarketDataSpecification) mdSpec).getTimeSeriesResolverKey();
        UriBuilder bld = UriBuilder.fromUri(baseUri).path("marketDataHistorical/{localDate}/{timeSeriesResolverKey}");
        baseUri = bld.build(snapshotDate, timeSeriesResolverKey);
      }
      
    }
    return baseUri;
  }

  public  DependencyGraphTraceProviderResource(final DependencyGraphTraceProvider provider, final FudgeContext fudgeContext);
  private  DependencyGraphTraceProviderResource(DependencyGraphTraceProvider provider, FudgeContext fudgeContext, DependencyGraphTraceBuilderProperties properties);

}