class BaseResourceDefinition implements ResourceDefinition {

  @Override
  public Renderer getRenderer(String name) {
    if (name == null || name.equals("default")) {
      return new DefaultRenderer();
    } else if (name.equals("minimal")) {
      return new MinimalRenderer();
    } else if (name.contains("null_padding")
              || name.contains("no_padding")
              || name.contains("zero_padding")) {
      return new MetricsPaddingRenderer(name);
    } else {
      throw new IllegalArgumentException("Invalid renderer name for resource of type " + m_type);
    }
  }

  public  BaseResourceDefinition(Resource.Type resourceType);
  public  BaseResourceDefinition(Resource.Type resourceType, Resource.Type ... subTypes);
  public  BaseResourceDefinition(Resource.Type resourceType,
                                Collection<Resource.Type> subTypes,
                                Map<DirectiveType, ? extends Collection<String>> directives);

}