package edu.harvard.med.screensaver.rest; import com.thoughtworks.xstream.converters.Converter; import com.thoughtworks.xstream.converters.UnmarshallingContext; import com.thoughtworks.xstream.io.HierarchicalStreamReader; import com.thoughtworks.xstream.io.HierarchicalStreamWriter; import org.springframework.beans.factory.annotation.Autowired; import edu.harvard.med.screensaver.db.GenericEntityDAO; import edu.harvard.med.screensaver.model.AttachedFile; public abstract class RestConverter implements Converter { @Autowired private GenericEntityDAO genericEntityDao; @Autowired private EntityUriGenerator<String> entityUriGenerator; @Autowired private EntityToRestNodeNameMap entityToRestNodeNameMap; public GenericEntityDAO getDao() { return genericEntityDao; } public EntityUriGenerator<String> getEntityUriGenerator() { return entityUriGenerator; } public String getNodeName(Class clazz) { return entityToRestNodeNameMap.getNodeName(clazz); } public Object unmarshal(HierarchicalStreamReader reader, UnmarshallingContext context) { return null; } // TODO: move to an intermediate abstract subclass: HasAttachedFilesConverter protected void writeAttachedFile(AttachedFile attachedFile, HierarchicalStreamWriter writer) { AttachedFile af = (AttachedFile)attachedFile.restrict(); if(af == null ) return; writer.startNode(getNodeName(AttachedFile.class)); writer.addAttribute("name", af.getFilename()); writer.addAttribute("dateCreated", af.getDateCreated().toString()); writer.addAttribute("href", (String) af.acceptVisitor(getEntityUriGenerator())); writer.endNode(); } }