FELIX-4582 Add secure action for woven class listeners.
git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@1640956 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/framework/src/main/java/org/apache/felix/framework/util/SecureAction.java b/framework/src/main/java/org/apache/felix/framework/util/SecureAction.java
index 90a8e7a..711a62c 100644
--- a/framework/src/main/java/org/apache/felix/framework/util/SecureAction.java
+++ b/framework/src/main/java/org/apache/felix/framework/util/SecureAction.java
@@ -1448,6 +1448,30 @@
rh.end();
}
}
+
+ public void invokeWovenClassListener(
+ org.osgi.framework.hooks.weaving.WovenClassListener wcl,
+ org.osgi.framework.hooks.weaving.WovenClass wc)
+ throws Exception
+ {
+ if (System.getSecurityManager() != null)
+ {
+ Actions actions = (Actions) m_actions.get();
+ actions.set(Actions.INVOKE_WOVEN_CLASS_LISTENER, wcl, wc);
+ try
+ {
+ AccessController.doPrivileged(actions, m_acc);
+ }
+ catch (PrivilegedActionException e)
+ {
+ throw e.getException();
+ }
+ }
+ else
+ {
+ wcl.modified(wc);
+ }
+ }
private static class Actions implements PrivilegedExceptionAction
{
@@ -1507,6 +1531,7 @@
public static final int INVOKE_BUNDLE_COLLISION_HOOK = 53;
public static final int OPEN_JARFILE_ACTION = 54;
public static final int DELETE_FILEONEXIT_ACTION = 55;
+ public static final int INVOKE_WOVEN_CLASS_LISTENER = 56;
private int m_action = -1;
private Object m_arg1 = null;