@Override public Object getValue(Property property, Object model, ExportConfig config) throws IOException { try { return property.getValue(model); } catch (IllegalAccessException | InvocationTargetException e) { if(config.isSkipIfFail()) { LOGGER.log(Level.WARNING,"Failed to get \"" + property.name + "\" from a " + model.getClass().getName(), e); return SKIP; } throw new IOException("Failed to write " + property.name + ":" + e.getMessage(), e); } } };
@Override public Object getValue(Property property, Object model, ExportConfig config) throws IOException { try { return property.getValue(model); } catch (IllegalAccessException | InvocationTargetException e) { if(config.isSkipIfFail()) { LOGGER.log(Level.WARNING,"Failed to get \"" + property.name + "\" from a " + model.getClass().getName(), e); return SKIP; } throw new IOException("Failed to write " + property.name + ":" + e.getMessage(), e); } } };
/** * Writes one value of the property to {@link DataWriter}. */ private void writeValue(Type expected, Object value, TreePruner pruner, DataWriter writer) throws IOException { writeValue(expected,value,pruner,writer,writer.getExportConfig().isSkipIfFail()); }
/** * Writes one value of the property to {@link DataWriter}. */ private void writeValue(Type expected, Object value, TreePruner pruner, DataWriter writer) throws IOException { writeValue(expected,value,pruner,writer,writer.getExportConfig().isSkipIfFail()); }
/** * Writes one property of the given object to {@link DataWriter}. * * @param pruner * Determines how to prune the object graph tree. */ @SuppressWarnings("unchecked") public void writeTo(Object object, TreePruner pruner, DataWriter writer) throws IOException { TreePruner child = pruner.accept(object, this); if (child==null) return; Object d = writer.getExportConfig().getExportInterceptor().getValue(this,object, writer.getExportConfig()); if ((d==null && skipNull) || d == ExportInterceptor.SKIP) { // don't write anything return; } if (merge) { // merged property will get all its properties written here if (d != null) { Class<?> objectType = d.getClass(); Model model = owner.getOrNull(objectType, parent.type, name); if (model == null && !writer.getExportConfig().isSkipIfFail()) { throw new NotExportableException(objectType); } else if (model != null) { model.writeNestedObjectTo(d, new FilteringTreePruner(parent.HAS_PROPERTY_NAME_IN_ANCESTRY,child), writer); } } } else { writer.name(name); writeValue(type, d, child, writer); } }
/** * Writes one property of the given object to {@link DataWriter}. * * @param pruner * Determines how to prune the object graph tree. */ @SuppressWarnings("unchecked") public void writeTo(Object object, TreePruner pruner, DataWriter writer) throws IOException { TreePruner child = pruner.accept(object, this); if (child==null) return; Object d = writer.getExportConfig().getExportInterceptor().getValue(this,object, writer.getExportConfig()); if ((d==null && skipNull) || d == ExportInterceptor.SKIP) { // don't write anything return; } if (merge) { // merged property will get all its properties written here if (d != null) { Class<?> objectType = d.getClass(); Model model = owner.getOrNull(objectType, parent.type, name); if (model == null && !writer.getExportConfig().isSkipIfFail()) { throw new NotExportableException(objectType); } else if (model != null) { model.writeNestedObjectTo(d, new FilteringTreePruner(parent.HAS_PROPERTY_NAME_IN_ANCESTRY,child), writer); } } } else { writer.name(name); writeValue(type, d, child, writer); } }