Updated Branches:
  refs/heads/wicket-1.5.x d149893ee -> ba9aba837

Improve the handling of nested inner classes in Classes.(name|simpleName)


Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/81eee3ca
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/81eee3ca
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/81eee3ca

Branch: refs/heads/wicket-1.5.x
Commit: 81eee3ca2609f6c6ea6cc3dee8213970bc0a60ff
Parents: d149893
Author: Martin Tzvetanov Grigorov <[email protected]>
Authored: Sun Sep 2 16:38:48 2012 +0200
Committer: Martin Tzvetanov Grigorov <[email protected]>
Committed: Sun Sep 2 16:43:38 2012 +0200

----------------------------------------------------------------------
 .../java/org/apache/wicket/MarkupContainer.java    |    7 +--
 .../src/main/java/org/apache/wicket/Page.java      |    2 +-
 .../java/org/apache/wicket/util/lang/Classes.java  |   46 +++++++++++--
 .../org/apache/wicket/util/lang/ClassesTest.java   |   54 +++++++++++++++
 4 files changed, 95 insertions(+), 14 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/81eee3ca/wicket-core/src/main/java/org/apache/wicket/MarkupContainer.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/MarkupContainer.java 
b/wicket-core/src/main/java/org/apache/wicket/MarkupContainer.java
index c7ce9b5..a061738 100644
--- a/wicket-core/src/main/java/org/apache/wicket/MarkupContainer.java
+++ b/wicket-core/src/main/java/org/apache/wicket/MarkupContainer.java
@@ -679,12 +679,7 @@ public abstract class MarkupContainer extends Component 
implements Iterable<Comp
                                .isOutputMarkupContainerClassName();
                        if (outputClassName)
                        {
-                               Class<?> klass = getClass();
-                               while (klass.isAnonymousClass())
-                               {
-                                       klass = klass.getSuperclass();
-                               }
-                               className = klass.getName();
+                               className = Classes.name(getClass());
                                getResponse().write("<!-- MARKUP FOR ");
                                getResponse().write(className);
                                getResponse().write(" BEGIN -->");

http://git-wip-us.apache.org/repos/asf/wicket/blob/81eee3ca/wicket-core/src/main/java/org/apache/wicket/Page.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/Page.java 
b/wicket-core/src/main/java/org/apache/wicket/Page.java
index 7bd97c8..a3dc6fa 100644
--- a/wicket-core/src/main/java/org/apache/wicket/Page.java
+++ b/wicket-core/src/main/java/org/apache/wicket/Page.java
@@ -876,7 +876,7 @@ public abstract class Page extends MarkupContainer 
implements IRedirectListener,
                        }
                        getResponse().write("<!-- Page Class ");
                        getResponse().write(klass.getName());
-                       getResponse().write(" -->\n");
+                       getResponse().write(" END -->\n");
                }
        }
 

http://git-wip-us.apache.org/repos/asf/wicket/blob/81eee3ca/wicket-util/src/main/java/org/apache/wicket/util/lang/Classes.java
----------------------------------------------------------------------
diff --git a/wicket-util/src/main/java/org/apache/wicket/util/lang/Classes.java 
b/wicket-util/src/main/java/org/apache/wicket/util/lang/Classes.java
index f681459..cef057c 100644
--- a/wicket-util/src/main/java/org/apache/wicket/util/lang/Classes.java
+++ b/wicket-util/src/main/java/org/apache/wicket/util/lang/Classes.java
@@ -22,7 +22,7 @@ import org.apache.wicket.util.string.Strings;
 
 /**
  * Utilities for dealing with classes.
- * 
+ *
  * @author Jonathan Locke
  */
 public final class Classes
@@ -30,21 +30,53 @@ public final class Classes
 
        /**
         * Gets the name of the given class or null if the class is null.
-        * 
+        *
         * @param c
         *            The class
         * @return The class name
         */
-       public static String name(final Class<?> c)
+       public static String name(Class<?> c)
+       {
+               String name = null;
+               if (c != null)
+               {
+                       while (c.isAnonymousClass())
+                       {
+                               c = c.getSuperclass();
+                       }
+                       name = c.getName();
+               }
+
+               return name;
+       }
+
+       /**
+        * Gets the simple name (without the package) of the given class or 
null if the class is null.
+        *
+        * @param c
+        *            The class
+        * @return The class simple name
+        */
+       public static String simpleName(Class<?> c)
        {
-               return (c != null) ? c.getName() : null;
+               String simpleName = null;
+               if (c != null)
+               {
+                       while (c.isAnonymousClass())
+                       {
+                               c = c.getSuperclass();
+                       }
+                       simpleName = c.getSimpleName();
+               }
+
+               return simpleName;
        }
 
        /**
         * Takes a Class and a relative path to a class and returns any class 
at that relative path. For
         * example, if the given Class was java.lang.System and the relative 
path was "../util/List",
         * then the java.util.List class would be returned.
-        * 
+        *
         * @param scope
         *            The package to start at
         * @param path
@@ -61,9 +93,9 @@ public final class Classes
 
        /**
         * Gets the name of a given class without the prefixed package path
-        * 
+        *
         * @param <C>
-        * 
+        *
         * @param c
         *            The class
         * @return The class name

http://git-wip-us.apache.org/repos/asf/wicket/blob/81eee3ca/wicket-util/src/test/java/org/apache/wicket/util/lang/ClassesTest.java
----------------------------------------------------------------------
diff --git 
a/wicket-util/src/test/java/org/apache/wicket/util/lang/ClassesTest.java 
b/wicket-util/src/test/java/org/apache/wicket/util/lang/ClassesTest.java
new file mode 100644
index 0000000..7df5a8e
--- /dev/null
+++ b/wicket-util/src/test/java/org/apache/wicket/util/lang/ClassesTest.java
@@ -0,0 +1,54 @@
+/*
+ * 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.wicket.util.lang;
+
+import java.text.SimpleDateFormat;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+/**
+ * @since 1.5.8
+ */
+public class ClassesTest extends Assert
+{
+       @Test
+       public void simpleName() throws Exception
+       {
+
+               assertEquals("String", Classes.simpleName(String.class));
+               assertEquals("String", Classes.simpleName("".getClass()));
+
+               assertEquals("SimpleDateFormat", Classes.simpleName(new 
SimpleDateFormat() {}.getClass()));
+
+               // anonymous interface impl
+               assertEquals("Object", Classes.simpleName(new Cloneable() 
{}.getClass()));
+       }
+
+       @Test
+       public void name() throws Exception
+       {
+
+               assertEquals("java.lang.String", Classes.name(String.class));
+               assertEquals("java.lang.String", Classes.name("".getClass()));
+
+               assertEquals("java.text.SimpleDateFormat", Classes.name(new 
SimpleDateFormat() {}.getClass()));
+
+               // anonymous interface impl
+               assertEquals("java.lang.Object", Classes.name(new Cloneable() 
{}.getClass()));
+       }
+}

Reply via email to