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())); + } +}
