Skip to content
Snippets Groups Projects
Verified Commit 4e3c4f85 authored by Timm Fitschen's avatar Timm Fitschen
Browse files

WIP: refactoring

parent ec34f50c
No related branches found
No related tags found
No related merge requests found
package caosdb.server.converter.xml; package caosdb.server.converter.xml;
import caosdb.server.accessControl.AuthenticationUtils;
import caosdb.server.accessControl.Principal;
import caosdb.server.accessControl.UserSources;
import caosdb.server.converter.misc.AbstractContainerHelper;
import caosdb.server.entity.Entity;
import caosdb.server.entity.EntityInterface;
import caosdb.server.entity.container.Container;
import caosdb.server.entity.container.TransactionContainer;
import caosdb.server.resource.JdomRepresentation;
import java.io.IOException; import java.io.IOException;
import java.util.Collection; import java.util.Collection;
import org.apache.shiro.subject.Subject; import org.apache.shiro.subject.Subject;
...@@ -23,6 +14,15 @@ import org.restlet.representation.Representation; ...@@ -23,6 +14,15 @@ import org.restlet.representation.Representation;
import org.restlet.representation.Variant; import org.restlet.representation.Variant;
import org.restlet.resource.Resource; import org.restlet.resource.Resource;
import org.restlet.resource.ResourceException; import org.restlet.resource.ResourceException;
import caosdb.server.accessControl.AuthenticationUtils;
import caosdb.server.accessControl.Principal;
import caosdb.server.accessControl.UserSources;
import caosdb.server.converter.misc.AbstractContainerHelper;
import caosdb.server.entity.Entity;
import caosdb.server.entity.EntityInterface;
import caosdb.server.entity.container.Container;
import caosdb.server.entity.container.TransactionContainer;
import caosdb.server.resource.JdomRepresentation;
public class EntityXMLConverterHelper extends AbstractContainerHelper { public class EntityXMLConverterHelper extends AbstractContainerHelper {
...@@ -70,7 +70,7 @@ public class EntityXMLConverterHelper extends AbstractContainerHelper { ...@@ -70,7 +70,7 @@ public class EntityXMLConverterHelper extends AbstractContainerHelper {
private Representation toJdomRepresentation(TransactionContainer container, Resource resource) { private Representation toJdomRepresentation(TransactionContainer container, Resource resource) {
Document doc = toDocument(container, resource); Document doc = toDocument(container, resource);
String xsl = resource.getAttribute("xsl"); String xsl = resource.getResponseAttributes().get("xsl").toString();
if (xsl != null) { if (xsl != null) {
addStyleSheet(doc, xsl); addStyleSheet(doc, xsl);
} }
......
...@@ -74,7 +74,7 @@ public abstract class AbstractCaosDBServerResource extends ServerResource { ...@@ -74,7 +74,7 @@ public abstract class AbstractCaosDBServerResource extends ServerResource {
this.utils = WebinterfaceUtils.getInstance(getHostRef()); this.utils = WebinterfaceUtils.getInstance(getHostRef());
this.setAttribute("xsl", getXSLScript()); this.getResponseAttributes().put("xsl", getXSLScript());
MediaType mediaType = getRequest().getEntity().getMediaType(); MediaType mediaType = getRequest().getEntity().getMediaType();
......
...@@ -24,7 +24,17 @@ package caosdb.server.resource; ...@@ -24,7 +24,17 @@ package caosdb.server.resource;
import static caosdb.server.FileSystem.getFromFileSystem; import static caosdb.server.FileSystem.getFromFileSystem;
import static java.net.URLDecoder.decode; import static java.net.URLDecoder.decode;
import java.io.File;
import java.io.IOException;
import org.jdom2.Attribute;
import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.JDOMException;
import org.restlet.data.Disposition;
import org.restlet.data.MediaType;
import org.restlet.data.Status;
import org.restlet.representation.FileRepresentation;
import org.restlet.representation.Representation;
import caosdb.server.database.backend.implementation.MySQL.ConnectionException; import caosdb.server.database.backend.implementation.MySQL.ConnectionException;
import caosdb.server.database.exceptions.EntityDoesNotExistException; import caosdb.server.database.exceptions.EntityDoesNotExistException;
import caosdb.server.database.misc.TransactionBenchmark; import caosdb.server.database.misc.TransactionBenchmark;
...@@ -39,17 +49,6 @@ import caosdb.server.transaction.RetrieveSparseEntityByPath; ...@@ -39,17 +49,6 @@ import caosdb.server.transaction.RetrieveSparseEntityByPath;
import caosdb.server.transaction.Transaction; import caosdb.server.transaction.Transaction;
import caosdb.server.utils.FileUtils; import caosdb.server.utils.FileUtils;
import caosdb.server.utils.ServerMessages; import caosdb.server.utils.ServerMessages;
import java.io.File;
import java.io.IOException;
import org.jdom2.Attribute;
import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.JDOMException;
import org.restlet.data.Disposition;
import org.restlet.data.MediaType;
import org.restlet.data.Status;
import org.restlet.representation.FileRepresentation;
import org.restlet.representation.Representation;
/** /**
* Download files via GET method from the file system directly without making the detour through the * Download files via GET method from the file system directly without making the detour through the
...@@ -222,4 +221,5 @@ public class FileSystemResource extends XMLServerResource { ...@@ -222,4 +221,5 @@ public class FileSystemResource extends XMLServerResource {
this.setStatus(org.restlet.data.Status.CLIENT_ERROR_METHOD_NOT_ALLOWED); this.setStatus(org.restlet.data.Status.CLIENT_ERROR_METHOD_NOT_ALLOWED);
return null; return null;
} }
} }
...@@ -19,14 +19,6 @@ ...@@ -19,14 +19,6 @@
*/ */
package caosdb.server.resource; package caosdb.server.resource;
import caosdb.server.CaosDBException;
import caosdb.server.accessControl.AuthenticationUtils;
import caosdb.server.accessControl.Principal;
import caosdb.server.accessControl.UserSources;
import caosdb.server.converter.xml.XMLParser;
import caosdb.server.database.backend.implementation.MySQL.ConnectionException;
import caosdb.server.entity.Message;
import caosdb.server.utils.ServerMessages;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.security.NoSuchAlgorithmException; import java.security.NoSuchAlgorithmException;
...@@ -40,12 +32,21 @@ import org.apache.shiro.subject.Subject; ...@@ -40,12 +32,21 @@ import org.apache.shiro.subject.Subject;
import org.jdom2.Document; import org.jdom2.Document;
import org.jdom2.Element; import org.jdom2.Element;
import org.jdom2.JDOMException; import org.jdom2.JDOMException;
import org.jdom2.ProcessingInstruction;
import org.restlet.data.Status; import org.restlet.data.Status;
import org.restlet.representation.Representation; import org.restlet.representation.Representation;
import org.restlet.resource.Delete; import org.restlet.resource.Delete;
import org.restlet.resource.Get; import org.restlet.resource.Get;
import org.restlet.resource.Post; import org.restlet.resource.Post;
import org.restlet.resource.Put; import org.restlet.resource.Put;
import caosdb.server.CaosDBException;
import caosdb.server.accessControl.AuthenticationUtils;
import caosdb.server.accessControl.Principal;
import caosdb.server.accessControl.UserSources;
import caosdb.server.converter.xml.XMLParser;
import caosdb.server.database.backend.implementation.MySQL.ConnectionException;
import caosdb.server.entity.Message;
import caosdb.server.utils.ServerMessages;
/** /**
* This is a temporary bridge class. It contains all code which is necessary for any resources that * This is a temporary bridge class. It contains all code which is necessary for any resources that
...@@ -224,7 +225,7 @@ public abstract class XMLServerResource extends AbstractCaosDBServerResource { ...@@ -224,7 +225,7 @@ public abstract class XMLServerResource extends AbstractCaosDBServerResource {
} }
/** Wrap an element for an "OK" response. */ /** Wrap an element for an "OK" response. */
protected JdomRepresentation ok(Element root) { protected Representation ok(Element root) {
return ok(new Document(root)); return ok(new Document(root));
} }
...@@ -232,8 +233,8 @@ public abstract class XMLServerResource extends AbstractCaosDBServerResource { ...@@ -232,8 +233,8 @@ public abstract class XMLServerResource extends AbstractCaosDBServerResource {
* Return a JDomRepresentation of the document and leave the {@link Response}'s {@link Status} * Return a JDomRepresentation of the document and leave the {@link Response}'s {@link Status}
* where it is - which is usually 200 - OK when this method happens to be called. * where it is - which is usually 200 - OK when this method happens to be called.
*/ */
protected JdomRepresentation ok(final Document doc) { protected Representation ok(final Document doc) {
return new JdomRepresentation(doc, " "); return toJdomRepresentation(doc);
} }
/** /**
...@@ -249,12 +250,12 @@ public abstract class XMLServerResource extends AbstractCaosDBServerResource { ...@@ -249,12 +250,12 @@ public abstract class XMLServerResource extends AbstractCaosDBServerResource {
final Element root = generateRootElement(); final Element root = generateRootElement();
root.addContent(m.toElement().setName("Error")); root.addContent(m.toElement().setName("Error"));
doc.setRootElement(root); doc.setRootElement(root);
return error(new JdomRepresentation(doc, " "), status); return error(doc, status);
} }
protected Representation error(Representation entity, Status status) { protected Representation error(Document doc, Status status) {
getResponse().setStatus(status); getResponse().setStatus(status);
return entity; return toJdomRepresentation(doc);
} }
protected Representation error(final Message m) { protected Representation error(final Message m) {
...@@ -262,7 +263,7 @@ public abstract class XMLServerResource extends AbstractCaosDBServerResource { ...@@ -262,7 +263,7 @@ public abstract class XMLServerResource extends AbstractCaosDBServerResource {
} }
protected Representation error(final Status status) { protected Representation error(final Status status) {
return error((Representation) null, status); return error(new Message(status), status);
} }
/** /**
...@@ -272,12 +273,12 @@ public abstract class XMLServerResource extends AbstractCaosDBServerResource { ...@@ -272,12 +273,12 @@ public abstract class XMLServerResource extends AbstractCaosDBServerResource {
* @param m - the warning message. * @param m - the warning message.
* @return A Representation of the warning. * @return A Representation of the warning.
*/ */
protected JdomRepresentation warning(final Message m) { protected Representation warning(final Message m) {
final Document doc = new Document(); final Document doc = new Document();
final Element root = generateRootElement(); final Element root = generateRootElement();
root.addContent(m.toElement().setName("Warning")); root.addContent(m.toElement().setName("Warning"));
doc.setRootElement(root); doc.setRootElement(root);
return new JdomRepresentation(doc, " "); return toJdomRepresentation(doc);
} }
protected Representation noWellFormedNess() { protected Representation noWellFormedNess() {
...@@ -325,4 +326,22 @@ public abstract class XMLServerResource extends AbstractCaosDBServerResource { ...@@ -325,4 +326,22 @@ public abstract class XMLServerResource extends AbstractCaosDBServerResource {
} }
return root; return root;
} }
public Representation toJdomRepresentation(Document doc) {
String xsl = getXSLScript();
if(xsl!=null) {
addStyleSheet(doc, xsl);
}
return new JdomRepresentation(doc, " ");
}
/** adds the xslt processing instruction to the document. */
private void addStyleSheet(Document document, String xslPath) {
final ProcessingInstruction pi =
new ProcessingInstruction("xml-stylesheet", "type=\"text/xsl\" href=\"" + xslPath + "\" ");
document.getContent().add(0, pi);
}
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment