Skip to content

Commit 170fff8

Browse files
committed
Fixes #3343: make BeanPropertyWriter.get() non-final
1 parent dcd5ec0 commit 170fff8

File tree

2 files changed

+16
-6
lines changed

2 files changed

+16
-6
lines changed

release-notes/VERSION-2.x

+2
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ Project: jackson-databind
1818
server and client side
1919
(requested by @qianlong)
2020
(contributed by Geoffrey G)
21+
#3343: Allow BeanPropertyWriter Sub-classes to Override `get()` (remove `final`)
22+
(requested by @alzimmermsft)
2123
#4388: Allow using `@JsonPropertyOrder` with "any" (`@JsonAnyGetter`) properties
2224
(fix by Joo-Hyuk K)
2325
#4650: `PrimitiveArrayDeserializers` should deal with single String value if

src/main/java/com/fasterxml/jackson/databind/ser/BeanPropertyWriter.java

+14-6
Original file line numberDiff line numberDiff line change
@@ -759,7 +759,8 @@ public void serializeAsOmittedField(Object bean, JsonGenerator gen,
759759
*/
760760
@Override
761761
public void serializeAsElement(Object bean, JsonGenerator gen,
762-
SerializerProvider prov) throws Exception {
762+
SerializerProvider prov) throws Exception
763+
{
763764
// inlined 'get()'
764765
final Object value = (_accessorMethod == null) ? _field.get(bean)
765766
: _accessorMethod.invoke(bean, (Object[]) null);
@@ -818,7 +819,8 @@ public void serializeAsElement(Object bean, JsonGenerator gen,
818819
*/
819820
@Override
820821
public void serializeAsPlaceholder(Object bean, JsonGenerator gen,
821-
SerializerProvider prov) throws Exception {
822+
SerializerProvider prov) throws Exception
823+
{
822824
if (_nullSerializer != null) {
823825
_nullSerializer.serialize(null, gen, prov);
824826
} else {
@@ -835,7 +837,8 @@ public void serializeAsPlaceholder(Object bean, JsonGenerator gen,
835837
// Also part of BeanProperty implementation
836838
@Override
837839
public void depositSchemaProperty(JsonObjectFormatVisitor v,
838-
SerializerProvider provider) throws JsonMappingException {
840+
SerializerProvider provider) throws JsonMappingException
841+
{
839842
if (v != null) {
840843
if (isRequired()) {
841844
v.property(this);
@@ -861,7 +864,8 @@ public void depositSchemaProperty(JsonObjectFormatVisitor v,
861864
@Override
862865
@Deprecated
863866
public void depositSchemaProperty(ObjectNode propertiesNode,
864-
SerializerProvider provider) throws JsonMappingException {
867+
SerializerProvider provider) throws JsonMappingException
868+
{
865869
JavaType propType = getSerializationType();
866870
// 03-Dec-2010, tatu: SchemaAware REALLY should use JavaType, but alas
867871
// it doesn't...
@@ -891,7 +895,8 @@ public void depositSchemaProperty(ObjectNode propertiesNode,
891895

892896
protected JsonSerializer<Object> _findAndAddDynamic(
893897
PropertySerializerMap map, Class<?> type,
894-
SerializerProvider provider) throws JsonMappingException {
898+
SerializerProvider provider) throws JsonMappingException
899+
{
895900
PropertySerializerMap.SerializerAndMapResult result;
896901
if (_nonTrivialBaseType != null) {
897902
JavaType t = provider.constructSpecializedType(_nonTrivialBaseType,
@@ -914,8 +919,11 @@ protected JsonSerializer<Object> _findAndAddDynamic(
914919
* Note: method is final as it should not need to be overridden -- rather,
915920
* calling method(s) ({@link #serializeAsField}) should be overridden to
916921
* change the behavior
922+
*<p>
923+
* NOTE: was {@code final} until Jackson 2.19
917924
*/
918-
public final Object get(Object bean) throws Exception {
925+
public Object get(Object bean) throws Exception
926+
{
919927
return (_accessorMethod == null) ? _field.get(bean) : _accessorMethod
920928
.invoke(bean, (Object[]) null);
921929
}

0 commit comments

Comments
 (0)