Skip to content

Commit 57c9d9f

Browse files
Using BeanPropertyWriter.getAnnotation() (refs #202)
(instead of reading annotations directly from `Member`)
1 parent 1291a9c commit 57c9d9f

File tree

3 files changed

+20
-7
lines changed

3 files changed

+20
-7
lines changed

typescript-generator-core/src/main/java/cz/habarta/typescript/generator/parser/Jackson1Parser.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33

44
import cz.habarta.typescript.generator.*;
55
import java.lang.annotation.Annotation;
6-
import java.lang.reflect.AnnotatedElement;
76
import java.lang.reflect.Member;
87
import java.lang.reflect.Type;
98
import java.util.*;
@@ -48,7 +47,7 @@ private BeanModel parseBean(SourceType<Class<?>> sourceClass) {
4847

4948
final BeanHelper beanHelper = getBeanHelper(sourceClass.type);
5049
if (beanHelper != null) {
51-
for (BeanPropertyWriter beanPropertyWriter : beanHelper.getProperties()) {
50+
for (final BeanPropertyWriter beanPropertyWriter : beanHelper.getProperties()) {
5251
final Member propertyMember = beanPropertyWriter.getMember().getMember();
5352
checkMember(propertyMember, beanPropertyWriter.getName(), sourceClass.type);
5453
Type propertyType = beanPropertyWriter.getGenericPropertyType();
@@ -68,7 +67,12 @@ private BeanModel parseBean(SourceType<Class<?>> sourceClass) {
6867
continue;
6968
}
7069
}
71-
final boolean optional = isAnnotatedPropertyOptional((AnnotatedElement) propertyMember);
70+
final boolean optional = isAnnotatedPropertyOptional(new AnnotatedProperty() {
71+
@Override
72+
public <T extends Annotation> T getAnnotation(Class<T> annotationClass) {
73+
return beanPropertyWriter.getAnnotation(annotationClass);
74+
}
75+
});
7276
final Member originalMember = beanPropertyWriter.getMember().getMember();
7377
properties.add(processTypeAndCreateProperty(beanPropertyWriter.getName(), propertyType, optional, sourceClass.type, originalMember, null));
7478
}

typescript-generator-core/src/main/java/cz/habarta/typescript/generator/parser/Jackson2Parser.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
import java.beans.PropertyDescriptor;
2121
import java.lang.annotation.Annotation;
2222
import java.lang.reflect.AccessibleObject;
23-
import java.lang.reflect.AnnotatedElement;
2423
import java.lang.reflect.Field;
2524
import java.lang.reflect.Member;
2625
import java.lang.reflect.Method;
@@ -69,7 +68,7 @@ private BeanModel parseBean(SourceType<Class<?>> sourceClass) {
6968

7069
final BeanHelper beanHelper = getBeanHelper(sourceClass.type);
7170
if (beanHelper != null) {
72-
for (BeanPropertyWriter beanPropertyWriter : beanHelper.getProperties()) {
71+
for (final BeanPropertyWriter beanPropertyWriter : beanHelper.getProperties()) {
7372
final Member propertyMember = beanPropertyWriter.getMember().getMember();
7473
checkMember(propertyMember, beanPropertyWriter.getName(), sourceClass.type);
7574
Type propertyType = getGenericType(propertyMember);
@@ -91,7 +90,12 @@ private BeanModel parseBean(SourceType<Class<?>> sourceClass) {
9190
}
9291
final boolean optional = settings.optionalProperties == OptionalProperties.useLibraryDefinition
9392
? !beanPropertyWriter.isRequired()
94-
: isAnnotatedPropertyOptional((AnnotatedElement) propertyMember);
93+
: isAnnotatedPropertyOptional(new AnnotatedProperty() {
94+
@Override
95+
public <T extends Annotation> T getAnnotation(Class<T> annotationClass) {
96+
return beanPropertyWriter.getAnnotation(annotationClass);
97+
}
98+
});
9599
// @JsonUnwrapped
96100
PropertyModel.PullProperties pullProperties = null;
97101
final Member originalMember = beanPropertyWriter.getMember().getMember();

typescript-generator-core/src/main/java/cz/habarta/typescript/generator/parser/ModelParser.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,12 @@ protected static void checkMember(Member propertyMember, String propertyName, Cl
9393
}
9494
}
9595

96-
protected boolean isAnnotatedPropertyOptional(AnnotatedElement annotatedProperty) {
96+
// replace with lambda on Java8
97+
protected static interface AnnotatedProperty {
98+
public <T extends Annotation> T getAnnotation(Class<T> annotationClass);
99+
}
100+
101+
protected boolean isAnnotatedPropertyOptional(AnnotatedProperty annotatedProperty) {
97102
if (settings.optionalProperties == OptionalProperties.all) {
98103
return true;
99104
}

0 commit comments

Comments
 (0)