📄 applicationstore.java
字号:
package com.sslexplorer.vfs.store.apps;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.apache.commons.vfs.FileObject;
import com.sslexplorer.boot.Util;
import com.sslexplorer.extensions.ExtensionBundle;
import com.sslexplorer.extensions.store.ExtensionStore;
import com.sslexplorer.security.SessionInfo;
import com.sslexplorer.vfs.DefaultNetworkPlace;
import com.sslexplorer.vfs.NetworkPlace;
import com.sslexplorer.vfs.store.file.FileMount;
import com.sslexplorer.vfs.utils.URI;
import com.sslexplorer.vfs.utils.URI.MalformedURIException;
import com.sslexplorer.vfs.webdav.AbstractStore;
import com.sslexplorer.vfs.webdav.DAVMount;
import com.sslexplorer.vfs.webdav.DAVResource;
import com.sslexplorer.vfs.webdav.DAVTransaction;
import com.sslexplorer.vfs.webdav.DAVUtilities;
import com.sslexplorer.vfs.webdav.FileObjectDAVResource;
/**
* {@link AbstractStore} implementation that creates mounts based on the
* applications available in the <i>Extension Store</i>.
* <p>
* This is used by HTML applications and the Agent (for Java application) to
* download files required.
* <p>
* It hides folders called <i>private</i> or <i>upgrade</i>.
*
* @author Brett Smith <a href="mailto: brett@3sp.com"><brett@3sp.com></a>
* @version $Revision: 1.22 $
*/
public class ApplicationStore extends AbstractStore {
/**
* Constructor.
*/
public ApplicationStore() {
super("apps", "UTF-8");
}
/*
* (non-Javadoc)
*
* @see com.sslexplorer.vfs.webdav.AbstractStore#getMountFromString(java.lang.String,
* com.sslexplorer.security.SessionInfo)
*/
public DAVMount getMountFromString(String mountName, SessionInfo session) {
try {
if (ExtensionStore.getInstance().getExtensionBundle(mountName) != null) {
ExtensionBundle b = ExtensionStore.getInstance().getExtensionBundle(mountName);
return new ApplicationStoreMount(b);
} else
return null;
} catch (Exception e) {
return null;
}
}
/* (non-Javadoc)
* @see com.sslexplorer.vfs.webdav.DAVStore#getMountIterator(com.sslexplorer.vfs.webdav.DAVTransaction)
*/
public Iterator getMountIterator(DAVTransaction transaction) throws Exception {
Iterator itr = ExtensionStore.getInstance().getExtensionBundles().iterator();
List l = new ArrayList();
while (itr.hasNext()) {
ExtensionBundle b = (ExtensionBundle) itr.next();
l.add(new ApplicationStoreMount(b));
}
return l.iterator();
}
/* (non-Javadoc)
* @see com.sslexplorer.vfs.webdav.DAVStore#validateUserEnteredPath(java.lang.String)
*/
public String validateUserEnteredPath(String path) throws IllegalArgumentException {
throw new IllegalArgumentException();
}
class ApplicationStoreMount extends FileMount {
ApplicationStoreMount(ExtensionBundle bundle) throws MalformedURIException {
super(new DefaultNetworkPlace(0, "apps", bundle.getId(), bundle.getDescription(), bundle.getBaseDir().toURI().toASCIIString(),
NetworkPlace.TYPE_HIDDEN, false, false, false, false, 0, null, null), ApplicationStore.this);
}
public DAVResource getResource(String path, DAVTransaction transaction) throws IOException {
if(path.equalsIgnoreCase("private") || path.equalsIgnoreCase("upgrade")) {
throw new IOException("Permission denied.");
}
return super.getResource(path, transaction);
}
public FileObject createVFSFileObject(String path, DAVTransaction transaction) throws IOException {
URI uri = new URI(this.getNetworkPlace().getUri());
uri.setPath(DAVUtilities.concatenatePaths(uri.getPath(), path));
FileObject root = getStore().getRepository().getFileSystemManager().resolveFile(uri.toString());
return root;
}
}
public char[] getGuestPassword(DAVTransaction transaction) {
return null;
}
public String getGuestUsername(DAVTransaction transaction) {
return null;
}
public boolean isFireEvents() {
return false;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -