From 8fb2afbc369ad70f9f8a829e6f8a2847139941cd Mon Sep 17 00:00:00 2001 From: Ruben Dijkstra Date: Tue, 17 Mar 2015 15:43:39 +0100 Subject: [PATCH] Normalize non visible classes --- .../mysema/codegen/support/ClassUtils.java | 9 ++++---- .../codegen/support/ClassUtilsTest.java | 23 ++++++++++++------- 2 files changed, 19 insertions(+), 13 deletions(-) diff --git a/src/main/java/com/mysema/codegen/support/ClassUtils.java b/src/main/java/com/mysema/codegen/support/ClassUtils.java index d12e9893d..70c0aab41 100644 --- a/src/main/java/com/mysema/codegen/support/ClassUtils.java +++ b/src/main/java/com/mysema/codegen/support/ClassUtils.java @@ -13,11 +13,8 @@ */ package com.mysema.codegen.support; -import java.util.Collection; -import java.util.Collections; -import java.util.List; -import java.util.Map; -import java.util.Set; +import java.lang.reflect.Modifier; +import java.util.*; /** * @author tiwe @@ -91,6 +88,8 @@ public final class ClassUtils { if (zuper != null && !Object.class.equals(zuper)) { return zuper; } + } else if (!Modifier.isPublic(clazz.getModifiers())) { + return normalize(clazz.getSuperclass()); } return clazz; } diff --git a/src/test/java/com/mysema/codegen/support/ClassUtilsTest.java b/src/test/java/com/mysema/codegen/support/ClassUtilsTest.java index 0fa843684..f59355249 100644 --- a/src/test/java/com/mysema/codegen/support/ClassUtilsTest.java +++ b/src/test/java/com/mysema/codegen/support/ClassUtilsTest.java @@ -7,17 +7,13 @@ package com.mysema.codegen.support; import static org.junit.Assert.assertEquals; -import java.util.ArrayList; -import java.util.Collections; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Locale; -import java.util.Map; -import java.util.Set; +import java.util.*; import org.junit.Test; +import com.google.common.base.Optional; +import com.google.common.collect.Ordering; + public class ClassUtilsTest { @Test @@ -52,4 +48,15 @@ public class ClassUtilsTest { // assertEquals(Collection.class, ClassUtils.normalize(Bag.class)); } + @Test + public void Normalize_Accessibility() { + //com.google.common.base.Absent is not public, cannot be accessed from outside package + assertEquals(Optional.class, ClassUtils.normalize(Optional.absent().getClass())); + //com.google.common.collect.AllEqualOrdering is not public, cannot be accessed from outside package + assertEquals(Ordering.class, ClassUtils.normalize(Ordering.allEqual().getClass())); + + //TODO interface normalization support? How to know which one? + //com.google.common.base.Functions.ToStringFunction is not public, cannot be accessed from outside package + //assertEquals(Function.class, ClassUtils.normalize(Functions.toStringFunction().getClass())); + } }