Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix AfterFilter NullPointer exception in #3443 #3475

Merged
merged 2 commits into from
Oct 3, 2020
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
add test file
  • Loading branch information
echohlne committed Sep 29, 2020
commit 20e16bea10b0e6cc34db73e1ec025b26e422c821
58 changes: 58 additions & 0 deletions src/test/java/com/alibaba/json/bvt/issue_3300/Issue3443.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
package com.alibaba.json.bvt.issue_3300;

import com.alibaba.fastjson.serializer.*;
import junit.framework.TestCase;

public class Issue3443 extends TestCase {
public void testCustomJsonSerializerAndAfterFilter() throws Exception {
SerializeWriter serializeWriter = new SerializeWriter();
try {
JSONSerializer jsonSerializer = new JSONSerializer(serializeWriter, new SerializeConfig());

Parameter parameter = new Parameter();
parameter.setParameterDesc(new ParameterDesc("vipExpireDate", "VIP expire date."));

jsonSerializer.config(SerializerFeature.DisableCircularReferenceDetect, true);
jsonSerializer.getAfterFilters().add(new CustomFilter());
jsonSerializer.write(parameter);
assertEquals("{\"parameterDesc\":{\"ParameterDesc\":\"VIP expire date.\"}}", serializeWriter.toString());
} finally {
serializeWriter.close();
}
}

static class Parameter {
private ParameterDesc parameterDesc;

public ParameterDesc getParameterDesc() {
return parameterDesc;
}

public void setParameterDesc(ParameterDesc parameterType) {
this.parameterDesc = parameterType;
}
}

static class ParameterDesc {
private String parameterName;
private String parameterUsage;
// do some work...

public ParameterDesc(String parameterName, String parameterUsage) {
this.parameterName = parameterName;
this.parameterUsage = parameterUsage;
}


}

static class CustomFilter extends AfterFilter {

@Override
public void writeAfter(Object object) {
if (object instanceof ParameterDesc) {
writeKeyValue("ParameterDesc", "VIP expire date.");
}
}
}
}