ObjectMapper getObjectMapper() { ObjectMapper objectMapper = ObjectMapperBuilder.buildNewObjectMapper(); // objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); SimpleModule module = new SimpleModule(); module.addSerializer(BigDecimal.class, new ToStringSerializer()); module.addSerializer(Long.class, new ToStringSerializer()); objectMapper.registerModule(module); //Disable JsonIdentityInfo JacksonAnnotationIntrospector ignoreJsonTypeInfoIntrospector = new JacksonAnnotationIntrospector() { @Override public ObjectIdInfo findObjectIdInfo(Annotated ann) { return null; } }; objectMapper.setAnnotationIntrospector(ignoreJsonTypeInfoIntrospector); return objectMapper; }
@Override public ObjectIdGenerator<?> objectIdGeneratorInstance(Annotated annotated, ObjectIdInfo objectIdInfo) throws JsonMappingException { Class<?> implClass = objectIdInfo.getGeneratorType(); HandlerInstantiator hi = _config.getHandlerInstantiator(); ObjectIdGenerator<?> gen; if (hi != null) { gen = hi.objectIdGeneratorInstance(_config, annotated, implClass); } else { gen = (ObjectIdGenerator<?>) ClassUtil.createInstance(implClass, _config.canOverrideAccessModifiers()); } return gen.forScope(objectIdInfo.getScope()); }
@Override public ObjectIdInfo findObjectIdInfo(Annotated annotated) { Class<?> rawClass = annotated.getType().getRawClass(); for (Type<?> type : model.getTypes()) { if (type.getClassType() == rawClass && type.getSingleKeyAttribute() != null) { Attribute<?, ?> attribute = type.getSingleKeyAttribute(); String name = removePrefix(attribute.getPropertyName()); if (useTableNames) { name = attribute.getName(); } // if the name is overridden use that Class<?> superClass = rawClass.getSuperclass(); while (superClass != Object.class && superClass != null) { try { Field field = superClass.getDeclaredField(attribute.getPropertyName()); JsonProperty jsonProperty = field.getAnnotation(JsonProperty.class); if (jsonProperty != null) { name = jsonProperty.value(); break; } } catch (NoSuchFieldException ignored) { } superClass = superClass.getSuperclass(); } return new ObjectIdInfo(new PropertyName(name), rawClass, ObjectIdGenerators.PropertyGenerator.class, EntityStoreResolver.class); } } return super.findObjectIdInfo(annotated); }
protected ObjectIdWriter constructObjectIdHandler(SerializerProvider paramSerializerProvider, BeanDescription paramBeanDescription, List<BeanPropertyWriter> paramList) { ObjectIdInfo localObjectIdInfo = paramBeanDescription.getObjectIdInfo(); if (localObjectIdInfo == null) return null; Class localClass = localObjectIdInfo.getGeneratorType(); if (localClass == ObjectIdGenerators.PropertyGenerator.class) { String str = localObjectIdInfo.getPropertyName(); int i = 0; int j = paramList.size(); BeanPropertyWriter localBeanPropertyWriter; while (true) { if (i == j) throw new IllegalArgumentException("Invalid Object Id definition for " + paramBeanDescription.getBeanClass().getName() + ": can not find property with name '" + str + "'"); localBeanPropertyWriter = (BeanPropertyWriter)paramList.get(i); if (str.equals(localBeanPropertyWriter.getName())) { if (i <= 0) break; paramList.remove(i); paramList.add(0, localBeanPropertyWriter); break; } i++; } return ObjectIdWriter.construct(localBeanPropertyWriter.getType(), null, new PropertyBasedObjectIdGenerator(localObjectIdInfo, localBeanPropertyWriter), localObjectIdInfo.getAlwaysAsId()); } JavaType localJavaType1 = paramSerializerProvider.constructType(localClass); JavaType localJavaType2 = paramSerializerProvider.getTypeFactory().findTypeParameters(localJavaType1, ObjectIdGenerator.class)[0]; ObjectIdGenerator localObjectIdGenerator = paramSerializerProvider.objectIdGeneratorInstance(paramBeanDescription.getClassInfo(), localObjectIdInfo); return ObjectIdWriter.construct(localJavaType2, localObjectIdInfo.getPropertyName(), localObjectIdGenerator, localObjectIdInfo.getAlwaysAsId()); }
protected void addObjectIdReader(DeserializationContext paramDeserializationContext, BeanDescription paramBeanDescription, BeanDeserializerBuilder paramBeanDeserializerBuilder) { ObjectIdInfo localObjectIdInfo = paramBeanDescription.getObjectIdInfo(); if (localObjectIdInfo == null) return; Class localClass = localObjectIdInfo.getGeneratorType(); SettableBeanProperty localSettableBeanProperty1; JavaType localJavaType2; Object localObject; if (localClass == ObjectIdGenerators.PropertyGenerator.class) { String str = localObjectIdInfo.getPropertyName(); SettableBeanProperty localSettableBeanProperty2 = paramBeanDeserializerBuilder.findProperty(str); localSettableBeanProperty1 = localSettableBeanProperty2; if (localSettableBeanProperty2 == null) throw new IllegalArgumentException("Invalid Object Id definition for " + paramBeanDescription.getBeanClass().getName() + ": can not find property with name '" + str + "'"); localJavaType2 = localSettableBeanProperty1.getType(); localObject = new PropertyBasedObjectIdGenerator(localObjectIdInfo.getScope()); } else { JavaType localJavaType1 = paramDeserializationContext.constructType(localClass); localJavaType2 = paramDeserializationContext.getTypeFactory().findTypeParameters(localJavaType1, ObjectIdGenerator.class)[0]; localSettableBeanProperty1 = null; localObject = paramDeserializationContext.objectIdGeneratorInstance(paramBeanDescription.getClassInfo(), localObjectIdInfo); } JsonDeserializer localJsonDeserializer = paramDeserializationContext.findRootValueDeserializer(localJavaType2); paramBeanDeserializerBuilder.setObjectIdReader(ObjectIdReader.construct(localJavaType2, localObjectIdInfo.getPropertyName(), (ObjectIdGenerator)localObject, localJsonDeserializer, localSettableBeanProperty1)); }
public PropertyBasedObjectIdGenerator(ObjectIdInfo paramObjectIdInfo, BeanPropertyWriter paramBeanPropertyWriter) { this(paramObjectIdInfo.getScope(), paramBeanPropertyWriter); }
public JsonDeserializer<?> createContextual(DeserializationContext paramDeserializationContext, BeanProperty paramBeanProperty) { ObjectIdReader localObjectIdReader = this._objectIdReader; AnnotationIntrospector localAnnotationIntrospector = paramDeserializationContext.getAnnotationIntrospector(); AnnotatedMember localAnnotatedMember; if ((paramBeanProperty == null) || (localAnnotationIntrospector == null)) localAnnotatedMember = null; else localAnnotatedMember = paramBeanProperty.getMember(); String[] arrayOfString = null; if (paramBeanProperty != null) { arrayOfString = null; if (localAnnotationIntrospector != null) { arrayOfString = localAnnotationIntrospector.findPropertiesToIgnore(localAnnotatedMember); ObjectIdInfo localObjectIdInfo1 = localAnnotationIntrospector.findObjectIdInfo(localAnnotatedMember); if (localObjectIdInfo1 != null) { ObjectIdInfo localObjectIdInfo2 = localAnnotationIntrospector.findObjectReferenceInfo(localAnnotatedMember, localObjectIdInfo1); Class localClass = localObjectIdInfo2.getGeneratorType(); SettableBeanProperty localSettableBeanProperty1; JavaType localJavaType2; Object localObject; if (localClass == ObjectIdGenerators.PropertyGenerator.class) { String str = localObjectIdInfo2.getPropertyName(); SettableBeanProperty localSettableBeanProperty2 = findProperty(str); localSettableBeanProperty1 = localSettableBeanProperty2; if (localSettableBeanProperty2 == null) throw new IllegalArgumentException("Invalid Object Id definition for " + getBeanClass().getName() + ": can not find property with name '" + str + "'"); localJavaType2 = localSettableBeanProperty1.getType(); localObject = new PropertyBasedObjectIdGenerator(localObjectIdInfo2.getScope()); } else { JavaType localJavaType1 = paramDeserializationContext.constructType(localClass); localJavaType2 = paramDeserializationContext.getTypeFactory().findTypeParameters(localJavaType1, ObjectIdGenerator.class)[0]; localSettableBeanProperty1 = null; localObject = paramDeserializationContext.objectIdGeneratorInstance(localAnnotatedMember, localObjectIdInfo2); } JsonDeserializer localJsonDeserializer = paramDeserializationContext.findRootValueDeserializer(localJavaType2); localObjectIdReader = ObjectIdReader.construct(localJavaType2, localObjectIdInfo2.getPropertyName(), (ObjectIdGenerator)localObject, localJsonDeserializer, localSettableBeanProperty1); } } } BeanDeserializerBase localBeanDeserializerBase = this; if ((localObjectIdReader != null) && (localObjectIdReader != this._objectIdReader)) localBeanDeserializerBase = localBeanDeserializerBase.withObjectIdReader(localObjectIdReader); if ((arrayOfString != null) && (arrayOfString.length != 0)) localBeanDeserializerBase = localBeanDeserializerBase.withIgnorableProperties(ArrayBuilders.setAndArray(localBeanDeserializerBase._ignorableProps, arrayOfString)); JsonFormat.Shape localShape = null; if (localAnnotatedMember != null) { JsonFormat.Value localValue = localAnnotationIntrospector.findFormat(localAnnotatedMember); localShape = null; if (localValue != null) localShape = localValue.getShape(); } if (localShape == null) localShape = this._serializationShape; if (localShape == JsonFormat.Shape.ARRAY) localBeanDeserializerBase = localBeanDeserializerBase.asArrayDeserializer(); return localBeanDeserializerBase; }
public ObjectIdInfo findObjectIdInfo(Annotated paramAnnotated) { return null; }
public ObjectIdInfo findObjectReferenceInfo(Annotated paramAnnotated, ObjectIdInfo paramObjectIdInfo) { return paramObjectIdInfo; }
public PropertyBasedObjectIdGenerator(ObjectIdInfo oid, BeanPropertyWriter prop) { this(oid.getScope(), prop); }
public abstract ObjectIdGenerator<?> objectIdGeneratorInstance(Annotated annotated, ObjectIdInfo objectIdInfo) throws JsonMappingException;
public abstract ObjectIdInfo getObjectIdInfo();