package pl.piotrsukiennik.whowhen.shared.serializer.impl; import org.codehaus.jackson.annotate.JsonAutoDetect; import org.codehaus.jackson.map.ObjectMapper; import java.io.File; /** * @author Piotr Sukiennik */ public class JSONDataSerializer extends AbstractSerializer { public String getExtension() { return "json"; } @Override protected void doSerialize( Object o, File output ) { ObjectMapper mapper = new ObjectMapper(); mapper.setVisibilityChecker( mapper.getVisibilityChecker().withFieldVisibility( JsonAutoDetect.Visibility.ANY ) ); try { if ( output.createNewFile() ) { mapper.writeValue( output, o ); } } catch ( Exception e ) { e.printStackTrace(); throw new RuntimeException( e ); } } @Override protected <T> T doDeserialize( File targetFile, Class<T> targetClass ) { ObjectMapper mapper = new ObjectMapper(); mapper.setVisibilityChecker( mapper.getVisibilityChecker().withFieldVisibility( JsonAutoDetect.Visibility.ANY ) ); try { return mapper.readValue( targetFile, targetClass ); } catch ( Exception e ) { e.printStackTrace(); return null; } } public boolean supportsSerialization( Class clazz ) { return Object.class.isAssignableFrom( clazz ); } /* public static void serializeToJSON(Serializable object, File targetFile){ ObjectMapper mapper = new ObjectMapper(); mapper.setVisibilityChecker(mapper.getVisibilityChecker().withFieldVisibility(JsonAutoDetect.Visibility.ANY)); try{ targetFile.delete(); if (targetFile.createNewFile()){ mapper.writeValue(targetFile, object); } } catch (Exception e){ e.printStackTrace(); throw new RuntimeException(e); } }*/ }