PageRenderTime 40ms CodeModel.GetById 13ms RepoModel.GetById 0ms app.codeStats 0ms

/plugin/src/main/java/com/atlassian/plugin/remotable/plugin/product/confluence/ConfluenceProductAccessor.java

https://bitbucket.org/rodogu/remotable-plugins
Java | 192 lines | 168 code | 18 blank | 6 comment | 2 complexity | d4d7fa4c4581d6b58da42549b0e117d0 MD5 | raw file
  1. package com.atlassian.plugin.remotable.plugin.product.confluence;
  2. import com.atlassian.confluence.plugin.descriptor.web.descriptors.ConfluenceWebItemModuleDescriptor;
  3. import com.atlassian.core.task.MultiQueueTaskManager;
  4. import com.atlassian.mail.Email;
  5. import com.atlassian.mail.MailException;
  6. import com.atlassian.mail.MailFactory;
  7. import com.atlassian.mail.server.SMTPMailServer;
  8. import com.atlassian.plugin.remotable.api.InstallationMode;
  9. import com.atlassian.plugin.remotable.api.confluence.ConfluencePermissions;
  10. import com.atlassian.plugin.remotable.spi.Permissions;
  11. import com.atlassian.plugin.remotable.spi.product.ProductAccessor;
  12. import com.atlassian.plugin.util.ContextClassLoaderSwitchingUtil;
  13. import com.atlassian.plugin.web.Condition;
  14. import com.atlassian.plugin.web.descriptors.WebItemModuleDescriptor;
  15. import com.google.common.collect.ImmutableMap;
  16. import com.google.common.collect.Sets;
  17. import org.slf4j.Logger;
  18. import org.slf4j.LoggerFactory;
  19. import java.util.Collections;
  20. import java.util.Map;
  21. import java.util.Set;
  22. import static com.google.common.base.Preconditions.checkNotNull;
  23. import static com.google.common.collect.Maps.newHashMap;
  24. /**
  25. *
  26. */
  27. public final class ConfluenceProductAccessor implements ProductAccessor
  28. {
  29. private static final Logger log = LoggerFactory.getLogger(ConfluenceProductAccessor.class);
  30. private final MultiQueueTaskManager taskManager;
  31. public ConfluenceProductAccessor(MultiQueueTaskManager taskManager)
  32. {
  33. this.taskManager = checkNotNull(taskManager);
  34. }
  35. @Override
  36. public WebItemModuleDescriptor createWebItemModuleDescriptor()
  37. {
  38. return new ConfluenceWebItemModuleDescriptor();
  39. }
  40. @Override
  41. public String getPreferredAdminSectionKey()
  42. {
  43. return "system.admin/marketplace_confluence";
  44. }
  45. @Override
  46. public int getPreferredAdminWeight()
  47. {
  48. return 100;
  49. }
  50. @Override
  51. public String getKey()
  52. {
  53. return "confluence";
  54. }
  55. @Override
  56. public int getPreferredGeneralWeight()
  57. {
  58. return 1000;
  59. }
  60. @Override
  61. public String getPreferredGeneralSectionKey()
  62. {
  63. return "system.browse";
  64. }
  65. @Override
  66. public int getPreferredProfileWeight()
  67. {
  68. return 100;
  69. }
  70. @Override
  71. public String getPreferredProfileSectionKey()
  72. {
  73. return "system.profile";
  74. }
  75. @Override
  76. public Map<String, String> getLinkContextParams()
  77. {
  78. return ImmutableMap.of(
  79. "page_id", "$!page.id",
  80. "page_type", "$!page.type");
  81. }
  82. @Override
  83. public void sendEmail(String userName, final Email email, String bodyAsHtml, String bodyAsText)
  84. {
  85. // todo: support html emails for Confluence
  86. email.setBody(bodyAsText);
  87. try
  88. {
  89. ContextClassLoaderSwitchingUtil.runInContext(MailFactory.class.getClassLoader(), new Runnable()
  90. {
  91. @Override
  92. public void run()
  93. {
  94. SMTPMailServer defaultSMTPMailServer = MailFactory.getServerManager()
  95. .getDefaultSMTPMailServer();
  96. if (defaultSMTPMailServer != null)
  97. {
  98. try
  99. {
  100. defaultSMTPMailServer.send(email);
  101. }
  102. catch (MailException e)
  103. {
  104. throw new RuntimeException(e);
  105. }
  106. }
  107. else
  108. {
  109. log.warn("Can't send email - no mail server defined");
  110. }
  111. }
  112. });
  113. }
  114. catch (RuntimeException e)
  115. {
  116. log.warn("Unable to send email: " + email, e);
  117. }
  118. }
  119. @Override
  120. public void flushEmail()
  121. {
  122. taskManager.flush("mail");
  123. }
  124. @Override
  125. public Map<String, Class<? extends Condition>> getConditions()
  126. {
  127. Map<String, Class<? extends Condition>> conditions = newHashMap();
  128. conditions.put("not_personal_space", com.atlassian.confluence.plugin.descriptor.web.conditions.NotPersonalSpaceCondition.class);
  129. conditions.put("user_is_confluence_administrator", com.atlassian.confluence.plugin.descriptor.web.conditions.ConfluenceAdministratorCondition.class);
  130. conditions.put("user_can_use_confluence", com.atlassian.confluence.plugin.descriptor.web.conditions.user.UserCanUseConfluenceCondition.class);
  131. conditions.put("user_can_update_user_status", com.atlassian.confluence.plugin.descriptor.web.conditions.user.UserCanUpdateUserStatusCondition.class);
  132. conditions.put("not_shared_mode", com.atlassian.confluence.plugin.descriptor.web.conditions.NotSharedModeCondition.class);
  133. conditions.put("email_address_public", com.atlassian.confluence.plugin.descriptor.web.conditions.EmailAddressPublicCondition.class);
  134. conditions.put("content_has_any_permissions_set", com.atlassian.confluence.plugin.descriptor.web.conditions.ContentHasAnyPermissionsSetCondition.class);
  135. //conditions.put("BuildNumber", com.atlassian.confluence.plugin.descriptor.web.conditions.BuildNumberCondition.class);
  136. conditions.put("user_watching_space_for_content_type", com.atlassian.confluence.plugin.descriptor.web.conditions.user.UserWatchingSpaceForContentTypeCondition.class);
  137. conditions.put("space_function_permission", com.atlassian.confluence.plugin.descriptor.web.conditions.SpaceFunctionPermissionCondition.class);
  138. conditions.put("following_target_user", com.atlassian.confluence.plugin.descriptor.web.conditions.user.FollowingTargetUserCondition.class);
  139. conditions.put("has_space", com.atlassian.confluence.plugin.descriptor.web.conditions.HasSpaceCondition.class);
  140. conditions.put("target_user_can_set_status", com.atlassian.confluence.plugin.descriptor.web.conditions.user.TargetUserCanSetStatusCondition.class);
  141. //conditions.put("dark_feature_enabled", com.atlassian.confluence.user.DarkFeatureEnabledCondition.class);
  142. conditions.put("user_favouriting_target_user_personal_space", com.atlassian.confluence.plugin.descriptor.web.conditions.user.UserFavouritingTargetUserPersonalSpaceCondition.class);
  143. conditions.put("user_is_sysadmin", com.atlassian.confluence.plugin.descriptor.web.conditions.SystemAdministratorCondition.class);
  144. conditions.put("favourite_page", com.atlassian.confluence.plugin.descriptor.web.conditions.FavouritePageCondition.class);
  145. conditions.put("threaded_comments", com.atlassian.confluence.plugin.descriptor.web.conditions.ThreadedCommentsCondition.class);
  146. conditions.put("user_is_logged_in", com.atlassian.confluence.plugin.descriptor.web.conditions.user.UserLoggedInCondition.class);
  147. conditions.put("user_has_personal_space", com.atlassian.confluence.plugin.descriptor.web.conditions.user.UserHasPersonalSpaceCondition.class);
  148. conditions.put("can_signup", com.atlassian.confluence.plugin.descriptor.web.conditions.user.CanSignupCondition.class);
  149. conditions.put("target_user_has_personal_space", com.atlassian.confluence.plugin.descriptor.web.conditions.user.TargetUserHasPersonalSpaceCondition.class);
  150. conditions.put("viewing_content", com.atlassian.confluence.plugin.descriptor.web.conditions.ViewingContentCondition.class);
  151. conditions.put("viewing_own_profile", com.atlassian.confluence.plugin.descriptor.web.conditions.ViewingOwnProfileCondition.class);
  152. conditions.put("can_cluster", com.atlassian.confluence.plugin.descriptor.web.conditions.CanClusterCondition.class);
  153. conditions.put("active_theme", com.atlassian.confluence.plugin.descriptor.web.conditions.ActiveThemeCondition.class);
  154. conditions.put("printable_version", com.atlassian.confluence.plugin.descriptor.web.conditions.PrintableVersionCondition.class);
  155. conditions.put("writable_directory_exists", com.atlassian.confluence.plugin.descriptor.web.conditions.WritableDirectoryExistsCondition.class);
  156. conditions.put("user_can_create_personal_space", com.atlassian.confluence.plugin.descriptor.web.conditions.user.UserCanCreatePersonalSpaceCondition.class);
  157. conditions.put("tiny_url_supported", com.atlassian.confluence.plugin.descriptor.web.conditions.TinyUrlSupportedCondition.class);
  158. conditions.put("latest_version", com.atlassian.confluence.plugin.descriptor.web.conditions.LatestVersionCondition.class);
  159. conditions.put("has_page", com.atlassian.confluence.plugin.descriptor.web.conditions.HasPageCondition.class);
  160. conditions.put("create_content", com.atlassian.confluence.plugin.descriptor.web.conditions.CreateContentCondition.class);
  161. conditions.put("can_edit_space_styles", com.atlassian.confluence.plugin.descriptor.web.conditions.CanEditSpaceStylesCondition.class);
  162. conditions.put("showing_page_attachments", com.atlassian.confluence.plugin.descriptor.web.conditions.ShowingPageAttachmentsCondition.class);
  163. conditions.put("has_template", com.atlassian.confluence.plugin.descriptor.web.conditions.HasTemplateCondition.class);
  164. conditions.put("user_has_personal_blog", com.atlassian.confluence.plugin.descriptor.web.conditions.user.UserHasPersonalBlogCondition.class);
  165. conditions.put("has_attachment", com.atlassian.confluence.plugin.descriptor.web.conditions.HasAttachmentCondition.class);
  166. conditions.put("target_user_has_personal_blog", com.atlassian.confluence.plugin.descriptor.web.conditions.user.TargetUserHasPersonalBlogCondition.class);
  167. conditions.put("user_watching_space", com.atlassian.confluence.plugin.descriptor.web.conditions.user.UserWatchingSpaceCondition.class);
  168. conditions.put("has_blog_post", com.atlassian.confluence.plugin.descriptor.web.conditions.HasBlogPostCondition.class);
  169. conditions.put("user_logged_in_editable", com.atlassian.confluence.plugin.descriptor.web.conditions.user.UserLoggedInEditableCondition.class);
  170. conditions.put("user_watching_page", com.atlassian.confluence.plugin.descriptor.web.conditions.user.UserWatchingPageCondition.class);
  171. conditions.put("favourite_space", com.atlassian.confluence.plugin.descriptor.web.conditions.FavouriteSpaceCondition.class);
  172. return conditions;
  173. }
  174. }