GWT 2.7.0

com.google.gwt.resources.ext
Interface ResourceGenerator

All Known Implementing Classes:
AbstractResourceGenerator

public interface ResourceGenerator

Encapsulates per-type resource generation logic. This type is used only by developers who wish to add additional resource types to the resource generation system. Implementations are paired with one or more interfaces derived from ResourcePrototype that have been annotated with an ResourceGeneratorType annotation. Instances of ResourceGenerator must support default-instantiation (i.e. via Class.newInstance()).

The methods on an instance of ResourceGenerator will be called in the following order by the resource generation system:

  1. init(com.google.gwt.core.ext.TreeLogger, com.google.gwt.resources.ext.ResourceContext)
  2. 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) once for each method
  3. Based on the requirements specified by the ResourceGenerator, the framework may decide that no further action is required. If this is the case, the framework will immediately invoke finish(com.google.gwt.core.ext.TreeLogger, com.google.gwt.resources.ext.ResourceContext).
  4. createFields(com.google.gwt.core.ext.TreeLogger, com.google.gwt.resources.ext.ResourceContext, com.google.gwt.resources.ext.ClientBundleFields)
  5. createAssignment(com.google.gwt.core.ext.TreeLogger, com.google.gwt.resources.ext.ResourceContext, com.google.gwt.core.ext.typeinfo.JMethod) once for each method
  6. finish(com.google.gwt.core.ext.TreeLogger, com.google.gwt.resources.ext.ResourceContext)

The methods 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) and createAssignment(com.google.gwt.core.ext.TreeLogger, com.google.gwt.resources.ext.ResourceContext, com.google.gwt.core.ext.typeinfo.JMethod) will be called only with those methods whose ResourcePrototype-derived type specifies the particular type of ResourceGenerator as the implementor. The relative order in which ResourceGenerators are invoked and the specific order in which the bundle's methods are presented is undefined.

Direct access to the contents of the generated bundle implementation is intentionally limited to prevent unrelated ResourceGenerators from potentially creating namespace conflicts or generating invalid Java source.

See Also:
ResourceGeneratorUtil

Method Summary
 java.lang.String createAssignment(TreeLogger logger, ResourceContext context, JMethod method)
          Produce the right-hand-side of a Java assignment expression to provide the singleton instance object for a particular resource.
 void createFields(TreeLogger logger, ResourceContext context, ClientBundleFields fields)
          The ResourceGenerator can create fields within the implementation of the bundle type.
 void finish(TreeLogger logger, ResourceContext context)
          Called at the end of the resource generation phase and can be used to perform cleanup.
 void init(TreeLogger logger, ResourceContext context)
          Initialize the ResourceGenerator with the generation context that will remain valid for the duration of the resource-generation phase.
 void prepare(TreeLogger logger, ResourceContext context, ClientBundleRequirements requirements, JMethod method)
          Called once for each method the ResourceGenerator is expected to handle.
 

Method Detail

createAssignment

java.lang.String createAssignment(TreeLogger logger,
                                  ResourceContext context,
                                  JMethod method)
                                  throws UnableToCompleteException
Produce the right-hand-side of a Java assignment expression to provide the singleton instance object for a particular resource.

Example:

 new MySampleResource() { public Foo getFoo() { ... } }
 

Throws:
UnableToCompleteException

createFields

void createFields(TreeLogger logger,
                  ResourceContext context,
                  ClientBundleFields fields)
                  throws UnableToCompleteException
The ResourceGenerator can create fields within the implementation of the bundle type. The Fields object passed into this method is used to declare, and possibly initialize, Java fields within the final implementation of the resource bundle type.

The Fields instance should not be retained beyond the lifetime of this method as operation on this object is not defined after the implementation of this method returns.

Throws:
UnableToCompleteException

finish

void finish(TreeLogger logger,
            ResourceContext context)
            throws UnableToCompleteException
Called at the end of the resource generation phase and can be used to perform cleanup.

Throws:
UnableToCompleteException

init

void init(TreeLogger logger,
          ResourceContext context)
          throws UnableToCompleteException
Initialize the ResourceGenerator with the generation context that will remain valid for the duration of the resource-generation phase. The logger instance should not be retained; use the per-method loggers instead.

Throws:
UnableToCompleteException

prepare

void prepare(TreeLogger logger,
             ResourceContext context,
             ClientBundleRequirements requirements,
             JMethod method)
             throws UnableToCompleteException
Called once for each method the ResourceGenerator is expected to handle. This allows cross-resource state to be accumulated, such as for data aggregation.

Throws:
UnableToCompleteException

GWT 2.7.0