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 2017/05/31 12:25:19 UTC

[1/2] incubator-juneau git commit: Add PropertyNamerULC

Repository: incubator-juneau
Updated Branches:
  refs/heads/master 58dc46e29 -> de8a66b87


Add PropertyNamerULC

Project: http://git-wip-us.apache.org/repos/asf/incubator-juneau/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-juneau/commit/0f030b18
Tree: http://git-wip-us.apache.org/repos/asf/incubator-juneau/tree/0f030b18
Diff: http://git-wip-us.apache.org/repos/asf/incubator-juneau/diff/0f030b18

Branch: refs/heads/master
Commit: 0f030b188bcec308ea1662291fb6b7358f76489a
Parents: 58dc46e
Author: JamesBognar <ja...@apache.org>
Authored: Wed May 31 08:24:06 2017 -0400
Committer: JamesBognar <ja...@apache.org>
Committed: Wed May 31 08:24:06 2017 -0400

----------------------------------------------------------------------
 .../java/org/apache/juneau/BeanMapTest.java     |  4 +-
 .../juneau/PropertyNamerDashedLcTest.java       | 40 ------------
 .../org/apache/juneau/PropertyNamerTest.java    | 57 +++++++++++++++++
 .../java/org/apache/juneau/PropertyNamer.java   |  2 +-
 .../org/apache/juneau/PropertyNamerDLC.java     | 64 ++++++++++++++++++++
 .../apache/juneau/PropertyNamerDashedLC.java    | 64 --------------------
 .../java/org/apache/juneau/annotation/Bean.java |  2 +-
 7 files changed, 125 insertions(+), 108 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/0f030b18/juneau-core-test/src/test/java/org/apache/juneau/BeanMapTest.java
----------------------------------------------------------------------
diff --git a/juneau-core-test/src/test/java/org/apache/juneau/BeanMapTest.java b/juneau-core-test/src/test/java/org/apache/juneau/BeanMapTest.java
index 5dd13b0..44ecd4f 100755
--- a/juneau-core-test/src/test/java/org/apache/juneau/BeanMapTest.java
+++ b/juneau-core-test/src/test/java/org/apache/juneau/BeanMapTest.java
@@ -1052,7 +1052,7 @@ public class BeanMapTest {
 		assertEquals(6, b.bingBooURL);
 	}
 
-	@Bean(propertyNamer=PropertyNamerDashedLC.class)
+	@Bean(propertyNamer=PropertyNamerDLC.class)
 	public static class P1 {
 		public int foo, barBaz, bingBooURL;
 	}
@@ -1075,7 +1075,7 @@ public class BeanMapTest {
 		assertEquals(4, b.getBazBING());
 	}
 
