diff options
author | Roberto E. Escobar | 2014-11-05 19:56:47 +0000 |
---|---|---|
committer | Roberto E. Escobar | 2014-11-05 19:56:59 +0000 |
commit | b16883a7130f13f1eb75dd9d2576470d6a613aee (patch) | |
tree | eff6c2d2c5ce92f81570e5d0468263dfac97508c /plugins/org.eclipse.osee.jaxrs.server | |
parent | bfa253f40a9465ce9729e1196fefc9493256d0d9 (diff) | |
download | org.eclipse.osee-b16883a7130f13f1eb75dd9d2576470d6a613aee.tar.gz org.eclipse.osee-b16883a7130f13f1eb75dd9d2576470d6a613aee.tar.xz org.eclipse.osee-b16883a7130f13f1eb75dd9d2576470d6a613aee.zip |
refinment: Provide fallback html view
Change-Id: Iad74d79dec4fd08c3f5d1823821c10119e07b143
Diffstat (limited to 'plugins/org.eclipse.osee.jaxrs.server')
-rw-r--r-- | plugins/org.eclipse.osee.jaxrs.server/src/org/eclipse/osee/jaxrs/server/internal/resources/AbstractHtmlWriter.java | 43 |
1 files changed, 42 insertions, 1 deletions
diff --git a/plugins/org.eclipse.osee.jaxrs.server/src/org/eclipse/osee/jaxrs/server/internal/resources/AbstractHtmlWriter.java b/plugins/org.eclipse.osee.jaxrs.server/src/org/eclipse/osee/jaxrs/server/internal/resources/AbstractHtmlWriter.java index 18c2d5b90c7..1f39f2b9242 100644 --- a/plugins/org.eclipse.osee.jaxrs.server/src/org/eclipse/osee/jaxrs/server/internal/resources/AbstractHtmlWriter.java +++ b/plugins/org.eclipse.osee.jaxrs.server/src/org/eclipse/osee/jaxrs/server/internal/resources/AbstractHtmlWriter.java @@ -12,9 +12,13 @@ package org.eclipse.osee.jaxrs.server.internal.resources; import java.io.IOException; import java.io.OutputStream; +import java.io.OutputStreamWriter; +import java.io.Writer; import java.lang.annotation.Annotation; import java.lang.reflect.Type; import java.util.Collection; +import java.util.Map; +import java.util.Map.Entry; import javax.ws.rs.WebApplicationException; import javax.ws.rs.core.Context; import javax.ws.rs.core.MediaType; @@ -44,9 +48,46 @@ public abstract class AbstractHtmlWriter<T> extends AbstractMessageBodyWriter<T> ViewModel model = asViewModel(data); MessageBodyWriter<ViewModel> writer = providers.getMessageBodyWriter(ViewModel.class, genericType, annotations, mediaType); - writer.writeTo(model, ViewModel.class, genericType, annotations, mediaType, httpHeaders, entityStream); + if (writer != null) { + writer.writeTo(model, ViewModel.class, genericType, annotations, mediaType, httpHeaders, entityStream); + } else { + writeHtml(model, entityStream); + } } public abstract ViewModel asViewModel(T data); + /** + * Fall-back HTML - used when templating system is not initialized. + */ + private void writeHtml(ViewModel model, OutputStream output) throws IOException { + Writer writer = new OutputStreamWriter(output); + Map<String, Object> asMap = model.asMap(); + writer.write("<!DOCTYPE HTML>"); + writer.write("<html lang=\"en\"><head><link rel=\"stylesheet\" href=\"/lib/css/bootstrap.min.css\">"); + writer.write("<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"></meta>"); + writer.write("<meta charset=\"UTF-8\"></head>"); + writer.write("<body>"); + writer.write("<div class=\"container\">"); + writer.write("<h1>OSEE - "); + writer.write(model.getViewId()); + writer.write("</h1>"); + writer.write("<div class=\"container\" class=\"panel-body\">"); + writer.write("<div class=\"lead\">"); + writer.write("Templating system is not initialized. Using default template."); + writer.write("</div>"); + writer.write("<table class=\"table table-striped\">"); + writer.write("<thead><tr><th>Key</th><th>Value</th></tr></thead>"); + writer.write("<tbody>"); + for (Entry<String, Object> entry : asMap.entrySet()) { + writer.write("<tr><td>"); + writer.write(entry.getKey()); + writer.write("</td><td>"); + writer.write(String.valueOf(entry.getValue())); + writer.write("</td></tr>"); + } + writer.write("</tbody></table></div></div></body></html>"); + writer.flush(); + } + } |