public Object run()

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;
        }