001package org.nuxeo.template.jaxrs; 002 003import java.util.List; 004 005import javax.ws.rs.GET; 006import javax.ws.rs.Path; 007import javax.ws.rs.PathParam; 008import javax.ws.rs.Produces; 009 010import org.nuxeo.ecm.core.api.Blob; 011import org.nuxeo.ecm.core.api.DocumentModel; 012import org.nuxeo.ecm.core.api.IdRef; 013import org.nuxeo.ecm.core.api.blobholder.BlobHolder; 014import org.nuxeo.ecm.webengine.model.WebObject; 015import org.nuxeo.ecm.webengine.model.impl.DefaultObject; 016import org.nuxeo.runtime.api.Framework; 017import org.nuxeo.template.api.TemplateProcessorService; 018import org.nuxeo.template.api.adapters.TemplateSourceDocument; 019 020@WebObject(type = "templateResource") 021public class TemplateResource extends DefaultObject { 022 023 protected String uuid; 024 025 public TemplateResource() { 026 uuid = null; 027 } 028 029 protected void initialize(Object... args) { 030 if (args != null && args.length > 0) { 031 this.uuid = (String) args[0]; 032 } 033 } 034 035 public TemplateResource(String value) { 036 this.uuid = value; 037 } 038 039 protected TemplateSourceDocument resolve() { 040 if (uuid != null) { 041 IdRef idRef = new IdRef(uuid); 042 DocumentModel doc = getContext().getCoreSession().getDocument(idRef); 043 return doc.getAdapter(TemplateSourceDocument.class); 044 } else { 045 return null; 046 } 047 } 048 049 @GET 050 public Object get() { 051 TemplateSourceDocument source = resolve(); 052 if (source == null) { 053 return getList(); 054 } else { 055 StringBuffer sb = new StringBuffer(); 056 sb.append(source.getId() + " - " + source.getLabel()); 057 return sb.toString(); 058 } 059 } 060 061 protected String getList() { 062 063 TemplateProcessorService tps = Framework.getLocalService(TemplateProcessorService.class); 064 List<TemplateSourceDocument> sources = tps.getAvailableTemplates(getContext().getCoreSession(), null); 065 066 StringBuffer sb = new StringBuffer(); 067 for (TemplateSourceDocument source : sources) { 068 sb.append(source.getId() + " - " + source.getName() + "-" + source.getLabel()); 069 sb.append("\n"); 070 } 071 return sb.toString(); 072 } 073 074 @GET 075 @Path("resource/{resourceName}") 076 @Produces("*/*") 077 public Blob getResource(@PathParam(value = "resourceName") String resourceName) { 078 TemplateSourceDocument tmpl = resolve(); 079 return getResource(tmpl, resourceName); 080 } 081 082 static Blob getResource(TemplateSourceDocument tmpl, String resourceName) { 083 084 BlobHolder bh = tmpl.getAdaptedDoc().getAdapter(BlobHolder.class); 085 if (bh != null) { 086 for (Blob blob : bh.getBlobs()) { 087 if (resourceName.equalsIgnoreCase(blob.getFilename())) { 088 return blob; 089 } 090 } 091 } 092 return null; 093 } 094 095}