Jackson serializer and deserializer for Java MimeType class

deploy_packages_to_gitea
Jens Pelzetter 2022-11-30 20:20:44 +01:00
parent 7b178f030c
commit 8728b2f853
3 changed files with 73 additions and 0 deletions

View File

@ -18,6 +18,8 @@
*/
package org.librecms.assets;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import org.librecms.contentsection.Asset;
import java.io.Serializable;
@ -38,6 +40,8 @@ import org.hibernate.envers.NotAudited;
import org.libreccm.core.UnexpectedErrorException;
import org.libreccm.jpa.utils.MimeTypeConverter;
import org.libreccm.l10n.LocalizedString;
import org.libreccm.ui.admin.imexport.MimeTypeJsonDeserializer;
import org.libreccm.ui.admin.imexport.MimeTypeJsonSerializer;
import org.librecms.contentsection.privileges.AssetPrivileges;
import java.io.InputStream;
@ -149,6 +153,8 @@ public class BinaryAsset extends Asset implements Serializable {
@Column(name = "MIME_TYPE", length = 512, nullable = false)
@Convert(converter = MimeTypeConverter.class)
@JsonSerialize(using = MimeTypeJsonSerializer.class)
@JsonDeserialize(using = MimeTypeJsonDeserializer.class)
private MimeType mimeType;
@Column(name = "ASSET_DATA")

View File

@ -0,0 +1,39 @@
package org.libreccm.ui.admin.imexport;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonDeserializer;
import com.fasterxml.jackson.databind.JsonNode;
import java.io.IOException;
import javax.activation.MimeType;
import javax.activation.MimeTypeParseException;
/**
*
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
*/
public class MimeTypeJsonDeserializer extends JsonDeserializer<MimeType> {
@Override
public MimeType deserialize(
final JsonParser parser,
final DeserializationContext ctxt
) throws IOException, JsonProcessingException {
final JsonNode node = parser.getCodec().readTree(parser);
final String value = node.get("mimeType").asText();
try {
return new MimeType(value);
} catch (MimeTypeParseException ex) {
throw new IllegalArgumentException(
String.format(
"Value \"%s\" not parseable as MimeType.",
value
)
);
}
}
}

View File

@ -0,0 +1,28 @@
package org.libreccm.ui.admin.imexport;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;
import java.io.IOException;
import javax.activation.MimeType;
/**
*
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
*/
public class MimeTypeJsonSerializer extends JsonSerializer<MimeType> {
@Override
public void serialize(
final MimeType value,
final JsonGenerator generator,
final SerializerProvider serializers
) throws IOException {
generator.writeStartObject();
generator.writeStringField("mimeType", value.toString());
generator.writeEndObject();
}
}