You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@juneau.apache.org by ja...@apache.org on 2020/04/10 16:49:08 UTC
[juneau] branch master updated: Tests
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 82928fd Tests
82928fd is described below
commit 82928fd33b7287fc8ad94888c6a940f6b3297ac6
Author: JamesBognar <ja...@apache.org>
AuthorDate: Fri Apr 10 12:48:50 2020 -0400
Tests
---
.../juneau/SerializerPropertiesComboTest.java | 2 +-
.../org/apache/juneau/jena/RdfParserSession.java | 14 +-
.../org/apache/juneau/html/HtmlParserSession.java | 7 +-
.../org/apache/juneau/json/JsonParserSession.java | 7 +-
.../org/apache/juneau/json/SimpleJsonParser.java | 2 +-
.../juneau/msgpack/MsgPackParserSession.java | 7 +-
.../org/apache/juneau/parser/ParserListener.java | 12 ++
.../org/apache/juneau/parser/ParserSession.java | 14 ++
.../org/apache/juneau/uon/UonParserSession.java | 14 +-
.../urlencoding/UrlEncodingParserSession.java | 24 ++-
.../org/apache/juneau/xml/XmlParserSession.java | 7 +-
.../apache/juneau/rest/client2/RestClientTest.java | 175 ++++++++++++++++-----
.../juneau/rest/client2/RestClientBuilder.java | 8 +-
.../apache/juneau/rest/mock2/MockRestClient.java | 11 +-
14 files changed, 242 insertions(+), 62 deletions(-)
diff --git a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/SerializerPropertiesComboTest.java b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/SerializerPropertiesComboTest.java
index 077c139..941bb40 100644
--- a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/SerializerPropertiesComboTest.java
+++ b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/SerializerPropertiesComboTest.java
@@ -326,7 +326,7 @@ public class SerializerPropertiesComboTest extends ComboRoundTripTest {
},
{ /* 10 */
new ComboInput<>(
- "WSERIALIZER_maxIndent",
+ "WSERIALIZER_maxIndent/WSERIALIZER_useWhitespace",
T10.class,
new T10().init()
)
diff --git a/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfParserSession.java b/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfParserSession.java
index 71e2907..b54feed 100644
--- a/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfParserSession.java
+++ b/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfParserSession.java
@@ -185,11 +185,21 @@ public class RdfParserSession extends ReaderParserSession {
ClassMeta<?> et = cm.getElementType();
Object value = parseAnything(et, o, m.getBean(false), pMeta);
setName(et, value, key);
- pMeta.add(m, key, value);
+ try {
+ pMeta.add(m, key, value);
+ } catch (BeanRuntimeException e) {
+ onBeanSetterException(pMeta, e);
+ throw e;
+ }
} else {
Object value = parseAnything(cm, o, m.getBean(false), pMeta);
setName(cm, value, key);
- pMeta.set(m, key, value);
+ try {
+ pMeta.set(m, key, value);
+ } catch (BeanRuntimeException e) {
+ onBeanSetterException(pMeta, e);
+ throw e;
+ }
}
} else if (! (p.equals(pRoot) || p.equals(pType))) {
onUnknownProperty(key, m);
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlParserSession.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlParserSession.java
index a72dc3a..c0732ed 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlParserSession.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlParserSession.java
@@ -521,7 +521,12 @@ public final class HtmlParserSession extends XmlParserSession {
ClassMeta<?> cm = pMeta.getClassMeta();
Object value = parseAnything(cm, r, m.getBean(false), false, pMeta);
setName(cm, value, key);
- pMeta.set(m, key, value);
+ try {
+ pMeta.set(m, key, value);
+ } catch (BeanRuntimeException e) {
+ onBeanSetterException(pMeta, e);
+ throw e;
+ }
}
}
HtmlTag t = nextTag(r, xTD, xTR);
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonParserSession.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonParserSession.java
index 574685c..56098e3 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonParserSession.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonParserSession.java
@@ -521,7 +521,12 @@ public final class JsonParserSession extends ReaderParserSession {
ClassMeta<?> cm = pMeta.getClassMeta();
Object value = parseAnything(cm, r.unread(), m.getBean(false), pMeta);
setName(cm, value, currAttr);
- pMeta.set(m, currAttr, value);
+ try {
+ pMeta.set(m, currAttr, value);
+ } catch (BeanRuntimeException e) {
+ onBeanSetterException(pMeta, e);
+ throw e;
+ }
}
setCurrentProperty(null);
}
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/SimpleJsonParser.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/SimpleJsonParser.java
index 4189c80..0754761 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/SimpleJsonParser.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/SimpleJsonParser.java
@@ -41,7 +41,7 @@ public class SimpleJsonParser extends JsonParser {
* @param ps The property store containing all the settings for this object.
*/
public SimpleJsonParser(PropertyStore ps) {
- super(ps, "application/json+simple", "text/json+simple");
+ super(ps, "application/json+simple", "text/json+simple", "application/json", "text/json");
}
@Override /* Context */
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/MsgPackParserSession.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/MsgPackParserSession.java
index 49d40e1..1d5dafe 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/MsgPackParserSession.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/MsgPackParserSession.java
@@ -138,7 +138,12 @@ public final class MsgPackParserSession extends InputStreamParserSession {
ClassMeta<?> cm = bpm.getClassMeta();
Object value = parseAnything(cm, is, m.getBean(false), bpm);
setName(cm, value, pName);
- bpm.set(m, pName, value);
+ try {
+ bpm.set(m, pName, value);
+ } catch (BeanRuntimeException e) {
+ onBeanSetterException(pMeta, e);
+ throw e;
+ }
}
}
o = builder == null ? m.getBean() : builder.build(this, m.getBean(), eType);
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/ParserListener.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/ParserListener.java
index ac7c974..a04f1d2 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/ParserListener.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/ParserListener.java
@@ -47,6 +47,18 @@ public class ParserListener {
}
/**
+ * Called when an exception is thrown when trying to call a bean setter method.
+ *
+ * @param session The serializer session.
+ * @param t The throwable that was thrown by the setter method.
+ * @param p The bean property we had an issue on.
+ */
+ public void onBeanSetterException(ParserSession session, Throwable t, BeanPropertyMeta p) {
+ onError(session, t, format("Could not call setValue() on property ''{0}'' of class ''{1}'', exception = {2}",
+ p.getName(), p.getBeanMeta().getClassMeta(), t.getLocalizedMessage()));
+ }
+
+ /**
* Called when an error occurs during parsing but is ignored.
*
* @param session The parser session.
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/ParserSession.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/ParserSession.java
index 5c08951..d5ef179 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/ParserSession.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/ParserSession.java
@@ -298,6 +298,20 @@ public abstract class ParserSession extends BeanSession {
}
/**
+ * Specialized warning when an exception is thrown while executing a bean setter.
+ *
+ * @param p The bean map entry representing the bean property.
+ * @param t The throwable that the bean setter threw.
+ */
+ protected final void onBeanSetterException(BeanPropertyMeta p, Throwable t) {
+ if (listener != null)
+ listener.onBeanSetterException(this, t, p);
+ String prefix = "";
+ addWarning("{0}Could not call setValue() on property ''{1}'' of class ''{2}'', exception = {3}", prefix,
+ p.getName(), p.getBeanMeta().getClassMeta(), t.getLocalizedMessage());
+ }
+
+ /**
* Method that gets called when an unknown bean property name is encountered.
*
* @param propertyName The unknown bean property name.
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/UonParserSession.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/UonParserSession.java
index 04a9f58..b09fded 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/UonParserSession.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/UonParserSession.java
@@ -544,7 +544,12 @@ public class UonParserSession extends ReaderParserSession implements HttpPartPar
} else {
unmark();
Object value = convertToType("", pMeta.getClassMeta());
- pMeta.set(m, currAttr, value);
+ try {
+ pMeta.set(m, currAttr, value);
+ } catch (BeanRuntimeException e) {
+ onBeanSetterException(pMeta, e);
+ throw e;
+ }
}
}
if (c == -1 || c == ')' || c == AMP)
@@ -563,7 +568,12 @@ public class UonParserSession extends ReaderParserSession implements HttpPartPar
ClassMeta<?> cm = pMeta.getClassMeta();
Object value = parseAnything(cm, r.unread(), m.getBean(false), false, pMeta);
setName(cm, value, currAttr);
- pMeta.set(m, currAttr, value);
+ try {
+ pMeta.set(m, currAttr, value);
+ } catch (BeanRuntimeException e) {
+ onBeanSetterException(pMeta, e);
+ throw e;
+ }
setCurrentProperty(null);
}
}
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/urlencoding/UrlEncodingParserSession.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/urlencoding/UrlEncodingParserSession.java
index 9a4244f..55851ba 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/urlencoding/UrlEncodingParserSession.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/urlencoding/UrlEncodingParserSession.java
@@ -297,8 +297,14 @@ public class UrlEncodingParserSession extends UonParserSession {
// In cases of "&foo=", create an empty instance of the value if createable.
// Otherwise, leave it null.
ClassMeta<?> cm = pMeta.getClassMeta();
- if (cm.canCreateNewInstance())
- pMeta.set(m, currAttr, cm.newInstance());
+ if (cm.canCreateNewInstance()) {
+ try {
+ pMeta.set(m, currAttr, cm.newInstance());
+ } catch (BeanRuntimeException e) {
+ onBeanSetterException(pMeta, e);
+ throw e;
+ }
+ }
setCurrentProperty(null);
}
}
@@ -319,12 +325,22 @@ public class UrlEncodingParserSession extends UonParserSession {
ClassMeta et = pMeta.getClassMeta().getElementType();
Object value = parseAnything(et, r.unread(), m.getBean(false), true, pMeta);
setName(et, value, currAttr);
- pMeta.add(m, currAttr, value);
+ try {
+ pMeta.add(m, currAttr, value);
+ } catch (BeanRuntimeException e) {
+ onBeanSetterException(pMeta, e);
+ throw e;
+ }
} else {
ClassMeta<?> cm = pMeta.getClassMeta();
Object value = parseAnything(cm, r.unread(), m.getBean(false), true, pMeta);
setName(cm, value, currAttr);
- pMeta.set(m, currAttr, value);
+ try {
+ pMeta.set(m, currAttr, value);
+ } catch (BeanRuntimeException e) {
+ onBeanSetterException(pMeta, e);
+ throw e;
+ }
}
setCurrentProperty(null);
}
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/XmlParserSession.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/XmlParserSession.java
index 422c8b7..7e74691 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/XmlParserSession.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/XmlParserSession.java
@@ -498,7 +498,12 @@ public class XmlParserSession extends ReaderParserSession {
onUnknownProperty(key, m);
}
} else {
- bpm.set(m, key, val);
+ try {
+ bpm.set(m, key, val);
+ } catch (BeanRuntimeException e) {
+ onBeanSetterException(bpm, e);
+ throw e;
+ }
}
}
}
diff --git a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClientTest.java b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClientTest.java
index 6fd829a..b752f42 100644
--- a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClientTest.java
+++ b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClientTest.java
@@ -2243,11 +2243,11 @@ public class RestClientTest {
}
@Test
- public void l10_serializer_listenerSClass() throws Exception {
+ public void l10_serializer_serializerListener() throws Exception {
MockRestClient
.create(A.class)
.simpleJson()
- .listenerS(L10.class)
+ .serializerListener(L10.class)
.ws()
.build()
.post("/echoBody", new L10a())
@@ -2608,44 +2608,141 @@ public class RestClientTest {
.run()
.getBody().assertValue("{f1:'foo'}");
}
-// public RestClientBuilder sq() {
-// @Test
-// public void l29_serializer_useWhitespaceBoolean() throws Exception { fail(); }
-//// public RestClientBuilder useWhitespace(boolean value) {
-//
-// @Test
-// public void l30_serializer_useWhitespace() throws Exception { fail(); }
-//// public RestClientBuilder useWhitespace() {
-//
-// @Test
-// public void l31_serializer_ws() throws Exception { fail(); }
-//// public RestClientBuilder ws() {
-//
-// @Test
-// public void l32_serializer_binaryOutputFormat() throws Exception { fail(); }
-//// public RestClientBuilder binaryOutputFormat(BinaryFormat value) {
-//
-// //-----------------------------------------------------------------------------------------------------------------
-// // Parser properties
-// //-----------------------------------------------------------------------------------------------------------------
-//
-// @Test
-// public void m01_parser_autoCloseStreamsBoolean() throws Exception { fail(); }
-//// public RestClientBuilder autoCloseStreams(boolean value) {
-//
-// @Test
-// public void m02_parser_autoCloseStreams() throws Exception { fail(); }
-//// public RestClientBuilder autoCloseStreams() {
-//
-// @Test
-// public void m03_parser_debugOutputLines() throws Exception { fail(); }
-//// public RestClientBuilder debugOutputLines(int value) {
-//
-// @Test
-// public void m04_parser_listenerPClass() throws Exception { fail(); }
-//// public RestClientBuilder listenerP(Class<? extends ParserListener> value) {
-//
+ @Test
+ public void l29_serializer_useWhitespace() throws Exception {
+ L27 x = new L27();
+
+ MockRestClient
+ .create(A.class)
+ .simpleJson()
+ .useWhitespace(true)
+ .build()
+ .post("/echoBody", x)
+ .run()
+ .getBody().assertValue("{\n\tf1: 'foo'\n}");
+
+ MockRestClient
+ .create(A.class)
+ .simpleJson()
+ .ws()
+ .build()
+ .post("/echoBody", x)
+ .run()
+ .getBody().assertValue("{\n\tf1: 'foo'\n}");
+
+ MockRestClient
+ .create(A.class)
+ .simpleJson()
+ .useWhitespace(false)
+ .build()
+ .post("/echoBody", x)
+ .run()
+ .getBody().assertValue("{f1:'foo'}");
+
+ }
+
+ //-----------------------------------------------------------------------------------------------------------------
+ // Parser properties
+ //-----------------------------------------------------------------------------------------------------------------
+
+ @Test
+ public void m01_parser_autoCloseStreams() throws Exception {
+ String x = "foo";
+ RestClient rc = null;
+
+ rc = MockRestClient
+ .create(A.class)
+ .simpleJson()
+ .autoCloseStreams()
+ .build();
+
+ assertTrue(rc.parsers.getParser("application/json").toMap().getMap("Parser").getBoolean("autoCloseStreams"));
+
+ rc
+ .post("/echoBody", x)
+ .run()
+ .getBody().assertValue("'foo'");
+
+ rc = MockRestClient
+ .create(A.class)
+ .simpleJson()
+ .autoCloseStreams(true)
+ .build();
+
+ assertTrue(rc.parsers.getParser("application/json").toMap().getMap("Parser").getBoolean("autoCloseStreams"));
+
+ rc
+ .post("/echoBody", x)
+ .run()
+ .getBody().assertValue("'foo'");
+
+ rc = MockRestClient
+ .create(A.class)
+ .simpleJson()
+ .autoCloseStreams(false)
+ .build();
+
+ assertFalse(rc.parsers.getParser("application/json").toMap().getMap("Parser").getBoolean("autoCloseStreams", false));
+
+ rc
+ .post("/echoBody", x)
+ .run()
+ .getBody().assertValue("'foo'");
+ }
+
+ @Test
+ public void m03_parser_debugOutputLines() throws Exception {
+ RestClient rc = null;
+
+ rc = MockRestClient
+ .create(A.class)
+ .simpleJson()
+ .debugOutputLines(10)
+ .build();
+
+ assertEquals(10, rc.parsers.getParser("application/json").toMap().getMap("Parser").getInt("debugOutputLines").intValue());
+ }
+
+ public static class M4L extends ParserListener {
+ public static Throwable T;
+ public static String MSG;
+
+ @Override
+ public void onError(ParserSession session, Throwable t, String msg) {
+ T = t;
+ MSG = msg;
+ }
+ }
+
+ public static class M4 {
+ public void setF(String f) {
+ throw new RuntimeException("foo");
+ }
+ }
+
+ @Test
+ public void m04_parser_parserListener() throws Exception {
+ RestClient rc = null;
+
+ rc = MockRestClient
+ .create(A.class)
+ .parser(JsonParser.class)
+ .parserListener(M4L.class)
+ .build();
+
+ try {
+ rc
+ .post("/echoBody", "{f:'1'}")
+ .run()
+ .getBody().as(M4.class);
+ fail("Exception expected");
+ } catch (Exception e) {
+ assertTrue(M4L.T instanceof RuntimeException);
+ assertTrue(M4L.MSG.contains("Error occurred trying to set property 'f'"));
+ }
+ }
+
// @Test
// public void m05_parser_strictBoolean() throws Exception { fail(); }
//// public RestClientBuilder strict(boolean value) {
diff --git a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client2/RestClientBuilder.java b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client2/RestClientBuilder.java
index 81bc1ec..43d26e0 100644
--- a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client2/RestClientBuilder.java
+++ b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client2/RestClientBuilder.java
@@ -2133,7 +2133,7 @@ public class RestClientBuilder extends BeanContextBuilder {
* @return This object (for method chaining).
*/
@ConfigurationProperty
- public RestClientBuilder listenerS(Class<? extends SerializerListener> value) {
+ public RestClientBuilder serializerListener(Class<? extends SerializerListener> value) {
return set(SERIALIZER_listener, value);
}
@@ -2625,7 +2625,7 @@ public class RestClientBuilder extends BeanContextBuilder {
* @return This object (for method chaining).
*/
@ConfigurationProperty
- public RestClientBuilder listenerP(Class<? extends ParserListener> value) {
+ public RestClientBuilder parserListener(Class<? extends ParserListener> value) {
return set(PARSER_listener, value);
}
@@ -2812,7 +2812,7 @@ public class RestClientBuilder extends BeanContextBuilder {
* @return This object (for method chaining).
*/
@ConfigurationProperty
- public RestClientBuilder paramFormat(String value) {
+ public RestClientBuilder paramFormat(ParamFormat value) {
return set(UON_paramFormat, value);
}
@@ -2827,7 +2827,7 @@ public class RestClientBuilder extends BeanContextBuilder {
*/
@ConfigurationProperty
public RestClientBuilder paramFormatPlain() {
- return set(UON_paramFormat, "PLAINTEXT");
+ return set(UON_paramFormat, ParamFormat.PLAINTEXT);
}
// <CONFIGURATION-PROPERTIES>
diff --git a/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockRestClient.java b/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockRestClient.java
index 5641b38..7a23d3d 100644
--- a/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockRestClient.java
+++ b/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockRestClient.java
@@ -32,6 +32,7 @@ import org.apache.juneau.rest.annotation.*;
import org.apache.juneau.rest.client2.*;
import org.apache.juneau.serializer.*;
import org.apache.juneau.svl.*;
+import org.apache.juneau.uon.*;
/**
* Mocked {@link RestClient}.
@@ -1209,14 +1210,14 @@ public class MockRestClient extends RestClientBuilder {
}
@Override /* GENERATED - RestClientBuilder */
- public MockRestClient listenerP(Class<? extends org.apache.juneau.parser.ParserListener> value) {
- super.listenerP(value);
+ public MockRestClient parserListener(Class<? extends org.apache.juneau.parser.ParserListener> value) {
+ super.parserListener(value);
return this;
}
@Override /* GENERATED - RestClientBuilder */
- public MockRestClient listenerS(Class<? extends org.apache.juneau.serializer.SerializerListener> value) {
- super.listenerS(value);
+ public MockRestClient serializerListener(Class<? extends org.apache.juneau.serializer.SerializerListener> value) {
+ super.serializerListener(value);
return this;
}
@@ -1287,7 +1288,7 @@ public class MockRestClient extends RestClientBuilder {
}
@Override /* GENERATED - RestClientBuilder */
- public MockRestClient paramFormat(String value) {
+ public MockRestClient paramFormat(ParamFormat value) {
super.paramFormat(value);
return this;
}