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