You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stanbol.apache.org by rw...@apache.org on 2012/12/25 11:57:31 UTC
svn commit: r1425737 - in
/stanbol/trunk/commons/stanboltools/datafileprovider/src/main/java/org/apache/stanbol/commons/stanboltools/datafileprovider/impl:
MainDataFileProvider.java tracking/DataFileTrackerImpl.java
Author: rwesten
Date: Tue Dec 25 10:57:31 2012
New Revision: 1425737
URL: http://svn.apache.org/viewvc?rev=1425737&view=rev
Log:
STANBOL-864: The MainDataFile provider now accesses the datafile folder using AccessController.doPrivileged
Modified:
stanbol/trunk/commons/stanboltools/datafileprovider/src/main/java/org/apache/stanbol/commons/stanboltools/datafileprovider/impl/MainDataFileProvider.java
stanbol/trunk/commons/stanboltools/datafileprovider/src/main/java/org/apache/stanbol/commons/stanboltools/datafileprovider/impl/tracking/DataFileTrackerImpl.java
Modified: stanbol/trunk/commons/stanboltools/datafileprovider/src/main/java/org/apache/stanbol/commons/stanboltools/datafileprovider/impl/MainDataFileProvider.java
URL: http://svn.apache.org/viewvc/stanbol/trunk/commons/stanboltools/datafileprovider/src/main/java/org/apache/stanbol/commons/stanboltools/datafileprovider/impl/MainDataFileProvider.java?rev=1425737&r1=1425736&r2=1425737&view=diff
==============================================================================
--- stanbol/trunk/commons/stanboltools/datafileprovider/src/main/java/org/apache/stanbol/commons/stanboltools/datafileprovider/impl/MainDataFileProvider.java (original)
+++ stanbol/trunk/commons/stanboltools/datafileprovider/src/main/java/org/apache/stanbol/commons/stanboltools/datafileprovider/impl/MainDataFileProvider.java Tue Dec 25 10:57:31 2012
@@ -20,6 +20,10 @@ import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
+import java.security.AccessController;
+import java.security.PrivilegedAction;
+import java.security.PrivilegedActionException;
+import java.security.PrivilegedExceptionAction;
import java.util.Arrays;
import java.util.Collections;
import java.util.Dictionary;
@@ -153,7 +157,7 @@ public class MainDataFileProvider implem
String filename, Map<String, String> comments) throws IOException {
InputStream result = null;
String fileUrl = null;
- File dataFile = getDataFile(bundleSymbolicName, filename);
+ final File dataFile = getDataFile(bundleSymbolicName, filename);
// Then, if not found, query other DataFileProviders,
// ordered by service ranking
if(dataFile == null) {
@@ -182,7 +186,21 @@ public class MainDataFileProvider implem
}
}
} else {
- result = new FileInputStream(dataFile);
+ try {
+ result = AccessController.doPrivileged(new PrivilegedExceptionAction<InputStream>() {
+ @Override
+ public InputStream run() throws IOException {
+ return new FileInputStream(dataFile);
+ }
+ });
+ } catch (PrivilegedActionException pae) {
+ Exception e = pae.getException();
+ if(e instanceof IOException){
+ throw (IOException)e;
+ } else {
+ throw RuntimeException.class.cast(e);
+ }
+ }
fileUrl = dataFile.toURI().toASCIIString();
}
@@ -258,8 +276,7 @@ public class MainDataFileProvider implem
* @param filename
* @return
*/
- private File getDataFile(String bundleSymbolicName, String filename) {
- File dataFile = null;
+ private File getDataFile(String bundleSymbolicName, final String filename) {
// First look for the file in our data folder,
// with and without bundle symbolic name prefix
final String [] candidateNames = bundleSymbolicName == null ?
@@ -268,17 +285,23 @@ public class MainDataFileProvider implem
bundleSymbolicName + "-" + filename,
filename
};
- for(String name : candidateNames) {
- dataFile = new File(dataFilesFolder, name);
- log.debug("Looking for file {}", dataFile.getAbsolutePath());
- if(dataFile.exists() && dataFile.canRead()) {
- log.debug("File found in data files folder: {}", filename);
- break;
- } else {
- dataFile = null;
+ return AccessController.doPrivileged(new PrivilegedAction<File>() {
+ @Override
+ public File run() {
+ File dataFile = null;
+ for(String name : candidateNames) {
+ dataFile = new File(dataFilesFolder, name);
+ log.debug("Looking for file {}", dataFile.getAbsolutePath());
+ if(dataFile.exists() && dataFile.canRead()) {
+ log.debug("File found in data files folder: {}", filename);
+ break;
+ } else {
+ dataFile = null;
+ }
+ }
+ return dataFile;
}
- }
- return dataFile;
+ });
}
File getDataFilesFolder() {
Modified: stanbol/trunk/commons/stanboltools/datafileprovider/src/main/java/org/apache/stanbol/commons/stanboltools/datafileprovider/impl/tracking/DataFileTrackerImpl.java
URL: http://svn.apache.org/viewvc/stanbol/trunk/commons/stanboltools/datafileprovider/src/main/java/org/apache/stanbol/commons/stanboltools/datafileprovider/impl/tracking/DataFileTrackerImpl.java?rev=1425737&r1=1425736&r2=1425737&view=diff
==============================================================================
--- stanbol/trunk/commons/stanboltools/datafileprovider/src/main/java/org/apache/stanbol/commons/stanboltools/datafileprovider/impl/tracking/DataFileTrackerImpl.java (original)
+++ stanbol/trunk/commons/stanboltools/datafileprovider/src/main/java/org/apache/stanbol/commons/stanboltools/datafileprovider/impl/tracking/DataFileTrackerImpl.java Tue Dec 25 10:57:31 2012
@@ -60,8 +60,7 @@ import org.slf4j.LoggerFactory;
* @author Rupert Westenthaler.
*
*/
-@Component(//specVersion="1.1-felix", //to use the update property for @Reference
- immediate=true, metatype=true)
+@Component(immediate=true, metatype=true)
@Service
@Property(name=Constants.SERVICE_RANKING, intValue=Integer.MAX_VALUE)
public final class DataFileTrackerImpl implements DataFileTracker {
@@ -95,9 +94,7 @@ public final class DataFileTrackerImpl i
policy=ReferencePolicy.DYNAMIC,
strategy=ReferenceStrategy.EVENT,
bind="bindDataFileProvider",
- unbind="unbindDataFileProvider"//,
- //updated="bindDataFileProvider"
- )
+ unbind="unbindDataFileProvider")
protected DataFileProvider _dataFileProvider;
/**