private Map writeValueToImplicitCollection(UnmarshallingContext context, Object value, Map implicitCollections, Object result, String itemFieldName) { String fieldName = mapper.getFieldNameForItemTypeAndName(context.getRequiredType(), value.getClass(), itemFieldName); if (fieldName != null) { if (implicitCollections == null) { implicitCollections = new HashMap(); // lazy instantiation } Collection collection = (Collection) implicitCollections.get(fieldName); if (collection == null) { Class fieldType = mapper.defaultImplementationOf(reflectionProvider.getFieldType(result, fieldName, null)); if (!Collection.class.isAssignableFrom(fieldType)) { throw new ObjectAccessException("Field " + fieldName + " of " + result.getClass().getName() + " is configured for an implicit Collection, but field is of type " + fieldType.getName()); } if (pureJavaReflectionProvider == null) { pureJavaReflectionProvider = new PureJavaReflectionProvider(); } collection = (Collection)pureJavaReflectionProvider.newInstance(fieldType); reflectionProvider.writeField(result, fieldName, collection, null); implicitCollections.put(fieldName, collection); } collection.add(value); } return implicitCollections; }
public void visitSerializableFields(Object object, ReflectionProvider.Visitor visitor) { for (Iterator iterator = fieldDictionary.fieldsFor(object.getClass()); iterator.hasNext();) { Field field = (Field) iterator.next(); if (!fieldModifiersSupported(field)) { continue; } validateFieldAccess(field); Object value = Fields.read(field, object); visitor.visit(field.getName(), field.getType(), field.getDeclaringClass(), value); } }
return instantiateUsingSerialization(type); } else { oaex = new ObjectAccessException("Cannot construct type as it does not have a no-args constructor");
public void writeField(Object object, String fieldName, Object value, Class definedIn) { Field field = fieldDictionary.field(object.getClass(), fieldName, definedIn); validateFieldAccess(field); Fields.write(field, object, value); }
/** * @deprecated As of 1.4.5, use {@link #getFieldOrNull(Class, String)} instead */ public boolean fieldDefinedInClass(String fieldName, Class type) { Field field = fieldDictionary.fieldOrNull(type, fieldName, null); return field != null && fieldModifiersSupported(field); }
public PureJavaReflectionProvider(FieldDictionary fieldDictionary) { this.fieldDictionary = fieldDictionary; init(); }
public void writeField(Object object, String fieldName, Object value, Class definedIn) { Field field = fieldDictionary.field(object.getClass(), fieldName, definedIn); validateFieldAccess(field); try { field.set(object, value); } catch (IllegalArgumentException e) { throw new ObjectAccessException("Could not set field " + object.getClass() + "." + field.getName(), e); } catch (IllegalAccessException e) { throw new ObjectAccessException("Could not set field " + object.getClass() + "." + field.getName(), e); } }
/** * @deprecated As of 1.4.5, use {@link #getFieldOrNull(Class, String)} instead */ @Deprecated @Override public boolean fieldDefinedInClass(final String fieldName, final Class<?> type) { final Field field = fieldDictionary.fieldOrNull(type, fieldName, null); return field != null && fieldModifiersSupported(field); }
private Object readResolve() { init(); return this; }
pureJavaReflectionProvider = new PureJavaReflectionProvider();
@Override public void visitSerializableFields(final Object object, final ReflectionProvider.Visitor visitor) { for (final Iterator<Field> iterator = fieldDictionary.fieldsFor(object.getClass()); iterator.hasNext();) { final Field field = iterator.next(); if (!fieldModifiersSupported(field)) { continue; } validateFieldAccess(field); final Object value = Fields.read(field, object); visitor.visit(field.getName(), field.getType(), field.getDeclaringClass(), value); } }
public void writeField(Object object, String fieldName, Object value, Class definedIn) { Field field = fieldDictionary.field(object.getClass(), fieldName, definedIn); validateFieldAccess(field); try { field.set(object, value); } catch (IllegalArgumentException e) { throw new ObjectAccessException("Could not set field " + object.getClass() + "." + field.getName(), e); } catch (IllegalAccessException e) { throw new ObjectAccessException("Could not set field " + object.getClass() + "." + field.getName(), e); } }
public boolean fieldDefinedInClass(String fieldName, Class type) { Field field = fieldDictionary.fieldOrNull(type, fieldName, null); if(field==null) return false; return fieldModifiersSupported(field) || Modifier.isTransient(field.getModifiers()); }
return instantiateUsingSerialization(type); } else { throw new ObjectAccessException("Cannot construct " + type.getName()
public PureJavaReflectionProvider(final FieldDictionary fieldDictionary) { this.fieldDictionary = fieldDictionary; init(); }
public VRaptorXStream(TypeNameExtractor extractor, Serializee serializee, ReflectionProvider reflectionProvider) { super(new PureJavaReflectionProvider()); this.extractor = extractor; this.serializee = serializee; this.reflectionProvider = reflectionProvider; }
public void visitSerializableFields(Object object, ReflectionProvider.Visitor visitor) { for (Iterator iterator = fieldDictionary.fieldsFor(object.getClass()); iterator.hasNext();) { Field field = (Field) iterator.next(); if (!fieldModifiersSupported(field)) { continue; } validateFieldAccess(field); Object value = Fields.read(field, object); visitor.visit(field.getName(), field.getType(), field.getDeclaringClass(), value); } }
public void writeField(Object object, String fieldName, Object value, Class definedIn) { Field field = fieldDictionary.field(object.getClass(), fieldName, definedIn); validateFieldAccess(field); try { field.set(object, value); } catch (IllegalArgumentException e) { throw new ObjectAccessException("Could not set field " + object.getClass() + "." + field.getName(), e); } catch (IllegalAccessException e) { throw new ObjectAccessException("Could not set field " + object.getClass() + "." + field.getName(), e); } }
/** * @deprecated As of 1.4.5, use {@link #getFieldOrNull(Class, String)} instead */ public boolean fieldDefinedInClass(String fieldName, Class type) { Field field = fieldDictionary.fieldOrNull(type, fieldName, null); return field != null && fieldModifiersSupported(field); }
return instantiateUsingSerialization(type); } else { throw new ObjectAccessException("Cannot construct " + type.getName()