This is an automated email from the ASF dual-hosted git repository.
jamesbognar pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/juneau.git
The following commit(s) were added to refs/heads/master by this push:
new 2b1641f3f JUNEAU-249 UI does not resolve variables anymore
2b1641f3f is described below
commit 2b1641f3f153725aca750ab59a60cf1d127240f7
Author: JamesBognar <[email protected]>
AuthorDate: Mon Aug 28 11:46:07 2023 -0400
JUNEAU-249 UI does not resolve variables anymore
---
.../apache/juneau/html/BasicHtmlDocTemplate.java | 9 ++++++
.../org/apache/juneau/html/HtmlDocSerializer.java | 32 ++++++++++++++++++++--
.../juneau/html/HtmlDocSerializerSession.java | 11 ++++++++
.../java/org/apache/juneau/html/HtmlWriter.java | 8 ++++++
.../juneau/html/annotation/HtmlDocConfig.java | 21 ++++++++++++++
.../html/annotation/HtmlDocConfigAnnotation.java | 1 +
.../apache/juneau/serializer/SerializerWriter.java | 14 ++++++++++
.../main/java/org/apache/juneau/xml/XmlWriter.java | 11 ++++++++
.../a/rttests/RoundTripAddClassAttrsTest.java | 2 +-
9 files changed, 106 insertions(+), 3 deletions(-)
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/BasicHtmlDocTemplate.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/BasicHtmlDocTemplate.java
index 4261aab0a..4071405fd 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/BasicHtmlDocTemplate.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/BasicHtmlDocTemplate.java
@@ -13,6 +13,7 @@
package org.apache.juneau.html;
import static org.apache.juneau.html.AsideFloat.*;
+import static org.apache.juneau.common.internal.StringUtils.*;
import org.apache.juneau.internal.*;
@@ -262,6 +263,14 @@ public class BasicHtmlDocTemplate implements
HtmlDocTemplate {
} else {
session.indent = 6;
w.flush();
+ if (session.isResolveBodyVars()) {
+ w = new HtmlWriter(w) {
+ @Override
+ public HtmlWriter text(Object value,
boolean preserveWhitespace) {
+ return
super.text(session.resolve(stringify(value)), preserveWhitespace);
+ }
+ };
+ }
session.parentSerialize(w, o);
}
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlDocSerializer.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlDocSerializer.java
index 8415e217e..190d9832f 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlDocSerializer.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlDocSerializer.java
@@ -112,7 +112,7 @@ public class HtmlDocSerializer extends
HtmlStrippedDocSerializer {
List<String> aside, footer, head, header, nav, navlinks,
script, style, stylesheet;
AsideFloat asideFloat;
String noResultsMessage;
- boolean nowrap;
+ boolean nowrap, resolveBodyVars;
Class<? extends HtmlDocTemplate> template;
List<Class<? extends HtmlWidget>> widgets;
@@ -146,6 +146,7 @@ public class HtmlDocSerializer extends
HtmlStrippedDocSerializer {
asideFloat = copyFrom.asideFloat;
noResultsMessage = copyFrom.noResultsMessage;
nowrap = copyFrom.nowrap;
+ resolveBodyVars = copyFrom.resolveBodyVars;
template = copyFrom.template;
widgets = copy(copyFrom.widgets);
}
@@ -169,6 +170,7 @@ public class HtmlDocSerializer extends
HtmlStrippedDocSerializer {
asideFloat = copyFrom.asideFloat;
noResultsMessage = copyFrom.noResultsMessage;
nowrap = copyFrom.nowrap;
+ resolveBodyVars = copyFrom.resolveBodyVars;
template = copyFrom.template;
widgets = copy(copyFrom.widgets);
}
@@ -199,6 +201,7 @@ public class HtmlDocSerializer extends
HtmlStrippedDocSerializer {
asideFloat,
noResultsMessage,
nowrap,
+ resolveBodyVars,
template,
widgets
);
@@ -599,6 +602,30 @@ public class HtmlDocSerializer extends
HtmlStrippedDocSerializer {
return this;
}
+ /**
+ * Resolve $ variables in serialized POJO.
+ *
+ * @return This object.
+ */
+ @FluentSetter
+ public Builder resolveBodyVars() {
+ return resolveBodyVars(true);
+ }
+
+ /**
+ * Same as {@link #resolveBodyVars()} but allows you to
explicitly specify the boolean value.
+ *
+ * @param value
+ * The new value for this property.
+ * @return This object.
+ * @see #nowrap()
+ */
+ @FluentSetter
+ public Builder resolveBodyVars(boolean value) {
+ resolveBodyVars = value;
+ return this;
+ }
+
/**
* Adds the specified Javascript code to the HTML page.
*
@@ -1631,7 +1658,7 @@ public class HtmlDocSerializer extends
HtmlStrippedDocSerializer {
final String[] style, stylesheet, script, navlinks, head, header, nav,
aside, footer;
final AsideFloat asideFloat;
final String noResultsMessage;
- final boolean nowrap;
+ final boolean nowrap, resolveBodyVars;
final Class<? extends HtmlDocTemplate> template;
final List<Class<? extends HtmlWidget>> widgets;
@@ -1660,6 +1687,7 @@ public class HtmlDocSerializer extends
HtmlStrippedDocSerializer {
asideFloat = builder.asideFloat;
noResultsMessage = builder.noResultsMessage;
nowrap = builder.nowrap;
+ resolveBodyVars = builder.resolveBodyVars;
template = builder.template;
widgets = builder.widgets == null ? emptyList() :
copyOf(builder.widgets);
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlDocSerializerSession.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlDocSerializerSession.java
index 5aabd54b2..05a77260d 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlDocSerializerSession.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlDocSerializerSession.java
@@ -367,6 +367,17 @@ public class HtmlDocSerializerSession extends
HtmlStrippedDocSerializerSession {
return ctx.nowrap;
}
+ /**
+ * Resolve $ variables in serialized POJO.
+ *
+ * @see HtmlDocSerializer.Builder#resolveBodyVars()
+ * @return
+ * <jk>true</jk> if $ variables in serialized POJO should be
resolved.
+ */
+ protected final boolean isResolveBodyVars() {
+ return ctx.resolveBodyVars;
+ }
+
/**
* Javascript code.
*
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlWriter.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlWriter.java
index bc24cc709..89ded89e5 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlWriter.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlWriter.java
@@ -43,6 +43,14 @@ public class HtmlWriter extends XmlWriter {
super(out, useWhitespace, maxIndent, trimStrings, quoteChar,
uriResolver, false, null);
}
+ /**
+ * Copy constructor.
+ *
+ * @param w Writer being copied.
+ */
+ public HtmlWriter(HtmlWriter w) {
+ super(w);
+ }
//-----------------------------------------------------------------------------------------------------------------
// Overridden methods
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/annotation/HtmlDocConfig.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/annotation/HtmlDocConfig.java
index 2e8894818..9c87a0791 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/annotation/HtmlDocConfig.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/annotation/HtmlDocConfig.java
@@ -430,6 +430,27 @@ public @interface HtmlDocConfig {
*/
String nowrap() default "";
+ /**
+ * Resolve $ variables in serialized pojo.
+ *
+ * <ul class='values'>
+ * <li><js>"true"</js>
+ * <li><js>"false"</js> (default)
+ * </ul>
+ *
+ * <h5 class='section'>Notes:</h5><ul>
+ * <li class='note'>
+ * Supports <a class="doclink"
href="../../../../../index.html#jrs.SvlVariables">SVL Variables</a> (e.g.
<js>"$L{my.localized.variable}"</js>).
+ * </ul>
+ *
+ * <h5 class='section'>See Also:</h5><ul>
+ * <li class='jm'>{@link
org.apache.juneau.html.HtmlDocSerializer.Builder#resolveBodyVars()}
+ * </ul>
+ *
+ * @return The annotation value.
+ */
+ String resolveBodyVars() default "";
+
/**
* Javascript code.
*
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/annotation/HtmlDocConfigAnnotation.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/annotation/HtmlDocConfigAnnotation.java
index 79474ce75..e532d4b10 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/annotation/HtmlDocConfigAnnotation.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/annotation/HtmlDocConfigAnnotation.java
@@ -57,6 +57,7 @@ public class HtmlDocConfigAnnotation {
string(a.asideFloat()).filter(x -> !
"DEFAULT".equalsIgnoreCase(x)).map(AsideFloat::valueOf).ifPresent(x ->
b.asideFloat(x));
string(a.noResultsMessage()).ifPresent(x ->
b.noResultsMessage(x));
bool(a.nowrap()).ifPresent(x -> b.nowrap(x));
+ bool(a.resolveBodyVars()).ifPresent(x ->
b.resolveBodyVars(x));
type(a.template()).ifPresent(x -> b.template(x));
classes(a.widgets()).ifPresent(x -> b.widgets((Class<?
extends HtmlWidget>[]) x));
}
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/SerializerWriter.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/SerializerWriter.java
index 5da7c415c..3844def06 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/SerializerWriter.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/SerializerWriter.java
@@ -74,6 +74,20 @@ public class SerializerWriter extends Writer {
this.uriResolver = uriResolver;
}
+ /**
+ * Copy Constructor
+ *
+ * @param w Writer being copied.
+ */
+ public SerializerWriter(SerializerWriter w) {
+ this.out = w.out;
+ this.useWhitespace = w.useWhitespace;
+ this.maxIndent = w.maxIndent;
+ this.trimStrings = w.trimStrings;
+ this.quoteChar = w.quoteChar;
+ this.uriResolver = w.uriResolver;
+ }
+
/**
* Performs a carriage return.
*
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/XmlWriter.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/XmlWriter.java
index 6766f24a3..cf3daf450 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/XmlWriter.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/XmlWriter.java
@@ -55,6 +55,17 @@ public class XmlWriter extends SerializerWriter {
this.defaultNsPrefix = defaultNamespace == null ? null :
defaultNamespace.name;
}
+ /**
+ * Copy constructor.
+ *
+ * @param w Writer being copied.
+ */
+ public XmlWriter(XmlWriter w) {
+ super(w);
+ this.enableNs = w.enableNs;
+ this.defaultNsPrefix = w.defaultNsPrefix;
+ }
+
/**
* Writes an opening tag to the output:
<code><xt><ns:name</xt></code>
*
diff --git
a/juneau-utest/src/test/java/org/apache/juneau/a/rttests/RoundTripAddClassAttrsTest.java
b/juneau-utest/src/test/java/org/apache/juneau/a/rttests/RoundTripAddClassAttrsTest.java
index 1aa1b87f7..9a7499c8c 100755
---
a/juneau-utest/src/test/java/org/apache/juneau/a/rttests/RoundTripAddClassAttrsTest.java
+++
b/juneau-utest/src/test/java/org/apache/juneau/a/rttests/RoundTripAddClassAttrsTest.java
@@ -37,7 +37,7 @@ import org.junit.runners.*;
@FixMethodOrder(NAME_ASCENDING)
public class RoundTripAddClassAttrsTest extends RoundTripTest {
- @Parameterized.Parameters
+ @Parameterized.Parameters(name="{0}")
public static Collection<Object[]> getPairs() {
return Arrays.asList(new Object[][] {
{ /* 0 */