Blame |
Last modification |
View Log
| RSS feed
package com.owlike.genson.reflect;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
public class RenamingPropertyNameResolver
implements PropertyNameResolver
{
private final 1.5.0/docs/api/java/lang/String.html">String field
;
private final Class
<?> fromClass
;
private final Class
<?> ofType
;
private final 1.5.0/docs/api/java/lang/String.html">String toName
;
public RenamingPropertyNameResolver
(1.5.0/docs/api/java/lang/String.html">String field, Class
<?> fromClass, Class
<?> ofType,
1.5.0/docs/api/java/lang/String.html">String toName
) {
this.
field = field
;
this.
fromClass = fromClass
;
this.
ofType = ofType
;
this.
toName = toName
;
}
@
1.5.0/docs/api/java/lang/Override.html">Override
public 1.5.0/docs/api/java/lang/String.html">String resolve
(int parameterIdx, Constructor
<?> fromConstructor
) {
return null;
}
@
1.5.0/docs/api/java/lang/Override.html">Override
public 1.5.0/docs/api/java/lang/String.html">String resolve
(int parameterIdx,
1.5.0/docs/api/java/lang/reflect/Method.html">Method fromMethod
) {
return null;
}
@
1.5.0/docs/api/java/lang/Override.html">Override
public 1.5.0/docs/api/java/lang/String.html">String resolve
(1.5.0/docs/api/java/lang/reflect/Field.html">Field fromField
) {
return tryToRename
(fromField.
getName(), fromField.
getDeclaringClass(),
fromField.
getType());
}
@
1.5.0/docs/api/java/lang/Override.html">Override
public 1.5.0/docs/api/java/lang/String.html">String resolve
(1.5.0/docs/api/java/lang/reflect/Method.html">Method fromMethod
) {
1.5.0/docs/api/java/lang/String.html">String name = fromMethod.
getName();
if (name.
startsWith("is") && name.
length() > 2
) {
return tryToRename
(name.
substring(2
), fromMethod.
getDeclaringClass(),
fromMethod.
getReturnType());
}
if (name.
length() > 3
) {
if (name.
startsWith("get"))
return tryToRename
(name.
substring(3
), fromMethod.
getDeclaringClass(),
fromMethod.
getReturnType());
if (name.
startsWith("set") && fromMethod.
getParameterTypes().
length == 1
)
return tryToRename
(name.
substring(3
), fromMethod.
getDeclaringClass(),
fromMethod.
getParameterTypes()[0
]);
}
return null;
}
private 1.5.0/docs/api/java/lang/String.html">String tryToRename
(1.5.0/docs/api/java/lang/String.html">String actualName, Class
<?> declaringClass,
Class
<?> propertyType
) {
if ((field ==
null || actualName.
equalsIgnoreCase(field
))
&& (fromClass ==
null || fromClass.
isAssignableFrom(declaringClass
))
&& (ofType ==
null || ofType.
isAssignableFrom(propertyType
)))
return toName
;
return null;
}
}