1   package com.atlassian.plugins.codegen.modules;
2   
3   import com.atlassian.plugins.codegen.PluginProjectChangeset;
4   
5   /**
6    * Implementors of this class do the actual code generation for a specific plugin module.
7    */
8   public interface PluginModuleCreator<T extends PluginModuleProperties>
9   {
10      String getModuleName();
11  
12      /**
13       * Returns a {@link PluginProjectChangeset} that describes (but does not perform) all of
14       * the changes required to add this module.
15       */
16      PluginProjectChangeset createModule(T props) throws Exception;
17  }