Javolution 6.0.0 java
SecurityContext.java
Go to the documentation of this file.
1 /*
2  * Javolution - Java(TM) Solution for Real-Time and Embedded Systems
3  * Copyright (C) 2007 - Javolution (http://javolution.org/)
4  * All rights reserved.
5  *
6  * Permission to use, copy, modify, and distribute this software is
7  * freely granted, provided that this notice is preserved.
8  */
9 package javolution.context;
10 
12 
34 public abstract class SecurityContext extends AbstractContext {
35 
48  public static class Permission<T> {
49 
53  public static final Permission<Object> ALL = new Permission<Object>(
54  null);
55 
56  private final Class<? super T> category;
57 
58  private final String action;
59 
60  private final T instance;
61 
65  public Permission(Class<? super T> category) {
66  this(category, null, null);
67  }
68 
73  public Permission(Class<? super T> category, String action) {
74  this(category, action, null);
75  }
76 
81  public Permission(Class<? super T> category, String action, T instance) {
82  this.category = category;
83  this.action = action;
84  this.instance = instance;
85  }
86 
90  public Class<? super T> getCategory() {
91  return category;
92  }
93 
97  public String getAction() {
98  return action;
99  }
100 
104  public T getInstance() {
105  return instance;
106  }
107 
117  public boolean implies(Permission<?> that) {
118  if (category == null)
119  return true;
120  if (!category.isAssignableFrom(that.category))
121  return false;
122  if (action == null)
123  return true;
124  if (!action.equals(that.action))
125  return false;
126  if (instance == null)
127  return true;
128  if (!instance.equals(that.instance))
129  return false;
130  return true;
131  }
132 
133  @Override
134  public String toString() {
135  if (category == null)
136  return "All permissions";
137  if (action == null)
138  return "Permission for any action on " + category.getName();
139  if (instance == null)
140  return "Permission for " + action + " on " + category.getName();
141  return "Permission for " + action + " on instance " + instance
142  + " of " + category.getName();
143  }
144 
145  @Override
146  public boolean equals(Object obj) {
147  if (obj == this)
148  return true;
149  if (!(obj instanceof Permission))
150  return false;
151  Permission<?> that = (Permission<?>) obj;
152  if ((category == null) && (that.category != null))
153  return false;
154  if ((category != null) && (!category.equals(that.category)))
155  return false;
156  if ((action == null) && (that.action != null))
157  return false;
158  if ((action != null) && (!action.equals(that.action)))
159  return false;
160  if ((instance == null) && (that.instance != null))
161  return false;
162  if ((instance != null) && (!instance.equals(that.instance)))
163  return false;
164  return false;
165  }
166 
167  @Override
168  public int hashCode() {
169  return (category != null ? category.hashCode() : 0)
170  + (action != null ? action.hashCode() : 0)
171  + (instance != null ? instance.hashCode() : 0);
172  }
173  }
174 
178  protected SecurityContext() {}
179 
185  public static SecurityContext enter() {
187  }
188 
195  public static void check(Permission<?> permission) {
196  if (!currentSecurityContext().isGranted(permission))
197  throw new SecurityException(permission + " is not granted.");
198  }
199 
205  public abstract boolean isGranted(Permission<?> permission);
206 
215  public abstract void grant(Permission<?> permission, Object certificate);
216 
225  public abstract void revoke(Permission<?> permission, Object certificate);
226 
233  public final void grant(Permission<?> permission) {
234  grant(permission, null);
235  }
236 
243  public final void revoke(Permission<?> permission) {
244  revoke(permission, null);
245  }
246 
252  if (ctx != null)
253  return ctx;
255  }
256 }
javolution
javolution.osgi.internal.OSGiServices.getSecurityContext
static SecurityContext getSecurityContext()
Definition: OSGiServices.java:99
javolution.context.SecurityContext.revoke
abstract void revoke(Permission<?> permission, Object certificate)
javolution.context.SecurityContext.grant
abstract void grant(Permission<?> permission, Object certificate)
javolution.context.SecurityContext.Permission.implies
boolean implies(Permission<?> that)
Definition: SecurityContext.java:117
javolution.context.SecurityContext.Permission.getAction
String getAction()
Definition: SecurityContext.java:97
javolution.context.SecurityContext.Permission.getCategory
Class<? super T > getCategory()
Definition: SecurityContext.java:90
javolution.context.SecurityContext.isGranted
abstract boolean isGranted(Permission<?> permission)
javolution.context.SecurityContext.Permission.category
final Class<? super T > category
Definition: SecurityContext.java:56
javolution.context.SecurityContext.check
static void check(Permission<?> permission)
Definition: SecurityContext.java:195
javolution.context.SecurityContext.Permission.toString
String toString()
Definition: SecurityContext.java:134
javolution.context.SecurityContext.Permission.action
final String action
Definition: SecurityContext.java:58
javolution.context.SecurityContext.Permission.ALL
static final Permission< Object > ALL
Definition: SecurityContext.java:53
javolution.context.AbstractContext
Definition: AbstractContext.java:40
javolution.context.SecurityContext.Permission.instance
final T instance
Definition: SecurityContext.java:60
javolution.context.SecurityContext.Permission.Permission
Permission(Class<? super T > category, String action, T instance)
Definition: SecurityContext.java:81
javolution.context.AbstractContext.current
static AbstractContext current()
Definition: AbstractContext.java:61
javolution.context.SecurityContext
Definition: SecurityContext.java:34
javolution.context.SecurityContext.revoke
final void revoke(Permission<?> permission)
Definition: SecurityContext.java:243
javolution.context.SecurityContext.Permission.hashCode
int hashCode()
Definition: SecurityContext.java:168
javolution.context.AbstractContext.enterInner
AbstractContext enterInner()
Definition: AbstractContext.java:141
javolution.context.SecurityContext.Permission
Definition: SecurityContext.java:48
javolution.osgi.internal
Definition: ConfigurableListenerImpl.java:9
javolution.context.SecurityContext.Permission.getInstance
T getInstance()
Definition: SecurityContext.java:104
javolution.context.SecurityContext.Permission.equals
boolean equals(Object obj)
Definition: SecurityContext.java:146
javolution.context.SecurityContext.Permission.Permission
Permission(Class<? super T > category, String action)
Definition: SecurityContext.java:73
javolution.context.SecurityContext.grant
final void grant(Permission<?> permission)
Definition: SecurityContext.java:233
javolution.context.SecurityContext.Permission.Permission
Permission(Class<? super T > category)
Definition: SecurityContext.java:65
javolution.osgi.internal.OSGiServices
Definition: OSGiServices.java:50
javolution.osgi
javolution.context.SecurityContext.currentSecurityContext
static SecurityContext currentSecurityContext()
Definition: SecurityContext.java:250
javolution.context.SecurityContext.SecurityContext
SecurityContext()
Definition: SecurityContext.java:178
javolution.context.SecurityContext.enter
static SecurityContext enter()
Definition: SecurityContext.java:185