private void handleConstructors(EntityType entityType, List<? extends Element> elements) { for (ExecutableElement constructor : ElementFilter.constructorsIn(elements)) { if (configuration.isValidConstructor(constructor)) { List<Parameter> parameters = transformParams(constructor.getParameters()); entityType.addConstructor(new Constructor(parameters)); } } }
protected boolean isImportExprPackage(EntityType model) { if (!model.getConstructors().isEmpty() || !model.getDelegates().isEmpty()) { boolean importExprPackage = false; for (Constructor c : model.getConstructors()) { for (Parameter cp : c.getParameters()) { importExprPackage |= cp.getType().getPackageName() .equals(ComparableExpression.class.getPackage().getName()); } } for (Delegate d : model.getDelegates()) { for (Parameter dp : d.getParameters()) { importExprPackage |= dp.getType().getPackageName() .equals(ComparableExpression.class.getPackage().getName()); } } return importExprPackage; } else { return false; } }
private void addConstructors(Class<?> cl, EntityType type) { for (Constructor<?> constructor : cl.getConstructors()) { if (constructor.isAnnotationPresent(QueryProjection.class)) { List<Parameter> parameters = Lists.newArrayList(); for (int i = 0; i < constructor.getParameterTypes().length; i++) { Type parameterType = typeFactory.get( constructor.getParameterTypes()[i], constructor.getGenericParameterTypes()[i]); for (Annotation annotation : constructor.getParameterAnnotations()[i]) { if (annotation.annotationType().equals(QueryType.class)) { QueryType queryType = (QueryType) annotation; parameterType = parameterType.as(TypeCategory.valueOf(queryType.value().name())); } } parameters.add(new Parameter("param" + i, parameterType)); } type.addConstructor(new com.mysema.codegen.model.Constructor(parameters)); } } }
sizes.add(c.getParameters().size());
@Test public void constructors() throws IOException { Type typeModel = new SimpleType(TypeCategory.ENTITY, "com.querydsl.DomainClass", "com.querydsl", "DomainClass", false,false); EntityType type = new EntityType(typeModel); // constructor Parameter firstName = new Parameter("firstName", Types.STRING); Parameter lastName = new Parameter("lastName", Types.STRING); Parameter age = new Parameter("age", Types.INTEGER); type.addConstructor(new Constructor(Arrays.asList(firstName, lastName, age))); Writer writer = new StringWriter(); ProjectionSerializer serializer = new ProjectionSerializer(new JavaTypeMappings()); serializer.serialize(type, SimpleSerializerConfig.DEFAULT, new JavaWriter(writer)); assertTrue(writer.toString().contains("Expression<String> firstName")); assertTrue(writer.toString().contains("Expression<String> lastName")); assertTrue(writer.toString().contains("Expression<Integer> age")); }
final boolean asExpr = sizes.add(c.getParameters().size()); writer.beginStaticMethod(returnType, "create", c.getParameters(), new Function<Parameter, Parameter>() { @Override writer.append(", new Class<?>[]{"); boolean first = true; for (Parameter p : c.getParameters()) { if (!first) { writer.append(COMMA); for (Parameter p : c.getParameters()) { writer.append(COMMA + p.getName());
@SuppressWarnings("unchecked") @Before public void setUp() { // type Type typeModel = new SimpleType(TypeCategory.ENTITY, "com.querydsl.DomainClass", "com.querydsl", "DomainClass", false, false); type = new EntityType(typeModel); // property type.addProperty(new Property(type, "entityField", type)); type.addProperty(new Property(type, "collection", new ClassType(TypeCategory.COLLECTION, Collection.class, typeModel))); type.addProperty(new Property(type, "listField", new ClassType(TypeCategory.LIST, List.class, typeModel))); type.addProperty(new Property(type, "setField", new ClassType(TypeCategory.SET, Set.class, typeModel))); type.addProperty(new Property(type, "arrayField", new ClassType(TypeCategory.ARRAY, String[].class, typeModel))); type.addProperty(new Property(type, "mapField", new ClassType(TypeCategory.MAP, List.class, typeModel, typeModel))); type.addProperty(new Property(type, "superTypeField", new TypeExtends(new ClassType(TypeCategory.MAP, List.class, typeModel, typeModel)))); type.addProperty(new Property(type, "extendsTypeField", new TypeSuper(new ClassType(TypeCategory.MAP, List.class, typeModel, typeModel)))); for (Class<?> cl : Arrays.asList(Boolean.class, Comparable.class, Integer.class, Date.class, java.sql.Date.class, java.sql.Time.class)) { Type classType = new ClassType(TypeCategory.get(cl.getName()), cl); type.addProperty(new Property(type, StringUtils.uncapitalize(cl.getSimpleName()), classType)); } // constructor Parameter firstName = new Parameter("firstName", new ClassType(TypeCategory.STRING, String.class)); Parameter lastName = new Parameter("lastName", new ClassType(TypeCategory.STRING, String.class)); type.addConstructor(new Constructor(Arrays.asList(firstName, lastName))); }
final boolean asExpr = sizes.add(c.getParameters().size()); writer.beginConstructor(c.getParameters(), new Function<Parameter,Parameter>() { @Override public Parameter apply(Parameter p) { boolean first = true; for (Parameter p : c.getParameters()) { if (!first) { writer.append(", "); for (Parameter p : c.getParameters()) { writer.append(", " + p.getName());
@Test public void constructors() throws IOException { Type typeModel = new SimpleType(TypeCategory.ENTITY, "com.querydsl.DomainClass", "com.querydsl", "DomainClass", false,false); EntityType type = new EntityType(typeModel); // constructor Parameter firstName = new Parameter("firstName", Types.STRING); Parameter lastName = new Parameter("lastName", Types.STRING); Parameter age = new Parameter("age", Types.INTEGER); type.addConstructor(new Constructor(Arrays.asList(firstName, lastName, age))); Writer writer = new StringWriter(); ProjectionSerializer serializer = new ProjectionSerializer(new JavaTypeMappings()); serializer.serialize(type, SimpleSerializerConfig.DEFAULT, new JavaWriter(writer)); assertTrue(writer.toString().contains("Expression<String> firstName")); assertTrue(writer.toString().contains("Expression<String> lastName")); assertTrue(writer.toString().contains("Expression<Integer> age")); }
@Test public void Constructors() throws IOException{ Type typeModel = new SimpleType(TypeCategory.ENTITY, "com.mysema.query.DomainClass", "com.mysema.query", "DomainClass", false,false); EntityType type = new EntityType(typeModel); // constructor Parameter firstName = new Parameter("firstName", Types.STRING); Parameter lastName = new Parameter("lastName", Types.STRING); Parameter age = new Parameter("age", Types.INTEGER); type.addConstructor(new Constructor(Arrays.asList(firstName, lastName, age))); Writer writer = new StringWriter(); ProjectionSerializer serializer = new ProjectionSerializer(new JavaTypeMappings()); serializer.serialize(type, SimpleSerializerConfig.DEFAULT, new JavaWriter(writer)); assertTrue(writer.toString().contains("Expression<String> firstName")); assertTrue(writer.toString().contains("Expression<String> lastName")); assertTrue(writer.toString().contains("Expression<Integer> age")); }
@SuppressWarnings("unchecked") @Before public void setUp() { // type Type typeModel = new SimpleType(TypeCategory.ENTITY, "com.querydsl.DomainClass", "com.querydsl", "DomainClass", false, false); type = new EntityType(typeModel); // property type.addProperty(new Property(type, "entityField", type)); type.addProperty(new Property(type, "collection", new ClassType(TypeCategory.COLLECTION, Collection.class, typeModel))); type.addProperty(new Property(type, "listField", new ClassType(TypeCategory.LIST, List.class, typeModel))); type.addProperty(new Property(type, "setField", new ClassType(TypeCategory.SET, Set.class, typeModel))); type.addProperty(new Property(type, "arrayField", new ClassType(TypeCategory.ARRAY, String[].class, typeModel))); type.addProperty(new Property(type, "mapField", new ClassType(TypeCategory.MAP, List.class, typeModel, typeModel))); type.addProperty(new Property(type, "superTypeField", new TypeExtends(new ClassType(TypeCategory.MAP, List.class, typeModel, typeModel)))); type.addProperty(new Property(type, "extendsTypeField", new TypeSuper(new ClassType(TypeCategory.MAP, List.class, typeModel, typeModel)))); for (Class<?> cl : Arrays.asList(Boolean.class, Comparable.class, Integer.class, Date.class, java.sql.Date.class, java.sql.Time.class)) { Type classType = new ClassType(TypeCategory.get(cl.getName()), cl); type.addProperty(new Property(type, StringUtils.uncapitalize(cl.getSimpleName()), classType)); } // constructor Parameter firstName = new Parameter("firstName", new ClassType(TypeCategory.STRING, String.class)); Parameter lastName = new Parameter("lastName", new ClassType(TypeCategory.STRING, String.class)); type.addConstructor(new Constructor(Arrays.asList(firstName, lastName))); }
@SuppressWarnings("unchecked") @Before public void setUp() { // type Type typeModel = new SimpleType(TypeCategory.ENTITY, "com.mysema.query.DomainClass", "com.mysema.query", "DomainClass", false, false); type = new EntityType(typeModel); // property type.addProperty(new Property(type, "entityField", type)); type.addProperty(new Property(type, "collection", new ClassType(TypeCategory.COLLECTION, Collection.class, typeModel))); type.addProperty(new Property(type, "listField", new ClassType(TypeCategory.LIST, List.class, typeModel))); type.addProperty(new Property(type, "setField", new ClassType(TypeCategory.SET, Set.class, typeModel))); type.addProperty(new Property(type, "arrayField", new ClassType(TypeCategory.ARRAY, String[].class, typeModel))); type.addProperty(new Property(type, "mapField", new ClassType(TypeCategory.MAP, List.class, typeModel, typeModel))); type.addProperty(new Property(type, "superTypeField", new TypeExtends(new ClassType(TypeCategory.MAP, List.class, typeModel, typeModel)))); type.addProperty(new Property(type, "extendsTypeField", new TypeSuper(new ClassType(TypeCategory.MAP, List.class, typeModel, typeModel)))); for (Class<?> cl : Arrays.asList(Boolean.class, Comparable.class, Integer.class, Date.class, java.sql.Date.class, java.sql.Time.class)) { Type classType = new ClassType(TypeCategory.get(cl.getName()), cl); type.addProperty(new Property(type, StringUtils.uncapitalize(cl.getSimpleName()), classType)); } // constructor Parameter firstName = new Parameter("firstName", new ClassType(TypeCategory.STRING, String.class)); Parameter lastName = new Parameter("lastName", new ClassType(TypeCategory.STRING, String.class)); type.addConstructor(new Constructor(Arrays.asList(firstName, lastName))); }