com.google.gwt.resources.ext

## Interface ClientBundleRequirements

-     public interface ClientBundleRequirements

  Allows ResourceGenerators to indicate how their generated resources may be affected by their execution environment. An instance of this type will be provided to the ResourceGenerator via the `ResourceGenerator.prepare(com.google.gwt.core.ext.TreeLogger, com.google.gwt.resources.ext.ResourceContext, com.google.gwt.resources.ext.ClientBundleRequirements, com.google.gwt.core.ext.typeinfo.JMethod)` method.

- - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `addConfigurationProperty(java.lang.String propertyName)` Indicates that the ResourcePrototype implementation generated by a ResourceGenerator is sensitive to the values of the specified configuration property.
    `void` | `addPermutationAxis(java.lang.String propertyName)` Indicates that the ResourcePrototype implementation generated by a ResourceGenerator is sensitive to the value of the specified deferred-binding property.
    `void` | `addResolvedResource(java.lang.String partialPath, java.net.URL resolvedResourceUrl)` Indicates that the ResourcePrototype implementation generated by a ResourceGenerator is sensitive to a dependent resource.
    `void` | `addTypeHierarchy(JClassType type)` Indicates that the ResourcePrototype implementation generated by a ResourceGenerator is sensitive to structural changes to the given type, as well as any of it's super type hierarchy.

- - ### Method Detail

    - #### addConfigurationProperty

          void addConfigurationProperty(java.lang.String propertyName)
                                        throws BadPropertyValueException

      Indicates that the ResourcePrototype implementation generated by a ResourceGenerator is sensitive to the values of the specified configuration property.
      Parameters:
        `propertyName` - the name of the configuration property
      Throws:
        `BadPropertyValueException`

    - #### addPermutationAxis

          void addPermutationAxis(java.lang.String propertyName)
                                  throws BadPropertyValueException

      Indicates that the ResourcePrototype implementation generated by a ResourceGenerator is sensitive to the value of the specified deferred-binding property. This method should be called when the behavior of the ResourcePrototype must differ between permutations of the compiled output. For example, some resource implementations may be sensitive to the `user.agent` deferred-binding property, and would call this method with the literal string `user.agent`.

      If a deferred-binding property does not exist, an attempt is made to check whether a configuration property by the same name exists.

      Parameters:
        `propertyName` - the name of the deferred-binding property
      Throws:
        `BadPropertyValueException` - if `propertyName` is neither a valid deferred-binding property nor a valid configuration property.

    - #### addResolvedResource

          void addResolvedResource(java.lang.String partialPath,
                                 java.net.URL resolvedResourceUrl)

      Indicates that the ResourcePrototype implementation generated by a ResourceGenerator is sensitive to a dependent resource. This method takes both an unresolved partialPath and a located resolvedResourceUrl, since the resolved location of a resource can change dynamically at run time. So, by calling this method, the requirement is being declared for both the resolution of the resource's URL, as well as its content.

      The implementation for resolving a resource url from a partial path is contained in `ResourceGeneratorUtil`, and is based on an ordered set of 'locator' implementations, which are tried in sequence. Example 'locator' implementations include looking up a resource file by name, which usually amounts to a freshly generated temporary file (see `ResourceGeneratorUtil.addNamedFile(java.lang.String, java.io.File)`), or by using the partial path as a classpath resource used by a class loader, which can be affected by classpath shadowing.

      The current resolution for a resource partial path can be checked via `ResourceGeneratorUtil.tryFindResource(com.google.gwt.core.ext.TreeLogger, com.google.gwt.core.ext.GeneratorContext, com.google.gwt.resources.ext.ResourceContext, java.lang.String)`.

      Parameters:
        `partialPath` - a partial path representing a dependent resource.
        `resolvedResourceUrl` - a located resolved URL for a dependent resource.

    - #### addTypeHierarchy

          void addTypeHierarchy(JClassType type)

      Indicates that the ResourcePrototype implementation generated by a ResourceGenerator is sensitive to structural changes to the given type, as well as any of it's super type hierarchy.
      Parameters:
        `type` - a type