Jackson serializer and deserializer for Java MimeType class
parent
7b178f030c
commit
8728b2f853
|
|
@ -18,6 +18,8 @@
|
||||||
*/
|
*/
|
||||||
package org.librecms.assets;
|
package org.librecms.assets;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
|
||||||
|
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||||
import org.librecms.contentsection.Asset;
|
import org.librecms.contentsection.Asset;
|
||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
|
|
@ -38,6 +40,8 @@ import org.hibernate.envers.NotAudited;
|
||||||
import org.libreccm.core.UnexpectedErrorException;
|
import org.libreccm.core.UnexpectedErrorException;
|
||||||
import org.libreccm.jpa.utils.MimeTypeConverter;
|
import org.libreccm.jpa.utils.MimeTypeConverter;
|
||||||
import org.libreccm.l10n.LocalizedString;
|
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 org.librecms.contentsection.privileges.AssetPrivileges;
|
||||||
|
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
|
|
@ -149,6 +153,8 @@ public class BinaryAsset extends Asset implements Serializable {
|
||||||
|
|
||||||
@Column(name = "MIME_TYPE", length = 512, nullable = false)
|
@Column(name = "MIME_TYPE", length = 512, nullable = false)
|
||||||
@Convert(converter = MimeTypeConverter.class)
|
@Convert(converter = MimeTypeConverter.class)
|
||||||
|
@JsonSerialize(using = MimeTypeJsonSerializer.class)
|
||||||
|
@JsonDeserialize(using = MimeTypeJsonDeserializer.class)
|
||||||
private MimeType mimeType;
|
private MimeType mimeType;
|
||||||
|
|
||||||
@Column(name = "ASSET_DATA")
|
@Column(name = "ASSET_DATA")
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -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();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue