Author: tolusha
Date: 2010-12-16 10:15:39 -0500 (Thu, 16 Dec 2010)
New Revision: 3669
Modified:
kernel/trunk/exo.kernel.commons/src/main/java/org/exoplatform/commons/utils/PrivilegedFileHelper.java
Log:
EXOJCR-1090: allow to create zipOutputStream in privileged mode
Modified:
kernel/trunk/exo.kernel.commons/src/main/java/org/exoplatform/commons/utils/PrivilegedFileHelper.java
===================================================================
---
kernel/trunk/exo.kernel.commons/src/main/java/org/exoplatform/commons/utils/PrivilegedFileHelper.java 2010-12-16
12:45:04 UTC (rev 3668)
+++
kernel/trunk/exo.kernel.commons/src/main/java/org/exoplatform/commons/utils/PrivilegedFileHelper.java 2010-12-16
15:15:39 UTC (rev 3669)
@@ -30,6 +30,7 @@
import java.security.PrivilegedAction;
import java.security.PrivilegedActionException;
import java.security.PrivilegedExceptionAction;
+import java.util.zip.ZipOutputStream;
/**
* @author <a href="anatoliy.bazko(a)exoplatform.org">Anatoliy
Bazko</a>
@@ -79,6 +80,44 @@
}
/**
+ * Create ZipOutputStream in privileged mode.
+ *
+ * @param file
+ * @return
+ * @throws FileNotFoundException
+ */
+ public static ZipOutputStream zipOutputStream(final File file) throws
FileNotFoundException
+ {
+ PrivilegedExceptionAction<ZipOutputStream> action = new
PrivilegedExceptionAction<ZipOutputStream>()
+ {
+ public ZipOutputStream run() throws Exception
+ {
+ return new ZipOutputStream(new FileOutputStream(file));
+ }
+ };
+ try
+ {
+ return AccessController.doPrivileged(action);
+ }
+ catch (PrivilegedActionException pae)
+ {
+ Throwable cause = pae.getCause();
+ if (cause instanceof FileNotFoundException)
+ {
+ throw (FileNotFoundException)cause;
+ }
+ else if (cause instanceof RuntimeException)
+ {
+ throw (RuntimeException)cause;
+ }
+ else
+ {
+ throw new RuntimeException(cause);
+ }
+ }
+ }
+
+ /**
* Create FileOutputStream in privileged mode.
*
* @param name