public abstract class PrivilegedBlockLimit {
public PrivilegedBlockLimit(URL[] urls) {
this .urls = urls;
}
public void readResource() {
AccessController.doPrivileged(new PrivilegedAction() {
public Object run() {
System.loadLibrary("resourcelibrary");
for (int index = 0; index < urls.length; index++) {
int status = getStatusAfterLoad(urls[index]);
if (status == STATUS_ERR) {
throw new UnsupportedOperationException();
} else {
processStatus(status,urls[index]);
}
}
return null;
}
});
}
protected abstract int getStatusAfterLoad(URL url);
protected abstract void processStatus(int status, URL url) throws UnsupportedOperationException;
private URL[] urls = null;
protected static final int STATUS_ERR = -1;
}
}
|
|