NamespaceAction.java
package emissary.server.mvc;
import emissary.core.Namespace;
import emissary.core.NamespaceException;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.ws.rs.GET;
import jakarta.ws.rs.Path;
import jakarta.ws.rs.Produces;
import jakarta.ws.rs.core.Context;
import jakarta.ws.rs.core.MediaType;
import org.glassfish.jersey.server.mvc.Template;
import java.util.HashMap;
import java.util.LinkedHashSet;
import java.util.Map;
import java.util.Set;
@Path("")
// context is emissary
public class NamespaceAction {
@GET
@Path("/Namespace.action")
@Produces(MediaType.TEXT_HTML)
@Template(name = "/namespace")
public Map<String, Object> getNamespace(@Context HttpServletRequest request) {
Map<String, Object> model = new HashMap<>();
Set<NamespaceInfo> namespaces = new LinkedHashSet<>();
int rowCount = 0;
for (String key : Namespace.keySet()) {
String clz = rowCount++ % 2 == 0 ? "even" : "odd";
String context = request.getContextPath();
namespaces.add(new NamespaceInfo(key, clz, context));
}
model.put("namespaces", namespaces);
return model;
}
static class NamespaceInfo {
final String key;
final String clz;
final Object value;
final String valueClassName;
final String dumpUrl;
final String transferUrl;
final boolean isDir;
public NamespaceInfo(String key, String clz, String context) {
this.key = key;
this.clz = clz;
Object tempValue;
try {
tempValue = Namespace.lookup(key);
} catch (NamespaceException e) {
tempValue = e.getMessage();
}
this.value = tempValue;
this.valueClassName = this.value.getClass().getName();
this.isDir = key.contains("DirectoryPlace");
this.dumpUrl = context + "/DumpDirectory.action?targetDir=" + key;
this.transferUrl = context + "/TransferDirectory.action?targetDir=" + key;
}
}
}