1 package com.atlassian.plugin;
2
3 import com.google.common.collect.ImmutableSet;
4
5 import java.util.Set;
6
7 import static com.google.common.base.Preconditions.checkNotNull;
8 import static java.util.Optional.ofNullable;
9
10
11
12
13 public final class Permissions {
14
15
16
17
18
19
20 public static final String ALL_PERMISSIONS = "all_permissions";
21
22
23
24
25
26 public static final String EXECUTE_JAVA = "execute_java";
27
28
29
30
31 public static final String CREATE_SYSTEM_MODULES = "create_system_modules";
32
33
34
35
36
37 public static final String GENERATE_ANY_HTML = "generate_any_html";
38
39 private Permissions() {
40 }
41
42 public static Set<String> getRequiredPermissions(Class<?> type) {
43 final Class<RequirePermission> annotation = RequirePermission.class;
44 if (type != null && type.isAnnotationPresent(annotation)) {
45 return ImmutableSet.copyOf(type.getAnnotation(annotation).value());
46 }
47 return ImmutableSet.of();
48 }
49
50 public static Plugin addPermission(Plugin plugin, String permission, InstallationMode mode) {
51 checkNotNull(plugin);
52
53 getPluginInformation(plugin).setPermissions(
54 ImmutableSet.<PluginPermission>builder()
55 .addAll(getPluginInformation(plugin).getPermissions())
56 .add(new PluginPermission(permission, mode))
57 .build());
58 return plugin;
59 }
60
61 private static PluginInformation getPluginInformation(Plugin plugin) {
62 return ofNullable(plugin.getPluginInformation()).orElseGet(PluginInformation::new);
63 }
64 }