in framework/src/main/java/org/apache/felix/framework/util/SecureAction.java [1914:2111]
public Object run() throws Exception
{
int action = m_action;
Object arg1 = m_arg1;
Object arg2 = m_arg2;
Object arg3 = m_arg3;
Object arg4 = m_arg4;
Object arg5 = m_arg5;
Object arg6 = m_arg6;
unset();
switch (action)
{
case INITIALIZE_CONTEXT_ACTION:
return AccessController.getContext();
case ADD_EXTENSION_URL_ACTION:
Method addURL =
URLClassLoader.class.getDeclaredMethod("addURL",
URL.class);
getAccessor(URLClassLoader.class).accept(new AccessibleObject[]{addURL});
addURL.invoke(arg2, arg1);
return null;
case CREATE_TMPFILE_ACTION:
return File.createTempFile((String) arg1, (String) arg2, (File) arg3);
case CREATE_URL_ACTION:
return new URL((String) arg1, (String) arg2,
((Integer) arg3), (String) arg4,
(URLStreamHandler) arg5);
case CREATE_URL_WITH_CONTEXT_ACTION:
return new URL((URL) arg1, (String) arg2, (URLStreamHandler) arg3);
case DELETE_FILE_ACTION:
return ((File) arg1).delete() ? Boolean.TRUE : Boolean.FALSE;
case EXEC_ACTION:
return Runtime.getRuntime().exec((String) arg1);
case FILE_EXISTS_ACTION:
return ((File) arg1).exists() ? Boolean.TRUE : Boolean.FALSE;
case FILE_IS_DIRECTORY_ACTION:
return ((File) arg1).isDirectory() ? Boolean.TRUE : Boolean.FALSE;
case FOR_NAME_ACTION:
return (arg2 == null) ? Class.forName((String) arg1) : Class.forName((String) arg1, true,
(ClassLoader) arg2);
case GET_ABSOLUTE_PATH_ACTION:
return ((File) arg1).getAbsolutePath();
case GET_CONSTRUCTOR_ACTION:
return ((Class<?>) arg1).getConstructor((Class<?>[]) arg2);
case GET_DECLARED_CONSTRUCTOR_ACTION:
return ((Class<?>) arg1).getDeclaredConstructor((Class<?>[]) arg2);
case GET_DECLARED_METHOD_ACTION:
return ((Class<?>) arg1).getDeclaredMethod((String) arg2, (Class<?>[]) arg3);
case GET_FIELD_ACTION:
Field field = ((Class<?>) arg1).getDeclaredField((String) arg2);
getAccessor((Class<?>) arg1).accept(new AccessibleObject[]{field});
return field.get(arg3);
case GET_FILE_INPUT_ACTION:
return new FileInputStream((File) arg1);
case GET_FILE_OUTPUT_ACTION:
return new FileOutputStream((File) arg1);
case TO_URI_ACTION:
return ((File) arg1).toURI();
case GET_METHOD_ACTION:
return ((Class<?>) arg1).getMethod((String) arg2, (Class<?>[]) arg3);
case GET_POLICY_ACTION:
return Policy.getPolicy();
case GET_PROPERTY_ACTION:
return System.getProperty((String) arg1, (String) arg2);
case GET_PARENT_CLASS_LOADER_ACTION:
return ((ClassLoader) arg1).getParent();
case GET_SYSTEM_CLASS_LOADER_ACTION:
return ClassLoader.getSystemClassLoader();
case GET_URL_INPUT_ACTION:
return ((URLConnection) arg1).getInputStream();
case INVOKE_CONSTRUCTOR_ACTION:
return ((Constructor<?>) arg1).newInstance((Object[]) arg2);
case INVOKE_DIRECTMETHOD_ACTION:
return ((Method) arg1).invoke(arg2, (Object[]) arg3);
case INVOKE_METHOD_ACTION:
getAccessor(((Method) arg1).getDeclaringClass()).accept(new AccessibleObject[]{(Method) arg1});
return ((Method) arg1).invoke(arg2, (Object[]) arg3);
case LIST_DIRECTORY_ACTION:
return ((File) arg1).listFiles();
case MAKE_DIRECTORIES_ACTION:
return ((File) arg1).mkdirs() ? Boolean.TRUE : Boolean.FALSE;
case MAKE_DIRECTORY_ACTION:
return ((File) arg1).mkdir() ? Boolean.TRUE : Boolean.FALSE;
case OPEN_ZIPFILE_ACTION:
return new ZipFile((File) arg1);
case OPEN_URLCONNECTION_ACTION:
return ((URL) arg1).openConnection();
case RENAME_FILE_ACTION:
return ((File) arg1).renameTo((File) arg2) ? Boolean.TRUE : Boolean.FALSE;
case SET_ACCESSIBLE_ACTION:
getAccessor(((Executable) arg1).getDeclaringClass()).accept(new AccessibleObject[]{(Executable) arg1});
return null;
case START_ACTIVATOR_ACTION:
((BundleActivator) arg1).start((BundleContext) arg2);
return null;
case STOP_ACTIVATOR_ACTION:
((BundleActivator) arg1).stop((BundleContext) arg2);
return null;
case SWAP_FIELD_ACTION:
return _swapStaticFieldIfNotClass((Class<?>) arg1,
(Class<?>) arg2, (Class<?>) arg3, (String) arg4);
case SYSTEM_EXIT_ACTION:
System.exit(((Integer) arg1));
case FLUSH_FIELD_ACTION:
_flush(((Class<?>) arg1), arg2);
return null;
case GET_CLASS_LOADER_ACTION:
return ((Class<?>) arg1).getClassLoader();
case INVOKE_BUNDLE_FIND_HOOK:
((org.osgi.framework.hooks.bundle.FindHook) arg1).find(
(BundleContext) arg2, (Collection<Bundle>) arg3);
return null;
case INVOKE_BUNDLE_EVENT_HOOK:
((org.osgi.framework.hooks.bundle.EventHook) arg1).event(
(BundleEvent) arg2, (Collection<BundleContext>) arg3);
return null;
case INVOKE_WEAVING_HOOK:
((org.osgi.framework.hooks.weaving.WeavingHook) arg1).weave(
(org.osgi.framework.hooks.weaving.WovenClass) arg2);
return null;
case INVOKE_SERVICE_EVENT_HOOK:
((org.osgi.framework.hooks.service.EventHook) arg1).event(
(ServiceEvent) arg2, (Collection<BundleContext>) arg3);
return null;
case INVOKE_SERVICE_FIND_HOOK:
((org.osgi.framework.hooks.service.FindHook) arg1).find(
(BundleContext) arg2, (String) arg3, (String) arg4,
((Boolean) arg5),
(Collection<ServiceReference<?>>) arg6);
return null;
case INVOKE_SERVICE_LISTENER_HOOK_ADDED:
((org.osgi.framework.hooks.service.ListenerHook) arg1).added(
(Collection<ListenerHook.ListenerInfo>) arg2);
return null;
case INVOKE_SERVICE_LISTENER_HOOK_REMOVED:
((org.osgi.framework.hooks.service.ListenerHook) arg1).removed(
(Collection<ListenerHook.ListenerInfo>) arg2);
return null;
case INVOKE_SERVICE_EVENT_LISTENER_HOOK:
((org.osgi.framework.hooks.service.EventListenerHook) arg1).event(
(ServiceEvent) arg2,
(Map<BundleContext, Collection<ListenerHook.ListenerInfo>>) arg3);
return null;
case INVOKE_RESOLVER_HOOK_FACTORY:
return ((org.osgi.framework.hooks.resolver.ResolverHookFactory) arg1).begin(
(Collection<BundleRevision>) arg2);
case INVOKE_RESOLVER_HOOK_RESOLVABLE:
((org.osgi.framework.hooks.resolver.ResolverHook) arg1).filterResolvable(
(Collection<BundleRevision>) arg2);
return null;
case INVOKE_RESOLVER_HOOK_SINGLETON:
((org.osgi.framework.hooks.resolver.ResolverHook) arg1)
.filterSingletonCollisions(
(BundleCapability) arg2,
(Collection<BundleCapability>) arg3);
return null;
case INVOKE_RESOLVER_HOOK_MATCHES:
((org.osgi.framework.hooks.resolver.ResolverHook) arg1).filterMatches(
(BundleRequirement) arg2,
(Collection<BundleCapability>) arg3);
return null;
case INVOKE_RESOLVER_HOOK_END:
((org.osgi.framework.hooks.resolver.ResolverHook) arg1).end();
return null;
case INVOKE_BUNDLE_COLLISION_HOOK:
((org.osgi.framework.hooks.bundle.CollisionHook) arg1).filterCollisions((Integer) arg2,
(Bundle) arg3, (Collection<Bundle>) arg4);
return null;
case OPEN_JARFILE_ACTION:
return new JarFile((File) arg1);
case DELETE_FILEONEXIT_ACTION:
((File) arg1).deleteOnExit();
return null;
case INVOKE_WOVEN_CLASS_LISTENER:
((org.osgi.framework.hooks.weaving.WovenClassListener) arg1).modified(
(org.osgi.framework.hooks.weaving.WovenClass) arg2);
return null;
case GET_CANONICAL_PATH:
return ((File) arg1).getCanonicalPath();
case CREATE_PROXY:
return Proxy.newProxyInstance((ClassLoader)arg1, (Class<?>[])arg2,
(InvocationHandler) arg3);
case LAST_MODIFIED:
return ((File) arg1).lastModified();
case FILE_IS_FILE_ACTION:
return ((File) arg1).isFile() ? Boolean.TRUE : Boolean.FALSE;
case GET_FILE_CHANNEL_ACTION:
return FileChannel.open(((File) arg1).toPath(), StandardOpenOption.CREATE, StandardOpenOption.WRITE);
case GET_INPUT_ACTION:
return Files.newInputStream(((File) arg1).toPath());
case GET_OUTPUT_ACTION:
return Files.newOutputStream(((File) arg1).toPath());
}
return null;
}