001 package com.khubla.pragmatach.plugin.mongodb.serializer;
002
003 import java.lang.reflect.Field;
004 import java.util.Set;
005
006 import javax.persistence.Entity;
007
008 import com.khubla.pragmatach.framework.api.PragmatachException;
009 import com.khubla.pragmatach.plugin.mongodb.util.AtomicTypeUtil;
010
011 /**
012 * @author tom
013 */
014 public class FieldSerializerFactory {
015 public static FieldSerializer getFieldSerializer(Class<?> clazz, Field field) throws PragmatachException {
016 if (AtomicTypeUtil.isSimpleType(field.getType())) {
017 return new AtomicFieldSerializer(clazz);
018 } else if (field.getType() == Set.class) {
019 return new SetFieldSerializer(clazz);
020 } else if (null != field.getType().getAnnotation(Entity.class)) {
021 return new EntityFieldSerializer(clazz);
022 } else if (field.getType().isEnum()) {
023 return new EnumFieldSerializer(clazz);
024 } else {
025 throw new PragmatachException("Invalid serialization type '" + field.getType().getName() + "' for field '" + field.getName() + "'");
026 }
027 }
028 }