-	@Bean(propertyNamer=PropertyNamerDashedLC.class)
+	@Bean(propertyNamer=PropertyNamerDLC.class)
 	public static class P2 {
 		private int fooBar, bazBING;
 		public int getFooBar() {

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/0f030b18/juneau-core-test/src/test/java/org/apache/juneau/PropertyNamerDashedLcTest.java
----------------------------------------------------------------------
diff --git a/juneau-core-test/src/test/java/org/apache/juneau/PropertyNamerDashedLcTest.java b/juneau-core-test/src/test/java/org/apache/juneau/PropertyNamerDashedLcTest.java
deleted file mode 100755
index 5d2e1f3..0000000
--- a/juneau-core-test/src/test/java/org/apache/juneau/PropertyNamerDashedLcTest.java
+++ /dev/null
@@ -1,40 +0,0 @@
-// ***************************************************************************************************************************
-// * 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.juneau;
-
-import static org.junit.Assert.*;
-
-import org.junit.*;
-
-@SuppressWarnings("javadoc")
-public class PropertyNamerDashedLcTest {
-
-	//====================================================================================================
-	// test
-	//====================================================================================================
-	@Test
-	public void test() throws Exception {
-		PropertyNamer n = new PropertyNamerDashedLC();
-
-		assertEquals("abc", n.getPropertyName("ABC"));
-		assertEquals("abc", n.getPropertyName("abc"));
-		assertEquals("foo-bar-baz", n.getPropertyName("FooBarBaz"));
-		assertEquals("foo-bar-baz", n.getPropertyName("FooBarBAZ"));
-		assertEquals("foo-bar-baz", n.getPropertyName("fooBarBAZ"));
-		assertEquals("", n.getPropertyName(""));
-		assertNull(n.getPropertyName(null));
-		assertEquals("a", n.getPropertyName("A"));
-		assertEquals("a", n.getPropertyName("A"));
-
-	}
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/0f030b18/juneau-core-test/src/test/java/org/apache/juneau/PropertyNamerTest.java
----------------------------------------------------------------------
diff --git a/juneau-core-test/src/test/java/org/apache/juneau/PropertyNamerTest.java b/juneau-core-test/src/test/java/org/apache/juneau/PropertyNamerTest.java
new file mode 100755
index 0000000..4a0331e
--- /dev/null
+++ b/juneau-core-test/src/test/java/org/apache/juneau/PropertyNamerTest.java
@@ -0,0 +1,57 @@
+// ***************************************************************************************************************************
+// * 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.juneau;
+
+import static org.junit.Assert.*;
+
+import org.junit.*;
+
+@SuppressWarnings("javadoc")
+public class PropertyNamerTest {
+
+	//====================================================================================================
+	// test dashed-lower-case
+	//====================================================================================================
+	@Test
+	public void testDLC() throws Exception {
+		PropertyNamer n = new PropertyNamerDLC();
+
+		assertEquals("abc", n.getPropertyName("ABC"));
+		assertEquals("abc", n.getPropertyName("abc"));
+		assertEquals("foo-bar-baz", n.getPropertyName("FooBarBaz"));
+		assertEquals("foo-bar-baz", n.getPropertyName("FooBarBAZ"));
+		assertEquals("foo-bar-baz", n.getPropertyName("fooBarBAZ"));
+		assertEquals("", n.getPropertyName(""));
+		assertNull(n.getPropertyName(null));
+		assertEquals("a", n.getPropertyName("A"));
+		assertEquals("a", n.getPropertyName("A"));
+	}
+	
+	//====================================================================================================
+	// test underscore-lower-case
+	//====================================================================================================
+	@Test
+	public void testULC() throws Exception {
+		PropertyNamer n = new PropertyNamerULC();
+
+		assertEquals("abc", n.getPropertyName("ABC"));
+		assertEquals("abc", n.getPropertyName("abc"));
+		assertEquals("foo_bar_baz", n.getPropertyName("FooBarBaz"));
+		assertEquals("foo_bar_baz", n.getPropertyName("FooBarBAZ"));
+		assertEquals("foo_bar_baz", n.getPropertyName("fooBarBAZ"));
+		assertEquals("", n.getPropertyName(""));
+		assertNull(n.getPropertyName(null));
+		assertEquals("a", n.getPropertyName("A"));
+		assertEquals("a", n.getPropertyName("A"));
+	}
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/0f030b18/juneau-core/src/main/java/org/apache/juneau/PropertyNamer.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/PropertyNamer.java b/juneau-core/src/main/java/org/apache/juneau/PropertyNamer.java
index fafa081..2d6a33e 100644
--- a/juneau-core/src/main/java/org/apache/juneau/PropertyNamer.java
+++ b/juneau-core/src/main/java/org/apache/juneau/PropertyNamer.java
@@ -17,7 +17,7 @@ import org.apache.juneau.annotation.*;
 /**
  * Defines an API for converting conventional bean property names to some other form.
  * <p>
- * For example, given the bean property <js>"fooBarURL"</js>, the {@link PropertyNamerDashedLC}
+ * For example, given the bean property <js>"fooBarURL"</js>, the {@link PropertyNamerDLC}
  * 	property namer will convert this to <js>"foo-bar-url"</js>.
  * <p>
  * Property namers are associated with beans through the {@link Bean#propertyNamer} annotation.

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/0f030b18/juneau-core/src/main/java/org/apache/juneau/PropertyNamerDLC.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/PropertyNamerDLC.java b/juneau-core/src/main/java/org/apache/juneau/PropertyNamerDLC.java
new file mode 100644
index 0000000..db21ed7
--- /dev/null
+++ b/juneau-core/src/main/java/org/apache/juneau/PropertyNamerDLC.java
@@ -0,0 +1,64 @@
+// ***************************************************************************************************************************
+// * 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.juneau;
+
+/**
+ * Converts property names to dashed-lower-case format.
+ *
+ * <h5 class='section'>Examples:</h5>
+ * <ul>
+ * 	<li><js>"fooBar"</js> -&gt; <js>"foo-bar"</js>
+ * 	<li><js>"fooBarURL"</js> -&gt; <js>"foo-bar-url"</js>
+ * 	<li><js>"FooBarURL"</js> -&gt; <js>"foo-bar-url"</js>
+ * </ul>
+ */
+public final class PropertyNamerDLC implements PropertyNamer {
+
+	@Override /* PropertyNamer */
+	public String getPropertyName(String name) {
+		if (name == null || name.isEmpty())
+			return name;
+
+		int numUCs = 0;
+		boolean isPrevUC = Character.isUpperCase(name.charAt(0));
+		for (int i = 1; i < name.length(); i++) {
+			char c = name.charAt(i);
+			if (Character.isUpperCase(c)) {
+				if (! isPrevUC)
+					numUCs++;
+				isPrevUC = true;
+			} else {
+				isPrevUC = false;
+			}
+		}
+
+		char[] name2 = new char[name.length() + numUCs];
+		isPrevUC = Character.isUpperCase(name.charAt(0));
+		name2[0] = Character.toLowerCase(name.charAt(0));
+		int ni = 0;
+		for (int i = 0; i < name.length(); i++) {
+			char c = name.charAt(i);
+			if (Character.isUpperCase(c)) {
+				if (! isPrevUC)
+					name2[ni++] = '-';
+				isPrevUC = true;
+				name2[ni++] = Character.toLowerCase(c);
+			} else {
+				isPrevUC = false;
+				name2[ni++] = c;
+			}
+		}
+
+		return new String(name2);
+	}
+}

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/0f030b18/juneau-core/src/main/java/org/apache/juneau/PropertyNamerDashedLC.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/PropertyNamerDashedLC.java b/juneau-core/src/main/java/org/apache/juneau/PropertyNamerDashedLC.java
deleted file mode 100644
index 6829262..0000000
--- a/juneau-core/src/main/java/org/apache/juneau/PropertyNamerDashedLC.java
+++ /dev/null
@@ -1,64 +0,0 @@
-// ***************************************************************************************************************************
-// * 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.juneau;
-
-/**
- * Converts property names to dashed-lower-case format.
- *
- * <h5 class='section'>Examples:</h5>
- * <ul>
- * 	<li><js>"fooBar"</js> -&gt; <js>"foo-bar"</js>
- * 	<li><js>"fooBarURL"</js> -&gt; <js>"foo-bar-url"</js>
- * 	<li><js>"FooBarURL"</js> -&gt; <js>"foo-bar-url"</js>
- * </ul>
- */
-public final class PropertyNamerDashedLC implements PropertyNamer {
-
-	@Override /* PropertyNamer */
-	public String getPropertyName(String name) {
-		if (name == null || name.isEmpty())
-			return name;
-
-		int numUCs = 0;
-		boolean isPrevUC = Character.isUpperCase(name.charAt(0));
-		for (int i = 1; i < name.length(); i++) {
-			char c = name.charAt(i);
-			if (Character.isUpperCase(c)) {
-				if (! isPrevUC)
-					numUCs++;
-				isPrevUC = true;
-			} else {
-				isPrevUC = false;
-			}
-		}
-
-		char[] name2 = new char[name.length() + numUCs];
-		isPrevUC = Character.isUpperCase(name.charAt(0));
-		name2[0] = Character.toLowerCase(name.charAt(0));
-		int ni = 0;
-		for (int i = 0; i < name.length(); i++) {
-			char c = name.charAt(i);
-			if (Character.isUpperCase(c)) {
-				if (! isPrevUC)
-					name2[ni++] = '-';
-				isPrevUC = true;
-				name2[ni++] = Character.toLowerCase(c);
-			} else {
-				isPrevUC = false;
-				name2[ni++] = c;
-			}
-		}
-
-		return new String(name2);
-	}
-}

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/0f030b18/juneau-core/src/main/java/org/apache/juneau/annotation/Bean.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/annotation/Bean.java b/juneau-core/src/main/java/org/apache/juneau/annotation/Bean.java
index 9c61189..7e89c07 100644
--- a/juneau-core/src/main/java/org/apache/juneau/annotation/Bean.java
+++ b/juneau-core/src/main/java/org/apache/juneau/annotation/Bean.java
@@ -181,7 +181,7 @@ public @interface Bean {
 	 * Associates a {@link PropertyNamer} with this bean to tailor the names of the bean properties.
 	 * <p>
 	 * Property namers are used to transform bean property names from standard form to some other form.
-	 * For example, the {@link PropertyNamerDashedLC} will convert property names to dashed-lowercase, and
+	 * For example, the {@link PropertyNamerDLC} will convert property names to dashed-lowercase, and
 	 * 	these will be used as attribute names in JSON, and element names in XML.
 	 * <p>
 	 * This annotation is an alternative to using the {@link BeanFilter} class with an implemented {@link BeanFilter#getPropertyNamer()} method.


[2/2] incubator-juneau git commit: Add PropertyNamerULC.

Posted by ja...@apache.org.
Add PropertyNamerULC.

Project: http://git-wip-us.apache.org/repos/asf/incubator-juneau/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-juneau/commit/de8a66b8
Tree: http://git-wip-us.apache.org/repos/asf/incubator-juneau/tree/de8a66b8
Diff: http://git-wip-us.apache.org/repos/asf/incubator-juneau/diff/de8a66b8

Branch: refs/heads/master
Commit: de8a66b87ecc49426df3a3da0aaaa036729dcb1a
Parents: 0f030b1
Author: JamesBognar <ja...@apache.org>
Authored: Wed May 31 08:25:16 2017 -0400
Committer: JamesBognar <ja...@apache.org>
Committed: Wed May 31 08:25:16 2017 -0400

----------------------------------------------------------------------
 .../org/apache/juneau/PropertyNamerULC.java     | 64 ++++++++++++++++++++
 1 file changed, 64 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/de8a66b8/juneau-core/src/main/java/org/apache/juneau/PropertyNamerULC.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/PropertyNamerULC.java b/juneau-core/src/main/java/org/apache/juneau/PropertyNamerULC.java
new file mode 100644
index 0000000..e5a4672
--- /dev/null
+++ b/juneau-core/src/main/java/org/apache/juneau/PropertyNamerULC.java
@@ -0,0 +1,64 @@
+// ***************************************************************************************************************************
+// * 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.juneau;
+
+/**
+ * Converts property names to underscore-lower-case format.
+ *
+ * <h5 class='section'>Examples:</h5>
+ * <ul>
+ * 	<li><js>"fooBar"</js> -&gt; <js>"foo_bar"</js>
+ * 	<li><js>"fooBarURL"</js> -&gt; <js>"foo_bar_url"</js>
+ * 	<li><js>"FooBarURL"</js> -&gt; <js>"foo_bar_url"</js>
+ * </ul>
+ */
+public final class PropertyNamerULC implements PropertyNamer {
+
+	@Override /* PropertyNamer */
+	public String getPropertyName(String name) {
+		if (name == null || name.isEmpty())
+			return name;
+
+		int numUCs = 0;
+		boolean isPrevUC = Character.isUpperCase(name.charAt(0));
+		for (int i = 1; i < name.length(); i++) {
+			char c = name.charAt(i);
+			if (Character.isUpperCase(c)) {
+				if (! isPrevUC)
+					numUCs++;
+				isPrevUC = true;
+			} else {
+				isPrevUC = false;
+			}
+		}
+
+		char[] name2 = new char[name.length() + numUCs];
+		isPrevUC = Character.isUpperCase(name.charAt(0));
+		name2[0] = Character.toLowerCase(name.charAt(0));
+		int ni = 0;
+		for (int i = 0; i < name.length(); i++) {
+			char c = name.charAt(i);
+			if (Character.isUpperCase(c)) {
+				if (! isPrevUC)
+					name2[ni++] = '_';
+				isPrevUC = true;
+				name2[ni++] = Character.toLowerCase(c);
+			} else {
+				isPrevUC = false;
+				name2[ni++] = c;
+			}
+		}
+
+		return new String(name2);
+	}
+}