1   package com.atlassian.plugins.codegen.modules.common.licensing;
2   
3   import com.atlassian.plugins.codegen.ComponentDeclaration;
4   import com.atlassian.plugins.codegen.PluginProjectChangeset;
5   import com.atlassian.plugins.codegen.annotations.BambooPluginModuleCreator;
6   import com.atlassian.plugins.codegen.annotations.ConfluencePluginModuleCreator;
7   import com.atlassian.plugins.codegen.annotations.CrowdPluginModuleCreator;
8   import com.atlassian.plugins.codegen.annotations.FeCruPluginModuleCreator;
9   import com.atlassian.plugins.codegen.annotations.JiraPluginModuleCreator;
10  import com.atlassian.plugins.codegen.annotations.RefAppPluginModuleCreator;
11  import com.atlassian.plugins.codegen.modules.AbstractPluginModuleCreator;
12  
13  import com.google.common.collect.ImmutableMap;
14  
15  import static com.atlassian.fugue.Option.some;
16  import static com.atlassian.plugins.codegen.ArtifactDependency.dependency;
17  import static com.atlassian.plugins.codegen.ArtifactDependency.Scope.PROVIDED;
18  import static com.atlassian.plugins.codegen.ClassId.fullyQualified;
19  import static com.atlassian.plugins.codegen.ComponentImport.componentImport;
20  
21  /**
22   * @since 3.7
23   */
24  @RefAppPluginModuleCreator
25  @JiraPluginModuleCreator
26  @ConfluencePluginModuleCreator
27  @BambooPluginModuleCreator
28  @FeCruPluginModuleCreator
29  @CrowdPluginModuleCreator
30  public class LicensingUpm2ModuleCreator extends AbstractPluginModuleCreator<LicensingProperties>
31  {
32      public static final String MODULE_NAME = "License Management (UPM 2 API)";
33  
34      public static final String LICENSE_CHECKER_DESCRIPTION = "Atlassian license management module";
35      public static final String LICENSE_CHECKER_CLASS_TEMPLATE = "templates/common/licensing/LicenseChecker.java.vtl";
36      
37      @Override
38      public PluginProjectChangeset createModule(LicensingProperties props) throws Exception
39      {
40          ComponentDeclaration licensingComponent = ComponentDeclaration.builder(props.getClassId(), props.getModuleKey())
41              .description(some(LICENSE_CHECKER_DESCRIPTION))
42              .build();
43          return new PluginProjectChangeset()
44              .withDependencies(dependency("com.atlassian.upm", "licensing-api", "2.0", "upm.api.version", PROVIDED),
45                                dependency("com.atlassian.upm", "upm-api", "2.0", "upm.api.version", PROVIDED),
46                                dependency("com.atlassian.plugins", "atlassian-plugins-core", "2.9.0", PROVIDED),
47                                dependency("com.atlassian.sal", "sal-api", "2.6.0", PROVIDED))
48              .withPluginParameters(ImmutableMap.of("atlassian-licensing-enabled", "true"))
49              .withComponentImports(componentImport(fullyQualified("com.atlassian.upm.api.license.PluginLicenseManager")),
50                                    componentImport(fullyQualified("com.atlassian.upm.api.license.PluginLicenseEventRegistry")),
51                                    componentImport(fullyQualified("com.atlassian.plugin.PluginController")))
52              .withComponentDeclarations(licensingComponent)
53              .with(createClass(props, LICENSE_CHECKER_CLASS_TEMPLATE));
54      }
55  
56      @Override
57      public String getModuleName()
58      {
59          return MODULE_NAME;
60      }
61  }