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
22 public static final String ALL_PERMISSIONS = "all_permissions";
23
24
25
26
27
28 public static final String EXECUTE_JAVA = "execute_java";
29
30
31
32
33 public static final String CREATE_SYSTEM_MODULES = "create_system_modules";
34
35
36
37
38
39 public static final String GENERATE_ANY_HTML = "generate_any_html";
40
41 private Permissions()
42 {
43 }
44
45 public static Set<String> getRequiredPermissions(Class<?> type)
46 {
47 final Class<RequirePermission> annotation = RequirePermission.class;
48 if (type != null && type.isAnnotationPresent(annotation))
49 {
50 return ImmutableSet.copyOf(type.getAnnotation(annotation).value());
51 }
52 return ImmutableSet.of();
53 }
54
55 public static Plugin addPermission(Plugin plugin, String permission, InstallationMode mode)
56 {
57 checkNotNull(plugin);
58
59 getPluginInformation(plugin).setPermissions(
60 ImmutableSet.<PluginPermission>builder()
61 .addAll(getPluginInformation(plugin).getPermissions())
62 .add(new PluginPermission(permission, Option.<InstallationMode>option(mode)))
63 .build());
64 return plugin;
65 }
66
67 private static PluginInformation getPluginInformation(Plugin plugin)
68 {
69 return option(plugin.getPluginInformation()).getOrElse(new PluginInformation());
70 }
71 }