Fixes sitemap and proxy calls (#860)
* Passes sitemap to the renderers for proper display and makes adjustments to the proxy call Signed-off-by: Brian Homeyer <bhomeyer@gmail.com>3.0.x
parent
1a197b59e3
commit
4d74bba05d
|
@ -63,7 +63,7 @@ public class ChartRenderer extends AbstractWidgetRenderer {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public EList<Widget> renderWidget(Widget w, StringBuilder sb) throws RenderException {
|
public EList<Widget> renderWidget(Widget w, StringBuilder sb, String sitemap) throws RenderException {
|
||||||
Chart chart = (Chart) w;
|
Chart chart = (Chart) w;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
|
|
@ -59,7 +59,7 @@ public class ColorpickerRenderer extends AbstractWidgetRenderer {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public EList<Widget> renderWidget(Widget w, StringBuilder sb) throws RenderException {
|
public EList<Widget> renderWidget(Widget w, StringBuilder sb, String sitemap) throws RenderException {
|
||||||
Colorpicker cp = (Colorpicker) w;
|
Colorpicker cp = (Colorpicker) w;
|
||||||
|
|
||||||
String snippet = getSnippet("colorpicker");
|
String snippet = getSnippet("colorpicker");
|
||||||
|
|
|
@ -54,7 +54,7 @@ public class FrameRenderer extends AbstractWidgetRenderer {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public EList<Widget> renderWidget(Widget w, StringBuilder sb) throws RenderException {
|
public EList<Widget> renderWidget(Widget w, StringBuilder sb, String sitemap) throws RenderException {
|
||||||
String snippet = getSnippet("frame");
|
String snippet = getSnippet("frame");
|
||||||
String label = StringEscapeUtils.escapeHtml(itemUIRegistry.getLabel(w));
|
String label = StringEscapeUtils.escapeHtml(itemUIRegistry.getLabel(w));
|
||||||
List<String> frameClassList = new ArrayList<>();
|
List<String> frameClassList = new ArrayList<>();
|
||||||
|
|
|
@ -51,7 +51,7 @@ public class GroupRenderer extends AbstractWidgetRenderer {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public EList<Widget> renderWidget(Widget w, StringBuilder sb) throws RenderException {
|
public EList<Widget> renderWidget(Widget w, StringBuilder sb, String sitemap) throws RenderException {
|
||||||
String snippet = getSnippet("group");
|
String snippet = getSnippet("group");
|
||||||
|
|
||||||
snippet = preprocessSnippet(snippet, w);
|
snippet = preprocessSnippet(snippet, w);
|
||||||
|
|
|
@ -58,7 +58,7 @@ public class ImageRenderer extends AbstractWidgetRenderer {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public EList<Widget> renderWidget(Widget w, StringBuilder sb) throws RenderException {
|
public EList<Widget> renderWidget(Widget w, StringBuilder sb, String sitemap) throws RenderException {
|
||||||
Image image = (Image) w;
|
Image image = (Image) w;
|
||||||
String snippet = (image.getChildren().size() > 0) ? getSnippet("image_link") : getSnippet("image");
|
String snippet = (image.getChildren().size() > 0) ? getSnippet("image_link") : getSnippet("image");
|
||||||
|
|
||||||
|
@ -72,10 +72,6 @@ public class ImageRenderer extends AbstractWidgetRenderer {
|
||||||
snippet = StringUtils.replace(snippet, "%id%", widgetId);
|
snippet = StringUtils.replace(snippet, "%id%", widgetId);
|
||||||
snippet = preprocessSnippet(snippet, w);
|
snippet = preprocessSnippet(snippet, w);
|
||||||
|
|
||||||
String sitemap = null;
|
|
||||||
if (w.eResource() != null) {
|
|
||||||
sitemap = w.eResource().getURI().path();
|
|
||||||
}
|
|
||||||
boolean validUrl = isValidURL(image.getUrl());
|
boolean validUrl = isValidURL(image.getUrl());
|
||||||
String proxiedUrl = "../proxy?sitemap=" + sitemap + "&widgetId=" + widgetId;
|
String proxiedUrl = "../proxy?sitemap=" + sitemap + "&widgetId=" + widgetId;
|
||||||
State state = itemUIRegistry.getState(w);
|
State state = itemUIRegistry.getState(w);
|
||||||
|
|
|
@ -52,7 +52,7 @@ public class ListRenderer extends AbstractWidgetRenderer {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public EList<Widget> renderWidget(Widget w, StringBuilder sb) throws RenderException {
|
public EList<Widget> renderWidget(Widget w, StringBuilder sb, String sitemap) throws RenderException {
|
||||||
String snippet = getSnippet("list");
|
String snippet = getSnippet("list");
|
||||||
snippet = snippet.replaceAll("%label%", getLabel(w));
|
snippet = snippet.replaceAll("%label%", getLabel(w));
|
||||||
|
|
||||||
|
|
|
@ -55,7 +55,7 @@ public class MapviewRenderer extends AbstractWidgetRenderer {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public EList<Widget> renderWidget(Widget w, StringBuilder sb) throws RenderException {
|
public EList<Widget> renderWidget(Widget w, StringBuilder sb, String sitemap) throws RenderException {
|
||||||
Mapview mapview = (Mapview) w;
|
Mapview mapview = (Mapview) w;
|
||||||
String snippet = getSnippet("mapview");
|
String snippet = getSnippet("mapview");
|
||||||
snippet = preprocessSnippet(snippet, mapview);
|
snippet = preprocessSnippet(snippet, mapview);
|
||||||
|
|
|
@ -122,7 +122,7 @@ public class PageRenderer extends AbstractWidgetRenderer {
|
||||||
StringBuilder postChildren = new StringBuilder(parts[1]);
|
StringBuilder postChildren = new StringBuilder(parts[1]);
|
||||||
|
|
||||||
if (parts.length == 2) {
|
if (parts.length == 2) {
|
||||||
processChildren(preChildren, postChildren, children);
|
processChildren(preChildren, postChildren, children, sitemap);
|
||||||
} else if (parts.length > 2) {
|
} else if (parts.length > 2) {
|
||||||
logger.error("Snippet '{}' contains multiple %children% sections, but only one is allowed!",
|
logger.error("Snippet '{}' contains multiple %children% sections, but only one is allowed!",
|
||||||
async ? "layer" : "main");
|
async ? "layer" : "main");
|
||||||
|
@ -130,7 +130,7 @@ public class PageRenderer extends AbstractWidgetRenderer {
|
||||||
return preChildren.append(postChildren);
|
return preChildren.append(postChildren);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void processChildren(StringBuilder sb_pre, StringBuilder sb_post, EList<Widget> children)
|
private void processChildren(StringBuilder sb_pre, StringBuilder sb_post, EList<Widget> children, String sitemap)
|
||||||
throws RenderException {
|
throws RenderException {
|
||||||
// put a single frame around all children widgets, if there are no explicit frames
|
// put a single frame around all children widgets, if there are no explicit frames
|
||||||
if (!children.isEmpty()) {
|
if (!children.isEmpty()) {
|
||||||
|
@ -158,7 +158,7 @@ public class PageRenderer extends AbstractWidgetRenderer {
|
||||||
StringBuilder newPre = new StringBuilder();
|
StringBuilder newPre = new StringBuilder();
|
||||||
StringBuilder newPost = new StringBuilder();
|
StringBuilder newPost = new StringBuilder();
|
||||||
StringBuilder widgetSB = new StringBuilder();
|
StringBuilder widgetSB = new StringBuilder();
|
||||||
EList<Widget> nextChildren = renderWidget(w, widgetSB);
|
EList<Widget> nextChildren = renderWidget(w, widgetSB, sitemap);
|
||||||
if (!nextChildren.isEmpty()) {
|
if (!nextChildren.isEmpty()) {
|
||||||
String[] parts = widgetSB.toString().split("%children%");
|
String[] parts = widgetSB.toString().split("%children%");
|
||||||
// no %children% placeholder found or at the end
|
// no %children% placeholder found or at the end
|
||||||
|
@ -179,7 +179,7 @@ public class PageRenderer extends AbstractWidgetRenderer {
|
||||||
"Snippet for widget '{}' contains multiple %children% sections, but only one is allowed!",
|
"Snippet for widget '{}' contains multiple %children% sections, but only one is allowed!",
|
||||||
widgetType);
|
widgetType);
|
||||||
}
|
}
|
||||||
processChildren(newPre, newPost, nextChildren);
|
processChildren(newPre, newPost, nextChildren, sitemap);
|
||||||
sb_pre.append(newPre);
|
sb_pre.append(newPre);
|
||||||
sb_pre.append(newPost);
|
sb_pre.append(newPost);
|
||||||
} else {
|
} else {
|
||||||
|
@ -189,10 +189,10 @@ public class PageRenderer extends AbstractWidgetRenderer {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public EList<Widget> renderWidget(Widget w, StringBuilder sb) throws RenderException {
|
public EList<Widget> renderWidget(Widget w, StringBuilder sb, String sitemap) throws RenderException {
|
||||||
for (WidgetRenderer renderer : widgetRenderers) {
|
for (WidgetRenderer renderer : widgetRenderers) {
|
||||||
if (renderer.canRender(w)) {
|
if (renderer.canRender(w)) {
|
||||||
return renderer.renderWidget(w, sb);
|
return renderer.renderWidget(w, sb, sitemap);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return ECollections.emptyEList();
|
return ECollections.emptyEList();
|
||||||
|
|
|
@ -67,7 +67,7 @@ public class SelectionRenderer extends AbstractWidgetRenderer {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public EList<Widget> renderWidget(Widget w, StringBuilder sb) throws RenderException {
|
public EList<Widget> renderWidget(Widget w, StringBuilder sb, String sitemap) throws RenderException {
|
||||||
String snippet = getSnippet("selection");
|
String snippet = getSnippet("selection");
|
||||||
|
|
||||||
snippet = preprocessSnippet(snippet, w);
|
snippet = preprocessSnippet(snippet, w);
|
||||||
|
|
|
@ -53,7 +53,7 @@ public class SetpointRenderer extends AbstractWidgetRenderer {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public EList<Widget> renderWidget(Widget w, StringBuilder sb) throws RenderException {
|
public EList<Widget> renderWidget(Widget w, StringBuilder sb, String sitemap) throws RenderException {
|
||||||
Setpoint sp = (Setpoint) w;
|
Setpoint sp = (Setpoint) w;
|
||||||
|
|
||||||
// set defaults for min, max and step
|
// set defaults for min, max and step
|
||||||
|
|
|
@ -56,7 +56,7 @@ public class SliderRenderer extends AbstractWidgetRenderer {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public EList<Widget> renderWidget(Widget w, StringBuilder sb) throws RenderException {
|
public EList<Widget> renderWidget(Widget w, StringBuilder sb, String sitemap) throws RenderException {
|
||||||
Slider s = (Slider) w;
|
Slider s = (Slider) w;
|
||||||
|
|
||||||
String snippetName = "slider";
|
String snippetName = "slider";
|
||||||
|
|
|
@ -73,7 +73,7 @@ public class SwitchRenderer extends AbstractWidgetRenderer {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public EList<Widget> renderWidget(Widget w, StringBuilder sb) throws RenderException {
|
public EList<Widget> renderWidget(Widget w, StringBuilder sb, String sitemap) throws RenderException {
|
||||||
Switch s = (Switch) w;
|
Switch s = (Switch) w;
|
||||||
|
|
||||||
String snippetName = null;
|
String snippetName = null;
|
||||||
|
|
|
@ -51,7 +51,7 @@ public class TextRenderer extends AbstractWidgetRenderer {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public EList<Widget> renderWidget(Widget w, StringBuilder sb) throws RenderException {
|
public EList<Widget> renderWidget(Widget w, StringBuilder sb, String sitemap) throws RenderException {
|
||||||
Text text = (Text) w;
|
Text text = (Text) w;
|
||||||
String snippet = (text.getChildren().size() > 0) ? getSnippet("text_link") : getSnippet("text");
|
String snippet = (text.getChildren().size() > 0) ? getSnippet("text_link") : getSnippet("text");
|
||||||
|
|
||||||
|
|
|
@ -56,12 +56,11 @@ public class VideoRenderer extends AbstractWidgetRenderer {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public EList<Widget> renderWidget(Widget w, StringBuilder sb) throws RenderException {
|
public EList<Widget> renderWidget(Widget w, StringBuilder sb, String sitemap) throws RenderException {
|
||||||
Video videoWidget = (Video) w;
|
Video videoWidget = (Video) w;
|
||||||
String snippet = null;
|
String snippet = null;
|
||||||
|
|
||||||
String widgetId = itemUIRegistry.getWidgetId(w);
|
String widgetId = itemUIRegistry.getWidgetId(w);
|
||||||
String sitemap = w.eResource().getURI().path();
|
|
||||||
|
|
||||||
// we handle mjpeg streams as an html image as browser can usually handle this
|
// we handle mjpeg streams as an html image as browser can usually handle this
|
||||||
String snippetName = (videoWidget.getEncoding() != null
|
String snippetName = (videoWidget.getEncoding() != null
|
||||||
|
@ -100,7 +99,6 @@ public class VideoRenderer extends AbstractWidgetRenderer {
|
||||||
snippet = StringUtils.replace(snippet, "%url%", url);
|
snippet = StringUtils.replace(snippet, "%url%", url);
|
||||||
snippet = StringUtils.replace(snippet, "%media_type%", mediaType);
|
snippet = StringUtils.replace(snippet, "%media_type%", mediaType);
|
||||||
}
|
}
|
||||||
|
|
||||||
sb.append(snippet);
|
sb.append(snippet);
|
||||||
return ECollections.emptyEList();
|
return ECollections.emptyEList();
|
||||||
}
|
}
|
||||||
|
|
|
@ -50,7 +50,7 @@ public class WebviewRenderer extends AbstractWidgetRenderer {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public EList<Widget> renderWidget(Widget w, StringBuilder sb) throws RenderException {
|
public EList<Widget> renderWidget(Widget w, StringBuilder sb, String sitemap) throws RenderException {
|
||||||
Webview webview = (Webview) w;
|
Webview webview = (Webview) w;
|
||||||
String snippet = getSnippet("webview");
|
String snippet = getSnippet("webview");
|
||||||
snippet = preprocessSnippet(snippet, webview);
|
snippet = preprocessSnippet(snippet, webview);
|
||||||
|
|
|
@ -168,7 +168,6 @@ public class WebAppServlet extends BaseServlet {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
logger.debug("reading sitemap {}", sitemap.getName());
|
|
||||||
if (widgetId == null || widgetId.isEmpty() || widgetId.equals(sitemapName)) {
|
if (widgetId == null || widgetId.isEmpty() || widgetId.equals(sitemapName)) {
|
||||||
// we are at the homepage, so we render the children of the sitemap root node
|
// we are at the homepage, so we render the children of the sitemap root node
|
||||||
if (subscriptionId != null) {
|
if (subscriptionId != null) {
|
||||||
|
|
|
@ -43,7 +43,7 @@ public interface WidgetRenderer {
|
||||||
* a "%children%" placeholder for them.
|
* a "%children%" placeholder for them.
|
||||||
* @throws RenderException if an error occurs during rendering
|
* @throws RenderException if an error occurs during rendering
|
||||||
*/
|
*/
|
||||||
public EList<Widget> renderWidget(Widget w, StringBuilder sb) throws RenderException;
|
public EList<Widget> renderWidget(Widget w, StringBuilder sb, String sitemap) throws RenderException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Applies a servlet configuration to the renderer
|
* Applies a servlet configuration to the renderer
|
||||||
|
|
Loading…
Reference in New Issue