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
bigbasec 2021-02-11 02:37:38 -05:00 committed by Kai Kreuzer
parent 1a197b59e3
commit 4d74bba05d
17 changed files with 21 additions and 28 deletions

View File

@ -63,7 +63,7 @@ public class ChartRenderer extends AbstractWidgetRenderer {
}
@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;
try {

View File

@ -59,7 +59,7 @@ public class ColorpickerRenderer extends AbstractWidgetRenderer {
}
@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;
String snippet = getSnippet("colorpicker");

View File

@ -54,7 +54,7 @@ public class FrameRenderer extends AbstractWidgetRenderer {
}
@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 label = StringEscapeUtils.escapeHtml(itemUIRegistry.getLabel(w));
List<String> frameClassList = new ArrayList<>();

View File

@ -51,7 +51,7 @@ public class GroupRenderer extends AbstractWidgetRenderer {
}
@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");
snippet = preprocessSnippet(snippet, w);

View File

@ -58,7 +58,7 @@ public class ImageRenderer extends AbstractWidgetRenderer {
}
@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;
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 = preprocessSnippet(snippet, w);
String sitemap = null;
if (w.eResource() != null) {
sitemap = w.eResource().getURI().path();
}
boolean validUrl = isValidURL(image.getUrl());
String proxiedUrl = "../proxy?sitemap=" + sitemap + "&amp;widgetId=" + widgetId;
State state = itemUIRegistry.getState(w);

View File

@ -52,7 +52,7 @@ public class ListRenderer extends AbstractWidgetRenderer {
}
@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");
snippet = snippet.replaceAll("%label%", getLabel(w));

View File

@ -55,7 +55,7 @@ public class MapviewRenderer extends AbstractWidgetRenderer {
}
@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;
String snippet = getSnippet("mapview");
snippet = preprocessSnippet(snippet, mapview);

View File

@ -122,7 +122,7 @@ public class PageRenderer extends AbstractWidgetRenderer {
StringBuilder postChildren = new StringBuilder(parts[1]);
if (parts.length == 2) {
processChildren(preChildren, postChildren, children);
processChildren(preChildren, postChildren, children, sitemap);
} else if (parts.length > 2) {
logger.error("Snippet '{}' contains multiple %children% sections, but only one is allowed!",
async ? "layer" : "main");
@ -130,7 +130,7 @@ public class PageRenderer extends AbstractWidgetRenderer {
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 {
// put a single frame around all children widgets, if there are no explicit frames
if (!children.isEmpty()) {
@ -158,7 +158,7 @@ public class PageRenderer extends AbstractWidgetRenderer {
StringBuilder newPre = new StringBuilder();
StringBuilder newPost = new StringBuilder();
StringBuilder widgetSB = new StringBuilder();
EList<Widget> nextChildren = renderWidget(w, widgetSB);
EList<Widget> nextChildren = renderWidget(w, widgetSB, sitemap);
if (!nextChildren.isEmpty()) {
String[] parts = widgetSB.toString().split("%children%");
// 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!",
widgetType);
}
processChildren(newPre, newPost, nextChildren);
processChildren(newPre, newPost, nextChildren, sitemap);
sb_pre.append(newPre);
sb_pre.append(newPost);
} else {
@ -189,10 +189,10 @@ public class PageRenderer extends AbstractWidgetRenderer {
}
@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) {
if (renderer.canRender(w)) {
return renderer.renderWidget(w, sb);
return renderer.renderWidget(w, sb, sitemap);
}
}
return ECollections.emptyEList();

View File

@ -67,7 +67,7 @@ public class SelectionRenderer extends AbstractWidgetRenderer {
}
@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");
snippet = preprocessSnippet(snippet, w);

View File

@ -53,7 +53,7 @@ public class SetpointRenderer extends AbstractWidgetRenderer {
}
@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;
// set defaults for min, max and step

View File

@ -56,7 +56,7 @@ public class SliderRenderer extends AbstractWidgetRenderer {
}
@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;
String snippetName = "slider";

View File

@ -73,7 +73,7 @@ public class SwitchRenderer extends AbstractWidgetRenderer {
}
@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;
String snippetName = null;

View File

@ -51,7 +51,7 @@ public class TextRenderer extends AbstractWidgetRenderer {
}
@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;
String snippet = (text.getChildren().size() > 0) ? getSnippet("text_link") : getSnippet("text");

View File

@ -56,12 +56,11 @@ public class VideoRenderer extends AbstractWidgetRenderer {
}
@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;
String snippet = null;
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
String snippetName = (videoWidget.getEncoding() != null
@ -100,7 +99,6 @@ public class VideoRenderer extends AbstractWidgetRenderer {
snippet = StringUtils.replace(snippet, "%url%", url);
snippet = StringUtils.replace(snippet, "%media_type%", mediaType);
}
sb.append(snippet);
return ECollections.emptyEList();
}

View File

@ -50,7 +50,7 @@ public class WebviewRenderer extends AbstractWidgetRenderer {
}
@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;
String snippet = getSnippet("webview");
snippet = preprocessSnippet(snippet, webview);

View File

@ -168,7 +168,6 @@ public class WebAppServlet extends BaseServlet {
return;
}
logger.debug("reading sitemap {}", sitemap.getName());
if (widgetId == null || widgetId.isEmpty() || widgetId.equals(sitemapName)) {
// we are at the homepage, so we render the children of the sitemap root node
if (subscriptionId != null) {

View File

@ -43,7 +43,7 @@ public interface WidgetRenderer {
* a "%children%" placeholder for them.
* @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