@Override public JsonNode getSchema(SerializerProvider provider, Type typeHint) throws JsonMappingException { ObjectNode o = createSchemaNode("object", true); //todo: should the classname go in the title? //o.put("title", _className); ObjectNode propertiesNode = o.objectNode(); for (int i = 0; i < _props.length; i++) { BeanPropertyWriter prop = _props[i]; JavaType propType = prop.getSerializationType(); // 03-Dec-2010, tatu: SchemaAware REALLY should use JavaType, but alas it doesn't... Type hint = (propType == null) ? prop.getGenericPropertyType() : propType.getRawClass(); // Maybe it already has annotated/statically configured serializer? JsonSerializer<Object> ser = prop.getSerializer(); if (ser == null) { // nope Class<?> serType = prop.getRawSerializationType(); if (serType == null) { serType = prop.getPropertyType(); } ser = provider.findValueSerializer(serType, prop); } JsonNode schemaNode = (ser instanceof SchemaAware) ? ((SchemaAware) ser).getSchema(provider, hint) : JsonSchema.getDefaultSchemaNode(); propertiesNode.put(prop.getName(), schemaNode); } o.put("properties", propertiesNode); return o; }
@Override public void serializeAsField(Object bean, JsonGenerator jgen, SerializerProvider provider, BeanPropertyWriter writer) throws Exception { if (_propertiesToInclude.contains(writer.getName())) { writer.serializeAsField(bean, jgen, provider); } } }
Class<?>[] views = bpw.getViews(); if (views == null) { // no view info? include or exclude by default? if (includeByDefault) {
throws Exception Object value = get(bean); _reportSelfReference(bean); ser = map.serializerFor(cls); if (ser == null) { ser = _findAndAddDynamic(map, cls, prov);
for (int i = 0, len = _props.length; i < len; ++i) { BeanPropertyWriter prop = _props[i]; if (prop.hasSerializer()) { continue; JavaType type = prop.getSerializationType(); type = provider.constructType(prop.getGenericPropertyType()); if (!type.isFinal()) { prop.setNonTrivialBaseType(type); prop = prop.withSerializer(ser); _props[i] = prop; BeanPropertyWriter w2 = _filteredProps[i]; if (w2 != null) { _filteredProps[i] = w2.withSerializer(ser);
@Override public String toString() { StringBuilder sb = new StringBuilder(40); sb.append("property '").append(getName()).append("' ("); if (_accessorMethod != null) { sb.append("via method ").append(_accessorMethod.getDeclaringClass().getName()).append("#").append(_accessorMethod.getName()); } else { sb.append("field \"").append(_field.getDeclaringClass().getName()).append("#").append(_field.getName()); } if (_serializer == null) { sb.append(", no static serializer"); } else { sb.append(", static serializer of type "+_serializer.getClass().getName()); } sb.append(')'); return sb.toString(); } }
for (int i = 0; i < _props.length; i++) { BeanPropertyWriter prop = _props[i]; Type hint = prop.getSerializationType(); if (hint == null) { hint = prop.getGenericPropertyType(); JsonSerializer<Object> ser = prop.getSerializer(); if (ser == null) { // nope Class<?> serType = prop.getSerializationType(); if (serType == null) { serType = prop.getReturnType(); JsonSchema.getDefaultSchemaNode(); o.put("items", schemaNode); propertiesNode.put(prop.getName(), schemaNode);
@Override public void serializeAsField(Object bean, JsonGenerator jgen, SerializerProvider prov) throws Exception { Class<?> activeView = prov.getSerializationView(); if (activeView == null || _view.isAssignableFrom(activeView)) { _delegate.serializeAsField(bean, jgen, prov); } } }
public void resolve(SerializerProvider provider) throws JsonMappingException { //AnnotationIntrospector ai = provider.getConfig().getAnnotationIntrospector(); for (int i = 0, len = _props.length; i < len; ++i) { BeanPropertyWriter prop = _props[i]; if (prop.hasSerializer()) { continue; } // Was the serialization type hard-coded? If so, use it Class<?> type = prop.getSerializationType(); /* It not, we can use declared return type if and only if * declared type is final -- if not, we don't really know * the actual type until we get the instance. */ if (type == null) { Class<?> rt = prop.getReturnType(); if (!Modifier.isFinal(rt.getModifiers())) { continue; } type = rt; } _props[i] = prop.withSerializer(provider.findValueSerializer(type)); } }
@Override protected void processViews(SerializationConfig config, BeanSerializerBuilder builder) { super.processViews(config, builder); List<BeanPropertyWriter> writersList = builder.getProperties(); BeanPropertyWriter[] writersArray = writersList.toArray(new BeanPropertyWriter[writersList.size()]); for (int i = 0; i < writersArray.length; i++) { if (writersArray[i].getName().startsWith("set") && writersArray[i].getPropertyType() == boolean.class) { writersArray[i] = null; } } builder.setFilteredProperties(writersArray); } }
if (beanHelper != null) { for (final BeanPropertyWriter beanPropertyWriter : beanHelper.getProperties()) { final Member propertyMember = beanPropertyWriter.getMember().getMember(); checkMember(propertyMember, beanPropertyWriter.getName(), sourceClass.type); Type propertyType = beanPropertyWriter.getGenericPropertyType(); if (!isAnnotatedPropertyIncluded(beanPropertyWriter::getAnnotation, sourceClass.type.getName() + "." + beanPropertyWriter.getName())) { continue; properties.add(processTypeAndCreateProperty(beanPropertyWriter.getName(), propertyType, optional, sourceClass.type, propertyMember, null));
BeanPropertyWriter bpw = new BeanPropertyWriter(am, _beanDesc.getClassAnnotations(), name, declaredType, ser, typeSer, serializationType, m, f, suppressNulls, valueToSuppress); bpw = bpw.unwrappingWriter();
for (int i = 0, len = beanProperties.size(); i < len; ++i) { BeanPropertyWriter bpw = beanProperties.get(i); final AnnotatedMember member = bpw.getMember(); String ns = findNamespaceAnnotation(intr, member); Boolean isAttribute = findIsAttributeAnnotation(intr, member); bpw.setInternalSetting(XmlBeanSerializer.KEY_XML_INFO, new XmlInfo(isAttribute, ns)); if (_isContainerType(bpw.getType())) { String localName = null, wrapperNs = null; QName wrappedName = new QName(ns, bpw.getName()); QName wrapperName = findWrapperName(intr, member); if (wrapperName != null) {
/** * Method that will construct and return a new writer that has * same properties as this writer, but uses specified serializer * instead of currently configured one (if any). */ public BeanPropertyWriter withSerializer(JsonSerializer<Object> ser) { // sanity check to ensure sub-classes override... if (getClass() != BeanPropertyWriter.class) { throw new IllegalStateException("BeanPropertyWriter sub-class does not override 'withSerializer()'; needs to!"); } return new BeanPropertyWriter(this, ser); }
throws Exception Object value = get(bean); _reportSelfReference(bean);
public XmlBeanSerializer(BeanSerializer src) { super(src); // Ok, first: collect namespace information _xmlNames = new QName[_props.length]; // First, find namespace information for (int i = 0, len = _props.length; i < len; ++i) { BeanPropertyWriter bpw = _props[i]; XmlInfo info = (XmlInfo) bpw.getInternalSetting(KEY_XML_INFO); String ns = null; if (info != null) { ns = info.getNamespace(); } _xmlNames[i] = new QName((ns == null) ? "" : ns, bpw.getName()); } /* Then make sure attributes are sorted before elements, keep track * of how many there are altogether */ int attrCount = 0; for (BeanPropertyWriter bpw : _props) { if (_isAttribute(bpw)) { // Yup: let's build re-ordered list then attrCount = _orderAttributesFirst(_props, _filteredProps); break; } } _attributeCount = attrCount; }
for (int i = 0, len = _props.length; i < len; ++i) { BeanPropertyWriter prop = _props[i]; if (prop.hasSerializer()) { continue; JavaType type = prop.getSerializationType(); type = provider.constructType(prop.getGenericPropertyType()); if (!type.isFinal()) { prop.setNonTrivialBaseType(type); prop = prop.withSerializer(ser); _props[i] = prop; BeanPropertyWriter w2 = _filteredProps[i]; if (w2 != null) { _filteredProps[i] = w2.withSerializer(ser);
/** * Overridable method that can filter out properties. Default implementation * checks annotations class may have. */ protected List<BeanPropertyWriter> filterBeanProperties(SerializationConfig config, BasicBeanDescription beanDesc, List<BeanPropertyWriter> props) { AnnotationIntrospector intr = config.getAnnotationIntrospector(); AnnotatedClass ac = beanDesc.getClassInfo(); String[] ignored = intr.findPropertiesToIgnore(ac); if (ignored != null && ignored.length > 0) { HashSet<String> ignoredSet = ArrayBuilders.arrayToSet(ignored); Iterator<BeanPropertyWriter> it = props.iterator(); while (it.hasNext()) { if (ignoredSet.contains(it.next().getName())) { it.remove(); } } } return props; }
throws Exception Object value = get(bean); _reportSelfReference(bean); ser = map.serializerFor(cls); if (ser == null) { ser = _findAndAddDynamic(map, cls, prov);
@Override public void serializeAsField(Object bean, JsonGenerator jgen, SerializerProvider prov) throws Exception { final Class<?> activeView = prov.getSerializationView(); if (activeView != null) { int i = 0, len = _views.length; for (; i < len; ++i) { if (_views[i].isAssignableFrom(activeView)) break; } // not included, bail out: if (i == len) { return; } } _delegate.serializeAsField(bean, jgen, prov); } }