mirror of
https://github.com/querydsl/querydsl.git
synced 2026-06-30 21:08:30 +08:00
This commit is contained in:
parent
6ce5316f1f
commit
d13035e6dc
@ -0,0 +1,8 @@
|
||||
package com.mysema.query.domain.hierarchy;
|
||||
|
||||
import com.mysema.query.annotations.QueryEntity;
|
||||
|
||||
@QueryEntity
|
||||
public class Entity4 extends Supertype2{
|
||||
|
||||
}
|
||||
@ -0,0 +1,15 @@
|
||||
package com.mysema.query.domain.hierarchy;
|
||||
|
||||
import static org.junit.Assert.assertTrue;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
public class EntityTest {
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
@Test
|
||||
public void test(){
|
||||
assertTrue(QEntity2.entity2 instanceof QSupertype);
|
||||
assertTrue(QEntity3.entity3 instanceof QSupertype);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,8 @@
|
||||
package com.mysema.query.domain.hierarchy;
|
||||
|
||||
import com.mysema.query.annotations.QuerySupertype;
|
||||
|
||||
@QuerySupertype
|
||||
public class Supertype2 extends Supertype{
|
||||
|
||||
}
|
||||
@ -224,33 +224,35 @@ public class EntitySerializer implements Serializer{
|
||||
introImports(builder, model);
|
||||
introJavadoc(builder, model);
|
||||
introClassHeader(builder, model);
|
||||
introDefaultInstance(builder, model);
|
||||
introSuper(builder, model);
|
||||
introDefaultInstance(builder, model);
|
||||
if (model.getSuperModel() != null){
|
||||
introSuper(builder, model);
|
||||
}
|
||||
writer.append(builder.toString());
|
||||
}
|
||||
|
||||
private void introSuper(StringBuilder builder, BeanModel model) {
|
||||
if (model.getSuperModel() != null){
|
||||
BeanModel superModel = model.getSuperModel();
|
||||
String superQueryType = superModel.getPrefix() + superModel.getSimpleName();
|
||||
if (!superModel.getPackageName().equals(model.getPackageName())){
|
||||
superQueryType = superModel.getPackageName() + "." + superQueryType;
|
||||
}
|
||||
|
||||
if (superModel.isEntityModel()){
|
||||
builder.append(" public final "+superQueryType+" _super = new " + superQueryType + "(this);\n\n");
|
||||
}else{
|
||||
builder.append(" public final "+superQueryType+"<"+model.getLocalName()+"> _super = this;\n\n");
|
||||
}
|
||||
}
|
||||
protected void introSuper(StringBuilder builder, BeanModel model) {
|
||||
BeanModel superModel = model.getSuperModel();
|
||||
String superQueryType = superModel.getPrefix() + superModel.getSimpleName();
|
||||
if (!superModel.getPackageName().equals(model.getPackageName())){
|
||||
superQueryType = superModel.getPackageName() + "." + superQueryType;
|
||||
}
|
||||
if (superModel.isEntityModel()){
|
||||
builder.append(" public final "+superQueryType+" _super = new " + superQueryType + "(this);\n\n");
|
||||
}else{
|
||||
builder.append(" public final "+superQueryType+"<"+model.getLocalName()+"> _super = this;\n\n");
|
||||
}
|
||||
}
|
||||
|
||||
protected void introClassHeader(StringBuilder builder, BeanModel model) {
|
||||
final String queryType = model.getPrefix() + model.getSimpleName();
|
||||
final String localName = model.getLocalName();
|
||||
builder.append("@SuppressWarnings(\"serial\")\n");
|
||||
if (model.getSuperModel() != null && !model.getSuperModel().isEntityModel()){
|
||||
BeanModel superModel = model.getSuperModel();
|
||||
BeanModel superModel = model.getSuperModel();
|
||||
while (superModel != null && superModel.isEntityModel()){
|
||||
superModel = superModel.getSuperModel();
|
||||
}
|
||||
if (superModel != null){
|
||||
String superQueryType = superModel.getPrefix() + superModel.getSimpleName();
|
||||
if (!superModel.getPackageName().equals(model.getPackageName())){
|
||||
superQueryType = superModel.getPackageName() + "." + superQueryType;
|
||||
|
||||
@ -18,8 +18,15 @@ import net.jcip.annotations.Immutable;
|
||||
public class SupertypeSerializer extends EntitySerializer{
|
||||
|
||||
@Override
|
||||
protected void introDefaultInstance(StringBuilder builder, BeanModel model) {
|
||||
// no default instance
|
||||
protected void constructors(BeanModel model, Writer writer) throws IOException {
|
||||
final String simpleName = model.getSimpleName();
|
||||
final String queryType = model.getPrefix() + simpleName;
|
||||
|
||||
StringBuilder builder = new StringBuilder();
|
||||
builder.append(" public "+queryType+"(Class<? extends T> type, @NotEmpty String entityName, PathMetadata<?> metadata) {\n");
|
||||
builder.append(" super(type, entityName, metadata);\n");
|
||||
builder.append(" }\n");
|
||||
writer.append(builder.toString());
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -27,12 +34,6 @@ public class SupertypeSerializer extends EntitySerializer{
|
||||
// no factory methods
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void introImports(StringBuilder builder, BeanModel model) {
|
||||
builder.append("import com.mysema.query.util.*;\n");
|
||||
builder.append("import com.mysema.query.types.path.*;\n\n");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void introClassHeader(StringBuilder builder, BeanModel model) {
|
||||
final String queryType = model.getPrefix() + model.getSimpleName();
|
||||
@ -44,22 +45,31 @@ public class SupertypeSerializer extends EntitySerializer{
|
||||
if (!superModel.getPackageName().equals(model.getPackageName())){
|
||||
superQueryType = superModel.getPackageName() + "." + superQueryType;
|
||||
}
|
||||
builder.append("public abstract class " + queryType + " extends "+superQueryType+"<" + localName + "> {\n\n");
|
||||
builder.append("public abstract class " + queryType + "<T extends "+localName+"> extends "+superQueryType+"<T> {\n\n");
|
||||
}else{
|
||||
builder.append("public abstract class " + queryType + "<T extends "+localName+"> extends PEntity<T> {\n\n");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void constructors(BeanModel model, Writer writer) throws IOException {
|
||||
final String simpleName = model.getSimpleName();
|
||||
final String queryType = model.getPrefix() + simpleName;
|
||||
|
||||
StringBuilder builder = new StringBuilder();
|
||||
builder.append(" public "+queryType+"(Class<? extends T> type, @NotEmpty String entityName, PathMetadata<?> metadata) {\n");
|
||||
builder.append(" super(type, entityName, metadata);\n");
|
||||
builder.append(" }\n");
|
||||
writer.append(builder.toString());
|
||||
protected void introDefaultInstance(StringBuilder builder, BeanModel model) {
|
||||
// no default instance
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void introImports(StringBuilder builder, BeanModel model) {
|
||||
builder.append("import com.mysema.query.util.*;\n");
|
||||
builder.append("import com.mysema.query.types.path.*;\n\n");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void introSuper(StringBuilder builder, BeanModel model) {
|
||||
BeanModel superModel = model.getSuperModel();
|
||||
String superQueryType = superModel.getPrefix() + superModel.getSimpleName();
|
||||
if (!superModel.getPackageName().equals(model.getPackageName())){
|
||||
superQueryType = superModel.getPackageName() + "." + superQueryType;
|
||||
}
|
||||
builder.append(" public final "+superQueryType+"<T> _super = this;\n\n");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user