diff --git a/src/main/java/com/mysema/codegen/model/ClassType.java b/src/main/java/com/mysema/codegen/model/ClassType.java index a98b6f9f5..3d0c08daf 100644 --- a/src/main/java/com/mysema/codegen/model/ClassType.java +++ b/src/main/java/com/mysema/codegen/model/ClassType.java @@ -184,6 +184,11 @@ public class ClassType implements Type { return javaClass.isPrimitive(); } + @Override + public boolean isMember() { + return javaClass.getEnclosingClass() != null; + } + @Override public String toString() { return getGenericName(true); diff --git a/src/main/java/com/mysema/codegen/model/SimpleType.java b/src/main/java/com/mysema/codegen/model/SimpleType.java index a09f42961..51ee2e524 100644 --- a/src/main/java/com/mysema/codegen/model/SimpleType.java +++ b/src/main/java/com/mysema/codegen/model/SimpleType.java @@ -41,7 +41,7 @@ public class SimpleType implements Type { private final List parameters; - private final boolean primitiveClass, finalClass; + private final boolean primitiveClass, finalClass, memberClass; private Type arrayType, componentType, enclosingType; @@ -77,7 +77,7 @@ public class SimpleType implements Type { } else { this.localName = fullName; } - if (fullName.substring(packageName.length() + 1).contains(".")) { + if (localName.contains(".")) { this.outerClassName = fullName.substring(0, fullName.lastIndexOf('.')); } else { this.outerClassName = fullName; @@ -85,6 +85,7 @@ public class SimpleType implements Type { this.primitiveClass = primitiveClass; this.finalClass = finalClass; this.parameters = parameters; + this.memberClass = localName.contains("."); } public SimpleType(TypeCategory typeCategory, String fullName, String packageName, @@ -149,11 +150,7 @@ public class SimpleType implements Type { if (enclosingType == null && localName.contains(".")) { String newLocalName = localName.substring(0, localName.lastIndexOf('.')); String newSimpleName = newLocalName.substring(newLocalName.lastIndexOf('.') + 1); - String newFullName = newLocalName; - if (packageName.length() > 0) { - newFullName = packageName + "." + newLocalName; - } - enclosingType = new SimpleType(newFullName, packageName, newSimpleName); + enclosingType = new SimpleType(outerClassName, packageName, newSimpleName); } return enclosingType; } @@ -231,8 +228,9 @@ public class SimpleType implements Type { @Override public String getRawName(Set packages, Set classes) { - if (packages.contains(packageName) || classes.contains(fullName) - || classes.contains(outerClassName)) { + if (classes.contains(fullName)) { + return simpleName; + } else if (packages.contains(packageName) || classes.contains(outerClassName)) { return localName; } else { return fullName; @@ -259,6 +257,11 @@ public class SimpleType implements Type { return primitiveClass; } + @Override + public boolean isMember() { + return memberClass; + } + @Override public String toString() { return getGenericName(true); diff --git a/src/main/java/com/mysema/codegen/model/Type.java b/src/main/java/com/mysema/codegen/model/Type.java index 6ac040645..2ae8613ef 100644 --- a/src/main/java/com/mysema/codegen/model/Type.java +++ b/src/main/java/com/mysema/codegen/model/Type.java @@ -51,4 +51,6 @@ public interface Type { boolean isPrimitive(); + boolean isMember(); + } \ No newline at end of file diff --git a/src/main/java/com/mysema/codegen/model/TypeAdapter.java b/src/main/java/com/mysema/codegen/model/TypeAdapter.java index fa3e43fc9..ee348b846 100644 --- a/src/main/java/com/mysema/codegen/model/TypeAdapter.java +++ b/src/main/java/com/mysema/codegen/model/TypeAdapter.java @@ -119,6 +119,11 @@ public class TypeAdapter implements Type { return type.isPrimitive(); } + @Override + public boolean isMember() { + return type.isMember(); + } + @Override public String toString() { return type.toString(); diff --git a/src/test/java/com/mysema/codegen/model/SimpleTypeTest.java b/src/test/java/com/mysema/codegen/model/SimpleTypeTest.java index 92c3a2115..af8df62b0 100644 --- a/src/test/java/com/mysema/codegen/model/SimpleTypeTest.java +++ b/src/test/java/com/mysema/codegen/model/SimpleTypeTest.java @@ -1,7 +1,6 @@ package com.mysema.codegen.model; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNull; +import static org.junit.Assert.*; import java.util.Collections; @@ -74,4 +73,10 @@ public class SimpleTypeTest { assertNull(new SimpleType(new ClassType(SimpleTypeTest.class)).getEnclosingType()); } + @Test + public void IsMember() { + assertTrue(new SimpleType(new ClassType(SimpleTypeTest.Inner.class)).isMember()); + assertFalse(new SimpleType(new ClassType(SimpleType.class)).isMember()); + } + }