/*- * Copyright 2016 Diamond Light Source Ltd. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html */ package org.eclipse.dawnsci.analysis.api.persistence; /** * A marshaller is an extension to the MarshallerService. * The marshaller service knows about common dawnsci types * but optionally may be extended. * * Object class may be null, if it is not serializer class and deserializer class must also be provided. * * getMixinAnnotationType() and getMixinAnnotationClass() default to null, they must both return non-null if they * are to be provided. * * @author Matthew Gerring */ public interface IMarshaller { /** * The class which we will serialize and deserialise using the serializer class and the deserializer class. * * @return class to deal with */ Class<?> getObjectClass(); /** * Class of the serializer which should have a no argument constructor * @return the class */ Class<?> getSerializerClass(); /** * Class of the deserializer which should have a no argument constructor * * @return the class */ Class<?> getDeserializerClass(); /** * The type, if any, of the mixin annotation * This is the left hand side of SimpleModule.setMixInAnnotation(class, class); * * @return class */ default Class<?> getMixinAnnotationType() { return null; } /** * The type, if any, of the mixin annotation * This is the right hand side of SimpleModule.setMixInAnnotation(class, class); * * @return class */ default Class<?> getMixinAnnotationClass() { return null; } }