Normalize non visible classes

This commit is contained in:
Ruben Dijkstra 2015-03-17 15:43:39 +01:00
parent 7331fc4489
commit 8fb2afbc36
2 changed files with 19 additions and 13 deletions

View File

@ -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;
}

View File

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