update lastaflute

This commit is contained in:
Shinsuke Sugaya 2017-03-24 22:57:48 +09:00
parent a31b495a40
commit 7b83242fb3
2 changed files with 7 additions and 55 deletions

View file

@ -40,7 +40,7 @@
<!-- Main Framework -->
<dbflute.version>1.1.2</dbflute.version>
<lastaflute.version>0.9.2-RC2</lastaflute.version>
<lastaflute.version>0.9.2-RC3</lastaflute.version>
<lasta.taglib.version>0.7.1</lasta.taglib.version>
<lasta.job.version>0.4.0</lasta.job.version>
<mailflute.version>0.5.2</mailflute.version>

View file

@ -15,71 +15,23 @@
*/
package org.codelibs.fess.mylasta.direction.sponsor;
import java.util.Collections;
import java.util.List;
import org.dbflute.optional.OptionalThing;
import org.lastaflute.core.json.JsonMappingOption;
import org.lastaflute.core.json.JsonMappingOption.JsonFieldNaming;
import org.lastaflute.core.json.JsonResourceProvider;
import org.lastaflute.core.json.bind.JsonYourCollectionResource;
import org.lastaflute.core.json.engine.GsonJsonEngine;
import org.lastaflute.core.json.engine.RealJsonEngine;
import com.google.gson.FieldNamingPolicy;
import com.google.gson.GsonBuilder;
import com.google.gson.internal.bind.LaYourCollectionTypeAdapterFactory;
public class FessJsonResourceProvider implements JsonResourceProvider {
@Override
public boolean isNullsSuppressed() {
return true;
}
@Override
public boolean isPrettyPrintSuppressed() {
return false;
}
public JsonMappingOption provideOption() {
return null;
}
public List<JsonYourCollectionResource> provideYourCollections() {
return Collections.emptyList();
}
public RealJsonEngine swtichJsonEngine() {
final boolean serializeNulls = !isNullsSuppressed();
final boolean prettyPrinting = !isPrettyPrintSuppressed();
final OptionalThing<JsonMappingOption> mappingOption =
provideOption() != null ? OptionalThing.of(provideOption()) : OptionalThing.empty();
return new GsonJsonEngine(builder -> {
setupSerializeNullsSettings(builder, serializeNulls);
setupPrettyPrintingSettings(builder, prettyPrinting);
setupYourCollectionSettings(builder);
builder.setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES);
}, op -> {
mappingOption.ifPresent(another -> op.acceptAnother(another));
});
}
protected void setupSerializeNullsSettings(GsonBuilder builder, boolean serializeNulls) {
if (serializeNulls) {
builder.serializeNulls();
}
}
protected void setupPrettyPrintingSettings(GsonBuilder builder, boolean prettyPrinting) {
if (prettyPrinting) {
builder.setPrettyPrinting();
}
}
protected void setupYourCollectionSettings(GsonBuilder builder) {
for (JsonYourCollectionResource resource : provideYourCollections()) {
builder.registerTypeAdapterFactory(createYourCollectionTypeAdapterFactory(resource));
}
}
protected LaYourCollectionTypeAdapterFactory createYourCollectionTypeAdapterFactory(JsonYourCollectionResource resource) {
return new LaYourCollectionTypeAdapterFactory(resource.getYourType(), resource.getYourCollectionCreator());
@Override
public JsonMappingOption provideMappingOption() {
return new JsonMappingOption().asFieldNaming(JsonFieldNaming.CAMEL_TO_LOWER_SNAKE);
}
}