mirror of
https://github.com/querydsl/querydsl.git
synced 2026-06-30 21:08:30 +08:00
added @Transient annotation
This commit is contained in:
parent
523027f007
commit
350e255408
@ -96,6 +96,7 @@ public final class APTTypeModel extends InspectingTypeModel implements TypeVisit
|
||||
}
|
||||
|
||||
}else if (arg0.asElement().getKind() == ElementKind.INTERFACE){
|
||||
fieldType = getFieldType(name);
|
||||
Iterator<? extends TypeMirror> i = arg0.getTypeArguments().iterator();
|
||||
if (name.equals(Serializable.class.getName())){
|
||||
setNames(Serializable.class);
|
||||
|
||||
@ -30,6 +30,7 @@ import javax.tools.Diagnostic.Kind;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
|
||||
import com.mysema.commons.lang.Assert;
|
||||
import com.mysema.query.annotations.Transient;
|
||||
import com.mysema.query.codegen.ClassModel;
|
||||
import com.mysema.query.codegen.ConstructorModel;
|
||||
import com.mysema.query.codegen.FieldModel;
|
||||
@ -53,6 +54,7 @@ public class Processor {
|
||||
TypeModel c = APTTypeModel.get(e.asType(), elementUtils);
|
||||
ClassModel classModel = new ClassModel(null, c.getPackageName(), c.getName(), c.getSimpleName());
|
||||
List<? extends Element> elements = e.getEnclosedElements();
|
||||
|
||||
// CONSTRUCTOR
|
||||
for (ExecutableElement constructor : ElementFilter.constructorsIn(elements)){
|
||||
if (isValidConstructor(constructor)){
|
||||
@ -79,6 +81,7 @@ public class Processor {
|
||||
TypeModel c = APTTypeModel.get(e.asType(), elementUtils);
|
||||
ClassModel classModel = new ClassModel(sc.getName(), c.getPackageName(), c.getName(), c.getSimpleName());
|
||||
List<? extends Element> elements = e.getEnclosedElements();
|
||||
|
||||
// GETTERS
|
||||
for (ExecutableElement method : ElementFilter.methodsIn(elements)){
|
||||
String name = method.getSimpleName().toString();
|
||||
@ -100,6 +103,7 @@ public class Processor {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// FIELDS
|
||||
for (VariableElement field : ElementFilter.fieldsIn(elements)){
|
||||
if (isValidField(field)){
|
||||
@ -157,12 +161,15 @@ public class Processor {
|
||||
|
||||
protected boolean isValidField(VariableElement field) {
|
||||
return useFields
|
||||
&& field.getAnnotation(Transient.class) == null
|
||||
&& !field.getModifiers().contains(Modifier.TRANSIENT)
|
||||
&& !field.getModifiers().contains(Modifier.STATIC);
|
||||
}
|
||||
|
||||
protected boolean isValidGetter(ExecutableElement getter){
|
||||
return useGetters && !getter.getModifiers().contains(Modifier.STATIC);
|
||||
return useGetters
|
||||
&& getter.getAnnotation(Transient.class) == null
|
||||
&& !getter.getModifiers().contains(Modifier.STATIC);
|
||||
}
|
||||
|
||||
public void process(RoundEnvironment roundEnv) {
|
||||
|
||||
@ -23,7 +23,7 @@ public class Cat extends Animal {
|
||||
}
|
||||
|
||||
public Cat(String name) {
|
||||
Cat kitten = new Cat();
|
||||
Cat kitten = new Cat();
|
||||
this.kittens = Arrays.asList(kitten);
|
||||
this.kittensByName = Collections.singletonMap("Kitty", kitten);
|
||||
this.name = name;
|
||||
|
||||
@ -3,7 +3,8 @@ package com.mysema.query.collections.domain;
|
||||
import com.mysema.query.annotations.Literal;
|
||||
|
||||
@Literal
|
||||
public class CustomComparableLiteral implements Comparable<CustomComparableLiteral> {
|
||||
public class CustomComparableLiteral implements
|
||||
Comparable<CustomComparableLiteral> {
|
||||
|
||||
@Override
|
||||
public int compareTo(CustomComparableLiteral o) {
|
||||
|
||||
@ -4,5 +4,5 @@ import com.mysema.query.annotations.Literal;
|
||||
|
||||
@Literal
|
||||
public class CustomLiteral {
|
||||
|
||||
|
||||
}
|
||||
@ -3,15 +3,14 @@ package com.mysema.query.collections.domain;
|
||||
import com.mysema.query.annotations.Entity;
|
||||
|
||||
public class Host {
|
||||
|
||||
public enum MyEnum{
|
||||
VAR1,
|
||||
VAR2
|
||||
|
||||
public enum MyEnum {
|
||||
VAR1, VAR2
|
||||
}
|
||||
|
||||
|
||||
@Entity
|
||||
public static class Reference{
|
||||
|
||||
public static class Reference {
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -13,16 +13,16 @@ import com.mysema.query.collections.domain2.RelationType2;
|
||||
@Entity
|
||||
@SuppressWarnings("unchecked")
|
||||
public class RelationType {
|
||||
|
||||
|
||||
Host.MyEnum enumProperty;
|
||||
List<Host.MyEnum> enumList;
|
||||
Map<String,Host.MyEnum> enumMap1;
|
||||
Map<Host.MyEnum,String> enumMap;
|
||||
|
||||
Map<String, Host.MyEnum> enumMap1;
|
||||
Map<Host.MyEnum, String> enumMap;
|
||||
|
||||
// list
|
||||
List<RelationType> list;
|
||||
List<? extends RelationType> list2;
|
||||
List<String> list3;
|
||||
List<String> list3;
|
||||
List<RelationType2> list4;
|
||||
List<Reference> list5;
|
||||
|
||||
@ -48,11 +48,11 @@ public class RelationType {
|
||||
Map<String, RelationType> map;
|
||||
Map<RelationType, RelationType> map2;
|
||||
Map<RelationType, String> map3;
|
||||
|
||||
|
||||
Map<String, RelationType2> map4;
|
||||
Map<RelationType2, RelationType2> map5;
|
||||
Map<RelationType2, String> map6;
|
||||
|
||||
|
||||
Map<String, Reference> map7;
|
||||
Map<Reference, Reference> map8;
|
||||
Map<Reference, String> map9;
|
||||
|
||||
@ -1,37 +1,84 @@
|
||||
package com.mysema.query.collections.domain;
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
import java.util.Locale;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
import com.mysema.query.annotations.Entity;
|
||||
import com.mysema.query.annotations.Transient;
|
||||
|
||||
@Entity
|
||||
public class SimpleTypes {
|
||||
|
||||
@Test
|
||||
public void test() throws SecurityException{
|
||||
try {
|
||||
QSimpleTypes.class.getField("skipMe");
|
||||
fail("Expected NoSuchFieldException");
|
||||
} catch (NoSuchFieldException e) {
|
||||
// expected
|
||||
}
|
||||
}
|
||||
|
||||
transient int test;
|
||||
|
||||
long id;
|
||||
|
||||
BigDecimal bigDecimal;
|
||||
|
||||
Byte bbyte;
|
||||
|
||||
byte bbyte2;
|
||||
|
||||
Character cchar;
|
||||
|
||||
char cchar2;
|
||||
|
||||
Double ddouble;
|
||||
|
||||
double ddouble2;
|
||||
|
||||
Float ffloat;
|
||||
|
||||
float ffloat2;
|
||||
|
||||
Integer iint;
|
||||
|
||||
int iint2;
|
||||
|
||||
Locale llocale;
|
||||
|
||||
Long llong;
|
||||
|
||||
long llong2;
|
||||
|
||||
String sstring;
|
||||
|
||||
Date date;
|
||||
|
||||
java.sql.Time time;
|
||||
|
||||
java.sql.Timestamp timestamp;
|
||||
|
||||
Serializable serializable;
|
||||
|
||||
Object object;
|
||||
|
||||
Class<?> clazz;
|
||||
|
||||
CustomLiteral literal;
|
||||
|
||||
CustomComparableLiteral literal2;
|
||||
|
||||
java.sql.Clob clob;
|
||||
|
||||
java.sql.Blob blob;
|
||||
|
||||
@Transient
|
||||
String skipMe;
|
||||
}
|
||||
@ -0,0 +1,27 @@
|
||||
/*
|
||||
* Copyright (c) 2009 Mysema Ltd.
|
||||
* All rights reserved.
|
||||
*
|
||||
*/
|
||||
package com.mysema.query.annotations;
|
||||
|
||||
import static java.lang.annotation.ElementType.*;
|
||||
import static java.lang.annotation.RetentionPolicy.RUNTIME;
|
||||
|
||||
import java.lang.annotation.Documented;
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.Target;
|
||||
|
||||
/**
|
||||
* Annotate fields and getters that should be skipped in APT based code generation
|
||||
* with this annotation
|
||||
*
|
||||
* @author tiwe
|
||||
*
|
||||
*/
|
||||
@Documented
|
||||
@Target({FIELD,METHOD})
|
||||
@Retention(RUNTIME)
|
||||
public @interface Transient {
|
||||
|
||||
}
|
||||
@ -5,6 +5,8 @@
|
||||
*/
|
||||
package com.mysema.query.codegen;
|
||||
|
||||
import java.sql.Blob;
|
||||
import java.sql.Clob;
|
||||
import java.util.Locale;
|
||||
|
||||
import com.mysema.query.util.TypeUtil;
|
||||
@ -24,6 +26,8 @@ public abstract class InspectingTypeModel extends SimpleTypeModel {
|
||||
return FieldType.BOOLEAN;
|
||||
|
||||
} else if (fullName.equals(Locale.class.getName())
|
||||
|| fullName.equals(Clob.class.getName())
|
||||
|| fullName.equals(Blob.class.getName())
|
||||
|| fullName.equals(Class.class.getName())
|
||||
|| fullName.equals(Object.class.getName())) {
|
||||
return FieldType.SIMPLE;
|
||||
@ -113,7 +117,11 @@ public abstract class InspectingTypeModel extends SimpleTypeModel {
|
||||
}
|
||||
|
||||
protected final void setNames(Class<?> cl){
|
||||
packageName = cl.getPackage().getName();
|
||||
if (cl.getPackage() != null){
|
||||
packageName = cl.getPackage().getName();
|
||||
}else{
|
||||
packageName = "java.lang";
|
||||
}
|
||||
name = cl.getName();
|
||||
simpleName = cl.getSimpleName();
|
||||
}
|
||||
|
||||
@ -43,48 +43,50 @@ public final class ReflectionTypeModel extends InspectingTypeModel implements Ty
|
||||
}
|
||||
|
||||
private ReflectionTypeModel(Class<?> cl, java.lang.reflect.Type genericType) {
|
||||
setNames(cl);
|
||||
fieldType = getFieldType(name);
|
||||
if (cl.isArray()) {
|
||||
TypeModel valueInfo = ReflectionTypeModel.get(cl.getComponentType());
|
||||
TypeModel valueInfo = get(cl.getComponentType());
|
||||
handleArray(valueInfo);
|
||||
|
||||
} else if (cl.isEnum()) {
|
||||
setNames(cl);
|
||||
} else if (cl.isEnum()) {
|
||||
fieldType = FieldType.SIMPLE;
|
||||
|
||||
} else if (cl.isPrimitive()) {
|
||||
handlePrimitiveWrapperType(ClassUtils.primitiveToWrapper(cl));
|
||||
|
||||
} else if (cl.isInterface()) {
|
||||
if (Serializable.class.isAssignableFrom(cl)){
|
||||
setNames(Serializable.class);
|
||||
fieldType = FieldType.SIMPLE;
|
||||
|
||||
}else if (java.util.Map.class.isAssignableFrom(cl)) {
|
||||
TypeModel keyInfo = ReflectionTypeModel.get(TypeUtil.getTypeParameter(genericType, 0));
|
||||
TypeModel valueInfo = ReflectionTypeModel.get(TypeUtil.getTypeParameter(genericType, 1));
|
||||
handleMapInterface(keyInfo, valueInfo);
|
||||
|
||||
} else if (java.util.List.class.isAssignableFrom(cl)) {
|
||||
TypeModel valueInfo = ReflectionTypeModel.get(TypeUtil.getTypeParameter(genericType, 0));
|
||||
handleList(valueInfo);
|
||||
|
||||
} else if (java.util.Collection.class.isAssignableFrom(cl)) {
|
||||
TypeModel valueInfo = ReflectionTypeModel.get(TypeUtil.getTypeParameter(genericType, 0));
|
||||
handleCollection(valueInfo);
|
||||
}
|
||||
handleInterface(cl, genericType);
|
||||
|
||||
} else {
|
||||
setNames(cl);
|
||||
if (cl.getAnnotation(Literal.class) != null) {
|
||||
if (Comparable.class.isAssignableFrom(cl)) {
|
||||
fieldType = FieldType.COMPARABLE;
|
||||
} else {
|
||||
fieldType = FieldType.SIMPLE;
|
||||
}
|
||||
} else {
|
||||
fieldType = getFieldType(name);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void handleInterface(Class<?> cl, java.lang.reflect.Type genericType) {
|
||||
if (Serializable.class.isAssignableFrom(cl)){
|
||||
setNames(Serializable.class);
|
||||
fieldType = FieldType.SIMPLE;
|
||||
|
||||
}else if (java.util.Map.class.isAssignableFrom(cl)) {
|
||||
TypeModel keyInfo = get(TypeUtil.getTypeParameter(genericType, 0));
|
||||
TypeModel valueInfo = get(TypeUtil.getTypeParameter(genericType, 1));
|
||||
handleMapInterface(keyInfo, valueInfo);
|
||||
|
||||
} else if (java.util.List.class.isAssignableFrom(cl)) {
|
||||
TypeModel valueInfo = get(TypeUtil.getTypeParameter(genericType, 0));
|
||||
handleList(valueInfo);
|
||||
|
||||
} else if (java.util.Collection.class.isAssignableFrom(cl)) {
|
||||
TypeModel valueInfo = get(TypeUtil.getTypeParameter(genericType, 0));
|
||||
handleCollection(valueInfo);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -15,9 +15,9 @@ import java.util.Set;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
// TODO: Auto-generated Javadoc
|
||||
|
||||
/**
|
||||
* TypeHelperTest provides.
|
||||
* ClassModelTest provides.
|
||||
*
|
||||
* @author tiwe
|
||||
* @version $Id$
|
||||
|
||||
@ -0,0 +1,52 @@
|
||||
/*
|
||||
* Copyright (c) 2009 Mysema Ltd.
|
||||
* All rights reserved.
|
||||
*
|
||||
*/
|
||||
package com.mysema.query.codegen;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.sql.Blob;
|
||||
import java.sql.Clob;
|
||||
import java.util.Arrays;
|
||||
import java.util.Locale;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
|
||||
public class ReflectionTypeModelTest {
|
||||
|
||||
@Test
|
||||
public void test(){
|
||||
TypeModel blob = get(Blob.class);
|
||||
assertEquals("Blob", blob.getLocalName());
|
||||
assertEquals("Blob", blob.getSimpleName());
|
||||
assertEquals("java.sql.Blob", blob.getName());
|
||||
assertEquals("java.sql", blob.getPackageName());
|
||||
|
||||
TypeModel bo = get(boolean.class);
|
||||
assertEquals("Boolean", bo.getLocalName());
|
||||
assertEquals("Boolean", bo.getSimpleName());
|
||||
assertEquals("java.lang.Boolean", bo.getName());
|
||||
assertEquals("java.lang", bo.getPackageName());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getFieldType(){
|
||||
for (Class<?> cl : Arrays.<Class<?>>asList(Blob.class, Clob.class, Locale.class, Class.class, Serializable.class)){
|
||||
assertEquals(FieldType.SIMPLE, get(cl).getFieldType());
|
||||
}
|
||||
|
||||
for (Class<?> cl : Arrays.<Class<?>>asList(Number.class, Integer.class)){
|
||||
assertEquals(FieldType.NUMERIC, get(cl).getFieldType());
|
||||
}
|
||||
|
||||
assertEquals(FieldType.BOOLEAN, get(boolean.class).getFieldType());
|
||||
}
|
||||
|
||||
private TypeModel get(Class<?> cl){
|
||||
return ReflectionTypeModel.get(cl);
|
||||
}
|
||||
}
|
||||
@ -15,9 +15,8 @@ import javax.annotation.Nullable;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
// TODO: Auto-generated Javadoc
|
||||
/**
|
||||
* HibernateProcessorTest provides.
|
||||
* SerializerTest provides.
|
||||
*
|
||||
* @author tiwe
|
||||
* @version $Id$
|
||||
|
||||
@ -11,7 +11,6 @@ import org.junit.Test;
|
||||
import com.mysema.query.alias.Alias;
|
||||
import com.mysema.query.types.expr.EComparable;
|
||||
|
||||
// TODO: Auto-generated Javadoc
|
||||
/**
|
||||
* JodaTimeTest provides.
|
||||
*
|
||||
|
||||
@ -17,7 +17,6 @@ import org.junit.Test;
|
||||
import com.mysema.query.types.operation.Ops;
|
||||
|
||||
|
||||
// TODO: Auto-generated Javadoc
|
||||
/**
|
||||
* OpsTest provides.
|
||||
*
|
||||
|
||||
@ -12,7 +12,6 @@ import org.junit.Test;
|
||||
import com.mysema.query.types.expr.Expr;
|
||||
import com.mysema.query.types.path.Path;
|
||||
|
||||
|
||||
// TODO: Auto-generated Javadoc
|
||||
/**
|
||||
* TypesTest provides.
|
||||
@ -21,37 +20,24 @@ import com.mysema.query.types.path.Path;
|
||||
* @version $Id$
|
||||
*/
|
||||
public class TypesTest {
|
||||
|
||||
// @Test
|
||||
// public void testAlias(){
|
||||
// for (Class<?> cl : Alias.class.getClasses()){
|
||||
// assertTrue(cl.getName(),Alias.class.isAssignableFrom(cl));
|
||||
// if (!cl.isInterface()){
|
||||
// assertTrue(cl.getName(),Expr.class.isAssignableFrom(cl));
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
|
||||
/**
|
||||
* Test expr.
|
||||
*/
|
||||
@Test
|
||||
public void testExpr(){
|
||||
for (Class<?> cl : Expr.class.getClasses()){
|
||||
assertTrue(cl.getName(),Expr.class.isAssignableFrom(cl));
|
||||
|
||||
@Test
|
||||
public void testExpr() {
|
||||
for (Class<?> cl : Expr.class.getClasses()) {
|
||||
assertTrue(cl.getName(), Expr.class.isAssignableFrom(cl));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Test path.
|
||||
*/
|
||||
@Test
|
||||
public void testPath(){
|
||||
for (Class<?> cl : Path.class.getClasses()){
|
||||
assertTrue(cl.getName(),Path.class.isAssignableFrom(cl));
|
||||
if (!cl.isInterface()){
|
||||
assertTrue(cl.getName(),Expr.class.isAssignableFrom(cl));
|
||||
}
|
||||
public void testPath() {
|
||||
for (Class<?> cl : Path.class.getClasses()) {
|
||||
assertTrue(cl.getName(), Path.class.isAssignableFrom(cl));
|
||||
if (!cl.isInterface()) {
|
||||
assertTrue(cl.getName(), Expr.class.isAssignableFrom(cl));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user