You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by gg...@apache.org on 2016/05/09 07:31:10 UTC
[lang] [LANG-1227] Add XMLCharacter class.
Repository: commons-lang
Updated Branches:
refs/heads/master bbd1dc343 -> dd5a0e6e1
[LANG-1227] Add XMLCharacter class.
Project: http://git-wip-us.apache.org/repos/asf/commons-lang/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-lang/commit/dd5a0e6e
Tree: http://git-wip-us.apache.org/repos/asf/commons-lang/tree/dd5a0e6e
Diff: http://git-wip-us.apache.org/repos/asf/commons-lang/diff/dd5a0e6e
Branch: refs/heads/master
Commit: dd5a0e6e1e3edb41afb4b40e4ec2c99e5932e73c
Parents: bbd1dc3
Author: ggregory <gg...@apache.org>
Authored: Mon May 9 00:31:06 2016 -0700
Committer: ggregory <gg...@apache.org>
Committed: Mon May 9 00:31:06 2016 -0700
----------------------------------------------------------------------
src/changes/changes.xml | 1 +
.../org/apache/commons/lang3/XMLCharacter.java | 84 +++++++++++++++
.../apache/commons/lang3/XMLCharacterTest.java | 104 +++++++++++++++++++
3 files changed, 189 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/commons-lang/blob/dd5a0e6e/src/changes/changes.xml
----------------------------------------------------------------------
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 6e7d230..b3c7b1a 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -22,6 +22,7 @@
<body>
<release version="3.5" date="tba" description="tba">
+ <action issue="LANG-1227" type="new" dev="ggregory" due-to="Gary Gregory">Add XMLCharacter class.</action>
<action issue="LANG-1218" type="update" dev="ggregory" due-to="Ruslan Cheremin">EqualsBuilder.append(Object,Object) is too big to be inlined, which prevents whole builder to be scalarized</action>
<action issue="LANG-1205" type="fix" dev="chas" due-to="pbrose">NumberUtils.createNumber() behaves inconsistently with NumberUtils.isNumber()</action>
<action issue="LANG-1115" type="add" dev="chas" due-to="Jim Lloyd, Joe Ferner">Add support for varargs in ConstructorUtils, MemberUtils, and MethodUtils</action>
http://git-wip-us.apache.org/repos/asf/commons-lang/blob/dd5a0e6e/src/main/java/org/apache/commons/lang3/XMLCharacter.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/lang3/XMLCharacter.java b/src/main/java/org/apache/commons/lang3/XMLCharacter.java
new file mode 100644
index 0000000..ec42b2a
--- /dev/null
+++ b/src/main/java/org/apache/commons/lang3/XMLCharacter.java
@@ -0,0 +1,84 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+/*
+ * From Apache Xalan XMLCharacterRecognizer.
+ */
+package org.apache.commons.lang3;
+
+/**
+ * Verifies whether specified primitives and objects conforms to the XML 1.0 definition of whitespace.
+ *
+ * <p>
+ * Copied and tweaked from Apache Xalan {@code XMLCharacterRecognizer}
+ * </p>
+ *
+ * @since 3.5
+ */
+public class XMLCharacter {
+
+ /**
+ * Returns whether the specified {@code ch} conforms to the XML 1.0 definition of whitespace. Refer to
+ * <a href="http://www.w3.org/TR/1998/REC-xml-19980210#NT-S"> the definition of <CODE>S</CODE></a> for details.
+ *
+ * @param ch
+ * Character to check as XML whitespace.
+ * @return true if {@code ch} is XML whitespace; otherwise false.
+ */
+ public static boolean isWhitespace(final char ch) {
+ return ch == 0x20 || ch == 0x09 || ch == 0xD || ch == 0xA;
+ }
+
+ /**
+ * Detects if the string is whitespace.
+ *
+ * @param ch
+ * Character array to check as XML whitespace.
+ * @param start
+ * Start index of characters in the array
+ * @param length
+ * Number of characters in the array
+ * @return true if the characters in the array are XML whitespace; otherwise, false.
+ */
+ public static boolean isWhitespace(final char ch[], final int start, final int length) {
+ final int end = start + length;
+ for (int s = start; s < end; s++) {
+ if (!isWhitespace(ch[s])) {
+ return false;
+ }
+ }
+ return length > 0;
+ }
+
+ /**
+ * Detects if the string is whitespace.
+ *
+ * @param charSequence
+ * StringBuffer to check as XML whitespace.
+ * @return True if characters in buffer are XML whitespace, false otherwise
+ */
+ public static boolean isWhitespace(final CharSequence charSequence) {
+ final int length = charSequence.length();
+ for (int i = 0; i < length; i++) {
+ if (!isWhitespace(charSequence.charAt(i))) {
+ return false;
+ }
+ }
+ return length > 0;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/commons-lang/blob/dd5a0e6e/src/test/java/org/apache/commons/lang3/XMLCharacterTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/lang3/XMLCharacterTest.java b/src/test/java/org/apache/commons/lang3/XMLCharacterTest.java
new file mode 100644
index 0000000..4984b88
--- /dev/null
+++ b/src/test/java/org/apache/commons/lang3/XMLCharacterTest.java
@@ -0,0 +1,104 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.commons.lang3;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+/**
+ * Tests {@link XMLCharacter}.
+ */
+public class XMLCharacterTest {
+
+ private static char[] XML_WHITESPACE_CHARS = { ' ', '\t', '\r', '\n' };
+
+ private static char[] JAVA_EXTRA_WHITESPACE_CHARS = { '\u000B', '\u001C', '\u001D', '\u001E', '\u001F' };
+
+ /**
+ * @see Character#isWhitespace(char)
+ */
+ @Test
+ public void testIsWhitespace_char() {
+ for (final char c : XML_WHITESPACE_CHARS) {
+ Assert.assertTrue(XMLCharacter.isWhitespace(c));
+ Assert.assertTrue(Character.isWhitespace(c));
+ }
+ for (final char c : JAVA_EXTRA_WHITESPACE_CHARS) {
+ Assert.assertFalse(XMLCharacter.isWhitespace(c));
+ Assert.assertTrue(Character.isWhitespace(c));
+ }
+ //
+ Assert.assertFalse(XMLCharacter.isWhitespace('a'));
+ }
+
+ @Test
+ public void testIsWhitespace_char_arrary() {
+ Assert.assertTrue(XMLCharacter.isWhitespace(XML_WHITESPACE_CHARS, 0, XML_WHITESPACE_CHARS.length));
+ Assert.assertFalse(
+ XMLCharacter.isWhitespace(JAVA_EXTRA_WHITESPACE_CHARS, 0, JAVA_EXTRA_WHITESPACE_CHARS.length));
+ }
+
+ @Test
+ public void testIsWhitespace_CharSequence() {
+ Assert.assertFalse(XMLCharacter.isWhitespace(StringUtils.EMPTY));
+ }
+
+ @Test
+ public void testIsWhitespace_EmptyArray() {
+ Assert.assertFalse(XMLCharacter.isWhitespace(new char[] {}, 0, 0));
+ }
+
+ @Test
+ public void testIsWhitespace_String_firstChar() {
+ for (final char c : XML_WHITESPACE_CHARS) {
+ Assert.assertTrue(XMLCharacter.isWhitespace(Character.toString(c) + Character.toString(c)));
+ Assert.assertFalse(XMLCharacter.isWhitespace(Character.toString(c) + "X"));
+ }
+ for (final char c : JAVA_EXTRA_WHITESPACE_CHARS) {
+ Assert.assertFalse(XMLCharacter.isWhitespace(Character.toString(c) + "X"));
+ }
+ //
+ Assert.assertFalse(XMLCharacter.isWhitespace('a'));
+ }
+
+ @Test
+ public void testIsWhitespace_String_lastChar() {
+ for (final char c : XML_WHITESPACE_CHARS) {
+ Assert.assertTrue(XMLCharacter.isWhitespace(Character.toString(c) + Character.toString(c)));
+ Assert.assertFalse(XMLCharacter.isWhitespace("X" + Character.toString(c)));
+ }
+ for (final char c : JAVA_EXTRA_WHITESPACE_CHARS) {
+ Assert.assertFalse(XMLCharacter.isWhitespace("X" + Character.toString(c)));
+ }
+ //
+ Assert.assertFalse(XMLCharacter.isWhitespace('a'));
+ }
+
+ @Test
+ public void testIsWhitespace_String_singleChar() {
+ for (final char c : XML_WHITESPACE_CHARS) {
+ Assert.assertTrue(XMLCharacter.isWhitespace(Character.toString(c)));
+ }
+ for (final char c : JAVA_EXTRA_WHITESPACE_CHARS) {
+ Assert.assertFalse(XMLCharacter.isWhitespace(Character.toString(c)));
+ }
+ //
+ Assert.assertFalse(XMLCharacter.isWhitespace('a'));
+ }
+
+}