@Override public String toString() { return delegateType.getFullName() + "." + name + " " + parameters; }
public boolean isRegistered(Type type) { return queryTypes.containsKey(type.getFullName()); } }
public void register(Type type, Type queryType) { queryTypes.put(type.getFullName(), queryType); }
public Type getPathType(Type type, EntityType model, boolean raw, boolean rawParameters, boolean extend) { if (queryTypes.containsKey(type.getFullName())) { return queryTypes.get(type.getFullName()); } else { return getQueryType(pathTypes, type, model, raw, rawParameters, extend); } }
public Type getExprType(Type type, EntityType model, boolean raw, boolean rawParameters, boolean extend) { if (queryTypes.containsKey(type.getFullName())) { return queryTypes.get(type.getFullName()); } else { return getQueryType(exprTypes, type, model, raw, rawParameters, extend); } }
@Override public boolean equals(Object o) { if (o == this) { return true; } else if (o instanceof Type) { return getFullName().equals(((Type) o).getFullName()); } else { return false; } }
private Type createWithPackage(Type type) { String packageName = type.getPackageName(); String simpleName = prefix + normalizeName(type.getFullName() .substring(packageName.length() + 1)) + suffix; packageName = (packageName.startsWith("java") ? "ext." : "") + packageName + packageSuffix; return new SimpleType(type.getCategory(), packageName + "." + simpleName, packageName, simpleName, false, false); }
private static Type resolveWithParameters(Type type, Type declaringType, EntityType context) { Type[] params = new Type[type.getParameters().size()]; boolean transformed = false; for (int i = 0; i < type.getParameters().size(); i++) { Type param = type.getParameters().get(i); if (param != null && !param.getFullName().equals(type.getFullName())) { params[i] = resolve(param, declaringType, context); if (!params[i].equals(param)) { transformed = true; } } } if (transformed) { return new SimpleType(type, params); } else { return type; } }
public void extendTypes() { for (Map.Entry<List<?>, Type> entry : cache.entrySet()) { if (entry.getValue() instanceof EntityType) { EntityType entityType = (EntityType) entry.getValue(); if (entityType.getProperties().isEmpty()) { for (Type type : cache.values()) { if (type.getFullName().equals(entityType.getFullName()) && type instanceof EntityType) { EntityType base = (EntityType) type; for (Property property : base.getProperties()) { entityType.addProperty(property); } } } } } } }
private void addSupertypeFields(EntityType model, Set<EntityType> handled) { if (handled.add(model)) { for (Supertype supertype : model.getSuperTypes()) { EntityType entityType = context.allTypes.get(supertype.getType().getFullName()); if (entityType != null) { addSupertypeFields(entityType, handled); supertype.setEntityType(entityType); model.include(supertype); } } } }
private Type createWithoutPackage(Type type) { String simpleName = prefix + normalizeName(type.getFullName()) + suffix; return new SimpleType(type.getCategory(), simpleName, "", simpleName, false, false); }
private Type createCollectionType(Type baseType, Iterator<? extends TypeMirror> typeMirrors, boolean deep) { if (!typeMirrors.hasNext()) { return new SimpleType(baseType, defaultType); } Type componentType = getType(typeMirrors.next(), deep); if (componentType == null) { componentType = defaultType; } else if (componentType.getParameters().isEmpty()) { TypeElement element = env.getElementUtils().getTypeElement(componentType.getFullName()); if (element != null) { Type type = getType(element.asType(), deep); if (!type.getParameters().isEmpty()) { componentType = new SimpleType(componentType, new Type[type.getParameters().size()]); } } } return new SimpleType(baseType, componentType); }
private void addSupertypeFields(EntityType model, Map<String, EntityType> superTypes, Set<EntityType> handled) { if (handled.add(model)) { for (Supertype supertype : model.getSuperTypes()) { EntityType entityType = superTypes.get(supertype.getType().getFullName()); if (entityType == null) { if (supertype.getType().getPackageName().startsWith("java.")) { // skip internal supertypes continue; } // FIXME this misses the generics Class<?> cl = supertype.getType().getJavaClass(); typeFactory.addEmbeddableType(cl); entityType = createEntityType(cl, new HashMap<Class<?>, EntityType>()); addProperties(cl, entityType); } addSupertypeFields(entityType, superTypes, handled); supertype.setEntityType(entityType); model.include(supertype); } } }
@Test public void className() { Type type = factory.get(EnumExample.class); assertEquals("com.querydsl.codegen.TypeFactoryTest.EnumExample", type.getFullName()); }
@Test public void prefix_and_suffix() { QueryTypeFactory factory = new QueryTypeFactoryImpl("Q", "Type", ""); assertEquals("com.querydsl.codegen.QPointType", factory.create(type).getFullName()); }
@Test public void prefix_and_package_suffix() { QueryTypeFactory factory = new QueryTypeFactoryImpl("Q", "", ".query"); assertEquals("com.querydsl.codegen.query.QPoint", factory.create(type).getFullName()); }
@Test public void prefix_only() { QueryTypeFactory factory = new QueryTypeFactoryImpl("Q", "", ""); assertEquals("com.querydsl.codegen.QPoint", factory.create(type).getFullName()); }
@Test public void suffix_only() { QueryTypeFactory factory = new QueryTypeFactoryImpl("", "Type", ""); assertEquals("com.querydsl.codegen.PointType", factory.create(type).getFullName()); }
@Test public void blob() { Type blob = factory.get(Blob.class); assertEquals("Blob", blob.getSimpleName()); assertEquals("java.sql.Blob", blob.getFullName()); assertEquals("java.sql", blob.getPackageName()); }
@Test public void boolean_() { Type bo = factory.get(boolean.class); assertEquals(TypeCategory.BOOLEAN, bo.getCategory()); assertEquals("Boolean", bo.getSimpleName()); assertEquals("java.lang.Boolean", bo.getFullName()); assertEquals("java.lang", bo.getPackageName()); }