2424import java .beans .PropertyDescriptor ;
2525import java .beans .Transient ;
2626import java .lang .reflect .Method ;
27+ import java .util .ArrayList ;
28+ import java .util .List ;
29+ import java .util .regex .Pattern ;
30+
2731import java2typescript .jackson .module .grammar .AnyType ;
2832import java2typescript .jackson .module .grammar .FunctionType ;
2933import java2typescript .jackson .module .grammar .ClassType ;
3539import com .fasterxml .jackson .databind .JavaType ;
3640import com .fasterxml .jackson .databind .JsonMappingException ;
3741import com .fasterxml .jackson .databind .JsonSerializer ;
38- import com .fasterxml .jackson .databind .introspect .AnnotatedClass ;
3942import com .fasterxml .jackson .databind .introspect .AnnotatedMember ;
4043import com .fasterxml .jackson .databind .introspect .AnnotatedMethod ;
4144import com .fasterxml .jackson .databind .introspect .AnnotatedParameter ;
5154public class TSJsonObjectFormatVisitor extends ABaseTSJsonFormatVisitor <ClassType > implements JsonObjectFormatVisitor {
5255
5356 private Class clazz ;
57+ private List <String > blackListField = new ArrayList <String >();
5458
5559 public TSJsonObjectFormatVisitor (ABaseTSJsonFormatVisitor <?> parentHolder , String className , Class clazz , Configuration conf ) {
5660 super (parentHolder , conf );
@@ -59,7 +63,9 @@ public TSJsonObjectFormatVisitor(ABaseTSJsonFormatVisitor<?> parentHolder, Strin
5963 }
6064
6165 private void addField (String name , AbstractType fieldType ) {
62- type .getFields ().put (name , fieldType );
66+ if (!blackListField .contains (name )) {
67+ type .getFields ().put (name , fieldType );
68+ }
6369 }
6470
6571 private boolean isAccessorMethod (Method method , BeanInfo beanInfo ) {
@@ -74,6 +80,24 @@ private boolean isAccessorMethod(Method method, BeanInfo beanInfo) {
7480 return false ;
7581 }
7682
83+ private void blackListUnnecessaryFieldMethods (Method method ) {
84+ Pattern getSearcher = Pattern .compile ("^get.*" );
85+ Pattern setSearcher = Pattern .compile ("^set.*" );
86+
87+ String methodName = method .getName ();
88+ String ignoredField ;
89+
90+ if (getSearcher .matcher (method .getName ()).matches ()) {
91+ ignoredField = methodName .replaceFirst ("^get" ,"" );
92+ ignoredField = Introspector .decapitalize (ignoredField );
93+ blackListField .add (ignoredField );
94+ } else if (setSearcher .matcher (method .getName ()).matches ()) {
95+ ignoredField = methodName .replaceFirst ("^set" ,"" );
96+ ignoredField = Introspector .decapitalize (ignoredField );
97+ blackListField .add (ignoredField );
98+ }
99+ }
100+
77101 void addPublicMethods () {
78102
79103 for (Method method : this .clazz .getDeclaredMethods ()) {
@@ -83,6 +107,13 @@ void addPublicMethods() {
83107 continue ;
84108 }
85109
110+ //Don't exclude accessors with HTTP Annotations
111+ if (conf .getJaxrsRun () && conf .methodHasHTTPAnnotation (method )) {
112+ addMethod (method );
113+ blackListUnnecessaryFieldMethods (method );
114+ continue ;
115+ }
116+
86117 // Exclude accessors
87118 try {
88119 BeanInfo beanInfo = Introspector .getBeanInfo (clazz );
0 commit comments