/atlassian-plugins-webresource-api/src/main/java/com/atlassian/webresource/api/assembler/RequiredResources.java

https://bitbucket.org/atlassian/atlassian-plugins-webresource · Java · 151 lines · 31 code · 14 blank · 106 comment · 0 complexity · 7015f0a2b2f5c1328f30e478d1f2bcf6 MD5 · raw file

  1. package com.atlassian.webresource.api.assembler;
  2. import com.atlassian.annotations.ExperimentalApi;
  3. import com.atlassian.webresource.api.assembler.resource.ResourcePhase;
  4. import javax.annotation.Nonnull;
  5. import javax.annotation.Nullable;
  6. import java.util.Set;
  7. /**
  8. * Interface for clients to require web resources.
  9. * <p>
  10. * Note, {@link RequiredResources} is currently an experimental API and may break between versions of web resources.
  11. * It is advised that you use WebResourceManager in the mean time if you require a stable API.
  12. *
  13. * @see WebResourceAssembler
  14. * @see PageBuilderService
  15. * @since v3.0
  16. */
  17. @ExperimentalApi
  18. public interface RequiredResources {
  19. /**
  20. * Specifies that resources for the given module should be included on the next call to drainIncludedResources() with {@link ResourcePhase#defaultPhase}.
  21. *
  22. * @param moduleCompleteKey key of webresource module
  23. * @return this, to support method chaining
  24. */
  25. @Nonnull
  26. RequiredResources requireWebResource(@Nonnull String moduleCompleteKey);
  27. /**
  28. * Specifies that resources for the given module should be included on the next call to drainIncludedResources(),
  29. * taking into consideration the resource phase.
  30. *
  31. * @param resourcePhase The module resourcePhase
  32. * @param moduleCompleteKey key of webresource module
  33. * @return this, to support method chaining
  34. * @since 5.0.0
  35. */
  36. @Nonnull
  37. RequiredResources requireWebResource(@Nonnull ResourcePhase resourcePhase, @Nonnull String moduleCompleteKey);
  38. /**
  39. * Specifies that the given module should be included on the next call to drainIncludedResources() with {@link ResourcePhase#defaultPhase}.
  40. *
  41. * @param name name of module
  42. * @return this, to support method chaining
  43. * @since 3.4.8
  44. */
  45. @Nonnull
  46. RequiredResources requireModule(@Nonnull String name);
  47. /**
  48. * Specifies that the given module should be included on the next call to drainIncludedResources(), taking into
  49. * consideration the resource phase.
  50. *
  51. * @param resourcePhase The module resourcePhase
  52. * @param name name of module
  53. * @return this, to support method chaining
  54. * @since 5.0.0
  55. */
  56. @Nonnull
  57. RequiredResources requireModule(@Nonnull ResourcePhase resourcePhase, @Nonnull final String name);
  58. /**
  59. * Specifies that resources for the given webresource context should be included on the next call to
  60. * drainIncludedResources() with {@link ResourcePhase#defaultPhase}.
  61. *
  62. * @param context webresource context to include
  63. * @return this, to support method chaining
  64. */
  65. @Nonnull
  66. RequiredResources requireContext(@Nonnull String context);
  67. /**
  68. * Specifies that resources for the given webresource context should be included on the next call to
  69. * drainIncludedResources(), taking into consideration the resource phase.
  70. *
  71. * @param resourcePhase The context resourcePhase
  72. * @param context webresource context to include
  73. * @since 5.0.0
  74. * @return this, to support method chaining
  75. */
  76. @Nonnull
  77. RequiredResources requireContext(@Nonnull ResourcePhase resourcePhase, @Nonnull String context);
  78. /**
  79. * Specifies that the given resources should be excluded from all future calls to drainIncludedResources().
  80. * This is equivalent to requiring the given webresources and contexts then calling drain().
  81. * <p>
  82. * Any currently un-drained resources/contexts will be remain and be included in the next drain.
  83. * <p>
  84. * If this WebResourceAssembler includes implicit resources (e.g. "superbatch"), this call will also exclude all
  85. * such implicit resources from future calls to drainIncludedResources().
  86. *
  87. * @param webResources webresource keys to exclude.
  88. * @param contexts contexts to exclude.
  89. * @return this, to support method chaining
  90. */
  91. @Nonnull
  92. RequiredResources exclude(@Nullable Set<String> webResources, @Nullable Set<String> contexts);
  93. /**
  94. * <p>
  95. * Includes all contexts and resources specified in the root-page into the {@link WebResourceAssembler} with {@link ResourcePhase#defaultPhase}.
  96. * </p>
  97. *
  98. * @param key key of the root page
  99. * @return this, to support method chaining
  100. * @since 3.5.22
  101. */
  102. @Nonnull
  103. RequiredResources requirePage(@Nonnull String key);
  104. /**
  105. * <p>
  106. * Includes all contexts and resources specified in the root-page into the {@link WebResourceAssembler} taking into consideration the resource phase.
  107. * </p>
  108. *
  109. * @param resourcePhase The page resourcePhase
  110. * @param key key of the root page
  111. * @return this, to support method chaining
  112. * @since 5.0.0
  113. */
  114. @Nonnull
  115. RequiredResources requirePage(@Nonnull ResourcePhase resourcePhase, @Nonnull String key);
  116. /**
  117. * <p>
  118. * Exclude superbatch context.
  119. * </p>
  120. * @return this, to support method chaining
  121. * @since 5.4.0
  122. */
  123. @Nonnull
  124. RequiredResources excludeSuperbatch();
  125. /**
  126. * <p>
  127. * Sets resource phase for superbatch context.
  128. * Keep in mind that if superbatch is disabled globally this function does not have an effect.
  129. * </p>
  130. *
  131. * @param resourcePhase The superbatch resourcePhase
  132. * @return this, to support method chaining
  133. * @since 5.4.0
  134. */
  135. @Nonnull
  136. RequiredResources requireSuperbatch(@Nonnull final ResourcePhase resourcePhase);
  137. }