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 2018/07/03 13:21:51 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 bc7817f  Tests.
bc7817f is described below

commit bc7817fdd0e39a398ac7bd053e46bbbfd98d65b3
Author: JamesBognar <ja...@apache.org>
AuthorDate: Tue Jul 3 09:21:37 2018 -0400

    Tests.
---
 .../juneau/httppart/OpenApiPartParserTest.java     | 47 +++++++++++++++++++---
 .../org/apache/juneau/httppart/HttpPartSchema.java |  2 +-
 .../apache/juneau/httppart/OpenApiPartParser.java  | 25 +++++++++++-
 .../org/apache/juneau/internal/StringUtils.java    | 10 +++++
 4 files changed, 77 insertions(+), 7 deletions(-)

diff --git a/juneau-core/juneau-core-test/src/test/java/org/apache/juneau/httppart/OpenApiPartParserTest.java b/juneau-core/juneau-core-test/src/test/java/org/apache/juneau/httppart/OpenApiPartParserTest.java
index dd9cb14..1b5078b 100644
--- a/juneau-core/juneau-core-test/src/test/java/org/apache/juneau/httppart/OpenApiPartParserTest.java
+++ b/juneau-core/juneau-core-test/src/test/java/org/apache/juneau/httppart/OpenApiPartParserTest.java
@@ -462,11 +462,48 @@ public class OpenApiPartParserTest {
 	// type = boolean
 	//-----------------------------------------------------------------------------------------------------------------
 
-//	case BOOLEAN: {
-//	if (type.isObject())
-//		type = (ClassMeta<T>)getClassMeta(Boolean.class);
-//	return super.parse(partType, schema, in, type);
-//}
+	@Test
+	public void e01_booleanType() throws Exception {
+		HttpPartSchema s = HttpPartSchema.create().type("boolean").build();
+		assertEquals(true, p.parse(s, "true", boolean.class));
+		assertEquals(true, p.parse(s, "true", Boolean.class));
+		assertEquals(true, p.parse(s, "True", boolean.class));
+		assertEquals(true, p.parse(s, "TRUE", boolean.class));
+		assertEquals("true", p.parse(s, "true", String.class));
+		assertEquals(true, p.parse(s, "true", Object.class));
+	}
+
+	@Test
+	public void e02_booleanType_2d() throws Exception {
+		HttpPartSchema s = HttpPartSchema.create().type("array").items(HttpPartSchema.create().type("boolean")).build();
+		assertObjectEquals("[true,true]", p.parse(s, "true,true", boolean[].class));
+		assertObjectEquals("[true,true]", p.parse(s, "true,true", Boolean[].class));
+		assertObjectEquals("[true,true]", p.parse(s, "true,true", List.class, Boolean.class));
+		assertObjectEquals("[true,true]", p.parse(s, "True,true", boolean[].class));
+		assertObjectEquals("[true,true]", p.parse(s, "TRUE,true", boolean[].class));
+		assertObjectEquals("['true','true']", p.parse(s, "true,true", String[].class));
+		assertObjectEquals("['true','true']", p.parse(s, "true,true", List.class, String.class));
+		assertObjectEquals("[true,true]", p.parse(s, "true,true", Object[].class));
+		assertObjectEquals("[true,true]", p.parse(s, "true,true", List.class, Object.class));
+	}
+
+	@Test
+	public void e03_booleanType_3d() throws Exception {
+		HttpPartSchema s = HttpPartSchema.create().type("array").collectionFormat("pipes").items(HttpPartSchema.create().type("array").items(HttpPartSchema.create().type("boolean"))).build();
+		assertObjectEquals("[[true,true],[false]]", p.parse(s, "true,true|false", boolean[][].class));
+		assertObjectEquals("[[true,true],[false]]", p.parse(s, "true,true|false", List.class, boolean[].class));
+		assertObjectEquals("[[true,true],[false]]", p.parse(s, "true,true|false", Boolean[][].class));
+		assertObjectEquals("[[true,true],[false]]", p.parse(s, "true,true|false", List.class, List.class, Boolean.class));
+		assertObjectEquals("[[true,true],[false]]", p.parse(s, "true,true|false", List.class, Boolean[].class));
+		assertObjectEquals("[[true,true],[false]]", p.parse(s, "True,true|false", boolean[][].class));
+		assertObjectEquals("[[true,true],[false]]", p.parse(s, "TRUE,true|false", boolean[][].class));
+		assertObjectEquals("[['true','true'],['false']]", p.parse(s, "true,true|false", String[][].class));
+		assertObjectEquals("[['true','true'],['false']]", p.parse(s, "true,true|false", List.class, List.class, String.class));
+		assertObjectEquals("[['true','true'],['false']]", p.parse(s, "true,true|false", List.class, String[].class));
+		assertObjectEquals("[[true,true],[false]]", p.parse(s, "true,true|false", Object[][].class));
+		assertObjectEquals("[[true,true],[false]]", p.parse(s, "true,true|false", List.class, List.class, Object.class));
+		assertObjectEquals("[[true,true],[false]]", p.parse(s, "true,true|false", List.class, Object[].class));
+	}
 
 	//-----------------------------------------------------------------------------------------------------------------
 	// type = integer
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/HttpPartSchema.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/HttpPartSchema.java
index 94dc878..28ed7b2 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/HttpPartSchema.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/HttpPartSchema.java
@@ -288,7 +288,7 @@ public class HttpPartSchema {
 				break;
 			}
 			case BOOLEAN: {
-				notAllowed.appendIf(_enum != null, "_enum");
+				notAllowed.appendIf(! _enum.isEmpty(), "_enum");
 				notAllowed.appendIf(properties != null, "properties");
 				notAllowed.appendIf(additionalProperties != null, "additionalProperties");
 				notAllowed.appendIf(exclusiveMaximum != null, "exclusiveMaximum");
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/OpenApiPartParser.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/OpenApiPartParser.java
index 8e9bab1..8577740 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/OpenApiPartParser.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/OpenApiPartParser.java
@@ -78,6 +78,29 @@ import org.apache.juneau.parser.*;
  * 			</ul>
  * 		</td>
  * 	</tr>
+ * 	<tr>
+ * 		<td ><code>boolean</code></td>
+ * 		<td>
+ * 			&nbsp;
+ * 		</td>
+ * 		<td>
+ * 			<ul>
+ * 				<li><jk>boolean</code>
+ * 				<li>{@link Boolean}
+ * 				<li>{@link String}
+ * 				<li>{@link Object} - Returns a {@link Boolean}.
+ * 			</ul>
+ * 		</td>
+ * 	</tr>
+ * 	<tr>
+ * 		<td ><code>array</code></td>
+ * 		<td>
+ * 			&nbsp;
+ * 		</td>
+ * 		<td>
+ * 			Arrays or Collections of anything on this list.
+ * 		</td>
+ * 	</tr>
  * </table>
  */
 public class OpenApiPartParser extends UonPartParser {
@@ -291,7 +314,7 @@ public class OpenApiPartParser extends UonPartParser {
 				case BOOLEAN: {
 					if (type.isObject())
 						type = (ClassMeta<T>)getClassMeta(Boolean.class);
-					return super.parse(partType, schema, in, type);
+					return super.parse(partType, schema, toLowerCase(in), type);
 				}
 				case INTEGER: {
 					if (type.isObject()) {
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/StringUtils.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/StringUtils.java
index 72816ff..0c157c3 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/StringUtils.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/StringUtils.java
@@ -2388,4 +2388,14 @@ public final class StringUtils {
 		sb.append("\\E");
 		return Pattern.compile(sb.toString());
 	}
+
+	/**
+	 * Null-safe {@link String#toLowerCase()}.
+	 *
+	 * @param s The string to convert to lower case.
+	 * @return The string converted to lower case, or <jk>null</jk> if the string was null.
+	 */
+	public static String toLowerCase(String s) {
+		return s == null ? null : s.toLowerCase();
+	}
 }